MMO001.xjs 418 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************************
  3. * System Name :
  4. * Job Name : EMR
  5. * File Name : MMO001.xjs
  6. * Creator : 이호성
  7. * Make Date : 2014.03.03
  8. *
  9. * Description : 진료 공통 메서드
  10. *--------------------------------------------------------------------------------------------------
  11. * Modify Date Modifier Modify Description
  12. *--------------------------------------------------------------------------------------------------
  13. *
  14. ***************************************************************************************************/
  15. include "emr_prcpmngtxp::MMOCommon.xjs";
  16. //=======================================================================================
  17. // Global Form Variable
  18. //---------------------------------------------------------------------------------------
  19. var prcpnmCol = 5; //처방명 컬럼 index
  20. var prcpcdCol = 4; //처방명 컬럼 index
  21. var diagnmCol = 4; //처방명 컬럼 index
  22. var icd10cdCol = 3; //처방명 컬럼 index
  23. var signyn = "Y"; //전자서명 사용하는 check 서버 에러시 N으로 수정
  24. var volflag = "time"; //1일 총용량 구분
  25. //var lv_sLglydisprcpyn = "N"; //제한항생제 저장
  26. var gridprcpsrchflag = "N"; //그리드 처방검색에서 앤터로 처방 넘겨줄때 검색이 다시 타는 것을 막음
  27. var ocrcalcscorcd = ""; // 2016.01.26 OCR print
  28. var ocrpayflagcd = ""; // 2018.11.05 OCR 급여구분
  29. var arErrorCode = new HashArray();
  30. // var lgds_arrEssentialDsList = ["ds_data_paminfo", "ds_data_prcpdc", "ds_grid_diaglist", "ds_data_prcper", "ds_temp_ocrbldyn"
  31. // ,"ds_data_saveetcchklist", "ds_data_prcperlist", "ds_data_atadinfo", "ds_temp_geneunitlist"
  32. // ];
  33. /***************************************************************************************************
  34. * Function : lf_getFormObject
  35. * Description : TF는 XP와 다르게 팝업만 opener을 가지고 div는 opener가 없다(TF는 둘다 opener)
  36. 그래서 div인 경우 oOpener을 각화면 마다 만들어서 사용했다.
  37. 이때 TF는 소스가 항상 opener라 상관없었지만 XP는 구분을 해야 하므로
  38. 공통 함수를 하나 둬서 항상 구별 하여 가져올 수 있도록 하였다.
  39. (처방을 form_bottom 에서 띄우는 경우 frmf_checkOpener()으로는 제대로 처리를 할 수 없어서
  40. 우선은 oOpener이 선언 되지 않은 곳에서는 opener을 가져오도록 함)
  41. * Argument : flag [String : 화면 종류 구분]
  42. * return type : form에 대한 객체
  43. * Creator : 김상목
  44. ***************************************************************************************************/
  45. function lf_getFormObject(flag) {
  46. // var obj;
  47. // if(flag == "child" || flag == "pop"){// || utlf_isNull(flag)) {
  48. // try {
  49. // obj = oOpener;
  50. // } catch (e) {
  51. // obj = opener;
  52. // }
  53. // } else {
  54. // obj = this;
  55. // }
  56. return (flag == "child" || flag == "pop") ? (frmf_checkOpener() ? opener : oOpener) : this;
  57. }
  58. /***************************************************************************************************
  59. * Function : emr_getOrderBaseInfo
  60. * Description : 아이디에 해당하는 기초정보를 리턴한다. (시스템메세지 정보 조회)
  61. * Argument : sID [String : 데이타셋명(ds_를 제외한)]
  62. * : objSrcDs [Dataset : 리턴 데이타를 받을 데이타셋]
  63. * return type : [Dataset : 기초정보를 리턴]
  64. * Creator :
  65. * 변환 OK
  66. ***************************************************************************************************/
  67. function emr_getOrderBaseInfo(sID, objSrcDs)
  68. {
  69. var oDescDs = agv_objAppTopPath.form.dv_orderbasicinfo.lf_getOrderBaseInfo(sID);
  70. if (utlf_isNull(objSrcDs)) {
  71. return oDescDs;
  72. }
  73. else {
  74. objSrcDs.copyData(oDescDs, true);
  75. }
  76. }
  77. /***************************************************************************************************
  78. * Function : lf_addPrcp
  79. * Description : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  80. * Argument : objFlag - child or else
  81. * : strSrc - 출발지 Node
  82. * : strDest - 목적지 Node
  83. * : multiFlag - 복수 add 여부
  84. * : checkNM - check로 사용할 instance명
  85. * : checkFlag - check시 Value
  86. * : grdObj - 더블클릭시 값을 넘기는 그리드 명
  87. * : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  88. * : sCopyInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  89. * : ex) addPrcp("child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  90. * return type :
  91. * Creator :
  92. * 변환 OK
  93. ***************************************************************************************************/
  94. function lf_addPrcp(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag, objInitDs)
  95. {
  96. var sRTC = "ds_temp_rtc_codeinfo"; // 처방복사 실시간 체크(RealTimeCheck)변수 노드 경로
  97. dsf_createDs(sRTC);
  98. // 추후 작업 완료 후 try catch 주석 풀어야 함 확인필요
  99. //try {
  100. // if (document.all("TRMMO00151") == null ) {
  101. // lf_addPrcp_Web(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag);
  102. // } else {
  103. if(this.getOwnerFrame().form.name == "SMADB01100") {
  104. lf_addPrcp_Web(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  105. } else {
  106. ds_TRMMO00151.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  107. ds_TRMMO00151.setColumn(0, "hardcdno", "435"); // 복사시 실시간 체크를 위한 하드코드 그룹
  108. ds_TRMMO00151.setColumn(0, "prcpdd", utlf_getCurrentDate()); // 적용일자
  109. var oParam = {};
  110. oParam.id = "TRMMO00151";
  111. oParam.service = "prcpmngtapp.PrcpMngt";
  112. oParam.method = "reqGetGroupHardCode";
  113. oParam.inds = "req=ds_TRMMO00151";
  114. oParam.outds = sRTC + "=codeinfo";
  115. oParam.async = false;
  116. tranf_submit(oParam); // 처방복사 실시간 체크(RealTimeCheck)변수 설정
  117. var ds_codeinfo = this.objects[sRTC];
  118. var sNewLogic = ds_codeinfo.lookup("hardcdno", '436', "trgtcd"); // 신규로직 적용여부
  119. var sScreenID = frmf_getScreenID();
  120. var sUserID = sysf_getUserInfo("userid");
  121. var findRow437 = ds_codeinfo.findRowExpr("hardcdno == '437' && trgtcd == '" + sCopyInptFlag + "'");
  122. var findRow438 = ds_codeinfo.findRowExpr("hardcdno == '438' && trgtcd == '" + sScreenID + "'");
  123. var findRow439 = ds_codeinfo.findRowExpr("hardcdno == '439' && trgtcd == '" + sUserID + "'");
  124. var data437 = (findRow437 == -1) ? "" : ds_codeinfo.getColumn(findRow437, "trgtcd");
  125. var data438 = (findRow438 == -1) ? "" : ds_codeinfo.getColumn(findRow438, "trgtcd");
  126. var data439 = (findRow439 == -1) ? "" : ds_codeinfo.getColumn(findRow439, "trgtcd");
  127. if(sNewLogic == "Y") { // Y 이면 아래에 코드는 제외 조건으로 처리 한다. CP 제외 (CP 적용버튼 클릭시 수정해야함.)
  128. if (utlf_isNull(data437) && utlf_isNull(data438)) {
  129. lf_addPrcp_App(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  130. } else {
  131. lf_addPrcp_Web(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  132. }
  133. } else if (sNewLogic == "S" && !utlf_isNull(data437) && !utlf_isNull(data438) && !utlf_isNull(data439) ) {
  134. lf_addPrcp_App(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  135. } else {
  136. lf_addPrcp_Web(sObjFlag, strSrc, strDest, sMultiFlag, sCheckNM, sCheckFlag, grdObj, sPrcpNmClearFlag, sCopyInptFlag);
  137. }
  138. }
  139. // }
  140. // } catch(err) {
  141. // sysf_messageBox ( "addPrcp() 실행 중 오류가 발생 하였습니다. 전산실(6598)로 연락 부탁드립니다.", "E" );
  142. // } finally {
  143. dsf_deleteDs(sRTC);
  144. // }
  145. }
  146. // function lf_srchModiRow(objDestDS, sObjFlag){
  147. // var nSrchRow = 0;
  148. //
  149. // nSrchRow = objDestDS.findRow("status", "S");
  150. //
  151. // if (nSrchRow < 1) {
  152. // nSrchRow = 0;
  153. // }
  154. // return nSrchRow;
  155. // }
  156. /**
  157. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  158. * @param : objFlag - child or else
  159. : strSrc - 출발지 Node
  160. : strDest - 목적지 Node
  161. : multiFlag - 복수 add 여부
  162. : checkNM - check로 사용할 instance명
  163. : checkFlag - check시 Value
  164. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  165. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  166. : sCopyInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  167. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  168. * @return : void
  169. * @authur : 마정민 2007. 3. 12
  170. * 변환OK
  171. * @---------------------------------------------------
  172. */
  173. function lf_addPrcp_App(objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, sCopyInptFlag) {
  174. var startStepDate = new Date(); // 각 업부 시작 시간
  175. var endStepDate = null; // 각 업부 종료후 시간
  176. var step1Elapsed = null; // 코드별 체크 전 소요시간
  177. var step2Elapsed = null; // 코드별 체크 소요시간
  178. var step3Elapsed = null; // 코드별 체크 후 소요시간
  179. var nSrchRow = 0; // 검색행 Row번호
  180. var nCopyCnt = 0; // 복사 갯수
  181. // 허만호 추가 START
  182. var oOpener = this.getOwnerFrame().form
  183. if( oOpener.name == "SMMMP00800" ) var sScreenID = oOpener.name; // CP화면에서 호출
  184. else var sScreenID = frmf_getScreenID(); // 호출 화면 아이디
  185. // 허만호 추가 END
  186. var sRowKey = ""; // sRowKey
  187. var sCopykeys = "";
  188. var sCopyIoFlag = "";
  189. var sBfGenrFlag = "";
  190. var sNowGenrFlag = "";
  191. // 소스노드의 Key값을 생성한다. 2013.07.05 엄영만
  192. var ds_src = this.objects[strSrc];
  193. //var srcNodeList = model.instances(0).selectNodes(strSrc); //or instance1.selectNodes(strSrc)
  194. var sPRNSetInfo = "";
  195. if(ds_src.getColumn(0, "prnprcpflag") == "Y"){
  196. sPRNSetInfo = ((ds_src.getColumn(0, "drprcpetc6")).split("▩"))[0]; //20190419 이돈희 : PRN 설정 정보
  197. }
  198. // 16.01.06 추가
  199. if( sCopyInptFlag == "05" ) { // cp 적용이면
  200. if( oOpener.ds_tempPrcpsrch.rowcount > 0 ) {
  201. ds_src.copyData(oOpener.ds_tempPrcpsrch);
  202. }
  203. }
  204. if ( multiFlag == "Y" ){
  205. var sb = new StringBuffer();
  206. for( var i = 0; i < ds_src.rowcount; i++ ) {
  207. if ( ds_src.getColumn(i, checkNM) == checkFlag || ( utlf_isNull(ds_src.getColumn(i, checkNM)) && utlf_isNull(checkFlag) ) ) { // 허만호, ( utlf_isNull(ds_src.getColumn(i, checkNM)) && utlf_isNull(checkFlag) ) 추가
  208. sRowKey = ds_src.getColumn(i, "rowkey"); // ds_src.getColumn(i, checkNM)가 undefined 이고 checkFlag가 빈값일 때 조건 추가
  209. if(utlf_isNull(sRowKey)) {
  210. continue;
  211. } else {
  212. if(sCopyInptFlag == "01") { // 전처방 조회 일때 외래/입원구분
  213. sNowGenrFlag = ds_src.getColumn(i, "prcpgenrflag");
  214. if (nCopyCnt == 0) {
  215. sBfGenrFlag = sNowGenrFlag;
  216. if (sNowGenrFlag == "O" || sNowGenrFlag == "S") { // 입원 외래 처방 구분
  217. sCopyIoFlag = "O";
  218. } else {
  219. sCopyIoFlag = "I";
  220. }
  221. } else { // 퇴원 후 외래 처방과 동시 복사 블러킹
  222. if (sBfGenrFlag != sNowGenrFlag) {
  223. sysf_messageBox ( "퇴원후 외래 처방과 입원 처방을 동시에 복사 하실 수 없습니다.", "I999" );
  224. return;
  225. }
  226. }
  227. }
  228. sb.append("'" + sRowKey + "'");
  229. nCopyCnt++;
  230. }
  231. }
  232. }
  233. sCopykeys = sb.toString(",");
  234. } else {
  235. sRowKey = ds_src.getColumn(ds_src.rowposition, "rowkey");
  236. if(utlf_isNull(sRowKey)) {
  237. return 0;
  238. } else {
  239. sCopykeys = "'" + sRowKey + "'";
  240. if (sCopyInptFlag == "01") { // 전처방 조회 일때 외래/입원구분
  241. sCopyIoFlag = ds_src.getColumn(ds_src.rowposition, "prcpgenrflag");
  242. if (sCopyIoFlag == "O" || sCopyIoFlag == "S") { // 입원 외래 처방 구분
  243. sCopyIoFlag = "O";
  244. } else {
  245. sCopyIoFlag = "I";
  246. }
  247. }
  248. nCopyCnt = 1;
  249. }
  250. }
  251. if(utlf_isNull(sCopykeys)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  252. return 0;
  253. }
  254. endStepDate = new Date(); // 각 업부 종료후 시간
  255. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  256. startStepDate = new Date(); // 각 업부 시작 시간
  257. var oTrgtObj = lf_getFormObject(objFlag);
  258. // cp 추가
  259. if( oTrgtObj.name == "SMMMP00800" ) { // TF는 CP에 ds_main_prcplist가 없으면 처방에 ds_main_prcplist를 보는데 XP는 에러남
  260. oTrgtObj = grp_biz.grp_prcp.imp_prcp; // 처방화면의 ds_main_prcplist
  261. }
  262. var ds_dest = oTrgtObj.objects[strDest];
  263. // 처리 속도 향상을 위해 잠시 데이타셋 이벤트 끔
  264. // -----------------------------------------------------------------------------------------
  265. lf_setDatasetEvent(ds_src, ds_dest, false);
  266. oTrgtObj.lf_addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag, sPRNSetInfo);
  267. endStepDate = new Date(); // 각 업부 종료후 시간
  268. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  269. startStepDate = new Date(); // 각 업부 시작 시간
  270. nSrchRow = ds_dest.rowcount - 1;
  271. lf_hosinPrcpResnChk (objFlag, ds_dest );
  272. // 처리 후 속도 향상을 위해 꺼뒀던 데이타셋 이벤트 다시 켬
  273. lf_setDatasetEvent(ds_src, ds_dest, true);
  274. // -----------------------------------------------------------------------------------------
  275. lf_focusMain( nSrchRow, objFlag, prcpNmClearFlag);
  276. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  277. oTrgtObj.dsf_deleteDs("ds_main_toot_prcplist");
  278. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  279. //var cdssFlag = frmf_getParameter( "SPMMD01600_flag");
  280. frmf_clearParameter( "SPMMD01600_flag", "");
  281. // if (cdssFlag != "Y") {
  282. // fPrcpColor(objFlag);
  283. // }
  284. if ( objFlag != "child") {
  285. if( ds_root.getColumn(0, "cp" ) == "Y" ){
  286. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  287. div_all.div_srch.visible = false;
  288. }
  289. }else{
  290. div_all.div_srch.visible = false;
  291. }
  292. }
  293. endStepDate = new Date(); // 각 업부 종료후 시간
  294. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  295. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  296. oTrgtObj.reqSetMonitoringLog("PrcpCopy", "APP", sScreenID, objFlag, sCopyInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  297. }
  298. /***************************************************************************************************
  299. * Function : lf_appendChildPrcp
  300. * Description : 소스노드를 목적지 노드에 append 하는 기능
  301. * Argument : strSrc => 소스 노드
  302. * : strDest => 목적지 노드
  303. * : flag => 같은화면에서 사용하는지 child에서 사용하는지
  304. * : autocheck => 자동체크하려면 체크벨류를 넣는다.
  305. * return type :
  306. * Creator :
  307. * Modifier :
  308. * 변환 OK
  309. ***************************************************************************************************/
  310. function lf_appendChildPrcp(strSrc, strDest, flag, autocheck) {
  311. var oDatasetSrc = this.objects[strSrc];
  312. if(utlf_isNull(flag)) flag = "child";
  313. var oTrgtObj = lf_getFormObject(flag);
  314. //* ---2007.11.12 (CP에서 미래처방을 수정하는 경우, 처방상세팝업에서 리턴 받은 값의 상태를 바꾼다) --- *//
  315. if(frmf_checkOpener() && !utlf_isNull(oTrgtObj.ds_root) && oTrgtObj.ds_root.getColumn(0, "cp") == "D") {
  316. if (oDatasetSrc.name == "ds_reset_prcplist"){
  317. return;
  318. } else {
  319. if (!utlf_isNull(oDatasetSrc.getColumn(0, "status"))) {
  320. oDatasetSrc.setColumn(0, "status", oTrgtObj.ds_temp.getColumn(0, "mstatus"));
  321. }
  322. }
  323. }
  324. //* --- End --- *//
  325. var oDatasetDest = oTrgtObj.objects[strDest];
  326. if (!utlf_isNull(autocheck)) {
  327. for (var i = 0; i < oDatasetSrc.rowcount; i++) {
  328. oDatasetSrc.setColumn(i, "status", autocheck);
  329. }
  330. }
  331. if(!utlf_isNull(oDatasetDest)){
  332. oDatasetDest.appendData(oDatasetSrc, true);
  333. }
  334. }
  335. /***************************************************************************************************
  336. * Function : lf_makePrcpNm
  337. * Description : 처방내역만들기
  338. * Argument : strSrc [Dataset : 처리할 대상 데이타셋]
  339. * : nRow [Number : 대상 row]
  340. * : sSubOrdDeptCd [String : ]
  341. * return type : Dataset에 값 설정
  342. * Creator :
  343. * 변환OK
  344. ***************************************************************************************************/
  345. function lf_makePrcpNm(strSrc, nRow)
  346. {
  347. var ds_src = this.objects[strSrc];
  348. if ( ds_src.getColumn(nRow, "status") == "S" ) return;
  349. if ( ds_src.getColumn(nRow, "prcpflag") == "2" ) return;
  350. var prcpnmbf = "";
  351. var prcpnmaft = "";
  352. var opansflagcd = "";
  353. var prcpclscd = ds_src.getColumn(nRow, "prcpclscd"); //처방종류
  354. var prcpcd = ds_src.getColumn(nRow, "prcpcd"); //처방코드
  355. var prcpnm = ds_src.getColumn(nRow, "orgprcpnm"); //처방명
  356. var clincstdyflag = ds_src.getColumn(nRow, "clincstdyflag"); //임상연구
  357. var erprcpflag = ds_src.getColumn(nRow, "erprcpflag"); //응급구분
  358. var prnprcpflag = ds_src.getColumn(nRow, "prnprcpflag"); //prn
  359. var prepprcpflag = ds_src.getColumn(nRow, "prepprcpflag"); //prep
  360. var selfdrugflag = ds_src.getColumn(nRow, "selfdrugflag"); //self
  361. var powdflag = ds_src.getColumn(nRow, "powdflag"); //powder
  362. var drugspd = ds_src.getColumn(nRow, "drugspd"); //투여속도
  363. var tnsfiltflag = ds_src.getColumn(nRow, "tnsfiltflag"); //filter
  364. var portprcpflag = ds_src.getColumn(nRow, "portprcpflag"); //portprcpflag
  365. //수술유형, 재활치료부위
  366. if ( prcpclscd == "F2" ) {
  367. var rehbprcpcurepartcd = ds_src.getColumn(nRow, "rehbprcpcurepartcd");
  368. if ( rehbprcpcurepartcd != "-" && !utlf_isNull(rehbprcpcurepartcd)) {
  369. opansflagcd = this.objects["ds_M0046"] == null ? '' : ds_M0046.lookup("cdid", rehbprcpcurepartcd, "cdnm");
  370. }
  371. } else if ( prcpclscd == "H2" || prcpclscd == "K2" ) { // 15.05.19 현행화
  372. opansflagcd = ds_src.getColumn(nRow, "opansflagcd" );
  373. if ( opansflagcd != "-" && !utlf_isNull(opansflagcd)) {
  374. opansflagcd = this.objects["ds_M0007"] == null ? '' : ds_M0007.lookup("cdid", opansflagcd, "cdnm");
  375. }
  376. }
  377. // var opansflagcd = model.getValue ( strSrc + "[" + i + "]/tempcol1" );
  378. var dietprcpgenrflag = ds_src.getColumn(nRow, "dietprcpgenrflag"); //조/중/석
  379. var mealcalrcnts = ds_src.getColumn(nRow, "mealcalrcnts"); //열량
  380. var mealprotcnts = ds_src.getColumn(nRow, "mealprotcnts"); //단백질
  381. // var drugpackflag = model.getValue ( strSrc + "[" + i + "]/drugpackflag" ); //보호자식
  382. var prcpdelivefact = ds_src.getColumn(nRow, "prcpdelivefact"); //전달사항
  383. var ansttm = ds_src.getColumn(nRow, "prcprefseq"); //검사간격
  384. var drugspd = ds_src.getColumn(nRow, "drugspd"); //기본시간
  385. var trnptbftestflag = ds_src.getColumn(nRow, "trnptbftestflag");
  386. var prcptims = ds_src.getColumn(nRow, "prcptims"); //치료횟수
  387. var prcpdayno = ds_src.getColumn(nRow, "prcpdayno"); //치료일수
  388. var etcprcpresncd = ds_src.getColumn(nRow, "etcprcpresncd"); //마감일
  389. var irflag = ds_src.getColumn(nRow, "irflag"); //필터
  390. var precureprcpflag = ds_src.getColumn(nRow, "precureprcpflag"); //선처치
  391. var selfprcpflag = ds_src.getColumn(nRow, "selfprcpflag"); //자가
  392. var prcpkindcd = ds_src.getColumn(nRow, "prcpkindcd"); //처방종류
  393. var hsctdelivepos = ds_src.getColumn(nRow, "hsctdelivepos"); //hsct전달부서
  394. var rehbprcpenddd = ds_src.getColumn(nRow, "rehbprcpenddd"); //재활치료 마감일
  395. var fasttrackflag = dsf_getColumnNullToEmpty(ds_src, nRow, "fasttrackflag"); //FastTrackFlag
  396. var drprcpetc11 = dsf_getColumnNullToEmpty(ds_src, nRow, "drprcpetc11"); //제2시술
  397. var drprcpetc12 = dsf_getColumnNullToEmpty(ds_src, nRow, "drprcpetc12"); //F/U
  398. var prcpmixno = ds_src.getColumn(nRow, "prcpmixno"); //처방 믹스번호
  399. var cnt = 0;
  400. if ( erprcpflag == "Y") prcpnmbf = prcpnmbf + "[응급] ";
  401. if ( fasttrackflag == "Y") prcpnmbf = prcpnmbf + "[FT] ";
  402. if ( clincstdyflag == "Y") prcpnmbf = prcpnmbf + "[임상] ";
  403. if ( precureprcpflag == "Y") prcpnmbf = prcpnmbf + "[선] ";
  404. if ( drprcpetc11 == "Y") prcpnmbf = prcpnmbf + "[제2시술] ";
  405. if ( drprcpetc12 == "Y") prcpnmbf = prcpnmbf + "[F/U] ";
  406. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  407. //약
  408. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  409. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  410. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  411. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] ";
  412. prcpnm = prcpnmbf + prcpnm;
  413. if ( powdflag == "Y") prcpnm = prcpnm + "[powder] ";
  414. } else if ( prcpclscd == "A6" ) {
  415. //주사
  416. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  417. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  418. if ( selfprcpflag == "Y") prcpnmbf = prcpnmbf + "[home] ";
  419. if ( selfdrugflag == "Y") prcpnmbf = prcpnmbf + "[self] "; // 주사일때도 셀프 표시 2013.07.10 엄영만
  420. //if ( !utlf_isNull(prcpmixno) && prcpmixno != "-" && prcpmixno != "0") prcpnmbf = prcpnmbf + "(" + prcpmixno + ") "; // Mix 번호 표시 2018.04.17 엄영만
  421. prcpnm = prcpnmbf + prcpnm;
  422. if ( !utlf_isNull(drugspd) && drugspd != "0" ) {
  423. var drugspdunitflag = ds_src.getColumn(nRow, "drugspdunitflag"); //투여속도 단위 M0040
  424. if ( drugspdunitflag != "-" && !utlf_isNull(drugspdunitflag)) {
  425. drugspdunitflag = this.objects["ds_M0040"] == null ? '' : ds_M0040.lookup("cdid", drugspdunitflag, "cdnm");
  426. } else {
  427. drugspdunitflag = "";
  428. }
  429. prcpnm = prcpnm + " [" + drugspd + drugspdunitflag + "] ";
  430. }
  431. } else if ( prcpclscd == "D2" ) {
  432. //주사
  433. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  434. prcpnm = prcpnmbf + prcpnm;
  435. } else if ( prcpclscd == "B4" ) {
  436. //수혈 (혈액수혈)
  437. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  438. // if ( prepprcpflag == "N") prcpnmbf = prcpnmbf + " [T/F] ";
  439. prcpnm = prcpnmbf + prcpnm;
  440. if ( tnsfiltflag == "Y") prcpnm = prcpnm + "[Filter] ";
  441. if ( irflag == "Y") prcpnm = prcpnm + "[Irr] ";
  442. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" || prcpclscd == "G2") {
  443. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  444. if ( prepprcpflag == "Y") prcpnmbf = prcpnmbf + "[prep] ";
  445. if ( portprcpflag == "Y") prcpnmbf = prcpnmbf + "[por] ";
  446. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  447. prcpnm = prcpnmbf + prcpnm;
  448. } else if ( prcpclscd == "H2" || prcpclscd == "H4" || prcpclscd == "K2" || prcpclscd == "C4" ) {
  449. //수술, 처치, 치과
  450. prcpnm = prcpnmbf + prcpnm;
  451. if ( !utlf_isNull(opansflagcd) && opansflagcd != "-") prcpnm = prcpnm + " [" + opansflagcd + "] "; //수술마취구분-수술유형
  452. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) {
  453. //진단검사 (검체검사), 핵의학 체외
  454. if ( prnprcpflag == "Y") prcpnmbf = prcpnmbf + "[prn] ";
  455. prcpnm = prcpnmbf + prcpnm;
  456. // if ( ansttm != "") prcpnm = prcpnm + " [" + ansttm + "] "; //검사간격
  457. // if ( drugspd != "") prcpnm = prcpnm + " [" + drugspd + "] "; //기본시간
  458. } else if ( prcpclscd == "03" ) {
  459. //식이
  460. if ( dietprcpgenrflag == "1") prcpnmbf = prcpnmbf + "[조식] ";
  461. if ( dietprcpgenrflag == "2") prcpnmbf = prcpnmbf + "[중식] ";
  462. if ( dietprcpgenrflag == "3") prcpnmbf = prcpnmbf + "[석식] ";
  463. prcpnm = prcpnmbf + prcpnm;
  464. if ( !utlf_isNull(mealcalrcnts) && mealcalrcnts != "0" ) prcpnm = prcpnm + "[" + opansflagcd + ":" + mealcalrcnts + "] ";
  465. var drugmastspec = ds_src.getColumn(nRow, "drugmastspec") + "▩";
  466. var mealprotcntscond = lf_getArrayData (drugmastspec, 0, 3, " ▩", "|" );
  467. if ( !utlf_isNull(mealprotcnts) && mealprotcntscond == "Y" ) prcpnm = prcpnm + "[횟수:" + mealprotcnts + "] ";
  468. // if ( drugpackflag == "Y") prcpnm = prcpnm + "[보호자식추가] ";
  469. //if ( prcpdelivefact != "") prcpnm = prcpnm + " [" + prcpdelivefact + "] ";
  470. } else if ( prcpclscd == "F2" ) { //재활
  471. prcpnm = prcpnmbf + prcpnm;
  472. if("HZ272" != prcpcd ) { // 요청번호 20140422010 온열암 치료는 재활표기 따르지 않음. 스크립트 함수도 같이 수정. 2014.04.23 엄영만
  473. if ( !utlf_isNull(opansflagcd) && opansflagcd != "-") {
  474. //prcpnm = prcpnm + " [치료부위:" + opansflagcd + "] ";
  475. prcpnmaft = prcpnmaft + " " + opansflagcd + " ";
  476. cnt++;
  477. }
  478. if ( !utlf_isNull(prcptims) && prcptims != 0 ) {
  479. //prcpnm = prcpnm + " [1일치료횟수:" + prcptims + "/1일] ";
  480. prcpnmaft = prcpnmaft + " " + prcptims + "/1일 ";
  481. cnt++;
  482. }
  483. // 15.05.19 현행화 START
  484. //if ( rehbprcpenddd != "" && rehbprcpenddd != "-" ) { // 요청번호 20141118006 재활처방 마감일자 표시하지 않기로 함. 2014.12.26 엄영만
  485. // prcpnm = prcpnm + " [마감일:" + etcprcpresncd.substring (0,4) + "-" + etcprcpresncd.substring (4,6) + "-" + etcprcpresncd.substring (6,8) + "] ";
  486. // prcpnmaft = prcpnmaft + " " + rehbprcpenddd.substring (0,4) + "-" + rehbprcpenddd.substring (4,6) + "-" + rehbprcpenddd.substring (6,8) + " ";
  487. // cnt++;
  488. //}
  489. // 15.05.19 현행화 END
  490. if ( cnt > 0 ) {
  491. prcpnm = prcpnm + " [" + prcpnmaft + "]";
  492. }
  493. }
  494. } else {
  495. prcpnm = prcpnmbf + prcpnm;
  496. }
  497. if ( trnptbftestflag == "Y") {
  498. prcpnm = prcpnm + " [pre-workup]";
  499. } else if ( trnptbftestflag == "D") {
  500. prcpnm = prcpnm + " [donor w/u]";
  501. }
  502. if ( prcpkindcd == "90") prcpnm = prcpnm + " [입원전검사(당일)] ";
  503. if ( prcpkindcd == "95") prcpnm = prcpnm + " [입원전검사(전일)] ";
  504. if ( prcpkindcd == "80") prcpnm = prcpnm + " [예약처방] ";
  505. if ( hsctdelivepos == "1") prcpnm = prcpnm + " [병동]";
  506. else if ( hsctdelivepos == "2") prcpnm = prcpnm + " [성분헌혈]";
  507. else if ( hsctdelivepos == "3") prcpnm = prcpnm + " [세포처리실]";
  508. if ( ds_src.getColumn(nRow, "drprcpetc2") == "Y" ) { // 특수주사실 체크 추가 요청 20081027 by Moonsh
  509. prcpnm = prcpnm + " [암센터주사실] ";
  510. } else if ( ds_src.getColumn(nRow, "drprcpetc2") == "B" ) {
  511. prcpnm = prcpnm + " [BMT주사실] ";
  512. }
  513. ds_src.setColumn(nRow, "prcpnm", prcpnm );
  514. ds_src.setColumn(nRow, "prcprefseq","0" );
  515. }
  516. /***************************************************************************************************
  517. * Function : lf_chgChoiDr
  518. * Description : 선택진료의 변경
  519. * Argument : sMode [String : ]
  520. * : nCurRow [Number : ]
  521. * return type :
  522. * Creator :
  523. * 변환OK
  524. ***************************************************************************************************/
  525. function lf_chgChoiDr( mode, currow, sXpt, sYpt, sDsPrcp )
  526. {
  527. var ds_temp_prcplist = utlf_isNull(sDsPrcp) ? this.objects["ds_main_prcplist"] : this.objects[sDsPrcp];
  528. //2017.01.05 (약속)처방 복사시 그리드에 복사된 행 미표현 현상
  529. var bEvent = ds_temp_prcplist.enableevent;
  530. if( bEvent == false ){
  531. ds_temp_prcplist.enableevent = true;
  532. ds_temp_prcplist.enableevent = false;
  533. }
  534. var mon = sysf_getCurrentMonitorNumber();
  535. var xpt;
  536. var ypt;
  537. if(!utlf_isNull(sXpt) && !utlf_isNull(sYpt)) {
  538. xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + sXpt;
  539. ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + sYpt;
  540. } else {
  541. xpt = this.getOwnerFrame().position.x + 400;
  542. ypt = this.getOwnerFrame().position.y + 98;
  543. }
  544. var ordtype = "";
  545. var prcpcd = "";
  546. var prcpdd = "";
  547. var prcpnm = "";
  548. var prcpexecdeptcd = "";
  549. var prcpclscd = "";
  550. var drugmthdspccd = "";
  551. var useyn = "";
  552. var userid = "";
  553. //default 선택진료과 설정
  554. if ( mode == "pop" ) {
  555. ordtype = ds_temp_prcplist.getColumn(0, "prcpgenrflag" );
  556. prcpcd = ds_temp_prcplist.getColumn(0, "prcpcd" );
  557. prcpnm = ds_temp_prcplist.getColumn(0, "prcpnm" );
  558. prcpexecdeptcd = ds_temp_prcplist.getColumn(0, "prcpexecdeptcd" );
  559. prcpclscd = ds_temp_prcplist.getColumn(0, "prcpclscd" );
  560. drugmthdspccd = ds_temp_prcplist.getColumn(0, "drugmthdspccd" );
  561. } else if ( mode == "auto" ) {
  562. //ordtype = model.getValue ( "/root/main/prcp/prcplist[" + currow + "]/prcpgenrflag" );
  563. ordtype = ds_patflag.getColumn(0, "prcpgenrflag" ); //입력구분
  564. prcpcd = ds_temp_prcplist.getColumn(currow, "prcpcd" );
  565. prcpnm = ds_temp_prcplist.getColumn(currow, "prcpnm" );
  566. prcpexecdeptcd = ds_temp_prcplist.getColumn(currow, "prcpexecdeptcd" );
  567. prcpclscd = ds_temp_prcplist.getColumn(currow, "prcpclscd" );
  568. drugmthdspccd = ds_temp_prcplist.getColumn(currow, "drugmthdspccd" );
  569. } else {
  570. ordtype = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpgenrflag" );
  571. prcpcd = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpcd" );
  572. prcpnm = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpnm" );
  573. prcpexecdeptcd = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpexecdeptcd" );
  574. prcpclscd = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpclscd" );
  575. drugmthdspccd = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "drugmthdspccd" );
  576. }
  577. //defalut 선택진료과 설정. 예외
  578. if ( prcpexecdeptcd == "2010500000" || prcpexecdeptcd == "2010302030" ) { //내시경검사실, 내분비대사내과 일경우 소화기내과
  579. prcpexecdeptcd = "2010300000";
  580. } else if ( prcpexecdeptcd == "2220204000" ) { //물리치료실일 경우 재활의학과
  581. prcpexecdeptcd = "2220000000";
  582. } else if ( prcpexecdeptcd == "2010402030" || prcpexecdeptcd == "2010402090" ) { //심장혈관촬영실, 심전도검사실 경우 순환기내과
  583. prcpexecdeptcd = "2010400000";
  584. } else if ( prcpexecdeptcd == "2200238000" ) { //채혈실일 경우 진단검사의학과
  585. prcpexecdeptcd = "2200000000";
  586. }
  587. // 신규로직 테스트 적용 여부 추후 삭제 필요.
  588. var sChkNewLogicYn = lf_getHardCDList("Y", 400, 3); // 400 처방 관련 신규로직 적용여부
  589. var orddrid = "";
  590. var orddeptcd = "";
  591. var oTrgtObj = lf_getFormObject(mode);
  592. orddeptcd = oTrgtObj.ds_paminfo.getColumn(0, "orddeptcd");
  593. if ( ordtype == "O" ) {
  594. orddrid = oTrgtObj.ds_paminfo.getColumn(0, "orddrid");
  595. } else {
  596. orddrid = oTrgtObj.ds_paminfo.getColumn(0, "medispclid");
  597. }
  598. if(utlf_isNull(this.objects["ds_hidden_testcheckspcdrlist"]))
  599. this.dsf_createDs("ds_hidden_testcheckspcdrlist");
  600. lf_getHardCDList("N", 402, 0 , ds_hidden_testcheckspcdrlist); // 402 신규로직 적용대상 2011.11.19 엄영만 (추후 관련 로직 삭제해야함.)
  601. // End of 신규로직 테스트 적용 여부 추후 삭제 필요. orddrid 가져 오는 부분도 필요 없음.
  602. if ( sChkNewLogicYn == "Y"
  603. || (sChkNewLogicYn == "N" && !utlf_isNull(ds_hidden_testcheckspcdrlist.lookup("hardcd", orddrid, "hardcd"))) ) { // 신규로직 적용여부
  604. prcpdd = oTrgtObj.ds_init.getColumn(0, "prcpdd");
  605. frmf_clearParameter ( "SPMMB08600_useyn" );
  606. frmf_clearParameter ( "SPMMB08600_userid" );
  607. frmf_clearParameter ( "SPMMB08600_prcpdd" );
  608. frmf_clearParameter ( "SPMMB08600_prcpcd" );
  609. frmf_clearParameter ( "SPMMB08600_prcpnm" );
  610. frmf_clearParameter ( "SPMMB08600_prcpexecdeptcd" );
  611. frmf_clearParameter ( "SPMMB08600_orddeptcd" );
  612. frmf_clearParameter ( "SPMMB08600_orddrid" );
  613. frmf_clearParameter ( "SPMMB08600_prcpclscd" );
  614. frmf_clearParameter ( "SPMMB08600_drugmthdspccd" );
  615. frmf_clearParameter ( "SPMMB08600_userinfo" );
  616. frmf_setParameter("SPMMB08600_prcpdd", prcpdd);
  617. frmf_setParameter("SPMMB08600_prcpcd", prcpcd);
  618. frmf_setParameter("SPMMB08600_prcpnm", prcpnm);
  619. frmf_setParameter("SPMMB08600_prcpexecdeptcd", prcpexecdeptcd);
  620. frmf_setParameter("SPMMB08600_prcpclscd", prcpclscd);
  621. frmf_setParameter("SPMMB08600_orddeptcd", orddeptcd);
  622. frmf_setParameter("SPMMB08600_orddrid", orddrid);
  623. frmf_setParameter("SPMMB08600_drugmthdspccd", drugmthdspccd);
  624. frmf_setParameter("SPMMB0800_ioflag", ordtype);
  625. frmf_modal("SPMMB08600", "SPMMB08600", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  626. useyn = frmf_getParameter("SPMMB08600_useyn");
  627. userid = frmf_getParameter("SPMMB08600_userid");
  628. } else {
  629. frmf_clearParameter ( "SPMMB08300_flag");
  630. frmf_clearParameter ( "SPMMB08300_useyn" );
  631. frmf_clearParameter ( "SPMMB08300_userid" );
  632. frmf_clearParameter ( "SPMMB08300_orddeptcd" );
  633. frmf_clearParameter ( "SPMMB08300_userinfo" );
  634. frmf_setParameter("SPMMB08300_orddeptcd", prcpexecdeptcd);
  635. frmf_setParameter("SPMMB08300_ioflag", ordtype);
  636. frmf_modal("SPMMB08300", "SPMMB08300", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  637. useyn = frmf_getParameter("SPMMB08300_useyn");
  638. userid = frmf_getParameter("SPMMB08300_userid");
  639. }
  640. ds_temp_prcplist.enableevent = false;
  641. if(useyn == "Y"){
  642. if ( mode == "pop" ) {
  643. if ( ds_temp_prcplist.getColumn(0, "tempcol24" ) == "Y" ) {
  644. ds_temp_prcplist.setColumn(0, "choiordflag", "Y" );
  645. ds_temp_prcplist.setColumn(0, "specdrid", userid );
  646. } else {
  647. ds_temp_prcplist.setColumn(0, "choiordflag", "N" );
  648. ds_temp_prcplist.setColumn(0, "specdrid", "-");
  649. }
  650. } else if ( mode == "auto" ) {
  651. if ( ds_temp_prcplist.getColumn(currow, "tempcol24" ) == "Y" ) {
  652. ds_temp_prcplist.setColumn(currow, "choiordflag", "Y" );
  653. ds_temp_prcplist.setColumn(currow, "specdrid", userid );
  654. } else {
  655. ds_temp_prcplist.setColumn(currow, "choiordflag", "N" );
  656. ds_temp_prcplist.setColumn(currow, "specdrid", "-");
  657. }
  658. } else {
  659. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  660. for (var i = 0; i < selectedRows.length; i++) {
  661. if ( ds_temp_prcplist.getColumn(selectedRows[i], "tempcol24") == "Y" ) {
  662. ds_temp_prcplist.setColumn(selectedRows[i], "choiordflag", "Y");
  663. ds_temp_prcplist.setColumn(selectedRows[i], "specdrid", userid);
  664. } else {
  665. ds_temp_prcplist.setColumn(selectedRows[i], "choiordflag", "N");
  666. ds_temp_prcplist.setColumn(selectedRows[i], "specdrid", "-");
  667. }
  668. }
  669. }
  670. } else {
  671. if ( mode == "pop" ) {
  672. ds_temp_prcplist.setColumn(0, "choiordflag", "N" );
  673. ds_temp_prcplist.setColumn(0, "specdrid", "-");
  674. } else if ( mode == "auto" ) {
  675. ds_temp_prcplist.setColumn(currow, "choiordflag", "N" );
  676. ds_temp_prcplist.setColumn(currow, "specdrid", "-");
  677. } else {
  678. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  679. for (var i = 0; i < selectedRows.length; i++) {
  680. ds_temp_prcplist.setColumn(selectedRows[i], "choiordflag", "N" );
  681. ds_temp_prcplist.setColumn(selectedRows[i], "specdrid", "-");
  682. }
  683. }
  684. }
  685. // 선택진료의사가 아닐 경우 는 기본값으로 셋팅한다.
  686. var ds_usercombo = emr_getOrderBaseInfo("usercombo");
  687. ds_usercombo.filter("");
  688. if (mode =="pop") {
  689. var chkChoiSpcldrid = ds_temp_prcplist.getColumn(0, "specdrid");
  690. var nFindRow = ds_usercombo.findRowExpr("refseq == 'A' && userid =='" + chkChoiSpcldrid + "'");
  691. if (nFindRow == -1) {
  692. ds_temp_prcplist.setColumn(0, "choiordflag", "N");
  693. // 현행화 rev.71108
  694. if (chkChoiSpcldrid == sysf_getUserInfo("userid")) {
  695. ds_temp_prcplist.setColumn(0, "specdrid", chkChoiSpcldrid);
  696. } else {
  697. ds_temp_prcplist.setColumn(0, "specdrid", "-");
  698. }
  699. }
  700. } else if (mode == "auto") {
  701. var chkChoiSpcldrid = ds_temp_prcplist.getColumn(currow, "specdrid");
  702. var nFindRow = ds_usercombo.findRowExpr("refseq == 'A' && userid =='" + chkChoiSpcldrid + "'"); //ds_usercombo.filter("refseq = 'A' && userid ='" + chkChoiSpcldrid + "'");
  703. if (nFindRow == -1) { // utlf_isNull(choiSpclDrid)
  704. ds_temp_prcplist.setColumn(currow, "choiordflag", "N" );
  705. // 현행화 rev.71108
  706. if(chkChoiSpcldrid == sysf_getUserInfo("userid")) {
  707. ds_temp_prcplist.setColumn(currow, "specdrid", chkChoiSpcldrid);
  708. } else {
  709. ds_temp_prcplist.setColumn(currow, "specdrid", "-");
  710. }
  711. }
  712. } else {
  713. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  714. for (var i = 0; i < selectedRows.length; i++) {
  715. var chkChoiSpcldrid = ds_temp_prcplist.getColumn(selectedRows[i], "specdrid");
  716. var nFindRow = ds_usercombo.findRowExpr("refseq == 'A' && userid =='" + chkChoiSpcldrid + "'");
  717. if (nFindRow == -1) {
  718. ds_temp_prcplist.setColumn(selectedRows[i], "choiordflag", "N" );
  719. // 현행화 rev.71108
  720. if(chkChoiSpcldrid == sysf_getUserInfo("userid")) {
  721. ds_temp_prcplist.setColumn(selectedRows[i], "specdrid", chkChoiSpcldrid);
  722. } else {
  723. ds_temp_prcplist.setColumn(selectedRows[i], "specdrid", "-");
  724. }
  725. }
  726. }
  727. }
  728. ds_temp_prcplist.enableevent = true;
  729. }
  730. /***************************************************************************************************
  731. * Function : lf_chgTestDr
  732. * Description : 검사의사 변경
  733. * Argument : sMode [String : ]
  734. * : nCurRow [Number : ]
  735. * return type :
  736. * Creator :
  737. * 변환OK
  738. ***************************************************************************************************/
  739. function lf_chgTestDr( mode, currow, sXpt, sYpt, sDsPrcp )
  740. {
  741. var ds_temp_prcplist = utlf_isNull(sDsPrcp) ? this.objects["ds_main_prcplist"] : this.objects[sDsPrcp];
  742. //2017.01.05 (약속)처방 복사시 그리드에 복사된 행 미표현 현상
  743. var bEvent = ds_temp_prcplist.enableevent;
  744. if( bEvent == false ){
  745. ds_temp_prcplist.enableevent = true;
  746. ds_temp_prcplist.enableevent = false;
  747. }
  748. var mon = sysf_getCurrentMonitorNumber();
  749. var xpt;
  750. var ypt;
  751. if(!utlf_isNull(sXpt) && !utlf_isNull(sYpt)) {
  752. xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + sXpt;
  753. ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + sYpt;
  754. } else {
  755. xpt = this.getOwnerFrame().position.x + 400;
  756. ypt = this.getOwnerFrame().position.y + 98;
  757. }
  758. var sIoFlag = "";
  759. var sPrcpClscd = "";
  760. var sPrcpCd = "";
  761. var sPrcpNm = "";
  762. var sTestOrdFlag = "";
  763. var sDrPrcpEtc13 = ""; // 검사부서(수익부서)
  764. var sDrPrcpEtc14 = ""; // 검사의사(수익의사)
  765. var sUseYn = "";
  766. var sUserId = "";
  767. var sUserNm = "";
  768. var sDeptCd = "";
  769. var sDeptNm = "";
  770. //default 선택진료과 설정
  771. if ( mode == "pop" ) {
  772. sIoFlag = ds_temp_prcplist.getColumn(0, "prcpgenrflag" );
  773. sPrcpClscd = ds_temp_prcplist.getColumn(0, "prcpclscd" );
  774. sPrcpCd = ds_temp_prcplist.getColumn(0, "prcpcd" );
  775. sPrcpNm = ds_temp_prcplist.getColumn(0, "prcpnm" );
  776. sTestOrdFlag = ds_temp_prcplist.getColumn(0, "testordflag" );
  777. sDrPrcpEtc13 = ds_temp_prcplist.getColumn(0, "drprcpetc13" ); // 검사부서(수익부서)
  778. sDrPrcpEtc14 = ds_temp_prcplist.getColumn(0, "drprcpetc14" ); // 검사의사(수익의사)
  779. } else if ( mode == "auto" ) {
  780. sIoFlag = ds_patflag.getColumn(0, "prcpgenrflag" ); //입력구분
  781. sPrcpClscd = ds_temp_prcplist.getColumn(currow, "prcpclscd" );
  782. sPrcpCd = ds_temp_prcplist.getColumn(currow, "prcpcd" );
  783. sPrcpNm = ds_temp_prcplist.getColumn(currow, "prcpnm" );
  784. sTestOrdFlag = ds_temp_prcplist.getColumn(currow, "testordflag" );
  785. sDrPrcpEtc13 = ds_temp_prcplist.getColumn(currow, "drprcpetc13" ); // 검사부서(수익부서)
  786. sDrPrcpEtc14 = ds_temp_prcplist.getColumn(currow, "drprcpetc14" ); // 검사의사(수익의사)
  787. } else {
  788. sIoFlag = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpgenrflag" );
  789. sPrcpClscd = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpclscd" );
  790. sPrcpCd = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpcd" );
  791. sPrcpNm = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "prcpnm" );
  792. sTestOrdFlag = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "testordflag" );
  793. sDrPrcpEtc13 = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "drprcpetc13" ); // 검사부서(수익부서)
  794. sDrPrcpEtc14 = ds_temp_prcplist.getColumn(ds_temp_prcplist.rowposition, "drprcpetc14" ); // 검사의사(수익의사)
  795. }
  796. if(utlf_isNull(sTestOrdFlag)) { // sTestOrdFlag 검사의사 자동 팝업 여부 (Y:자동팝업, S:선택팝업, N:팝업하지 않음)
  797. sTestOrdFlag = "N";
  798. }
  799. if (sTestOrdFlag == "Y" || sTestOrdFlag == "S") { // 검사의사 지정 가능 처방
  800. frmf_clearParameter("SPMMB08800_useyn");
  801. frmf_clearParameter("SPMMB08800_userid");
  802. frmf_clearParameter("SPMMB08800_usernm");
  803. frmf_clearParameter("SPMMB08800_deptcd");
  804. frmf_clearParameter("SPMMB08800_deptnm");
  805. frmf_clearParameter("SPMMB08800_prcpclscd");
  806. frmf_clearParameter("SPMMB08800_prcpcd");
  807. frmf_clearParameter("SPMMB08800_prcpnm");
  808. frmf_clearParameter("SPMMB08800_drprcpetc13"); // 검사부서(수익부서)
  809. frmf_clearParameter("SPMMB08800_drprcpetc14"); // 검사의사(수익의사)
  810. frmf_setParameter("SPMMB08800_ioflag", sIoFlag);
  811. frmf_setParameter("SPMMB08800_prcpclscd", sPrcpClscd);
  812. frmf_setParameter("SPMMB08800_prcpcd", sPrcpCd);
  813. frmf_setParameter("SPMMB08800_prcpnm", sPrcpNm);
  814. frmf_setParameter("SPMMB08800_drprcpetc13", sDrPrcpEtc13); // 검사부서(수익부서)
  815. frmf_setParameter("SPMMB08800_drprcpetc14", sDrPrcpEtc14); // 검사의사(수익의사)
  816. frmf_modal("SPMMB08800", "SPMMB08800", null, false, mon, xpt, ypt, null, null, null, null, null, "P");
  817. sUseYn = frmf_getParameter("SPMMB08800_useyn");
  818. ds_temp_prcplist.enableevent = false;
  819. if(sUseYn == "Y"){
  820. sUserId = frmf_getParameter("SPMMB08800_userid");
  821. sUserNm = frmf_getParameter("SPMMB08800_usernm");
  822. sDeptCd = frmf_getParameter("SPMMB08800_deptcd");
  823. sDeptNm = frmf_getParameter("SPMMB08800_deptnm");
  824. if ( mode == "pop" ) {
  825. ds_temp_prcplist.setColumn(0, "drprcpetc13", sDeptCd);
  826. ds_temp_prcplist.setColumn(0, "drprcpetc13nm", sDeptNm);
  827. ds_temp_prcplist.setColumn(0, "drprcpetc14", sUserId);
  828. ds_temp_prcplist.setColumn(0, "drprcpetc14nm", sUserNm);
  829. } else if ( mode == "auto" ) {
  830. ds_temp_prcplist.setColumn(currow, "drprcpetc13", sDeptCd);
  831. ds_temp_prcplist.setColumn(currow, "drprcpetc13nm", sDeptNm);
  832. ds_temp_prcplist.setColumn(currow, "drprcpetc14", sUserId);
  833. ds_temp_prcplist.setColumn(currow, "drprcpetc14nm", sUserNm);
  834. } else {
  835. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  836. for (var i = 0; i < selectedRows.length; i++) {
  837. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc13", sDeptCd);
  838. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc13nm", sDeptNm);
  839. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc14", sUserId);
  840. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc14nm", sUserNm);
  841. }
  842. }
  843. } else {
  844. if ( mode == "pop" ) {
  845. ds_temp_prcplist.setColumn(0, "drprcpetc13", "-");
  846. ds_temp_prcplist.setColumn(0, "drprcpetc13nm", "");
  847. ds_temp_prcplist.setColumn(0, "drprcpetc14", "-");
  848. ds_temp_prcplist.setColumn(0, "drprcpetc14nm", "");
  849. } else if ( mode == "auto" ) {
  850. ds_temp_prcplist.setColumn(currow, "drprcpetc13", "-");
  851. ds_temp_prcplist.setColumn(currow, "drprcpetc13nm", "");
  852. ds_temp_prcplist.setColumn(currow, "drprcpetc14", "-");
  853. ds_temp_prcplist.setColumn(currow, "drprcpetc14nm", "");
  854. } else {
  855. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  856. for (var i = 0; i < selectedRows.length; i++) {
  857. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc13", "-");
  858. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc13nm", "");
  859. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc14", "-");
  860. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc14nm", "");
  861. }
  862. }
  863. }
  864. } else { // 검사의사 지정 불가 처방
  865. if ( mode == "pop" ) {
  866. ds_temp_prcplist.setColumn(0, "drprcpetc13", "");
  867. ds_temp_prcplist.setColumn(0, "drprcpetc13nm", "");
  868. ds_temp_prcplist.setColumn(0, "drprcpetc14", "");
  869. ds_temp_prcplist.setColumn(0, "drprcpetc14nm", "");
  870. } else if ( mode == "auto" ) {
  871. ds_temp_prcplist.setColumn(currow, "drprcpetc13", "");
  872. ds_temp_prcplist.setColumn(currow, "drprcpetc13nm", "");
  873. ds_temp_prcplist.setColumn(currow, "drprcpetc14", "");
  874. ds_temp_prcplist.setColumn(currow, "drprcpetc14nm", "");
  875. } else {
  876. var selectedRows = grdf_getSelectedRows(div_all.grd_prcplist);
  877. for (var i = 0; i < selectedRows.length; i++) {
  878. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc13", "");
  879. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc13nm", "");
  880. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc14", "");
  881. ds_temp_prcplist.setColumn(selectedRows[i], "drprcpetc14nm", "");
  882. }
  883. }
  884. }
  885. ds_temp_prcplist.enableevent = true;
  886. }
  887. // * 변환 OK
  888. function lf_prcpExecDeptSrch(flag) {
  889. var prcpcd = ds_main_prcplist.getColumn(0, "prcpcd" );
  890. var prcpdd = "";
  891. if(frmf_checkOpener() && !utlf_isNull(opener.ds_init)) {
  892. prcpdd = opener.ds_init.getColumn(0, "prcpdd");
  893. }
  894. // div 같은 곳에서 실행될때를 위해 넣음
  895. if(utlf_isNull(prcpdd)) {
  896. try {
  897. if(!utlf_isNull(oOpener) && !utlf_isNull(oOpener.objects["ds_init"])) {
  898. prcpdd = lf_getDsValue(oOpener.ds_init, 0, "prcpdd");
  899. }
  900. } catch (E) {}
  901. }
  902. if(utlf_isNull(prcpdd)) {
  903. prcpdd = ds_init.getColumn(0, "prcpdd" );
  904. if (utlf_isNull(prcpdd)) {
  905. prcpdd = utlf_getCurrentDate();
  906. }
  907. }
  908. if(utlf_isNull(this.objects["ds_send"])) {
  909. dsf_createDsRow("ds_send", [{col:"cond1", type:"string", size:256, val:prcpcd},
  910. {col:"cond2", type:"string", size:256, val:prcpdd},
  911. {col:"cond3", type:"string", size:256, val:flag}]);
  912. } else {
  913. ds_send.clearData();
  914. ds_send.addRow();
  915. ds_send.setColumn(0, "cond1" , prcpcd);
  916. ds_send.setColumn(0, "cond2" , prcpdd);
  917. ds_send.setColumn(0, "cond3" , flag);
  918. }
  919. //KNUH_20110208, 주희경, 진료 속도 개선을 위해 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  920. //flag가 all이면 이미 조회 해 놓은 데이터 카피
  921. var srchSuccess = false;
  922. if ( flag == "all" ) {
  923. var ds_dept = emr_getOrderBaseInfo("dept");
  924. if ( ds_dept.rowcount > 0 ) {
  925. ds_orddept.copyData(ds_dept);
  926. srchSuccess = true;
  927. }
  928. }
  929. //all이 아니거나 복사할 데이터가 없을 시 해당 데이터 재조회
  930. if(!srchSuccess) {
  931. var oParam = {};
  932. oParam.id = "TRMMO00116";
  933. oParam.service = "prcpmngtapp.PrcpMngt";
  934. oParam.method = "reqGetPrcpExecDeptSrch";
  935. oParam.inds = "req=ds_send";
  936. oParam.outds = "ds_orddept=dept";
  937. oParam.async = false;
  938. tranf_submit(oParam);
  939. }
  940. }
  941. /***************************************************************************************************
  942. * Function : lf_altPrcpCd
  943. * Description : 처방에 따른 알림 팝업호출(repeat, 대체처방 등)
  944. * Argument : currow []
  945. * : flag
  946. * : strSrc
  947. * : prcpInptFlag
  948. * return type :
  949. * Creator :
  950. * 변환OK
  951. ***************************************************************************************************/
  952. function lf_altPrcpCd( currow, flag, strSrc, prcpInptFlag )
  953. {
  954. var prcpcd = "";
  955. var prcpnm = "";
  956. var altcdinfo = "";
  957. var ds_src;
  958. if ( flag == "child" ) {
  959. var oTrgtObj = lf_getFormObject(flag);
  960. var childlist = oTrgtObj.div_all.Tab_prcp.components;
  961. var childcomp = childlist[oTrgtObj.div_all.Tab_prcp.tabindex];
  962. ds_src = childcomp.objects[strSrc];
  963. } else {
  964. ds_src = this.objects[strSrc];
  965. }
  966. prcpcd = ds_src.getColumn(currow, "prcpcd");
  967. prcpnm = ds_src.getColumn(currow, "prcpnm");
  968. altcdinfo = ds_src.getColumn(currow, "tempcol16");
  969. frmf_setParameter ( "SPMMO15400_cond1", prcpcd ); //원래처방코드
  970. frmf_setParameter ( "SPMMO15400_cond2", prcpnm ); //처방명
  971. frmf_setParameter ( "SPMMO15400_cond3", altcdinfo ); //대체처방코드
  972. frmf_modal("SPMMO15400", "SPMMO15400", null, null, null, null, null, null, null, null, null, null, "M");
  973. frmf_clearParameter ( "SPMMO15400_cond1" ); //원래처방코드
  974. frmf_clearParameter ( "SPMMO15400_cond2" ); //처방명
  975. frmf_clearParameter ( "SPMMO15400_cond3" ); //대체처방코드
  976. return 0;
  977. }
  978. /**
  979. * @desc : 항생제이면서 제한항생자가 아니면 항생제처리
  980. *
  981. * @
  982. * @param :
  983. * @return :
  984. * @author : 마정민
  985. * @---------------------------------------------------
  986. */
  987. function lf_antiMicChk( currow, flag, strSrc, prcpInptFlag ) {
  988. //20080725 마정민추가. 항생제이면서 제한항생자가 아니면 항생제처리
  989. var prcpcd = "";
  990. var drugmastspec = "";
  991. var pid = "";
  992. var prcpdd = "";
  993. //CP는 CDSS항생제 체크 skip임. (2008.09.29 JJE)
  994. if( ds_root.getColumn(0, "cp") == "Y" ){
  995. return 1;
  996. }
  997. var ds_src;
  998. if ( flag == "child" ) {
  999. var oTrgtObj = lf_getFormObject(flag);
  1000. var childlist = oTrgtObj.div_all.Tab_prcp.components;
  1001. var childcomp = childlist[oTrgtObj.div_all.Tab_prcp.tabindex];
  1002. ds_src = childcomp.objects[strSrc];
  1003. } else {
  1004. ds_src = this.objects[strSrc];
  1005. }
  1006. prcpcd = ds_src.getColumn(currow, "prcpcd");
  1007. prcpdd = ds_init.getColumn(0, "prcpdd");
  1008. pid = ds_paminfo.getColumn(0, "pid");
  1009. var sRef = dsf_createDsRow("ds_TRMMO01609", [{col:"pid", type:"string", size:256, val:pid},
  1010. {col:"prcpcd", type:"string", size:256, val:prcpcd},
  1011. {col:"prcpdd", type:"string", size:256, val:prcpdd}]);
  1012. var sDsResult = dsf_createDs("ds_result_antibiotics");
  1013. var oDsResult = this.objects[sDsResult];
  1014. var oParam = {};
  1015. oParam.id = "TRMMO01609";
  1016. oParam.service = "prcpmngtapp.AntiBioPrcpMngt";
  1017. oParam.method = "reqGetAntiBioBalDayChk";
  1018. oParam.inds = "req=" + sRef;
  1019. oParam.outds = sDsResult + "=antibiotics";
  1020. oParam.async = false;
  1021. oParam.callback = "cf_TRMMO01609";
  1022. tranf_submit(oParam);
  1023. var result = 1;
  1024. if(arErrorCode.pop("TRMMO01609") > -1){
  1025. /*var chkAntibio = "20"; // 항생제 antibiotics(20), 제한항생제 restantimic(10) 따로 구분 후 저장 - by Moonsh 20081013
  1026. var getAntibio = model.getValue ( "/root/result/antibiotics/antibioticsinfo" );
  1027. var srchAntibio = getAntibio.split("|");
  1028. if (srchAntibio[1] == "20"){
  1029. chkAntibio = "20";
  1030. } else {
  1031. chkAntibio = "10";
  1032. setParameter ( "SPMMMD00700_chkday", srchAntibio[9] ); //체크일 추가 요청 - by Moonsh 20081021
  1033. }*/
  1034. if (oDsResult.getColumn(0, "popyn" )=="Y") {
  1035. // 항생제 검색어 초기화
  1036. var prcplistcnt = ds_main_prcplist.rowcount - 1;
  1037. var prcpcd = ds_main_prcplist.getColumn(prcplistcnt, "prcpcd" );
  1038. var prcpnm = ds_main_prcplist.getColumn(prcplistcnt, "prcpnm" );
  1039. if (!utlf_isNull(prcpcd) && utlf_isNull(prcpnm)) {
  1040. ds_main_prcplist.setColumn(prcplistcnt, "prcpcd", "");
  1041. }
  1042. lf_prcpModal("SPMMD01600", 20, 50);
  1043. result = 0;
  1044. } else {
  1045. ds_src.setColumn(currow, "tempcol8", oDsResult.getColumn(0, "antibioticsinfo"));
  1046. result = 1;
  1047. }
  1048. }
  1049. dsf_deleteDs(sRef);
  1050. dsf_deleteDs(sDsResult);
  1051. return result;
  1052. }
  1053. function cf_TRMMO01609(sSvcId, nErrorCode, sErrorMsg) {
  1054. arErrorCode.push(sSvcId, nErrorCode);
  1055. }
  1056. /***************************************************************************************************
  1057. * Function : lf_setPrcpUnit
  1058. * Description : 처방화면에서 수량단위, 횟수단위, 투여속도 단위 등을 선택하는 팝업 호출
  1059. * Argument : nRow
  1060. * : objSrcDs
  1061. * : sFlag
  1062. * : sCalcFlag
  1063. * return type :
  1064. * Creator :
  1065. ***************************************************************************************************/
  1066. function lf_setPrcpUnit(nRow, objSrcDs , sFlag , sCalcFlag, e:GridClickEventInfo )
  1067. {
  1068. if (nRow < 0)
  1069. return;
  1070. if (utlf_isNull(sFlag))
  1071. sFlag = "drprcpetc3";
  1072. var status = objSrcDs.getColumn(nRow, "status");
  1073. if (status == "S" || utlf_isNull(status))
  1074. return;
  1075. var prcpstat = objSrcDs.getColumn(nRow, "tempcol1");
  1076. if (!utlf_isNull(prcpstat) && prcpstat != "000" && sCalcFlag != "Y")
  1077. return;
  1078. var inptcntrid = objSrcDs.getColumn(nRow, "inptctrlflag");
  1079. var objInptListDs = emr_getOrderBaseInfo("prcpinptctrllist");
  1080. if (objInptListDs != null) {
  1081. objInptListDs.filterstr = "inptcntrid=='"+ inptcntrid +"'";
  1082. }
  1083. if (objInptListDs == null || objInptListDs.rowcount < 1) {
  1084. objInptListDs.filterstr = "";
  1085. return;
  1086. }
  1087. var xpt = 0;
  1088. var ypt = 0;
  1089. var sScreenId = this.name.split("_")[0];
  1090. if (sScreenId == "SMMMO00100" || sScreenId == "SMMMO00200") {
  1091. if(utlf_isNull(e)){
  1092. xpt = system.cursorx;
  1093. ypt = system.cursory;
  1094. if (sFlag == "drprcpetc3")
  1095. xpt = 777;
  1096. else if (sFlag == "drprcpetc7")
  1097. xpt = 803;
  1098. else if (sFlag == "drugspdunitflag")
  1099. xpt = 905;
  1100. ypt = 414 + 22 * nRow;
  1101. if (nRow > 11)
  1102. ypt = 656;
  1103. xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + parseInt(xpt) - 350;
  1104. var grdtop = grp_prcp.grd_prcplist.position.top;
  1105. ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + parseInt(ypt) - parseInt(grdtop);
  1106. if (ds_init_data.getColumn(0, "addPrcp") == "Y") {
  1107. ypt = ypt - 22 * 4;
  1108. xpt = xpt + 65;
  1109. }
  1110. }else{
  1111. xpt = system.clientToScreenX(grp_prcp.grd_prcplist, e.clientX);
  1112. ypt = system.clientToScreenY(grp_prcp.grd_prcplist, e.clientY);
  1113. //trace("X" + xpt);
  1114. }
  1115. }
  1116. if (sFlag == "drprcpetc3") {
  1117. if (objInptListDs.getColumn(0, "unit") != "Y") {
  1118. return;
  1119. }
  1120. var sRef = dsf_createDsRow("ds_cond_prcpunitinfo", [{col:"prcpcd", type:"string", size:256, val:objSrcDs.getColumn(nRow, "prcpcd")},
  1121. {col:"drprcpketc4", type:"string", size:256, val:objSrcDs.getColumn(nRow, "drprcpetc4")},
  1122. {col:"drprcpetc3", type:"string", size:256, val:objSrcDs.getColumn(nRow, "drprcpetc3")},
  1123. {col:"drprcpetc7", type:"string", size:256, val:objSrcDs.getColumn(nRow, "drprcpetc7")},
  1124. {col:"prcpunitflag", type:"string", size:256, val:objSrcDs.getColumn(nRow, "prcpqtyunitflag")},
  1125. {col:"prcptims", type:"string", size:256, val:objSrcDs.getColumn(nRow, "prcptims")},
  1126. {col:"prcpdayno", type:"string", size:256, val:""}]);
  1127. var oRef = this.objects[sRef];
  1128. var sDsTemp = dsf_createDs("ds_temp");
  1129. var oDsTemp = this.objects[sDsTemp];
  1130. if (sCalcFlag == "Y") {
  1131. oRef.setColumn(0, "prcpdayno", objSrcDs.getColumn(nRow, "prcpdayno"));
  1132. }
  1133. else if (sCalcFlag == "Q") {
  1134. oRef.setColumn(0, "prcpdayno", "Q");
  1135. }
  1136. else {
  1137. oRef.setColumn(0, "prcpdayno", "");
  1138. }
  1139. var selunitinfo;
  1140. var rtn;
  1141. var oParam = {};
  1142. oParam.id = "TRMMO00142"; // transaction을 구분하기 위한 ID
  1143. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  1144. oParam.method = "reqGetPrcpUnit"; // method ID
  1145. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  1146. oParam.outds = sDsTemp + "=prcpunit"; // transaction을 처리 결과를 받을 Dataset의 ID
  1147. tranf_submit(oParam);
  1148. if (oDsTemp != null && oDsTemp.rowcount > 0) {
  1149. if (sCalcFlag == "Y") {
  1150. oDsTemp.filterstr = "prcpunitflag == '3'";
  1151. if (oDsTemp != null && oDsTemp.rowcount > 0) {
  1152. rtn = "총수량: " + oDsTemp.getColumn(0, "sch_prcpqty")+ " " +oDsTemp.getColumn(0, "sch_drprcpetc3");
  1153. }
  1154. oDsTemp.filterstr = "";
  1155. }
  1156. else if (sCalcFlag == "Q") {
  1157. oDsTemp.filterstr = "prcpunitflag == '3'";
  1158. rtn = "";
  1159. if (oDsTemp != null && oDsTemp.rowcount > 0) {
  1160. rtn = oDsTemp.getColumn(0, "drprcpetc4");
  1161. }
  1162. oDsTemp.filterstr = "";
  1163. }
  1164. else {
  1165. rtn = undefined;
  1166. var objArg = {};
  1167. objArg["plgds_prcpnode"] = objSrcDs;
  1168. objArg["plgds_orgprcpnode"] = objSrcDs;
  1169. objArg["plgds_unitdata"] = oDsTemp;
  1170. objArg["plgv_sFlag"] = sFlag;
  1171. objArg["plgv_nIndx"] = nRow;
  1172. frmf_modal("SPMMO35800", "SPMMO35800", objArg, false, null, xpt,ypt, null, null);
  1173. lf_drugCalc("drprcpetc3" , nRow, objSrcDs);
  1174. if (objSrcDs.getOrgColumn(nRow, "drprcpetc3") != objSrcDs.getColumn(nRow, "drprcpetc3")) {
  1175. fBaseMthd(nRow, objSrcDs); // lf_baseMthd -> fBaseMthd
  1176. }
  1177. }
  1178. }
  1179. // Temp로 사용한 Dataset을 삭제
  1180. var oRemoveDs = this.removeChild(sRef);
  1181. oRemoveDs = null;
  1182. oRemoveDs = this.removeChild(sDsTemp);
  1183. oRemoveDs = null;
  1184. return rtn;
  1185. }
  1186. else if (sFlag == "drprcpetc7") {
  1187. if (objInptListDs.getColumn(0, "dvtime") != "Y") return;
  1188. var objArg = {};
  1189. objArg["plgds_prcpnode"] = objSrcDs;
  1190. objArg["plgv_sFlag"] = sFlag;
  1191. objArg["plgv_nIndx"] = nRow;
  1192. frmf_modal("SPMMO35800", "SPMMO35800", objArg, false, null, xpt, ypt, null, null);
  1193. lf_drugCalc("drprcpetc7" , nRow, objSrcDs);
  1194. fBaseMthd(nRow, objSrcDs); // lf_baseMthd -> fBaseMthd
  1195. }
  1196. else if (sFlag == "drugspdunitflag") {
  1197. if (objInptListDs.getColumn(0, "inj" != "Y")) return;
  1198. var objArg = {};
  1199. objArg["plgds_prcpnode"] = objSrcDs;
  1200. objArg["plgv_sFlag"] = sFlag;
  1201. objArg["plgv_nIndx"] = nRow;
  1202. frmf_modal("SPMMO35800", "SPMMO35800", objArg, false, null, xpt, ypt, null, null);
  1203. }
  1204. objInptListDs.filterstr = ""; //filter 초기화
  1205. }
  1206. /***************************************************************************************************
  1207. * Function : lf_subcretnoSet
  1208. * Description : (입원/응급/DSC)임상연구처방을 위한 subcretno를 셋팅한다.
  1209. * Argument : sPrcpInptFlag []
  1210. * : ctrlnm []
  1211. * : oDsSrc []
  1212. * : nSendRow []
  1213. * return type :
  1214. * Creator :
  1215. * 변환OK
  1216. ***************************************************************************************************/
  1217. function lf_subcretnoSet(prcpinptflag, ctrlnm:Dataset, oDsSrc, sendRow) {
  1218. var oTrgtObj = lf_getFormObject("pop");
  1219. var prcpgenrflag;
  1220. var clincstdyflag;
  1221. var pid;
  1222. var indd;
  1223. var subcretno;
  1224. if (prcpinptflag == "0" ) { // 상세팝업에서...
  1225. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  1226. clincstdyflag = ctrlnm.getColumn(0, "clincstdyflag");
  1227. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  1228. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  1229. pid = oTrgtObj.ds_paminfo.getColumn(0, "pid");
  1230. indd = oTrgtObj.ds_paminfo.getColumn(0, "indd");
  1231. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1232. if ( sSubcretno == "0" ) {
  1233. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1234. ctrlnm.setColumn(0, "clincstdyflag", "N");
  1235. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1236. } else {
  1237. ds_main_prcplist.setColumn(0, "subcretno", sSubcretno);
  1238. }
  1239. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  1240. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1241. }
  1242. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1243. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1244. if ( clincstdyflag == "Y" && oTrgtObj.ds_paminfo.getColumn(0, "insukind") != "71") {
  1245. ctrlnm.setColumn(0, "clincstdyflag", "N");
  1246. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1247. }
  1248. }
  1249. } else if (prcpinptflag == "1") { // 일괄입력에서...
  1250. var prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  1251. var clincstdyflag = ds_chkflag.getColumn(0, "clincstdyflag");
  1252. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  1253. if(ds_chkflag.getColumn(0, "clincstdyflag") == "Y"){
  1254. var pid = oTrgtObj.ds_paminfo.getColumn(0, "pid");
  1255. var indd = oTrgtObj.ds_paminfo.getColumn(0, "indd");
  1256. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1257. if ( sSubcretno == "0" ) {
  1258. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1259. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1260. return -1
  1261. } else {
  1262. ds_main_prcplist.setColumn(0, "subcretno", sSubcretno);
  1263. }
  1264. }else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  1265. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1266. }
  1267. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1268. ds_main_prcplist.setColumn(0, "subcretno", "0");
  1269. if ( clincstdyflag == "Y" && oTrgtObj.ds_paminfo.getColumn(0, "insukind") != "71") {
  1270. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1271. return -1;
  1272. }
  1273. }
  1274. } else if (prcpinptflag == "2") { // 전처방, 약속처방에서, 임상시험 부유형 자동세팅, cHc, 2009-07-21
  1275. var prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  1276. var clincstdyflag = ctrlnm;
  1277. if(prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E") {
  1278. if(clincstdyflag == "Y"){ //임상연구가 Y로 처리된 경우에만 보조유형세팅
  1279. var pid = oTrgtObj.ds_paminfo.getColumn(0, "pid");
  1280. var indd = oTrgtObj.ds_paminfo.getColumn(0, "indd");
  1281. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1282. if ( sSubcretno == "0" ) {
  1283. oDsSrc.setColumn(sendRow, "subcretno", "0");
  1284. oDsSrc.setColumn(sendRow, "clincstdyflag", "N");
  1285. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1286. } else {
  1287. oDsSrc.setColumn(sendRow, "subcretno", sSubcretno);
  1288. }
  1289. } else{ //임상연구가 N로 처리된 경우에는 subcretno 0로 처리
  1290. oTrgtObj.oDsSrc.setColumn(sendRow, "subcretno", "0");
  1291. }
  1292. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1293. oDsSrc.setColumn(sendRow, "subcretno", "0");
  1294. if ( clincstdyflag == "Y" && oTrgtObj.ds_paminfo.getColumn(0, "insukind") != "71") {
  1295. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1296. }
  1297. }
  1298. } else if (prcpinptflag == "3") { // kimsj 임상 일괄입력 팝업 체크
  1299. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  1300. if (prcpgenrflag == "I" || prcpgenrflag == "D" || prcpgenrflag == "E"){
  1301. var pid = ds_paminfo.getColumn(0, "pid");
  1302. var indd = ds_paminfo.getColumn(0, "indd");
  1303. sSubcretno = lf_getSubcretno(pid, indd, "clincstdyflag");
  1304. if ( sSubcretno == "0" ) {
  1305. sysf_messageBox ("임상시험 보험유형이 없습니다. 보험유형을", "I007");
  1306. return -1;
  1307. }
  1308. } else { //외래, 건진의 경우는 subcretno 0로 처리
  1309. if (ds_paminfo.getColumn(0, "insukind") != "71") {
  1310. sysf_messageBox ("보험유형이 임상시험이 아닙니다. 보험유형을", "I007");
  1311. return -1;
  1312. }
  1313. }
  1314. return 0;
  1315. }
  1316. }
  1317. /**
  1318. * @desc : 환자의 부유형 원무접수번호(subcretno)를 조회 한다.
  1319. * @ :
  1320. * @param :
  1321. * @return :
  1322. * @author : 엄영만 2012.05.09
  1323. * @---------------------------------------------------
  1324. * 변환OK
  1325. */
  1326. function lf_getSubcretno(sPid, sIndd, sSrchcls) {
  1327. var sSubcretno = "0";
  1328. if(utlf_isNull(sPid)) { sysf_messageBox ( "환자번호가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  1329. if(utlf_isNull(sIndd)) { sysf_messageBox ( "입원일자가 없습니다. 보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" ); return sSubcretno;}
  1330. if(utlf_isNull(sSrchcls)) { sSrchcls = ""; }
  1331. var sRef = dsf_createDsRow("ds_temp_send", [{col:"pid", type:"string", size:256, val:sPid},
  1332. {col:"indd", type:"string", size:256, val:sIndd},
  1333. {col:"srchcls", type:"string", size:256, val:sSrchcls}]);
  1334. var oRef = this.objects[sRef];
  1335. var sDsTemp = dsf_createDs("ds_temp_patsupkind");
  1336. var oDsTemp = this.objects[sDsTemp];
  1337. var oParam = {};
  1338. oParam.id = "TRMMO15701";
  1339. oParam.service = "prcpmngtapp.PatPrcpSrchMngt";
  1340. oParam.method = "reqGetPatSupKind";
  1341. oParam.inds = "req=" + sRef;
  1342. oParam.outds = sDsTemp + "=patsupkind";
  1343. oParam.async = false;
  1344. oParam.callback = "cf_TRMMO15701";
  1345. tranf_submit(oParam);
  1346. if(arErrorCode.pop("TRMMO15701") > -1) {
  1347. if(!utlf_isNull(oDsTemp)) {
  1348. if(sSrchcls == "clincstdyflag") { // 임상시험 유형
  1349. sSubcretno = oDsTemp.getColumn(0, "cretno");
  1350. if(utlf_isNull(sSubcretno)) {
  1351. sSubcretno = "0";
  1352. }
  1353. } else { // 기왕증 등 임상시험 이외의 경우
  1354. if(oDsTemp.rowcount > 1){
  1355. var objArgs = new Object();
  1356. objArgs.arg_ds_temp_patsupkind = oDsTemp;
  1357. frmf_modal("SPMMO15700", "SPMMO15700", objArgs, null, null, null, null, null, null, null, null, null, "M");
  1358. sSubcretno = frmf_getParameter("SPMMO15700_subcretno");
  1359. }
  1360. }
  1361. }
  1362. } else {
  1363. sysf_messageBox ( "보조유형 조회에 실패 하였습니다. 전산실(6598)로 연락 바랍니다.", "E999" );
  1364. }
  1365. dsf_deleteDs(sRef);
  1366. dsf_deleteDs(sDsTemp);
  1367. return sSubcretno;
  1368. }
  1369. function cf_TRMMO15701(sSvcId, nErrorCode, sErrorMsg) {
  1370. arErrorCode.push(sSvcId, nErrorCode);
  1371. }
  1372. /**
  1373. * @desc : 대체약이 있을경우 팝업처리
  1374. * @param : currow: 대체약을 띄울 팝업
  1375. : flag: 대체약 팝업 flag ( 1:처방복사, 2:대체약일괄변경, 3:대체약폴더내변경 )
  1376. : strSrc: source Node
  1377. * @return : void
  1378. * @authur : 마정민 2007. 6. 21
  1379. * 변환OK
  1380. */
  1381. function lf_altDrug ( currow, flag, strSrc, prcpInptFlag, powdflag ) {
  1382. if (utlf_isNull(strSrc)) strSrc = "ds_main_prcplist";
  1383. var ds_src = this.objects[strSrc];
  1384. var setno = "";
  1385. var settypecd = "";
  1386. var setkindcd = "";
  1387. var setclscd = "";
  1388. var settrgtcd = "";
  1389. if(!utlf_isNull(this.objects["ds_hidden_prmsprcpsetlist"])) {
  1390. setno = ds_hidden_prmsprcpsetlist.getColumn(0, "setno");
  1391. settypecd = ds_hidden_prmsprcpsetlist.getColumn(0, "settypecd");
  1392. setkindcd = ds_hidden_prmsprcpsetlist.getColumn(0, "setkindcd");
  1393. setclscd = ds_hidden_prmsprcpsetlist.getColumn(0, "setclscd");
  1394. settrgtcd = ds_hidden_prmsprcpsetlist.getColumn(0, "settrgtcd");
  1395. }
  1396. var prcpcd = "";
  1397. var prcpnm = "";
  1398. if ( flag == "child" ) {
  1399. flag = 1;
  1400. //20090528: 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag 체크로직 추가.
  1401. if ( !utlf_isNull(powdflag)) {
  1402. flag = powdflag;
  1403. }
  1404. // 추후 확인필요
  1405. if ( prcpInptFlag == "01" ) {
  1406. if (typeof(ivw_prcp3) == "object"){
  1407. prcpcd = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  1408. prcpnm = ivw_prcp3.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  1409. }
  1410. } else {
  1411. if (typeof(ivw_prcp) == "object"){
  1412. prcpcd = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpcd" );
  1413. prcpnm = ivw_prcp.model.getValue ( strSrc + "[" + currow + "]/prcpnm" );
  1414. }
  1415. }
  1416. }
  1417. if (utlf_isNull(prcpcd)) {
  1418. prcpcd = ds_src.getColumn(currow, "prcpcd");
  1419. prcpnm = ds_src.getColumn(currow, "prcpnm");
  1420. }
  1421. var prcpclscd = ds_src.getColumn(currow, "prcpclscd");
  1422. var erprcpflag = ds_src.getColumn(currow, "erprcpflag");
  1423. var prnprcpflag = ds_src.getColumn(currow, "prnprcpflag");
  1424. var prepprcpflag = ds_src.getColumn(currow, "prepprcpflag");
  1425. var selfdrugflag = ds_src.getColumn(currow, "selfdrugflag");
  1426. var powdflag = ds_src.getColumn(currow, "powdflag");
  1427. var drugspd = ds_src.getColumn(currow, "drugspd");
  1428. var prcpvolunitflag = ds_src.getColumn(currow, "prcpvolunitflag");
  1429. var cond1 = prcpcd + "▦" + setno + "▦" + settypecd + "▦" + setkindcd + "▦" + setclscd + "▦" + settrgtcd + "▩";
  1430. var cond2 = prcpclscd + "▦" + erprcpflag + "▦" + prnprcpflag + "▦" + prepprcpflag + "▦" + selfdrugflag + "▦" + powdflag + "▦" + drugspd + "▦" + prcpvolunitflag + "▩";
  1431. frmf_setParameter ( "SMMMO02300_cond1", cond1 );
  1432. frmf_setParameter ( "SMMMO02300_cond2", cond2 );
  1433. frmf_setParameter ( "SMMMO02300_cond3", flag );
  1434. frmf_setParameter ( "SMMMO02300_cond4", prcpnm );
  1435. lf_prcpModal ( "SPMMB10100", 220, 150 ); // "SPMMB10100", "220", "150" 팝업창 뜨나 모니터에 보이지 않는 위치에 떠서 수정 2015.07.31
  1436. frmf_clearParameter ( "SMMMO02300_cond1" );
  1437. frmf_clearParameter ( "SMMMO02300_cond2" );
  1438. frmf_clearParameter ( "SMMMO02300_cond3" );
  1439. frmf_clearParameter ( "SMMMO02300_cond4" );
  1440. }
  1441. /***************************************************************************************************
  1442. * Function : lf_contPrcpDd
  1443. * Description : 처방 발행 시 날짜와 일수를 지정한다.(지정한 날짜로 처방 발행_지정일자(연속처방)처리)
  1444. * Argument : oGrid: DataGrid
  1445. * : objPrcpDs: 값을 세팅할 node
  1446. * : sFlag: main 인지 child 인지
  1447. * return type :
  1448. * Creator :
  1449. * 변환OK
  1450. ***************************************************************************************************/
  1451. function lf_contPrcpDd(grdObj:Grid, prcpNode, flag, endFlag)
  1452. {
  1453. //1. 과거일자 불가(달력에서 막음)
  1454. //2. 오늘날짜 처방이 아닐때 해더생성
  1455. //3. 2개이상생성시 해더생성
  1456. //4. 외래에서만 사용
  1457. //5. 상태|Acting진료일자|실시처방상태코드|처방일자|실시처방번호^
  1458. var status = "";
  1459. var actordd = "";
  1460. var prcpdd = "";
  1461. var execprcpstatcd = "";
  1462. var execprcpno = "";
  1463. var contPrcpSpec = "";
  1464. var contPrcpSpecArray1;
  1465. var contPrcpSpecArray2;
  1466. var prcpPKSpecArray;
  1467. var reqparm = "";
  1468. if(utlf_isNull(grdObj)) grdObj = div_all.grd_prcplist;
  1469. if(utlf_isNull(prcpNode)) prcpNode = "ds_main_prcplist";
  1470. var oTrgtObj = lf_getFormObject(flag);
  1471. var objPrcpDs = oTrgtObj.objects[prcpNode];
  1472. // 외래진료일자
  1473. if (oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag") != "O") {
  1474. sysf_messageBox("지정일은 외래에서만 사용하실 수 있습니다.", "E");
  1475. return;
  1476. }
  1477. prcpdd = oTrgtObj.ds_paminfo.getColumn(0, "orddd");
  1478. objPrcpDs = this.objects[prcpNode];
  1479. if (objPrcpDs.getColumn(objPrcpDs.rowposition , "prcpclscd") != "A6" && objPrcpDs.getColumn(objPrcpDs.rowposition , "prcpclscd") != "F2") {
  1480. sysf_messageBox("지정일 사용하실 수 없는 처방입니다.", "E");
  1481. return;
  1482. }
  1483. var selectedRows = new Array();
  1484. if ( grdObj.selecttype == "row" ) {
  1485. selectedRows[0] = objPrcpDs.rowposition;
  1486. } else {
  1487. selectedRows = grdf_getSelectedRows(grdObj);
  1488. }
  1489. objPrcpDs.enableevent = false;
  1490. for (var i = 0; i < selectedRows.length; i++) {
  1491. reqparm = ""; // 선택일자 초기화
  1492. if ( grdObj.selecttype == "row" ) {
  1493. curRow = objPrcpDs.rowposition;
  1494. } else {
  1495. curRow = selectedRows[i];
  1496. }
  1497. contPrcpSpec = objPrcpDs.getColumn(curRow, "contprcpspec");
  1498. if ( contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  1499. prcpPKSpecArray = objPrcpDs.getColumn(curRow, "prcppkspec" ).split("|");
  1500. if ( !utlf_isNull(prcpPKSpecArray[0])) reqparm = prcpPKSpecArray[0]; //처방일자가 있으면
  1501. else reqparm = prcpdd;
  1502. } else {
  1503. contPrcpSpecArray1 = contPrcpSpec.split("^");
  1504. for ( var j = 1; j < contPrcpSpecArray1.length; j++ ){
  1505. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  1506. if ( j == (contPrcpSpecArray1.length-1))
  1507. reqparm = reqparm + contPrcpSpecArray2[1];
  1508. else
  1509. reqparm = reqparm + contPrcpSpecArray2[1] + "▩";//과거에 선택됐던 지정일을 넘긴다.
  1510. }
  1511. }
  1512. frmf_setParameter ("reqparam", reqparm);
  1513. frmf_setParameter ("paramcalflag", "multi");
  1514. frmf_setParameter ("defaultday", prcpdd);
  1515. lf_prcpModal ( "SPMMO10600", 20, 50 );
  1516. if ( utlf_isNull(frmf_getParameter ("rtn"))) return; //값이 없으면 return
  1517. var actorddArray = frmf_getParameter ("rtn").split("▩");
  1518. objPrcpDs.setColumn(curRow, "prcpdayno", actorddArray.length );
  1519. status = objPrcpDs.getColumn(curRow, "status" ); //선택된 셀 상태값 가져오기
  1520. contPrcpSpec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  1521. var enddd = "00000000";
  1522. for( k = 0; k < actorddArray.length; k++) { //내용 붙히기
  1523. actordd = actorddArray[k];
  1524. contPrcpSpec = contPrcpSpec + "^" + status + "|" + actordd + "|" + execprcpstatcd + "|" + prcpdd + "|" + execprcpno;
  1525. if ( eval(enddd) < eval(actordd) ) {
  1526. enddd = actordd;
  1527. }
  1528. }
  1529. if ( actorddArray.length == 1 && actordd == prcpdd ) { // 날짜가 1 이고 처방일과 같을 경우는 - 처리
  1530. objPrcpDs.setColumn(curRow, "contprcpspec", "-" );
  1531. } else {
  1532. objPrcpDs.setColumn(curRow, "contprcpspec", contPrcpSpec );
  1533. }
  1534. //재활일 경우 마감일 setting
  1535. var prcpclscd = objPrcpDs.getColumn(curRow, "prcpclscd" );
  1536. if ( prcpclscd == "F2" ) objPrcpDs.setColumn(curRow, "etcprcpresncd", enddd );
  1537. //일수변환
  1538. objPrcpDs.setColumn(curRow, "prcpdayno", actorddArray.length );
  1539. }
  1540. objPrcpDs.enableevent = true;
  1541. }
  1542. /**
  1543. * @desc : 처방검색
  1544. * @param : prcpnm: 검색할 처방명
  1545. : prcpdd: 처방일자
  1546. : insukind: 보험유형
  1547. : trnm: 트랜젝션 네임
  1548. : ioflag: 외래, 입원, 응급 구분
  1549. : refreshFlag: refresh 여부
  1550. : mthdnm 명
  1551. : containflag : contains사용구분
  1552. : isOnlyDrug : 약품만 조회 유무
  1553. * @return : void
  1554. * @authur : 마정민 2007. 6. 21
  1555. * 변환OK
  1556. */
  1557. function lf_prcpSrchCom ( prcpnm, prcpdd, insukind, trnm, ioflag, mthdnm, isHangul, containflag, isOnlyDrug) {
  1558. if ( utlf_isNull(trnm)) {
  1559. trnm = "TRMMO00100";
  1560. }
  1561. if ( utlf_isNull(prcpdd)) {
  1562. prcpdd = utlf_getCurrentDate();
  1563. }
  1564. if ( utlf_isNull(ioflag)) {
  1565. ioflag = "-";
  1566. }
  1567. if ( utlf_isNull(mthdnm)) {
  1568. mthdnm = "getPrcpSrchInfo";
  1569. } //getPrcpCdSrchInfo
  1570. //contains사용일 경우, 검색어의 특수기호에 /를 붙인다.
  1571. //ex) high-voltage@avm -> high/-voltage/@avm
  1572. //2008.06.28 오지훈
  1573. if(containflag == true){
  1574. var regular = /[^ A-Za-z0-9]/g;
  1575. var arr = prcpnm.match(regular);
  1576. if(!utlf_isNull(arr)){
  1577. for(var i = 0; i < arr.length; i++){
  1578. if (arr[i] != "-" && arr[i] != " " && arr[i] != ".") {
  1579. prcpnm = prcpnm.setReplaceWord( arr[i], "\\".concat(arr[i]) );
  1580. }
  1581. }
  1582. }
  1583. ds_send.setColumn(0, "cond6", "1");
  1584. }else{
  1585. ds_send.setColumn(0, "cond6", "2");
  1586. }
  1587. if (utlf_isNull(ioflag) || ioflag == "-") ioflag = appf_getPatientInfoDetail("ioflag");
  1588. ds_send.setColumn(0, "cond1", prcpnm.toUpperCase()); //처방명, 수가코드
  1589. ds_send.setColumn(0, "cond2", ioflag ); //외래, 입원, 응급 구분
  1590. ds_send.setColumn(0, "cond3", prcpdd ); //처방일
  1591. ds_send.setColumn(0, "cond4", insukind ); //환자보험유형
  1592. if ( !utlf_isNull( isHangul)) {
  1593. ds_send.setColumn(0, "cond5", isHangul ); //한영구분
  1594. } else {
  1595. ds_send.setColumn(0, "cond5", "" );
  1596. }
  1597. //그리드처방검색일때: 1일때는 첫단어검색, 2일때는 단어검색
  1598. //var srchcond1 = model.getValue ( "/root/prcpsrchcond1" );
  1599. //model.setValue ( "/root/send/cond6", srchcond1 ); //검색조건
  1600. /*20080930 시행부서 건진처방 때문에 추가했으나 시행부서처방에서도 건진처방 건색은 안되야 한다고 해서 주석으로 처리.
  1601. if ( model.getValue ( "/root/addprcp" ) == "Y" || opener.model.getValue ( "/root/addprcp" ) == "Y") {
  1602. model.makeValue ( "/root/send/cond7", "addprcp"); //처방명, 수가코드
  1603. }*/
  1604. ds_send.setColumn(0, "cond99", mthdnm ); //검색구분
  1605. //20191220 이돈희 : 약품만 검색할 수 있도록 옵션 추가
  1606. if(!utlf_isNull(isOnlyDrug)){
  1607. if(utlf_isNull(ds_send.getColumnInfo("isOnlyDrug"))){
  1608. ds_send.addColumn("isOnlyDrug", "string");
  1609. }
  1610. ds_send.setColumn(0, "isOnlyDrug", isOnlyDrug);
  1611. }
  1612. lf_makePrcpSrchDs(); // 처방 조회 시 outds가 없다면 자동 생성한다.
  1613. if(trnm == "TRMMO00100") {
  1614. var oParam = {};
  1615. oParam.id = "TRMMO00100";
  1616. oParam.service = "prcpmngtapp.PrcpMngt";
  1617. oParam.method = "reqGetPrcpSrchInfo";
  1618. oParam.inds = "req=ds_send";
  1619. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  1620. oParam.async = false;
  1621. oParam.callback = "cf_TRMMO00100";
  1622. tranf_submit(oParam);
  1623. dsf_setDefaultVal(ds_prcpsrch_prcplist, "status:N,prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinprcpresncd:00,drugmthdspccd:-,hsctdelivepos:0,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  1624. } else if(trnm == "TRMMB00201") {
  1625. var oParam = {};
  1626. oParam.id = "TRMMB00201";
  1627. oParam.service = "prcpmngtapp.PrcpMngt";
  1628. oParam.method = "reqGetPrcpSrchInfo";
  1629. oParam.inds = "req=ds_send";
  1630. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  1631. oParam.async = false;
  1632. tranf_submit(oParam);
  1633. dsf_setDefaultVal(ds_prcpsrch_prcplist, "status:N,prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  1634. }
  1635. }
  1636. /***************************************************************************************************
  1637. * Function : lf_bfPrcpSrchCom
  1638. * Description : 전처방검색
  1639. * Argument : pid: 환자ID
  1640. * : orddd: 외래:진료일, 입원:입원일
  1641. * : prcpdd: 처방일
  1642. * : bfflag: 전처방 where 조건 구분자
  1643. * : initflag: 최초구분
  1644. * : orddrid: 의사ID,외래에서만 필요하다.
  1645. * : todd
  1646. * : prcpgenrflag: 외래입원구분
  1647. * : orddeptcd: 부서코드
  1648. * : cretno: 원무생성번호
  1649. * : prcpgenrflag: 외래, 입원, 응급 구분
  1650. * : followup: 퇴원후 외래처방일과 동일한 처방일이거나 initsrch 와 동일한 날짜가 있을 경우 followdd를 입력한다.
  1651. * : bfprcpviewflag : 전처방 조회 조건 개인별 설정기능 추가 by sonjy 20091120
  1652. * return type :
  1653. * Creator :
  1654. * 변환OK
  1655. * @---------------------------------------------------
  1656. */
  1657. function lf_bfPrcpSrchCom( sPid, sOrddd, sPrcpdd, sBfflag, sInitflag, sOrddrid, sTodd, sPrcpgenrflag, sOrddeptcd, sCretno, sTrnm, sPrcpauthflag, sFollowup , sBfprcpviewflag, sDelyn)
  1658. {
  1659. if (utlf_isNull(sTrnm)) sTrnm = "TRMMO00100";
  1660. if (utlf_isNull(sPrcpauthflag)) sPrcpauthflag = "0";
  1661. if (utlf_isNull(sDelyn)) sDelyn = "N"; // 삭제 처방 검색 여부 2017.12.12 엄영만
  1662. var oTrgtObj;
  1663. // oOpener 선언 되지 않은 곳은 모두 this를 사용하도록 함(여기는 flag가 없어 lf_getFormObject() 함수 적용하지 않음)
  1664. try {
  1665. oTrgtObj = oOpener; // 현재 화면이 전처방인경우
  1666. } catch(e) {
  1667. oTrgtObj = this; // 현재 화면이 미수행처방DC인 경우
  1668. }
  1669. var curprcpdd = oTrgtObj.objects["ds_init"] == null ? "" : lf_getDsValue(oTrgtObj.ds_init, 0, "prcpdd");
  1670. if (utlf_isNull(curprcpdd)) {
  1671. curprcpdd = this.objects["ds_init"] == null ? "" : lf_getDsValue(ds_init, 0, "prcpdd");
  1672. if (utlf_isNull(curprcpdd)) {
  1673. curprcpdd = utlf_getCurrentDate();
  1674. }
  1675. }
  1676. var oprsrvno = "";
  1677. if (!utlf_isNull(oTrgtObj.objects["ds_operation"]) && !utlf_isNull(oTrgtObj.ds_operation.getColumn(0, "oprsrvno"))) {
  1678. sOrddd = oTrgtObj.ds_operation.getColumn(0, "oprsrvno");
  1679. if (oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag") == "O") {
  1680. sPrcpgenrflag = "OUTOP";
  1681. }
  1682. else {
  1683. sPrcpgenrflag = "OP";
  1684. }
  1685. } else if (!utlf_isNull(this.objects["ds_operation"]) && !utlf_isNull(ds_operation.getColumn(0, "oprsrvno"))) {
  1686. sOrddd = ds_operation.getColumn(0, "oprsrvno");
  1687. if (ds_patflag.getColumn(0, "prcpgenrflag") == "O") {
  1688. sPrcpgenrflag = "OUTOP";
  1689. }
  1690. else {
  1691. sPrcpgenrflag = "OP";
  1692. }
  1693. }
  1694. var sRef = dsf_createDsRow("ds_cond_prcplist", [{col:"cond1", type:"string", size:256, val:sPid}, // 환자ID
  1695. {col:"cond2", type:"string", size:256, val:sOrddd}, // 외래:진료일, 입원:입원일
  1696. {col:"cond3", type:"string", size:256, val:sPrcpauthflag}, // 처방권한 구분
  1697. {col:"cond4", type:"string", size:256, val:sPrcpdd}, // 처방일자
  1698. {col:"cond5", type:"string", size:256, val:sBfflag}, // 전처방 where 조건 구분자
  1699. {col:"cond6", type:"string", size:256, val:sInitflag}, // 최초구분
  1700. {col:"cond7", type:"string", size:256, val:sOrddrid}, // 의사ID,외래에서만 필요하다.
  1701. {col:"cond8", type:"string", size:256, val:sTodd}, // sTodd
  1702. {col:"cond9", type:"string", size:256, val:sPrcpgenrflag}, // 외래입원구분
  1703. {col:"cond10", type:"string", size:256, val:sOrddeptcd}, // 부서코드
  1704. {col:"cond11", type:"string", size:256, val:sCretno}, // 생성번호
  1705. {col:"cond12", type:"string", size:256, val:""}, // 외래follow up
  1706. {col:"cond13", type:"string", size:256, val:""}, // 환자보험유형전처방용
  1707. {col:"cond14", type:"string", size:256, val:curprcpdd}, // 처방일자(전처방)
  1708. {col:"cond15", type:"string", size:256, val:sDelyn}, // 삭제 처방 검색 여부
  1709. {col:"cond99", type:"string", size:256, val:"getBfPrcpSrchInfo"}, // 검색구분
  1710. {col:"aftcertdrid", type:"string", size:256, val:""}, // 후인증의사id
  1711. {col:"bfprcpviewflag", type:"string", size:256, val:""}]); // 전처방조회조건
  1712. var oRef = this.objects[sRef];
  1713. if (!utlf_isNull(sFollowup))
  1714. oRef.setColumn(0, "cond12", "followup"); //외래follow up
  1715. var insukind = utlf_isNull(oTrgtObj.objects["ds_paminfo"]) ? "" : oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  1716. if (utlf_isNull(insukind)) insukind = utlf_isNull(this.objects["ds_paminfo"]) ? "" : lf_getDsValue(ds_paminfo, 0, "insukind");
  1717. if (!utlf_isNull(insukind)){
  1718. oRef.setColumn(0, "cond13", insukind ); //외래follow up
  1719. }
  1720. //by sonjy 전처방 조회모드 설정 20091120
  1721. if( sBfflag == "bfprcp" || sBfflag == "addprcp" ){
  1722. if(!utlf_isNull(sBfprcpviewflag) ) oRef.setColumn(0, "bfprcpviewflag", sBfprcpviewflag);
  1723. }
  1724. lf_makePrcpSrchDs(); // 처방 조회 시 outds가 없다면 자동 생성한다.
  1725. utlf_addLog("전회처방 검색 시작, lf_bfPrcpSrchCom()");
  1726. var oParam = {};
  1727. oParam.id = "TRMMO00100";
  1728. oParam.service = "prcpmngtapp.PrcpMngt";
  1729. oParam.method = "reqGetPrcpSrchInfo";
  1730. oParam.inds = "req=" + sRef;
  1731. oParam.outds = "ds_prcpsrch_prcplist=prcplist";
  1732. oParam.async = false;
  1733. oParam.callback = "cf_TRMMO00100";
  1734. tranf_submit(oParam);
  1735. utlf_addLog("전회처방 검색 종료, lf_bfPrcpSrchCom()");
  1736. var bResult = (arErrorCode.pop("TRMMO00100") < 0) ? false : true;
  1737. dsf_setDefaultVal(ds_prcpsrch_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinprcpresncd:00,drugmthdspccd:-,hsctdelivepos:0,druglnkno:0,dnorreqlnkno:0,subcretno:0,drgacptflag:-");
  1738. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  1739. if ( !utlf_isNull(oTrgtObj.objects["ds_root"]) && oTrgtObj.ds_root.getColumn(0, "cp" ) == "Y" ) {
  1740. // 추후 CPGMAIN 작업 후 확인필요
  1741. oTrgtObj.fResizeControls();
  1742. }
  1743. // Temp로 사용한 Dataset을 삭제
  1744. dsf_deleteDs(sRef);
  1745. return bResult;
  1746. }
  1747. function cf_TRMMO00100(sSvcId, nErrorCode, sErrorMsg) {
  1748. arErrorCode.push(sSvcId, nErrorCode);
  1749. }
  1750. /***************************************************************************************************
  1751. * Function : lf_chkEMRLoadingInfo
  1752. * Description : 처방, 기록 조회 함수
  1753. * 진료대상리스트에서 선택했을 경우 상단에서 데이터를 가져오고 아닐 경우 서버에서 조회하도록 만든 모듈
  1754. * Argument :
  1755. * return type : true(진료대상자 선택), false(자체 호출)
  1756. * Creator :
  1757. ***************************************************************************************************/
  1758. function lf_chkEMRLoadingInfo()
  1759. {
  1760. if (this.lgv_addprcp == "Y")
  1761. return false ;
  1762. else
  1763. return true ;
  1764. var oPatientInfoDiv = frmf_getViewer("patientInfo");
  1765. var loadflag = oPatientInfoDiv.ds_loadinginfo.getColumn(0, "loadflag");
  1766. var loaddate = oPatientInfoDiv.ds_loadinginfo.getColumn(0, "loaddate");
  1767. var loadtime = oPatientInfoDiv.ds_loadinginfo.getColumn(0, "loadtime");
  1768. if (loadflag == "Y") {
  1769. if (!utlf_isNull(loaddate) && loaddate.length == 8 && utlf_getDateInterval(loaddate, utlf_getCurrentDate()) > 0) {
  1770. return false;
  1771. }
  1772. else if (!utlf_isNull(loadtime) && loadtime.length == 6 && utlf_getTimeInterval(loadtime, utlf_getCurrentTime()) > 30) {
  1773. return false;
  1774. }
  1775. else {
  1776. return true;
  1777. }
  1778. }
  1779. else {
  1780. return false;
  1781. }
  1782. }
  1783. /***************************************************************************************************
  1784. * Function : lf_mmbfChkDrKindPosYN
  1785. * Description : 의사 직종직위 옵션을 받아서 true, false 값을 리턴한다.
  1786. * Argument : option 1: 의사 여부, 2: 주치의 여부 3: 담당의 여부 를 체크한다.
  1787. * : chkOption : A : 직종으로 체크한다. , B : 직위로 체크한다.
  1788. * 값이 없으면 하드코드번호 255번의 기본값으로 셋팅한다., 하드코드도 없으면 기본값 "B"로 셋팅
  1789. * : userinfo : 비교할 직종 또는 직위코드(sysf_getUserInfo(jobkindcd), sysf_getUserInfo("jobposcd");
  1790. * 값이 없으면 A일 경우는 sysf_getUserInfo("jobkindcd") , B일 경우는 sysf_getUserInfo("jobposcd")로 셋팅함.
  1791. * return type :
  1792. * Creator :
  1793. ***************************************************************************************************/
  1794. function lf_mmbfChkDrKindPosYN(option, chkOption, userinfo)
  1795. {
  1796. if (utlf_isNull(chkOption)) {
  1797. chkOption = lf_getHardCDList("Y", "255", "3");
  1798. if (utlf_isNull(chkOption))
  1799. chkOption = "B";
  1800. }
  1801. var jobkindcd;
  1802. var sChkTmpDrListNm = dsf_createDs("ds_chktmpdrlist", []);
  1803. var oChkTmpDrListDs = this.objects[sChkTmpDrListNm];
  1804. var rtnValue;
  1805. if (option == "1") { // 의사여부를 리턴한다.
  1806. lf_getHardCDList("N", 69, 0, oChkTmpDrListDs);
  1807. if (userinfo == null || userinfo == "" || userinfo == "undefined") {
  1808. userinfo = sysf_getUserInfo("jobkindcd");
  1809. }
  1810. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1811. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1812. rtnValue = (!utlf_isNull(jobkindcd)) ? true : false;
  1813. }
  1814. else if (option =="2") { // 주치의 여부를 리턴한다.
  1815. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  1816. lf_getHardCDList("N", 65, 0, oChkTmpDrListDs);
  1817. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1818. userinfo = sysf_getUserInfo("jobkindcd") ;
  1819. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1820. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1821. }
  1822. else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  1823. lf_getHardCDList("N", 67, 0, oChkTmpDrListDs);
  1824. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1825. userinfo = sysf_getUserInfo("jobposcd") ;
  1826. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1827. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1828. }
  1829. rtnValue = (!utlf_isNull(jobkindcd)) ? true : false;
  1830. }
  1831. else if (option == "3") {
  1832. if (chkOption == "A") { // 직종에서 비교한다. (jobkindcd)
  1833. lf_getHardCDList("N", 65, 0, oChkTmpDrListDs);
  1834. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1835. userinfo = sysf_getUserInfo("jobkindcd") ;
  1836. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1837. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1838. rtnValue = (!utlf_isNull(jobkindcd)) ? true : false;
  1839. }
  1840. else if (chkOption == "B") { // 직위를 비교한다. (jobposcd)
  1841. lf_getHardCDList("N", 67, 0, oChkTmpDrListDs);
  1842. if (userinfo == null || userinfo == "" || userinfo == "undefined")
  1843. userinfo = sysf_getUserInfo("jobposcd");
  1844. var nFindRow = oChkTmpDrListDs.findRow("hardcd", userinfo);
  1845. jobkindcd = oChkTmpDrListDs.getColumn(nFindRow, "hardcd");
  1846. rtnValue = (!utlf_isNull(jobkindcd)) ? "Y" : "N";
  1847. }
  1848. }
  1849. // Temp로 사용한 Dataset을 삭제
  1850. var oRemoveDs = this.removeChild(sChkTmpDrListNm);
  1851. oRemoveDs = null;
  1852. return rtnValue;
  1853. }
  1854. /***************************************************************************************************
  1855. * Function : lf_saveSign
  1856. * Description : 처방 인증 저장 시 sign 데이터 저장 하는 함수
  1857. * Argument : signbfcnts: sign할 데이터
  1858. * : signid: sign 할 유저의 id
  1859. * : signopt: false 로그인후 한번만 띄움, true: 매번띄움
  1860. * : setnode: sign 데이터를 setColumn 할 인스턴스 값이 있을 때만 함
  1861. * return type :
  1862. * Creator :
  1863. ***************************************************************************************************/
  1864. function lf_saveSign(signbfcnts, signid, signopt, setnode )
  1865. {
  1866. var v_stext = "";
  1867. if (!utlf_isNull(signbfcnts)) {
  1868. if (signopt) {
  1869. v_stext = zesf_SignData(signbfcnts, signid, signopt);
  1870. }
  1871. else {
  1872. v_stext = zesf_SignData(signbfcnts, signid);
  1873. }
  1874. if (utlf_isNull(v_stext)) {
  1875. return ""; //값이 없을 때는 return 함
  1876. }
  1877. }
  1878. else {
  1879. return "N"; // 인증할 데이터가 없을 때는 N 으로 return
  1880. }
  1881. // setnode가 있을경우 setColumn
  1882. if (!utlf_isNull(setnode)) {
  1883. this.objects[setnode].setColumn(0, "signaftcnts", v_stext);
  1884. }
  1885. return v_stext;
  1886. }
  1887. /***************************************************************************************************
  1888. * Function : lf_chngHosinPrcpResn
  1889. * Description : 원내처방사유변경
  1890. * Argument : sFlag [String : ]
  1891. * return type :
  1892. * 변환 OK
  1893. ***************************************************************************************************/
  1894. function lf_chngHosinPrcpResn(sFlag, strSelResn)
  1895. {
  1896. var hosinprcpresncd = "";
  1897. var prcpclscd = "";
  1898. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  1899. //SON1123 DSC 퇴원처방 처리 by sonjy 20081123
  1900. var prcpkindcd = "";
  1901. var erflag = "";
  1902. var erresn = ""; // G3
  1903. var prcpgenrflag = "";
  1904. var oTrgtObj = lf_getFormObject(sFlag);
  1905. hosinprcpresncd = oTrgtObj.ds_init.getColumn(0, "hosinprcpresncd");
  1906. erresn = lf_getDsValue(oTrgtObj.ds_init, 0, "erresn");
  1907. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  1908. if( prcpgenrflag == "I" ){ return; }
  1909. if ( (prcpgenrflag == "E" && erresn != "G3") || prcpgenrflag == "D" ) {
  1910. erflag = "Y" ;//SON0919
  1911. }
  1912. // 약제원내외구분 우선 적용
  1913. var hosinflag = "";
  1914. var drugmastspec = "";
  1915. if (hosinprcpresncd != "00") { // 환자별 처방 사유가 존재 할 경우
  1916. for (var i = 0; i < oTrgtObj.ds_main_prcplist.rowcount; i++) { // 처방 건별 처리
  1917. prcpclscd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpclscd");
  1918. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  1919. prcpkindcd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpkindcd");
  1920. drugmastspec = oTrgtObj.ds_main_prcplist.getColumn(i, "drugmastspec") + "^";
  1921. hosinflag = lf_getArrayData(drugmastspec , 0, 11, "^", "|");
  1922. if (erflag == "Y" && prcpkindcd == "60") { // 응급 DSC 퇴원약 원내사유 처리
  1923. lf_hosinPrcpResncdSed(sFlag , "ds_main_prcplist", i, strSelResn);
  1924. } else if (prcpgenrflag == "E") { // 응급
  1925. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1926. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", hosinprcpresncd);
  1927. } else if (prcpgenrflag == "D" ){ // DSC
  1928. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1929. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", "00");
  1930. } else {
  1931. prcphosinprcpresncd = oTrgtObj.ds_main_prcplist.getColumn(i, "hosinprcpresncd");
  1932. if (hosinflag != "O" && lf_pamHosinPrcpResnCdChk(prcphosinprcpresncd, sFlag)) { // 환자원내처방사유만 적용
  1933. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1934. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", hosinprcpresncd);
  1935. }
  1936. }
  1937. }
  1938. // 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  1939. if (erflag == "Y"){
  1940. lf_hosinPrcpResnChk(sFlag, oTrgtObj.ds_main_prcplist);
  1941. }
  1942. } else { // 환자별 처방 사유가 없을 경우
  1943. for(var i = 0; i < oTrgtObj.ds_main_prcplist.rowcount; i++) {
  1944. prcpclscd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpclscd");
  1945. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ;
  1946. //SON0919 응급 퇴원약 원내사유 처리 by sonjy start
  1947. prcpkindcd = oTrgtObj.ds_main_prcplist.getColumn(i, "prcpkindcd");
  1948. if (erflag == "Y" && prcpkindcd == "60") {
  1949. lf_hosinPrcpResncdSed(sFlag , "ds_main_prcplist", i, strSelResn);
  1950. } else if (prcpgenrflag == "E") {
  1951. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1952. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", hosinprcpresncd);
  1953. } else if (prcpgenrflag == "D" ) {
  1954. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag", "I");
  1955. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd", "00");
  1956. } else {
  1957. // 사전심사 임시저장인경우 제외 2015.09.08 엄영만
  1958. if(ds_main_prcplist.getColumn(i, "prcphistcd") == "T" && ds_main_prcplist.getColumn(i, "drprcpetc9") != "-") { // model.getValue("/root/main/prcp/prcplist[" + i + "]/prcphistcd" ) == "T" && model.getValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc9" ) != "-"
  1959. continue;
  1960. }
  1961. prcphosinprcpresncd = oTrgtObj.ds_main_prcplist.getColumn(i, "hosinprcpresncd");
  1962. // 환자원내처방사유만 적용
  1963. if (lf_pamHosinPrcpResnCdChk(prcphosinprcpresncd, sFlag)) {
  1964. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinhosoutflag","O");
  1965. oTrgtObj.ds_main_prcplist.setColumn(i, "hosinprcpresncd","00");
  1966. lf_hosinPrcpResncdSed(sFlag, "ds_main_prcplist", i); //SON0826 원복시 기존 약제사유로 원복.
  1967. }
  1968. }
  1969. }
  1970. lf_hosinPrcpResnChk(sFlag, oTrgtObj.ds_main_prcplist); //SON0826 원복시 기존 약제사유로 원복 후 동시투여 약제처리....
  1971. }
  1972. oTrgtObj.ds_paminfo.setColumn(0, "hosoutexptresncd", hosinprcpresncd);
  1973. }
  1974. /***************************************************************************************************
  1975. * Function : lf_checkPrcpAuth
  1976. * Description : 처방권한 check
  1977. * Argument :
  1978. * return type :
  1979. * Creator :
  1980. ***************************************************************************************************/
  1981. function lf_checkPrcpAuth(sScrnFlag)
  1982. {
  1983. var sIoflag = ds_data_paminfo.getColumn(0, "ioflag");
  1984. var sUserDeptCds = sysf_getUserInfo("dutplcecd");
  1985. var anstdeptlst = emr_getOrderBaseInfo("anstdeptcd");
  1986. var docSchInfoList = emr_getOrderBaseInfo("docschinfolist");
  1987. var sUserdeptcd = sysf_getUserInfo("dutplcecd");
  1988. if (sScrnFlag == "prcp") {
  1989. var sUserOrdDeptNode = emr_getOrderBaseInfo("userorddeptcd");
  1990. var userdeptcds = "";
  1991. if (sUserOrdDeptNode != null && sUserOrdDeptNode.rowcount > 0) {
  1992. for (var i=0 ; i <= sUserOrdDeptNode.rowcount ; i++) {
  1993. userdeptcds = sUserOrdDeptNode.getColumn(i, "userorddeptcd");
  1994. anstdeptlst.filterstr = "trgtcd=='" + userdeptcds + "'";
  1995. if (anstdeptlst != null && anstdeptlst.rowcount > 0)
  1996. break;
  1997. }
  1998. }
  1999. else {
  2000. anstdeptlst.filterstr = "trgtcd=='" + sUserdeptcd + "'";
  2001. }
  2002. anstdeptlst.filterstr = "";
  2003. }
  2004. if (sScrnFlag == "prcp" && (sIoflag != "O" && sIoflag != "S")) {
  2005. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_00.enable = true;
  2006. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_10.enable = true;
  2007. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_31.enable = true;
  2008. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_21.enable = true;
  2009. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_22.enable = true;
  2010. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_30.enable = true;
  2011. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_35.enable = true;
  2012. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_40.enable = true;
  2013. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_50.enable = true;
  2014. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_60.enable = true;
  2015. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_70.enable = true;
  2016. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_90.enable = true;
  2017. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_95.enable = true;
  2018. }
  2019. if (!utlf_isNull(ds_init_operation.getColumn(0, "oprsrvno"))) {
  2020. if (sScrnFlag == "prcp" && sIoflag != "O" && sIoflag != "S") {
  2021. var prcpkindcd = ds_init_data.getColumn(0, "prcpkindcd");
  2022. var objBtn = this.components("btn_prcpkcd_" + prcpkindcd);
  2023. objBtn.setSelectStatus(true);
  2024. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_00.enable = false;
  2025. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_10.enable = false;
  2026. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_21.enable = false;
  2027. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_22.enable = false;
  2028. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_50.enable = false;
  2029. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_60.enable = false;
  2030. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_70.enable = false;
  2031. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_90.enable = false;
  2032. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_95.enable = false;
  2033. }
  2034. if (sScrnFlag == "prcp" && anstdeptlst != null && anstdeptlst.rowcount > 0) {
  2035. if (ds_init_anstinfo.getColumn(0, "paramyn") == "Y") {
  2036. if (sIoflag != "O" && sIoflag != "S") {
  2037. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_30.enable = false;
  2038. grp_prcp.grp_prcpkindbtn.btn_prcpkcd_40.enable = false;
  2039. }
  2040. }
  2041. if (prcpkindcd == "31" || (ds_init_anstinfo.getColumn(0, "paramyn") == "Y" && prcpkindcd == "35")) {
  2042. return true;
  2043. }
  2044. else {
  2045. return false;
  2046. }
  2047. }
  2048. else if (userdeptcd == ds_init_operation.getColumn(0, "perfdeptcd")) {
  2049. return true;
  2050. }
  2051. }
  2052. if (sScrnFlag == "prcp") {
  2053. if (ds_init_data.getColumn(0, "usge") != "prcp")
  2054. return true;
  2055. var prcpauthflag = ds_init_data.getColumn(0, "prcpauthflag");
  2056. if (prcpauthflag != "0" && prcpauthflag != "3")
  2057. return true ;
  2058. }
  2059. var atdoctridfg = lf_mmbfChkDrKindPosYN("3", "B", sysf_getUserInfo("jobposcd"));
  2060. var orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  2061. if (sIoflag == "E") {
  2062. var erorddeptcd = ds_data_paminfo.getColumn(0, "erorddeptcd");
  2063. var nTrgtRow = sUserOrdDeptNode.findRow("userorddeptcd", orddeptcd);
  2064. if (!utlf_isNull(nTrgtRow) && nTrgtRow > 0){
  2065. return true;
  2066. }
  2067. var eradrvinfo = ds_data_paminfo.getColumn(0, "eradrvinfo");
  2068. var eradrvorddeptcd = "";
  2069. var eradrvorddrid = "";
  2070. if (sScrnFlag == "prcp" && !utlf_isNull(eradrvinfo) && eradrvinfo != "-") {
  2071. eradrvorddeptcd = lf_getArrayData(eradrvinfo, 0, 0 , "^", "|");
  2072. eradrvorddrid = lf_getArrayData(eradrvinfo, 0, 1 , "^", "|");
  2073. var nTrgtDeptRow = sUserOrdDeptNode.findRow("userorddeptcd", eradrvorddeptcd);
  2074. if (!utlf_isNull(nTrgtDeptRow) && nTrgtDeptRow > 0){
  2075. if ("Y" == atdoctridfg)
  2076. return true;
  2077. if (sysf_getUserInfo("userid") == eradrvorddrid)
  2078. return true;
  2079. }
  2080. }
  2081. var ordPatObj = frmf_getChildWindow("SMMMO04100");
  2082. // 두 객체값이 다른 경우 새로운 진료대상자 화면을 open함
  2083. if (ordPatObj != null) {
  2084. var callvisityn = ordPatObj.frmf_getParameter("SMMMO04100_callvisityn");
  2085. if (callvisityn == "N") {
  2086. grp_prcp.btn_tempsave.enable = false;
  2087. grp_prcp.btn_prcpsave.enable = false;
  2088. grp_prcp.btn_prcpsave2.enable = false;
  2089. grp_prcp.btn_prcpsave.tooltip = "응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.";
  2090. grp_prcp.btn_prcpsave2.tooltip = "응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.";
  2091. return false ;
  2092. }
  2093. else {
  2094. var nTrgtDeptRow = sUserOrdDeptNode.findRow("userorddeptcd", erorddeptcd);
  2095. if (!utlf_isNull(nTrgtDeptRow) && nTrgtDeptRow > 0){
  2096. return true;
  2097. }
  2098. else {
  2099. if (ds_data_paminfo.getColumn(0, "ervisityn") == "Y") return true;
  2100. }
  2101. }
  2102. }
  2103. return false;
  2104. }
  2105. else {
  2106. if (sIoflag == "O" || sIoflag == "S") {
  2107. var nTrgtRow = sUserOrdDeptNode.findRow("userorddeptcd", orddeptcd)
  2108. if(utlf_isNull(nTrgtRow) || nTrgtRow < 1){
  2109. return false;
  2110. }
  2111. }
  2112. else {
  2113. if (docSchInfoList.rowcount > 0 && atdoctridfg == "Y") {
  2114. var wardcd = ds_data_paminfo.getColumn(0, "wardcd");
  2115. dsf_createDs("ds_temp_icudeptinfo", []);
  2116. lf_getHardCDList("Y", 425, 0 , ds_temp_icudeptinfo);
  2117. var cdseqno = ds_icudeptinfo.getColumn(0, ds_temp_icudeptinfo.findRow("hardcd", wardcd), "cdseqno");
  2118. for (var i= 0 ; i < docSchInfoList.rowcount ; i++) {
  2119. var curTime = utlf_getCurrentTime().substr (0,4);
  2120. var starttm = docSchInfoList.getColumn(i, "starttm");
  2121. var endtm = docSchInfoList.getColumn(i, "endtm");
  2122. var workdd = docSchInfoList.getColumn(i, "workdd");
  2123. var icuprcpyn = docSchInfoList.getColumn(i, "icuprcpyn");
  2124. var nicuprcpyn = docSchInfoList.getColumn(i, "nicuprcpyn");
  2125. if (ds_init_data.getColumn(0, "prcpcd") == workdd && curTime >= starttm && curTime <= endtm) {
  2126. if (icuprcpyn == "Y" && nicuprcpyn == "N") {
  2127. if (cdseqno != "1"){
  2128. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  2129. oRemoveDs = null;
  2130. return false;
  2131. }
  2132. }
  2133. else if (icuprcpyn == "N" && nicuprcpyn == "Y") {
  2134. if (cdseqno != "2"){
  2135. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  2136. oRemoveDs = null;
  2137. return false;
  2138. }
  2139. }
  2140. else if (icuprcpyn == "Y" && nicuprcpyn == "Y") {
  2141. if (cdseqno != "2" && cdseqno != "1"){
  2142. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  2143. oRemoveDs = null;
  2144. return false;
  2145. }
  2146. }
  2147. }
  2148. }
  2149. var oRemoveDs = this.removeChild("ds_temp_icudeptinfo");
  2150. oRemoveDs = null;
  2151. }
  2152. if (sScrnFlag == "prcp" && anstdeptlst != null && anstdeptlst.rowcount > 0) {
  2153. return true;
  2154. }
  2155. if (ds_data_paminfo.getColumn(0, "subprcpyn") == "Y") {
  2156. return true;
  2157. }
  2158. else {
  2159. if (atdoctridfg == "Y") {
  2160. var nFindRow = sUserOrdDeptNode.findRow("userorddeptcd", ds_data_paminfo.getColumn(0, "subprcpyn"));
  2161. if (nFindRow >= 0)
  2162. return true ;
  2163. }
  2164. }
  2165. var nFindRow = sUserOrdDeptNode.findRow("userorddeptcd",orddeptcd);
  2166. if (nFindRow < 0) {
  2167. return false;
  2168. }
  2169. }
  2170. var orddrid = "";
  2171. if (sIoflag == "O" || sIoflag == "S")
  2172. orddrid = ds_data_paminfo.getColumn(0, "orddrid");
  2173. else
  2174. orddrid = ds_data_paminfo.getColumn(0, "medispclid");
  2175. if (sysf_getUserInfo("userid") == orddrid) {
  2176. return true;
  2177. }
  2178. else {
  2179. dsf_createDs("ds_temp_akinfo", []);
  2180. lf_getHardCDList("Y", 317, 0 , ds_temp_akinfo);
  2181. var cdseqno = ds_icudeptinfo.getColumn(0, ds_temp_icudeptinfo.findRow("hardcd", orddeptcd), "cdseqno");
  2182. var nAkInfoRow= ds_temp_akinfo.findRow("hardcd", orddeptcd);
  2183. if (nAkInfoRow >= 0) {
  2184. var nAkInfoUserdeptRow = ds_temp_akinfo.findRow("hardcd", userdeptcd);
  2185. if (nAkInfoUserdeptRow >= 0) {
  2186. var oRemoveDs = this.removeChild("ds_temp_akinfo");
  2187. oRemoveDs = null;
  2188. return true;
  2189. }
  2190. }
  2191. var oRemoveDs = this.removeChild("ds_temp_akinfo");
  2192. oRemoveDs = null;
  2193. }
  2194. if ("Y" != atdoctridfg)
  2195. return false;
  2196. }
  2197. return true;
  2198. }
  2199. /***************************************************************************************************
  2200. * Function : lf_addDiagSetValue
  2201. * Description : 선택된 진단명을 진단 instance에 맵핑한다.
  2202. * Argument : diagInfo
  2203. * return type :
  2204. * Creator :
  2205. * 변환OK
  2206. ***************************************************************************************************/
  2207. function lf_addDiagSetValue(diagInfo)
  2208. {
  2209. var ds_src = ds_main_diagcdlist;
  2210. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  2211. var orddd;
  2212. var orddrid;
  2213. if ( prcpgenrflag == "O" || prcpgenrflag == "S") {
  2214. orddd = ds_paminfo.getColumn(0, "orddd");
  2215. orddrid = ds_paminfo.getColumn(0, "orddrid");
  2216. } else {
  2217. orddd = ds_paminfo.getColumn(0, "indd");
  2218. orddrid = ds_paminfo.getColumn(0, "medispclid");
  2219. }
  2220. cretno = ds_paminfo.getColumn(0, "cretno");
  2221. orddeptcd = ds_paminfo.getColumn(0, "orddeptcd");
  2222. var diagRow = diagInfo.split ( "▩" ).length;
  2223. var srchRow = ds_src.rowcount - 1;
  2224. var mdiagcd = ds_src.lookup("diagkindcdflag", 'M', "diagcd");
  2225. var diagkindcdflag = ""; //주부유형
  2226. for ( var i = 0; i < diagRow - 1; i++ ) {
  2227. var ds_dest = ds_main_diagcdlist;
  2228. ds_dest.insertRow(srchRow)
  2229. ds_dest.copyRow(srchRow, ds_reset_diagcdlist, 0);
  2230. var icd10cd = lf_getArrayData ( diagInfo, i, 8, "▩", "▦" );
  2231. var diagcd = lf_getArrayData ( diagInfo, i, 9, "▩", "▦" );
  2232. var diagengnm = lf_getArrayData ( diagInfo, i, 2, "▩", "▦" );
  2233. var diaghngnm = lf_getArrayData ( diagInfo, i, 3, "▩", "▦" );
  2234. var spclinfo = lf_getArrayData ( diagInfo, i, 5, "▩", "▦" );
  2235. //20191015 이돈희 : 4주기 상급종합병원 지정 평가를 위한 경증 정보 추가
  2236. var lightcase = lf_getArrayData ( diagInfo, i, 10, "▩", "▦" );
  2237. ds_src.setColumn(srchRow, "diagkindcdflag", "S");
  2238. if ( utlf_isNull(mdiagcd) && i == 0) {
  2239. ds_src.setColumn(srchRow, "diagkindcdflag", "M");
  2240. } else {
  2241. if ( spclinfo == "Y" ) { //산정특례
  2242. //산정특례 처방이면 산정특례이면서 주상병이 있는지 찾는다.
  2243. var findRow = ds_src.findRowExpr("diagkindcdflag == 'M' && spclinfo == 'Y'");
  2244. var spcmdiagcd = (findRow == -1) ? null : ds_src.getColumn(findRow, "diagcd");
  2245. if (utlf_isNull(spcmdiagcd)) { //값이 없으면 주상병으로 할 건지 물어본다.
  2246. if ( sysf_messageBox ( "[" + icd10cd + "] 상병은 특례상병입니다. 주상병으로 하시겠습니까?","Q") == "6" ) {
  2247. //하겠다고 하면 주상병으로 고침
  2248. for ( var j = 0; j < ds_dest.rowcount; j++ ) {
  2249. if (srchRow == j) {
  2250. ds_dest.setColumn(j, "diagkindcdflag", "M" );
  2251. } else {
  2252. if (ds_dest.getColumn(j, "diagkindcdflag") == "M") {
  2253. ds_dest.setColumn(j, "diagkindcdflag", "S");
  2254. if (ds_dest.getColumn(j, "status") == "-") {
  2255. //진단상태가 - 이면 U로 수정함
  2256. ds_dest.setColumn(j, "status", "U");
  2257. }
  2258. }
  2259. }
  2260. }
  2261. }
  2262. }
  2263. }
  2264. }
  2265. ds_src.setColumn(srchRow, "icd10cd", icd10cd);
  2266. ds_src.setColumn(srchRow, "diagcd", diagcd);
  2267. ds_src.setColumn(srchRow, "diagengnm", diagengnm);
  2268. ds_src.setColumn(srchRow, "diaghngnm", diaghngnm);
  2269. ds_src.setColumn(srchRow, "spclinfo", spclinfo);
  2270. ds_src.setColumn(srchRow, "status", "I");
  2271. ds_src.setColumn(srchRow, "instcd", sysf_getUserInfo("dutplceinstcd"));
  2272. ds_src.setColumn(srchRow, "pid", ds_paminfo.getColumn(0, "pid"));
  2273. ds_src.setColumn(srchRow, "orddd", orddd);
  2274. ds_src.setColumn(srchRow, "cretno", cretno);
  2275. ds_src.setColumn(srchRow, "orddeptcd", orddeptcd);
  2276. ds_src.setColumn(srchRow, "orddrid", orddrid);
  2277. ds_src.setColumn(srchRow, "genrflagcd", prcpgenrflag);
  2278. ds_src.setColumn(srchRow, "diaghistcd", "O");
  2279. ds_src.setColumn(srchRow, "diagtypecd", "D");
  2280. ds_src.setColumn(srchRow, "diagkindcd", "C");
  2281. ds_src.setColumn(srchRow, "anamneflag", "N");
  2282. ds_src.setColumn(srchRow, "diagsignflag", "2");
  2283. ds_src.setColumn(srchRow, "tootflagcd", "-");
  2284. ds_src.setColumn(srchRow, "tootfact", "-");
  2285. //20191015 이돈희 : 4주기 상급종합병원 지정 평가를 위한 경증 정보 추가
  2286. ds_src.setColumn(srchRow, "lightcase", lightcase);
  2287. srchRow++;
  2288. /**************************************** 진단추가시 원외처방예외사유 진단인지 check ******************************/
  2289. //치식 상병 입력 시 치식팝업 자동 호출 (2009.10.28 by JJE)
  2290. var tootDiagFromToCd = ds_initsrch_tootdiagcd.getColumn(0, "trgtcd"); //ex: K01|K10
  2291. if( !utlf_isNull(tootDiagFromToCd) ){
  2292. var tootDiagFrCd = tootDiagFromToCd.split("|")[0];
  2293. var tootDiagToCd = tootDiagFromToCd.split("|")[1];
  2294. var tootDiagFrLngth = utlf_getStringLength(tootDiagFrCd);
  2295. var tootDiagToLngth = utlf_getStringLength(tootDiagToCd);
  2296. if(icd10cd.substring(0, tootDiagFrLngth) >= tootDiagFrCd && icd10cd.substring(0, tootDiagToLngth) <= tootDiagToCd){
  2297. fDentifmla();
  2298. }
  2299. }
  2300. //end 치식팝업 자동 호출
  2301. }
  2302. //검색라인 초기화
  2303. ds_src.setColumn(srchRow, "icd10cd", "");
  2304. ds_src.setColumn(srchRow, "diagengnm", "");
  2305. div_all.grd_diaglist.setFocus();
  2306. ds_main_diagcdlist.selectRow(ds_main_diagcdlist.rowcount - 1);
  2307. ds_main_diagcdlist.rowposition = ds_main_diagcdlist.rowcount - 1;
  2308. div_all.grd_diaglist.setCellPos(4);
  2309. }
  2310. /****************************************************************************************
  2311. * Components : ds_grid_prcplist
  2312. * Components ID : ds_grid_prcplist
  2313. * Event : OnEnterDown
  2314. * Argument : ioflag, flag ,srcNode, indx , chkval, popupfg, grdObj
  2315. * Description : 액팅부서입력
  2316. ****************************************************************************************/
  2317. function lf_setPrcpExecDept( ioflag, flag ,srcNode:Dataset, indx , chkval, popupfg, grdObj ){
  2318. if( indx < 1 || utlf_isNull(srcNode)){
  2319. return ;
  2320. }
  2321. var oTrgtObj = null;
  2322. if( popupfg == "child"){
  2323. oTrgtObj = opener;
  2324. } else{
  2325. oTrgtObj = this;
  2326. }
  2327. var prcpclscd =srcNode.getColumn(indx, "prcpclscd");
  2328. var prcpnodelist;
  2329. var chngdeptcd;
  2330. var grpno;
  2331. if( flag == "prepprcpflag"){
  2332. if( (ioflag == "O" || ioflag == "S" )&& ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) ) {
  2333. var spcldrug = lf_getArrayData (srcNode.getColumn(indx, "drugmastspec") + "^", 0, 23, "^", "|" );
  2334. if( (spcldrug == "M" || spcldrug == "S" ) && chkval == "Y" ) {
  2335. sysf_messageBox("마약 및 수액은 prep지정 불가합니다.", "I");
  2336. srcNode.setColumn(indx, "prepprcpflag", "N");
  2337. if( grdObj != null ){
  2338. var nCol = grdObj.getBindCellIndex("body", "prepprcpflag");
  2339. grdObj.setCellProperty("body", nCol, "edittype", "none");
  2340. }
  2341. return ;
  2342. }
  2343. if( chkval == "Y"){
  2344. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "issdeptcd"));
  2345. }else {
  2346. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "tempcol23"));
  2347. }
  2348. }
  2349. }else if ( flag == "tpnyn"){
  2350. if( (ioflag != "O" && ioflag != "S" )&& ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) ) {
  2351. chngdeptcd = "";
  2352. if( chkval == "Y"){
  2353. srcNode.setColumn(indx, "fluidyn", "Y");
  2354. chngdeptcd = "A753";
  2355. }else {
  2356. chngdeptcd = srcNode.getColumn(indx, "tempcol23");
  2357. }
  2358. srcNode.setColumn(indx, "prcpexecdeptcd", chngdeptcd);
  2359. if( srcNode != null && srcNode.rowcount > 0 ){
  2360. grpno = srcNode.getColumn(indx, "prcpmixno");
  2361. for( var i= 0; i < srcNode.rowcount ; i++ ) {
  2362. if(srcNode.getColumn(i, "prcpmixno") != grpno ){
  2363. continue ;
  2364. }
  2365. if( !utlf_isNull(srcNode.getColumn(i, "tempcol1"))&& srcNode.getColumn(i, "tempcol1") != "000" ) {
  2366. continue ;
  2367. }
  2368. if( chkval == "Y" ){
  2369. srcNode.setColumn(i, "prcpexecdeptcd", chngdeptcd);
  2370. }else{
  2371. var tempcol23 = srcNode.getColumn(i, "tempcol23");
  2372. srcNode.setColumn(i, "prcpexecdeptcd", tempcol23);
  2373. }
  2374. oTrgtObj.lf_gridUpdateChk("per", i);
  2375. }
  2376. }
  2377. }
  2378. }else if ( flag =="anticncryn"){
  2379. if( (ioflag != "O" && ioflag != "S" )&& ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) ) {
  2380. chngdeptcd = "";
  2381. if( chkval == "Y"){
  2382. chngdeptcd = "PMB";
  2383. }else {
  2384. chngdeptcd = srcNode.getColumn(indx, "tempcol23"); //PMR
  2385. }
  2386. srcNode.setColumn(indx, "prcpexecdeptcd", chngdeptcd);
  2387. //prcpnodelist = opener.instance1.selectNodes(srcNode);
  2388. if( srcNode != null && srcNode.rowcount > 0 ){
  2389. grpno = srcNode.getColumn(indx, "prcpmixno");
  2390. for( var i= 0; i < srcNode.rowcount ; i++ ) {
  2391. if(srcNode.getColumn(i, "prcpmixno") != grpno ){
  2392. continue ;
  2393. }
  2394. if( !utlf_isNull(srcNode.getColumn(i, "tempcol1")) && srcNode.getColumn(i, "tempcol1") != "000" ){
  2395. continue ;
  2396. }
  2397. if( chkval == "Y" ){
  2398. srcNode.setColumn(i, "prcpexecdeptcd", chngdeptcd);
  2399. }else{
  2400. srcNode.setColumn(i, "prcpexecdeptcd", srcNode.getColumn(i, "tempcol23"));
  2401. }
  2402. oTrgtObj.lf_gridUpdateChk("per", i);
  2403. }
  2404. }
  2405. }
  2406. }else if ( flag =="stocyn"){
  2407. if( chkval == "Y"){
  2408. var prcpcd = srcNode.getColumn(indx, "prcpcd");
  2409. var oPointDsKeepprcplist = lf_getTopPatientinfo("N", "ds_keepprcplist") ;
  2410. var sPrcpCd = oPointDsKeepprcplist.getColumn(oPointDsKeepprcplist.findRow("prcpcd", prcpcd), "prcpcd");
  2411. if(utlf_isNull(sPrcpCd)){
  2412. sysf_messageBox("비치약품마스터에 없는 처방은 비치지정 불가합니다.", "I");
  2413. srcNode.setColumn(indx, "stocyn", "N");
  2414. if( grdObj != null ){
  2415. var nCol = grdObj.getBindCellIndex("body", "stocyn");
  2416. grdObj.setCellProperty("body", nCol, "edittype", "none");
  2417. }
  2418. return ;
  2419. }
  2420. if(srcNode.getColumn(indx, "hosinhosoutflag") == "O"){
  2421. sysf_messageBox("원외 처방은 비치지정 불가합니다.", "I");
  2422. srcNode.setColumn(indx, "stocyn", "N");
  2423. return ;
  2424. }
  2425. srcNode.setColumn(indx, "prcpexecdeptcd", "HOM" );
  2426. }else {
  2427. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "tempcol23"));
  2428. }
  2429. }else if ( flag =="selfprcpflag"){
  2430. if( chkval == "Y"){
  2431. srcNode.setColumn(indx, "prcpexecdeptcd", "PMR" );
  2432. }else {
  2433. srcNode.setColumn(indx, "prcpexecdeptcd", srcNode.getColumn(indx, "tempcol23") );
  2434. }
  2435. }else if ( flag =="fluidyn"){
  2436. var prcplist = srcNode.findRowExpr("status!='S'");
  2437. var prcpmixno = model.getValue( srcNode + "[" + indx + "]/prcpmixno");
  2438. srcNode.filterstr = "status!='S'";
  2439. var prcplist = srcNode;
  2440. if (prcplist != null && prcplist.rowcount > 0) {
  2441. var status = "";
  2442. for( var i = 0; i < prcplist.rowcount ; i++ ) {
  2443. status = prcplist.getColumn(i, "status");
  2444. if(prcplist.getColumn(i, "prcpmixno") == prcpmixno && ((prcplist.getColumn(i, "tempcol1") == "000" && status != "D" ) || ( status == "I"))){
  2445. prcplist.setColumn(i, "fluidyn", chkval);
  2446. if( status != "I" ){
  2447. prcplist.setColumn(i, "status", "U");
  2448. }
  2449. }
  2450. }
  2451. }
  2452. srcNode.filterstr = "";
  2453. }
  2454. }
  2455. /***************************************************************************************************
  2456. * Function : lf_checkDupInsu
  2457. * Description : 기왕증 체크
  2458. * Argument :
  2459. * return type :
  2460. * Creator :
  2461. ***************************************************************************************************/
  2462. function lf_checkDupInsu(sFlag , oGrid, sCtrlFlag)
  2463. {
  2464. var dupyn = "N";
  2465. var dupcol = 1;
  2466. if (sFlag == "child")
  2467. dupyn = opener.ds_data_paminfo.getColumn(0, "dupinsuyn");
  2468. else
  2469. dupyn = ds_paminfo.getColumn(0, "dupinsuyn");
  2470. if (!utlf_isNull(sCtrlFlag)) {
  2471. oGrid.enable = (dupyn != "Y") ? false : true;
  2472. }
  2473. else {
  2474. dupcol = oGrid.getBindCellIndex("body", "anamneflag");
  2475. oGrid.setCellProperty("body", dupcol, "edittype", ((dupyn != "Y") ? "none" : "normal") );
  2476. }
  2477. }
  2478. /***************************************************************************************************
  2479. * Function : lf_choiOrdChk
  2480. * Description : 선택진료 가능여부 체크
  2481. * Argument :
  2482. * return type :
  2483. * Creator :
  2484. * 변환OK
  2485. ***************************************************************************************************/
  2486. function lf_choiOrdChk(objPrcpDs:Dataset)
  2487. {
  2488. if (objPrcpDs.getColumn(0, "tempcol24") != "Y") {
  2489. sysf_messageBox("선택진료가 불가한 처방입니다.", "E");
  2490. return false;
  2491. }
  2492. else {
  2493. return true;
  2494. }
  2495. }
  2496. /***************************************************************************************************
  2497. * Function : lf_hosinPrcpResncdSed
  2498. * Description : 원내처방사유 처리
  2499. * Argument :
  2500. * return type :
  2501. * Creator :
  2502. * 변환 OK
  2503. ***************************************************************************************************/
  2504. function lf_hosinPrcpResncdSed(sFlag, strSrc, nSendRow, strSelResn)
  2505. {
  2506. //2007-12-13 윤영옥 선생님과 대화
  2507. //종속이 최우선 => 원내처방사유 => 약, 주사
  2508. var prcpgenrflag = "";
  2509. var hosinprcpresncd = "";
  2510. var prcpkindcd = "";
  2511. //SON0919 응급퇴원처방 원내사유 관련 추가 by sonjy start
  2512. var erflag = "";
  2513. var erprcpkindcd = "";
  2514. //SON0919 end
  2515. //SON0930
  2516. var hosinflag = "";
  2517. var drugmastspec = "";
  2518. var iFind = -1;
  2519. var prcpclscd = "";
  2520. var wardcd = "";
  2521. var oTrgtObj = lf_getFormObject(sFlag);
  2522. var ds_src = oTrgtObj.objects[strSrc];
  2523. // 원무의 원내사유 체크
  2524. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  2525. prcpclscd = ds_src.getColumn(nSendRow, "prcpclscd");
  2526. prcpkindcd = lf_getDsValue(oTrgtObj.ds_init, 0, "prcpkindcd");
  2527. erprcpkindcd = ds_src.getColumn(nSendRow, "prcpkindcd");
  2528. if( utlf_isNull(erprcpkindcd) )
  2529. erprcpkindcd = prcpkindcd;
  2530. if (utlf_isNull(strSelResn)){
  2531. if( prcpgenrflag == "E" && erprcpkindcd == "60" && oTrgtObj.ds_init.getColumn(0, "erresn" ) != "G3") {
  2532. hosinprcpresncd = "00"; // 응급실 G3가 아닌 환자의 퇴원 처방을 원외로 설정 되게 하기 위해 2013.03.27 엄영만
  2533. } else {
  2534. hosinprcpresncd = oTrgtObj.ds_init.getColumn(0, "hosinprcpresncd"); //원무의 원내사유 체크
  2535. }
  2536. } else {
  2537. hosinprcpresncd = strSelResn;
  2538. }
  2539. if(prcpgenrflag == "O" || prcpgenrflag == "S"){
  2540. wardcd = "";
  2541. } else {
  2542. wardcd = oTrgtObj.ds_paminfo.getColumn(0, "wardcd");
  2543. }
  2544. // DSC(일일수술실 2360800000 원외로 되도록 2012.06.11 엄영만)
  2545. if( erprcpkindcd == "60" &&
  2546. ( (prcpgenrflag == "E" && oTrgtObj.ds_init.getColumn(0, "erresn") != "G3")
  2547. || (prcpgenrflag == "D" && wardcd == "2360800000") )) {
  2548. erflag = "Y" ;
  2549. }
  2550. /* 종속 원내처방사유 55: 검사, 수술, 처치에 사용하는 의약품
  2551. 마약 45: 조제실제제,임상시험의약품,마약,방사성의약품,투석액,희귀의약품
  2552. 항암 47: 6세이하의 소아에게 투약하는 항암제(경구) */
  2553. /****************************** 원내처방 사유코드 처리 *******************************/
  2554. if (prcpgenrflag == "O" || erflag == "Y") { //SON0919 외래이거나 g3아닌 응급퇴원처방, DSC(일일수술실 2360800000) 퇴원처방 인 경우
  2555. // 원외전용약은 예외
  2556. drugmastspec = ds_src.getColumn(nSendRow, "drugmastspec" ) + "^";
  2557. hosinflag = lf_getArrayData(drugmastspec , 0, 11 , "^", "|" ); //SON0930 start 원외전용약은 예외
  2558. //********************* 투석원내처방사유처리 **************************//
  2559. var prcpcd = ds_src.getColumn(nSendRow, "prcpcd");
  2560. if (hosinflag != "O") {
  2561. var dialhospinoutcd = lf_getDsValue(oTrgtObj.ds_initsrch_prcpetccnts, 0, "dialhospinoutcd");
  2562. iFind = dialhospinoutcd.indexOf(prcpcd);
  2563. }
  2564. if (iFind >= 0 && erflag != "Y") {
  2565. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2566. ds_src.setColumn(nSendRow, "hosinprcpresncd", "19");
  2567. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  2568. if (sysf_messageBox(message, "Q") == "6") {
  2569. var old_hosinprcpresncd = oTrgtObj.ds_init.getColumn(0, "hosinprcpresncd");
  2570. oTrgtObj.ds_init.setColumn(0, "hosinprcpresncd", "19");
  2571. if(old_hosinprcpresncd != "19") // TF 와 동작을 동일하게 맞추기 위해(TF는 같은 값이면 event 미발생함)
  2572. oTrgtObj.div_all.cmb_hosinprcpresn.onitemchanged.fireEvent(oTrgtObj.div_all.cmb_hosinprcpresn, new ItemChangeEventInfo);
  2573. }
  2574. oTrgtObj.ds_initsrch_prcpetccnts.setColumn(0, "dialhospinoutcd", "");
  2575. //********************* 투석원내처방사유처리끝 ************************//
  2576. } else {
  2577. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return ; //약/주사가 아니면 return 20081012
  2578. drugmastspec = ds_src.getColumn(nSendRow, "drugmastspec") + "^";
  2579. var drugmastHosinprcpresncd = lf_getArrayData( drugmastspec, 0, 12, "^", "|" ); //약품마스터에 있는 원내처방 사유코드 처리
  2580. if( ds_src.getColumn(nSendRow, "inclprcpno") != "0" ){ //종속처방 처리 추가 by sonjy 2008-09-16
  2581. drugmastHosinprcpresncd = "55";
  2582. drugmastHosinhosoutflag = "I" ; // 사용안하는 듯?
  2583. }
  2584. if ( drugmastHosinprcpresncd != "00" ) { //SON0826 주사제와 선처치, mset은 환자원내사유에 우선한다.
  2585. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I" );
  2586. ds_src.setColumn(nSendRow, "hosinprcpresncd", drugmastHosinprcpresncd );
  2587. } else {
  2588. if ( hosinprcpresncd != "00" ) { // 환자원내처방사유
  2589. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I" );
  2590. ds_src.setColumn(nSendRow, "hosinprcpresncd", hosinprcpresncd );
  2591. } else {
  2592. ds_src.setColumn(nSendRow, "hosinhosoutflag", "O" );
  2593. ds_src.setColumn(nSendRow, "hosinprcpresncd", "00" );
  2594. }
  2595. }
  2596. }
  2597. } else if (prcpgenrflag == "E") {
  2598. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) return;
  2599. if ( erprcpkindcd == "60" && hosinprcpresncd == "00") { // 퇴원약 환자원내처방사유 적용
  2600. ds_src.setColumn(nSendRow, "hosinhosoutflag", "O");
  2601. ds_src.setColumn(nSendRow, "hosinprcpresncd", "00");
  2602. } else {
  2603. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2604. ds_src.setColumn(nSendRow, "hosinprcpresncd", hosinprcpresncd);
  2605. }
  2606. } else { //입원, DSC
  2607. // 3120400000 화학요법실, 3120900000 항암주사실 퇴원약 처방시 원내 예외 사유 설정. "주사제와 같이 투여 하는 경우" 2012.06.11 엄영만
  2608. if ( prcpgenrflag == "D" && erprcpkindcd == "60" && (wardcd == "3120900000" || wardcd == "3120400000")) {
  2609. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2610. ds_src.setColumn(nSendRow, "hosinprcpresncd", "52");
  2611. } else {
  2612. ds_src.setColumn(nSendRow, "hosinhosoutflag", "I");
  2613. ds_src.setColumn(nSendRow, "hosinprcpresncd", "00");
  2614. }
  2615. }
  2616. }
  2617. /***************************************************************************************************
  2618. * Function : lf_checkColor
  2619. * Description : 처방 진행상태 체크
  2620. * Argument :
  2621. * return type :
  2622. * Creator :
  2623. ***************************************************************************************************/
  2624. function lf_checkColor(ioflag, prcpstatcd, prcpclscd1, colorfg, scrnflag)
  2625. {
  2626. if (utlf_isNull(ioflag) || utlf_isNull(prcpstatcd))
  2627. return -1 ;
  2628. var iprcpstat = parseInt(prcpstatcd);
  2629. if (iprcpstat >= 600) {
  2630. return 4;
  2631. }
  2632. else if (iprcpstat >= 400) {
  2633. if (colorfg == "E") return 4;
  2634. else return 3;
  2635. }
  2636. if (ioflag == "O" || ioflag == "S") {
  2637. if (iprcpstat >= 230) {
  2638. if (colorfg == "E") return 4;
  2639. else return 2;
  2640. }
  2641. }
  2642. else {
  2643. if (iprcpstat >= 100) {
  2644. if (colorfg == "E") {
  2645. return 4;
  2646. }
  2647. else {
  2648. if (scrnflag == "N" && iprcpstat == 100) return 1;
  2649. else return 2;
  2650. }
  2651. }
  2652. }
  2653. return 1 ;
  2654. }
  2655. /***************************************************************************************************
  2656. * Function : lf_chkOpDrug
  2657. * Description : 수술 예방적 항생제 투여 관련 체크
  2658. * Argument :
  2659. * return type :
  2660. * Creator :
  2661. * 변환 OK
  2662. ***************************************************************************************************/
  2663. function lf_chkOpDrug(sFlag, strSrc, nSendRow)
  2664. {
  2665. var oTrgtObj = lf_getFormObject(sFlag);
  2666. var ds_src = this.objects[strSrc];
  2667. var ds_temp_src = oTrgtObj.objects[strSrc];
  2668. //A, 예정수술명 => P, 수술코드 처방 => S, 대상이 아닐 경우 => N
  2669. var resnyn = appf_getPatientInfoDetail("resnyn");
  2670. if( resnyn == "N" || utlf_isNull( resnyn ) ) return true ;
  2671. var ndOpDrugList = null;
  2672. var ret = null ;
  2673. var drugmastspec = ds_src.getColumn(nSendRow, "drugmastspec" ) + "^";
  2674. var prcpcd = ds_src.getColumn(nSendRow, "prcpcd" ) ;
  2675. var prcpnm = ds_src.getColumn(nSendRow, "prcpnm" ) ;
  2676. var msg = "[" + prcpcd + ":" + prcpnm + "]";
  2677. if( ds_src.getColumn(nSendRow, "prcpkindcd") == "60" && (resnyn == "S" || resnyn == "A") ) {
  2678. if ( lf_getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N") {
  2679. ret = sysf_messageBox( "수술시 예방적 항생제 투여 시는 퇴원약을 권장하고 있지 않습니다. " + msg + "처방을 ", "Q001") ;
  2680. }
  2681. } else {
  2682. //3세대 수술 예방적 항생제 여부 check
  2683. ndOpDrugList = oTrgtObj.ds_initsrch_opdrugcdlist.findRow("opdrugcd", ds_temp_src.getColumn(nSendRow, "prcpcd"));
  2684. if( ndOpDrugList > -1 && ( resnyn == "P" || resnyn == "A")) {
  2685. ret = sysf_messageBox( "수술시 예방적 항생제로 3세대 cephalosporin 또는 aminoglycoside를 권장하고 있지 않습니다." + msg + " 처방을 변경 ", "S004") ;
  2686. } else if ( lf_getArrayData ( drugmastspec, 0, 23, "^", "|" ) == "P" && lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" && ( resnyn == "S" || resnyn == "A")) {
  2687. ret = sysf_messageBox( "수술시 예방적 항생제 투여 시는 장기투여를 권장하고 있지 않습니다." + msg + " 처방을 ", "Q001") ;
  2688. }
  2689. }
  2690. if( ret == 6 ){ //yes=> 항생제 clear
  2691. ds_temp_src.deleteRow(nSendRow);
  2692. return false ;
  2693. } else if( ret == 7 ) { //no => 항생제 사유 입력
  2694. oTrgtObj.frmf_setParameter ("SPMMO016000_resnflag" , "O" );
  2695. var mon = sysf_getCurrentMonitorNumber();
  2696. var xpt = this.getOwnerFrame().position.x + 500;
  2697. var ypt = this.getOwnerFrame().position.y + 400;
  2698. var objArgs = new Object();
  2699. objArgs.arg_ds_migdrugmthd = ds_migdrugmthd;
  2700. frmf_modal("SPMMO16000", "SPMMO16000", objArgs, false, mon, xpt, ypt, null, null, null, null, null, "P"); //사유입력창
  2701. //fPrcpModal ( "SPMMO16000", 400, 100 ); //사유입력창
  2702. var resncnts = oTrgtObj.frmf_getParameter ("SPMMO016000_resncnts");
  2703. ds_temp_src.setColumn(nSendRow, "tempcol19" ,resncnts);
  2704. }
  2705. return true ;
  2706. }
  2707. /**
  2708. * @desc : 화면타이틀을 설정한다
  2709. * @ : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  2710. * @param :
  2711. * @return :
  2712. * @author : 김영학 2008-11-19
  2713. * @---------------------------------------------------
  2714. */
  2715. function lf_InitWndTitle(sTitleText) {
  2716. //if (!utlf_isNull(sysf_getUserInfos())) {
  2717. try {
  2718. var scrnTitle = sysf_getUserInfo("systeminstnm") + " " ;
  2719. scrnTitle += sTitleText + " " ;
  2720. scrnTitle += sysf_getUserInfo("dutplcenm") + " ";
  2721. scrnTitle += sysf_getUserName() + " ";
  2722. scrnTitle += sysf_getTitleLoginDate() + " ";
  2723. this.titletext = scrnTitle;
  2724. } catch(e) {}
  2725. //}
  2726. }
  2727. /***************************************************************************************************
  2728. * Function : lf_hosinPrcpResnChk
  2729. * Description : 약주사 원내처방 사유 체크
  2730. * Argument : sFlag [String : ]
  2731. * : oDestDs [Dataset : 검색Dataset]
  2732. * return type :
  2733. * Creator :
  2734. * 변환 OK
  2735. ***************************************************************************************************/
  2736. function lf_hosinPrcpResnChk(sFlag, oDestDs)
  2737. {
  2738. // 약주사 원내처방사유 체크
  2739. //var prcpclscdchk1 = "";
  2740. var prcpclscdchkA2 = "";
  2741. var prcpclscdchkA4 = "";
  2742. var prcpclscdchkA6 = "";
  2743. var prcpclscd = "";
  2744. // G3아닌 응급퇴원약 원내외 처리 부분
  2745. var prcpgenrflag = "";
  2746. var prcpkindcd = "";
  2747. var erflag = "";
  2748. // 약제원/내외구분 O/I Setting값이 있는 경우 모든 사유처리에서 제외하도록.
  2749. var hosinflag = "";
  2750. var drugmastspec = "";
  2751. var age;
  2752. var oTrgtObj = lf_getFormObject(sFlag);
  2753. //G3아닌 응급퇴원약 원내외 처리 부분
  2754. //DSC 퇴원처방 처리
  2755. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag");
  2756. if( (prcpgenrflag == "E" && oTrgtObj.ds_init.getColumn(0, "erresn") != "G3") || prcpgenrflag == "D" ){ //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY 20080917 start
  2757. erflag = "Y";
  2758. }
  2759. //var hosinprcpresncd;
  2760. // G3아닌 응급퇴원약 원내외 처리 부분
  2761. if ( oTrgtObj.ds_root.getColumn(0, "usge") == "prcp" && (prcpgenrflag =="O" || erflag == "Y" ) ) { //SON0919 G3아닌 응급퇴원약 원내외 처리 부분 BY SONJY
  2762. dsf_createDs("ds_tempSrc");
  2763. ds_tempSrc.copyData(oDestDs);
  2764. if( erflag == "Y") { //원내처방사유가 45 SON0919 start
  2765. ds_tempSrc.filter("prcpkindcd == '60' && hosinprcpresncd == '45'");
  2766. } else {
  2767. ds_tempSrc.filter("hosinprcpresncd == '45'");
  2768. }//SON0919 end
  2769. var prcpclscdNodeValue = "";
  2770. for(var i = 0; i < ds_tempSrc.rowcount; i++) {
  2771. drugmastspec = ds_tempSrc.getColumn(i, "drugmastspec");
  2772. hosinflag = lf_getArrayData ( drugmastspec + "^", 0, 11 , "^", "|" );
  2773. if( hosinflag == "O" ) continue ; //SON0930 start 원외전용약은 예외
  2774. prcpclscdNodeValue = ds_tempSrc.getColumn(i, "prcpclscd");
  2775. if ( prcpclscdNodeValue == "A2" ) {
  2776. prcpclscdchkA2 = "A2"
  2777. } else if ( prcpclscdNodeValue == "A4" ){
  2778. prcpclscdchkA4 = "A4"
  2779. } else if ( prcpclscdNodeValue == "A6" ){
  2780. prcpclscdchkA6 = "A6"
  2781. }
  2782. }
  2783. if ( !utlf_isNull(prcpclscdchkA2) || !utlf_isNull(prcpclscdchkA4) || !utlf_isNull(prcpclscdchkA6) ) { //값이 있으면
  2784. for ( var i = 0; i < oDestDs.rowcount; i++ ) { // 처방화면에 넘어온 것을 모두 찾아서 처방건별처리
  2785. prcpclscd = oDestDs.getColumn(i, "prcpclscd");
  2786. if( prcpclscd != "A2" && prcpclscd != "A4" && prcpclscd != "A6" ) continue ; //sonjy 20081012 약/주사일때만 check
  2787. prcpkindcd = oDestDs.getColumn(i, "prcpkindcd");
  2788. if( erflag == "Y" && prcpkindcd != "60" ){ //응급 G3가 아니고 퇴원처방이 아닌경우 응급원내사유로 원복
  2789. oDestDs.setColumn(i, "hosinhosoutflag", "I" );
  2790. oDestDs.setColumn(i, "hosinprcpresncd", ds_init.getColumn(0, "hosinprcpresncd") );
  2791. continue ;
  2792. }
  2793. drugmastspec = oDestDs.getColumn(i, "drugmastspec");
  2794. hosinflag = lf_getArrayData ( drugmastspec + "^", 0, 11, "^", "|" );
  2795. if ( prcpclscd != "A6" && hosinflag != "O" ) { //주사제는 예외 , 기본 원외인것도 예외 SON0930
  2796. if ( prcpclscdchkA2 == prcpclscd || prcpclscdchkA4 == prcpclscd || prcpclscdchkA6 == prcpclscd ) {
  2797. var hosinprcpresncd = oDestDs.getColumn(i, "hosinprcpresncd");
  2798. if ( hosinprcpresncd != "45" && hosinprcpresncd != "47" && hosinprcpresncd != "57" && hosinprcpresncd != "55" ) { //45, 47이 아니면, 55는 MSET
  2799. oDestDs.setColumn(i, "hosinhosoutflag", "I" );
  2800. oDestDs.setColumn(i, "hosinprcpresncd", "57" );
  2801. }
  2802. }
  2803. }
  2804. } // End of 처방건별처리
  2805. }// End of 값이 있으면
  2806. }
  2807. }
  2808. /***************************************************************************************************
  2809. * Function : lf_pamHosinPrcpResnCdChk
  2810. * Description : 환자에 해당되는 원내처방사유인지 체크
  2811. * Argument :
  2812. * return type :
  2813. * Creator :
  2814. * 변환 OK
  2815. ***************************************************************************************************/
  2816. function lf_pamHosinPrcpResnCdChk(sHosinPrcpResnCd, sFlag)
  2817. {
  2818. var cdnm = "";
  2819. if (sFlag == "child") {
  2820. var oTrgtObj = lf_getFormObject(sFlag);
  2821. cdnm = oTrgtObj.ds_P0034.lookup("cdid", sHosinPrcpResnCd, "cdnm");
  2822. }else {
  2823. cdnm = utlf_isNull(this.objects["ds_P0034"]) ? "" : ds_P0034.lookup("cdid", sHosinPrcpResnCd, "cdnm");
  2824. }
  2825. if (!utlf_isNull(cdnm)) {
  2826. return true;
  2827. } else {
  2828. if (sHosinPrcpResnCd == "52" || sHosinPrcpResnCd == "55") return false; //SON0826 선처치/주사제는 환자사유에 우선한다.
  2829. else return true ;
  2830. }
  2831. }
  2832. /***************************************************************************************************
  2833. * Function : lf_chkInCnclYN
  2834. * Description : 응급간호(ER Census)에서 삭제처리 했는지 여부 조회
  2835. * 변경요청(8106), 응급간호에서 삭제처리한 환자 선택 시 blocking 메세지 처리 추가
  2836. * 응급진료대상자 및 처방창에서 호출함
  2837. * Argument : pid []
  2838. * : orddd []
  2839. * : cretno []
  2840. * : mode [String : C:false리턴 시 창을닫음, B:처방저장을 blocking]
  2841. * return type :
  2842. * Creator :
  2843. * 변환OK
  2844. ***************************************************************************************************/
  2845. function lf_chkInCnclYN(pid, orddd, cretno, pMode)
  2846. {
  2847. if (utlf_isNull(pMode)) pMode = "C";
  2848. var sRef = dsf_createDsRow("ds_send_reqdata_erincncl", [{col:"pid", type:"string", size:256, val:pid},
  2849. {col:"orddd", type:"string", size:256, val:orddd},
  2850. {col:"cretno", type:"string", size:256, val:cretno}]);
  2851. var sRstlRef = dsf_createDs("ds_hidden_erincnclinfo");
  2852. var oParam = {};
  2853. oParam.id = "TRMMO04404";
  2854. oParam.service = "prcpmngtapp.ErMngt";
  2855. oParam.method = "reqGetChkInCnclYN";
  2856. oParam.inds = "req=" + sRef;
  2857. oParam.outds = sRstlRef + "=info";
  2858. oParam.async = false;
  2859. oParam.callback = "cf_TRMMO04404";
  2860. tranf_submit(oParam);
  2861. var oRstlRef = this.objects[sRstlRef];
  2862. if(arErrorCode.pop("TRMMO04404") > -1) {
  2863. //조회 결과, 삭제처리여부 N이면 처방창 호출 가능, 그 외(삭제처리 했을 경우)에는 blocking
  2864. if (oRstlRef.getColumn(0, "incnclyn") == "N" ) {
  2865. return true;
  2866. } else {
  2867. sysf_messageBox("삭제 처리 환자입니다.\n처방입력은 불가 합니다.\n\n응급 간호에", "I007");
  2868. if (pMode == "C") {
  2869. var orgPid = appf_getPatientInfo("pid");
  2870. var orgOrddd = appf_getPatientInfoDetail("indd");
  2871. var orgCretno = appf_getPatientInfoDetail("cretno");
  2872. if (pid == orgPid && orddd == orgOrddd && cretno == orgCretno) {
  2873. var mainObj = frmf_getMainViewer();
  2874. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); // 활성화된 처방Main 화면 object loading
  2875. var curCpObj = mainObj.frmf_findPopup("SMMMP00800"); // 활성화된 CP Main 화면 object loading
  2876. // 처방창이 열려있다면 입력된 처방을 삭제하고 처방창 close
  2877. if (!utlf_isNull(curPrcpObj)) {
  2878. curPrcpObj.ds_main_prcplist.clearData();
  2879. curPrcpObj.lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2880. }
  2881. if (!utlf_isNull(curCpObj)) {
  2882. curCpObj.ds_main_prcplist.clearData();
  2883. curCpObj.lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2884. }
  2885. }
  2886. } else if (pMode == "B") {
  2887. // 저장 blocking, 처방저장 버튼의 상태를 disabled 시킴
  2888. btn_tempsave.enable = false;
  2889. btn_prcpsave.enable = false;
  2890. btn_tempsave.tooltip = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  2891. btn_prcpsave.tooltip = "삭제 처리 환자입니다. 처방입력은 불가 합니다. 응급 간호에 확인하십시오.";
  2892. // 입력된 처방을 삭제시킴 (처방이 남아있으면 창 닫을 때 저장여부를 또 물어봄)
  2893. ds_main_prcplist.clearData();
  2894. lf_appendChildPrcp("ds_reset_prcplist", "ds_main_prcplist", "main");
  2895. }
  2896. if (utlf_isNull(oRstlRef.getColumn(0, "incnclyn"))) {
  2897. oRstlRef.addColumn("incnclyn", "string");
  2898. oRstlRef.setColumn(0, "incnclyn", "Y");
  2899. }
  2900. return false;// 삭제처리 환자인 경우 false
  2901. }
  2902. } else {
  2903. dsf_deleteDs("ds_send_reqdata_erincncl");
  2904. if (utlf_isNull(oRstlRef.getColumn(0, "incnclyn"))) {
  2905. oRstlRef.addColumn("incnclyn", "string");
  2906. oRstlRef.setColumn(0, "incnclyn", "Y");
  2907. }
  2908. return false; //submit 실패 시 false
  2909. }
  2910. }
  2911. function cf_TRMMO04404(sSvcId, nErrorCode, sErrorMsg) {
  2912. arErrorCode.push(sSvcId, nErrorCode);
  2913. }
  2914. /***************************************************************************************************
  2915. * Function : lf_getLoadingStatus
  2916. * Description : 처방화면 Main loading 여부를 세팅
  2917. * : 형식 : 기관명 + 화면명 + 로그인과 + 로그인한 사용자 + 로그인일시
  2918. * Argument :
  2919. * return type :
  2920. * Creator :
  2921. ***************************************************************************************************/
  2922. function lf_getLoadingStatus()
  2923. {
  2924. return frmf_getParameter("PRCP_LOADING_STATUS");
  2925. }
  2926. /***************************************************************************************************
  2927. * Function : lf_addSetPrcpChk
  2928. * Description : 처방이 발행될때 set로 같이 나가야할 처방 처리
  2929. * Argument : sFlag [String : child or else]
  2930. * : objSrcDs [Dataset : source node]
  2931. * : oDestDs [Dataset : 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다]
  2932. * : nSendRow [Number : 검색된 내용중 메인으로 보내고자 하는 row]
  2933. * : nSrchRow [Number : 메인에 들어간 자리. 검색로우(nSrchRow) 바로 전이다.]
  2934. * : sPrcpInptFlag [String : 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034]
  2935. * return type : nSrchRow 에러시 0
  2936. * Creator :
  2937. ***************************************************************************************************/
  2938. function lf_addSetPrcpChk(sFlag, objSrcDs, oDestDs, nSendRow, nSrchRow, sPrcpInptFlag) {
  2939. var prcpcd = objSrcDs.getColumn(nSendRow, "prcpcd");
  2940. var addprcpcd = "";
  2941. var iFind = -1;
  2942. var oPointSetPrcpList = emr_getOrderBaseInfo("setprcplist");
  2943. var setprcpchk = oPointSetPrcpList.getColumn(0, "setprcp");
  2944. var oTrgtObj = null;
  2945. if (sFlag == "child") {
  2946. oTrgtObj = opener;
  2947. }else{
  2948. oTrgtObj = this;
  2949. }
  2950. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경
  2951. var precureprcpflag = "";
  2952. var calcflag = "";
  2953. var prcpdelivefact = "";
  2954. var firStage = setprcpchk.split("^");
  2955. for (var i=0 ; i < firStage.length ; i++){
  2956. var secStage = firStage[i].split("|");
  2957. if (prcpcd == secStage[0]) {
  2958. iFind = 1;
  2959. calcflag = secStage[1];
  2960. addprcpcd = secStage[2];
  2961. prcpdelivefact = secStage[3];
  2962. break;
  2963. }
  2964. if (iFind == 1){
  2965. break;
  2966. }
  2967. }
  2968. if (parseInt(iFind) >= 0) {
  2969. var prcpdd = oTrgtObj.ds_init_data.getColumn(0, "prcpdd");
  2970. var insukind = oTrgtObj.ds_data_paminfo.getColumn(0, "insukind");
  2971. var sRef = dsf_createDsRow("ds_temp_prcpcd", [{col:"prcpcd", type:"string", size:256, val:addprcpcd}, // 처방코드
  2972. {col:"prcpdd", type:"string", size:256, val:prcpdd}, // 처방일
  2973. {col:"insukind", type:"string", size:256, val:insukind}, // 보험유형
  2974. {col:"srchkind", type:"string", size:256, val:"B2"}]); // 검색종류 default="ANST"
  2975. var sAddSetPrcpDs = dsf_createDs("ds_temp_addsetprcp");
  2976. var oAddSetPrcpDs = this.objects[sAddSetPrcpDs];
  2977. var oParam = {};
  2978. oParam.id = "TRMMO00207"; // transaction을 구분하기 위한 ID
  2979. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  2980. oParam.method = "reqGetPrcpMultiSrchInfo"; // method ID
  2981. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  2982. oParam.outds = sAddSetPrcpDs + "=prcplist"; // transaction을 처리 결과를 받을 Dataset의 ID
  2983. tranf_submit(oParam);
  2984. /*
  2985. ** 자동발생코드 추가
  2986. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  2987. ** 자동발생코드는 돈계산에서 제외되어야 함.
  2988. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  2989. */
  2990. if (oAddSetPrcpDs != null && oAddSetPrcpDs.rowcount > 0) {
  2991. oAddSetPrcpDs.setColumn(0, "prcpdelivefact", prcpdelivefact);
  2992. oAddSetPrcpDs.setColumn(0, "tempcol17", calcflag); // 자동발생코드는 돈계산이 되어선 안됨.
  2993. }
  2994. // 자동발생 처방 입력 구분 추가
  2995. // SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호
  2996. serPrcpSrchRow = lf_addPrcpDetl(sFlag, oAddSetPrcpDs, oDestDs, 0, nSrchRow, "34");
  2997. if (serPrcpSrchRow != 0){
  2998. nSrchRow++;
  2999. }
  3000. // Temp로 사용한 Dataset을 삭제
  3001. var oRemoveDs = this.removeChild(sRef);
  3002. var oRemoveDs = this.removeChild(sAddSetPrcpDs);
  3003. oRemoveDs = null;
  3004. }
  3005. return nSrchRow;
  3006. }
  3007. /***************************************************************************************************
  3008. * Function : lf_prcpDirecSrch
  3009. * Description : 지시처방 J의 싱글코드 검색
  3010. * : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  3011. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  3012. * : sCond1 [String : 처방명, 코드명, 성분명, old수가코드]
  3013. * : sCond3 [String : 처방일]
  3014. * : sCond4 [String : 환자보험유형]
  3015. * : sCond5 [String : 그룹지시처방코드]
  3016. * return type :
  3017. * Creator :
  3018. ***************************************************************************************************/
  3019. function lf_prcpDirecSrch(sCond1, sCond3, sCond4, sCond5)
  3020. {
  3021. if (utlf_isNull(sCond3)) {
  3022. sCond3 = utlf_getCurrentDate();
  3023. }
  3024. if (utlf_isNull(sCond4)) {
  3025. sCond4 = "11";
  3026. }
  3027. var sRef = dsf_createDsRow("ds_TRMMO00102", [{col:"cond1", type:"string", size:256, val:sCond1}, //처방명, 수가코드
  3028. {col:"cond2", type:"string", size:256, val:"-"}, //외래, 입원, 응급 구분
  3029. {col:"cond3", type:"string", size:256, val:sCond3}, //처방일
  3030. {col:"cond4", type:"string", size:256, val:sCond4}, //환자보험유형
  3031. {col:"cond5", type:"string", size:256, val:sCond5},
  3032. {col:"cond99", type:"string", size:256, val:"getDirecGroupInfo"}]); // 검색구분
  3033. var oParam = {};
  3034. oParam.id = "TRMMO00102";
  3035. oParam.service = "prcpmngtapp.PrcpMngt";
  3036. oParam.method = "reqGetPrcpSrchInfo";
  3037. oParam.inds = "req=" + sRef;
  3038. oParam.outds = "ds_prcpdirec_prcplist=prcplist";
  3039. tranf_submit(oParam);
  3040. dsf_setDefaultVal(ds_prcpdirec_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  3041. dsf_deleteDs(sRef);
  3042. }
  3043. /***************************************************************************************************
  3044. * Function : lf_reqInFecPatList
  3045. * Description : 감염관리 환자 여부를 확인, 직원감염노출사고 보고서 open
  3046. * Argument : sRgstNo [String : 주민번호1]
  3047. * : sRgstNo2 [String : 주민번호2]
  3048. * return type :
  3049. * Creator :
  3050. ***************************************************************************************************/
  3051. function lf_reqInFecPatList(sRgstNo, sRgstNo2)
  3052. {
  3053. var sRef = dsf_createDsRow("ds_cond_reqdata", [{col:"rgstno", type:"string", size:256, val:sRgstNo},
  3054. {col:"rgstno2", type:"string", size:256, val:sRgstNo2}]);
  3055. var oRef = this.objects[sRef];
  3056. var sDsTemp = dsf_createDs("ds_temp");
  3057. var oDsTemp = this.objects[sDsTemp];
  3058. var oParam = {};
  3059. oParam.id = "TRMMO04108"; // transaction을 구분하기 위한 ID
  3060. oParam.service = "prcpmngtapp.ConcPatMngt"; // service ID
  3061. oParam.method = "reqGetInfecPatInfo"; // method ID
  3062. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  3063. oParam.outds = sDsTemp + "=infecpatlist"; // transaction을 처리 결과를 받을 Dataset의 ID
  3064. tranf_submit(oParam);
  3065. // 등록번호 유/무
  3066. if (oDsTemp.getColumn(0, "pflag") == "Y") {
  3067. var infecojb = frmf_getChildWindow("SMASI01000");
  3068. // 현재 직원감염노출사고 보고서가 있는 경우, close후, 다시 open
  3069. if (infecojb != null) {
  3070. infecojb.javascript.fClose();
  3071. }
  3072. frmf_setParameter("sFlag", "P");
  3073. frmf_open("SMASI01000");
  3074. }
  3075. // Temp로 사용한 Dataset을 삭제
  3076. var oRemoveDs = this.removeChild(sDsTemp);
  3077. oRemoveDs = null;
  3078. oRemoveDs = this.removeChild(sRef);
  3079. oRemoveDs = null;
  3080. }
  3081. /***************************************************************************************************
  3082. * Function : lf_prcpGroupSrch
  3083. * Description : 그룹코드 M의 싱글코드 검색
  3084. * : 검색후 수가코드의 그룹싱글구분이 M 일경우는 그 그룹코드로 다시 SINGLE 코드를 찾아온다.
  3085. * Argument : oDsRsltRef [Dataset : 조회된 값을 받을 대상 데이타셋]
  3086. * : sCond1 [Stirng : 처방명, 코드명, 성분명, old수가코드]
  3087. * : sCond3 [Stirng : 처방일]
  3088. * : sCond4 [Stirng : 환자보험유형]
  3089. * : sCond5 [Stirng : 진단검사 그룹처방일 때 검체코드정보]
  3090. * : sCond6 [Stirng : 진단검사 검사분류유형]
  3091. * : sCond99 [Stirng : 검색구분]
  3092. * : sPrcpExecDeptCd [Stirng : 검색구분]
  3093. * return type :
  3094. * Creator :
  3095. ***************************************************************************************************/
  3096. function lf_prcpGroupSrch(oDsRsltRef, sCond1, sCond3, sCond4, sCond5, sCond6, sCond99, sPrcpExecDeptCd)
  3097. {
  3098. var sRef = dsf_createDsRow("ds_cond_deptlist", [{col:"cond1", type:"string", size:256, val:sCond1},
  3099. {col:"cond2", type:"string", size:256, val:""}, // 외래, 입원, 응급 구분
  3100. {col:"cond3", type:"string", size:256, val:""},
  3101. {col:"cond4", type:"string", size:256, val:""},
  3102. {col:"cond5", type:"string", size:256, val:sCond5},
  3103. {col:"cond6", type:"string", size:256, val:sCond6},
  3104. {col:"cond10", type:"string", size:256, val:""},
  3105. {col:"cond99", type:"string", size:256, val:""},
  3106. {col:"sch_prcpexecdeptcd", type:"string", size:256, val:sPrcpExecDeptCd}]);
  3107. var oRef = this.objects[sRef];
  3108. if (utlf_isNull(sCond3)) {
  3109. sCond3 = utlf_getCurrentDate();
  3110. }
  3111. if (utlf_isNull(sCond4)) {
  3112. sCond4 = "11";
  3113. }
  3114. if (utlf_isNull(sCond99)) {
  3115. sCond99 = "getPrcpGroupInfo";
  3116. }
  3117. // div 같은 곳에서 실행될때를 위해 분기
  3118. if( utlf_isNull(opener) || opener.objects["ds_data_paminfo"] == null ) {
  3119. var oOpener = this.getOwnerFrame().form;
  3120. var prcpgenrflag = lf_getDsValue(oOpener.ds_paminfo, 0, "ioflag");
  3121. if (utlf_isNull(prcpgenrflag)) {
  3122. prcpgenrflag = "-";
  3123. }
  3124. //진료과 추가
  3125. var orddeptcd = lf_getDsValue(oOpener.ds_paminfo, 0, "orddeptcd");
  3126. if (utlf_isNull(orddeptcd)) {
  3127. orddeptcd = "*";
  3128. }
  3129. } else {
  3130. var prcpgenrflag = opener.ds_data_paminfo.getColumn(0, "ioflag");
  3131. if (utlf_isNull(prcpgenrflag)) {
  3132. prcpgenrflag = ds_data_paminfo.getColumn(0, "ioflag");
  3133. if (utlf_isNull(prcpgenrflag)) {
  3134. prcpgenrflag = "-";
  3135. }
  3136. }
  3137. //진료과 추가
  3138. var orddeptcd = opener.ds_data_paminfo.getColumn(0, "orddeptcd");
  3139. if (utlf_isNull(orddeptcd)) {
  3140. orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  3141. if (utlf_isNull(orddeptcd)) {
  3142. orddeptcd = "*";
  3143. }
  3144. }
  3145. }
  3146. oRef.setColumn(0, "cond1", sCond1); //처방명, 수가코드
  3147. oRef.setColumn(0, "cond2", prcpgenrflag); // 외래, 입원, 응급 구분
  3148. oRef.setColumn(0, "cond3", sCond3); // 처방일
  3149. oRef.setColumn(0, "cond4", sCond4); // 환자보험유형
  3150. oRef.setColumn(0, "cond5", sCond5); //진단검사 그룹처방일 때 검체코드정보
  3151. oRef.setColumn(0, "cond6", sCond6); //진단검사 검사분류유형
  3152. oRef.setColumn(0, "cond10", orddeptcd); // 진료과
  3153. oRef.setColumn(0, "cond99", sCond99); // 검색구분
  3154. var oParam = {};
  3155. oParam.id = "TRMMO00101"; // transaction을 구분하기 위한 ID
  3156. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  3157. oParam.method = "reqGetPrcpSrchInfo"; // method ID
  3158. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  3159. oParam.outds = oDsRsltRef.name + "=prcplist";
  3160. tranf_submit(oParam);
  3161. var oRemoveDs = this.removeChild(sRef);
  3162. oRemoveDs = null;
  3163. }
  3164. /***************************************************************************************************
  3165. * Function : lf_specOrdPopUpYN
  3166. * Description : 선택진료신청관리 팝업 open 여부 체크
  3167. * Argument : sPid [String : 환자번호]
  3168. * : sCretNo [String : 순번]
  3169. * : sOrdDd [String : 입원일/진료일]
  3170. * : sOrdDeptCd [String : 진료과]
  3171. * : sOrdDrId [String : 주치의]
  3172. * : sOrdType [String : 입원외래구분(O:외래진료대상자/I:입원결정서)]
  3173. * return type :
  3174. * Creator :
  3175. ***************************************************************************************************/
  3176. function lf_specOrdPopUpYN(sPid, sCretNo, sOrdDd, sOrdDeptCd, sOrdDrId, sOrdType)
  3177. {
  3178. // 20091007 JJE 추가 : 주진료과 의사가 진료지원과의 선택진료의사 선택 여부(hardcdno:134) 및 원무 팝업 호출
  3179. var sSelSpeCordYN = "";
  3180. if (utlf_isNull(sOrdType))
  3181. sOrdType = "O"; // 입원장에서 호출 시에는 I로 보냄.. (2009.11.03 추가)
  3182. if (sOrdType != "O"){
  3183. if( opener != null && opener.objects["ds_initsrch_selspecordyn"] != null )
  3184. sSelSpeCordYN = opener.ds_initsrch_selspecordyn.lookup("trgtcd","Y","trgtcd");
  3185. }else
  3186. sSelSpeCordYN = ds_init_selspecordyn.lookup("hardcd","Y","hardcd"); //"/root/init/selspecordyn/hardcd[hardcd = 'Y']/hardcd");
  3187. if (!utlf_isNull(sSelSpeCordYN)) {
  3188. var sRef = dsf_createDsRow("ds_cond_cnsttypecombo", [{col:"pid", type:"string", size:256, val:sPid},
  3189. {col:"cretno", type:"string", size:256, val:sCretNo},
  3190. {col:"orddd", type:"string", size:256, val:sOrdDd},
  3191. {col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd},
  3192. {col:"orddrid", type:"string", size:256, val:sOrdDrId},
  3193. {col:"ordtype", type:"string", size:256, val:sOrdType}]);
  3194. var oRef = this.objects[sRef];
  3195. var sDsTemp = dsf_createDs("ds_temp");
  3196. var oDsTemp = this.objects[sDsTemp];
  3197. var oParam = {};
  3198. oParam.id = "TRPMC06801"; // transaction을 구분하기 위한 ID
  3199. oParam.service = "patinfomngtapp.SpecAppFrm"; // service ID
  3200. oParam.method = "reqGetSpecOrdOpenYN"; // method ID
  3201. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  3202. oParam.outds = sDsTemp + "=saim"; // transaction을 처리 결과를 받을 Dataset의 ID
  3203. tranf_submit(oParam);
  3204. // 조회된 환자번호
  3205. var saim_pid = oDsTemp.getColumn(0, "pid");
  3206. if (saim_pid == 0) {
  3207. // Parameter: 진료형태▦환자번호▦입원/진료일▦생성번호▦진료과▦주치의▦등록위치구분 : rgstposflag (I:입원,O:외래,M:진료,N:간호)
  3208. frmf_setParameter("SMPMC06800_PARM", sOrdType + "▦" + sPid + "▦" + sOrdDd + "▦" + sCretNo + "▦" + sOrdDeptCd + "▦" + sOrdDrId + "▦" + "M");
  3209. frmf_modal("SMPMC06800", "SMPMC06800");
  3210. }
  3211. var oRemoveDs = this.removeChild(sRef);
  3212. oRemoveDs = null;
  3213. oRemoveDs = this.removeChild(sDsTemp);
  3214. oRemoveDs = null;
  3215. }
  3216. }
  3217. /***************************************************************************************************
  3218. * Function : lf_checkPrcpUnit
  3219. * Description : 처방 단위 유효성체크
  3220. * Argument : sPrcpCd [String : 항목코드]
  3221. * : drprcpetc3 [String : 항목코드]
  3222. * return type :
  3223. * Creator :
  3224. ***************************************************************************************************/
  3225. function lf_checkPrcpUnit(sPrcpCd, drprcpetc3)
  3226. {
  3227. var sRef = dsf_createDsRow("ds_cond_sch_prcpcd", [{col:"prcpcd", type:"string", size:256, val:sPrcpCd},
  3228. {col:"prcptims", type:"string", size:256, val:1},
  3229. {col:"prcpdayno", type:"string", size:256, val:1}]);
  3230. var oRef = this.objects[sRef];
  3231. var sDsTemp = dsf_createDs("ds_temp");
  3232. var oDsTemp = this.objects[sDsTemp];
  3233. var ret = false;
  3234. var oParam = {};
  3235. oParam.id = "TRMMO00142"; // transaction을 구분하기 위한 ID
  3236. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  3237. oParam.method = "reqGetPrcpUnit"; // method ID
  3238. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  3239. oParam.outds = sDsTemp + "=prcpunit"; // transaction을 처리 결과를 받을 Dataset의 ID
  3240. tranf_submit(oParam);
  3241. oDsTemp.filterstr = "drprcpetc3=='" + drprcpetc3 + "'";
  3242. if (oDsTemp.getRowCount() > 0) {
  3243. ret = true;
  3244. }
  3245. oDsTemp.filterstr = "";
  3246. var oRemoveDs = this.removeChild(sRef);
  3247. oRemoveDs = null;
  3248. oRemoveDs = this.removeChild(sDsTemp);
  3249. oRemoveDs = null;
  3250. return ret ;
  3251. }
  3252. /***************************************************************************************************
  3253. * Function : lf_childTPNChk
  3254. * Description : 소아 TPN Repeat처방시 체크.
  3255. * Argument : strSrc [Dataset : ]
  3256. * : nSendRow [Number : ]
  3257. * return type :
  3258. * Creator :
  3259. ***************************************************************************************************/
  3260. function lf_childTPNChk(strSrc, nSendRow)
  3261. {
  3262. var sRef = dsf_createDsRow("ds_cond_sch_prcpcd", [{col:"tpn_testreqlnkno", type:"string", size:256, val:""},
  3263. {col:"tpn_prcpdd", type:"string", size:256, val:""}]);
  3264. var oRef = this.objects[sRef];
  3265. var sDsTemp = dsf_createDs("ds_temp");
  3266. var oDsTemp = this.objects[sDsTemp];
  3267. // 저장로직 start
  3268. oRef.setColumn(0, "tpn_testreqlnkno", ""); // strSrc.getColumn(nSendRow, "testreqlnkno")); // 검사의뢰지번호
  3269. oRef.setColumn(0, "tpn_prcpdd", ""); // opener.ds_prcpdd.getValue("/root/init/prcpdd")); // 처방일자
  3270. var oParam = {};
  3271. oParam.id = "TXMMO02901"; // transaction을 구분하기 위한 ID
  3272. oParam.service = "prcpmngtapp.PrcpMngt"; // service ID
  3273. oParam.method = "reqExeTPNChildInfo"; // method ID
  3274. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  3275. oParam.outds = sDsTemp + "=tpndata"; // transaction을 처리 결과를 받을 Dataset의 ID
  3276. tranf_submit(oParam);
  3277. strSrc.setColumn(nSendRow, "testreqlnkno", sDsTemp.getColumn(0, "tpnno"));
  3278. // 저장로직 end
  3279. if (sysf_messageBox("세부함량을 그대로 유지하시겠습니까?", "Q") != "6") {
  3280. var prcptpnno = strSrc.getColumn(nSendRow, "testreqlnkno");
  3281. if (!utlf_isNull(prcptpnno)) {
  3282. frmf_setParameter("SSADB70201_prcptpnno", prcptpnno);
  3283. frmf_setParameter("SSADB70201_prcptpnyn", "Y");
  3284. lf_prcpModal("SSADB70201", objArg);
  3285. frmf_clearParameter("SSADB70201_prcptpnno");
  3286. frmf_clearParameter("SSADB70201_prcptpnyn");
  3287. }
  3288. }
  3289. var oRemoveDs = this.removeChild(sRef);
  3290. oRemoveDs = null;
  3291. oRemoveDs = this.removeChild(sDsTemp);
  3292. oRemoveDs = null;
  3293. }
  3294. /***************************************************************************************************
  3295. * Function : lf_addSetPrcpChkKNUH
  3296. * Description : 처방이 발행될때 set로 같이 나가야할 처방 처리
  3297. * Argument : objFlag - child or else
  3298. * : strSrc - source node
  3299. * : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  3300. * : nSendRow - 검색된 내용중 메인으로 보내고자 하는 row
  3301. * : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  3302. * : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술
  3303. * return type : srchRow 에러시 0
  3304. * Creator :
  3305. ***************************************************************************************************/
  3306. function lf_addSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag ) {
  3307. var ds_src = this.objects[strSrc];
  3308. var prcpcd = ds_src.getColumn(i, "prcpcd" );
  3309. var addprcpcd = "";
  3310. var addprcpcnt = 0;
  3311. // if (prcpcd == "LCT101") addprcpcd = "DDIS50";
  3312. // else if (prcpcd == "LCT001") addprcpcd = "DDIS75";
  3313. // else if (prcpcd == "LCT002") addprcpcd = "DDIS100";
  3314. // else if (prcpcd == "NHC297EG") addprcpcd = "FE654303G"; //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청
  3315. var iFind = -1;
  3316. var setprcpchk = "";
  3317. var cnts = ds_autosetprcplist.rowcount;
  3318. var oTrgtObj = lf_getFormObject(objFlag);
  3319. var srchPrcpcd = oTrgtObj.ds_autosetprcplist.lookup("hardcd", prcpcd, "hardcd");
  3320. var setprcpchk = oTrgtObj.ds_autosetprcplist.lookup("hardcd", prcpcd, "hardcdnm");
  3321. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  3322. var precureprcpflag = "";
  3323. var calcflag = "";
  3324. var drprcpetc8 = "";
  3325. if( !utlf_isNull(srchPrcpcd)) {
  3326. var secStage = setprcpchk.split("|");
  3327. iFind = 1 ;
  3328. calcflag = secStage[0];
  3329. addprcpcd = secStage[1];
  3330. drprcpetc8 = secStage[2];
  3331. }
  3332. if ( parseInt(iFind) >= 0) {
  3333. var prcpdd = oTrgtObj.ds_init.getColumn(0, "prcpdd");
  3334. var insukind = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  3335. //멀티 search 가능함
  3336. var sRef = dsf_createDsRow("ds_send_addsetprcp", [{col:"cond1", type:"string", size:256, val:addprcpcd},
  3337. {col:"cond3", type:"string", size:256, val:prcpdd},
  3338. {col:"cond4", type:"string", size:256, val:insukind},
  3339. {col:"srchkind", type:"string", size:256, val:"B2"}]);
  3340. var oParam = {};
  3341. oParam.id = "TRMMO00207";
  3342. oParam.service = "prcpmngtapp.PrcpMngt";
  3343. oParam.method = "reqGetPrcpMultiSrchInfo";
  3344. oParam.inds = "req=" + sRef;
  3345. oParam.outds = "ds_addsetprcp_prcplist=prcplist";
  3346. oParam.async = false;
  3347. oParam.callback = "cf_TRMMO00207";
  3348. tranf_submit(oParam);
  3349. if(arErrorCode.pop("TRMMO00207") > -1) {
  3350. dsf_setDefaultVal(ds_addsetprcp_prcplist, "prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,drugmthdspccd:-,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,drgacptflag:-");
  3351. /*
  3352. **by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 시작.
  3353. ** 처방코드 : NHC297EMG, 자동발생코드 : FE654303G
  3354. ** 자동발생코드는 돈계산에서 제외되어야 함.
  3355. ** 자동발생코드 처방전달사항 자동 생성=>[HEART-SPECT 핵의학검사용]
  3356. */
  3357. //20090420 마정민 수정 HARDCODE 테이블로 분리
  3358. if( ds_addsetprcp_prcplist.rowcount > 0) {
  3359. //model.setValue("/root/addsetprcp/prcplist[1]/prcpdelivefact", prcpdelivefact );
  3360. ds_addsetprcp_prcplist.setColumn(0, "drprcpetc8", drprcpetc8);
  3361. //by sonjy 자동발생코드 추가 2008-08-20 인화성 과장님 요청 수정 끝
  3362. //serPrcpSrchRow = addPrcpDetl ( objFlag , "root/addsetprcp/prcplist" , strDest , 1 , srchRow, prcpInptFlag );
  3363. //by sonjy 20091031 자동발생 처방 입력 구분 추가
  3364. //SET 처방일 때 약품의 기본 일수는 수가계산법이 어떤 것이든 기본을 1일로 되도록 요청번호:8875
  3365. serPrcpSrchRow = lf_addPrcpDetl ( objFlag , "ds_addsetprcp_prcplist" , strDest , 0, srchRow, "34" );
  3366. if (serPrcpSrchRow != 0 ) srchRow++;
  3367. }
  3368. }
  3369. dsf_deleteDs(sRef);
  3370. }
  3371. return srchRow;
  3372. }
  3373. function cf_TRMMO00207(sSvcId, nErrorCode, sErrorMsg) {
  3374. arErrorCode.push(sSvcId, nErrorCode);
  3375. }
  3376. /***************************************************************************************************
  3377. * Function : lf_chngPrcpExecDeptSCH
  3378. * Description : 선택진료의 검색 팝업 호출
  3379. * Argument : objSrcDs [Dataset : ]
  3380. * : nIndex [Number : ]
  3381. * : sFlag [String : ]
  3382. * return type :
  3383. * Creator :
  3384. ***************************************************************************************************/
  3385. function lf_chngPrcpExecDeptSCH(objSrcDs, nIndex, sFlag)
  3386. {
  3387. if (nIndex < 0) return;
  3388. var prcpdd = "";
  3389. var orddeptcd = "";
  3390. var orddeptnm = "";
  3391. var ioflag = "";
  3392. var xpt = 700;
  3393. var ypt = 150;
  3394. var flag = "prcp";
  3395. if (sFlag == "child") {
  3396. prcpdd = opener.ds_init_data.getColumn(0, "prcpdd");
  3397. orddeptcd = opener.ds_data_paminfo.getColumn(0, "orddeptcd");
  3398. ioflag = opener.ds_data_paminfo.getColumn(0, "ordtype");
  3399. orddeptnm = opener.ds_data_paminfo.getColumn(0, "orddeptnm");
  3400. xpt = 300;
  3401. ypt = 10;
  3402. flag = "popup";
  3403. } else {
  3404. prcpdd = ds_init_data.getColumn(0, "prcpdd");
  3405. orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  3406. ioflag = ds_data_paminfo.getColumn(0, "ordtype");
  3407. orddeptnm = ds_data_paminfo.getColumn(0, "orddeptnm");
  3408. }
  3409. var objArg = {};
  3410. objArg["plgv_flag"] = flag;
  3411. objArg["plgv_prcpcd"] = objSrcDs.getColumn(nIndex, "prcpcd");
  3412. objArg["plgv_prcpdd"] = prcpdd;
  3413. objArg["plgv_orddeptcd"] = orddeptcd;
  3414. objArg["plgv_orddeptnm"] = orddeptnm;
  3415. objArg["plgv_prcpclscd"] = objSrcDs.getColumn(nIndex, "prcpclscd");
  3416. objArg["plgv_ioflag"] = (ioflag == "O" || ioflag == "S") ? "O" : "I";
  3417. var obj_Rtn = lf_prcpModal("SPMMB08600", objArg);
  3418. return obj_Rtn;
  3419. }
  3420. /***************************************************************************************************
  3421. * Function : lf_prcpOpen
  3422. * Description : 팝업위치가 저장되지 않는 팝업 모달 띄우기(모니터 번호 선택 가능)
  3423. * Argument : String[화면ID], Integer[x좌표], Integer[y좌표], Integer[ref], Integer[resultref], Integer[userProp]
  3424. * return type : void
  3425. * Creator :
  3426. ***************************************************************************************************/
  3427. function lf_prcpOpen(sScreenId, argxpt, argypt, ref, resultref , userProp )
  3428. {
  3429. var xpt = system.clientToScreenX(this.getOwnerFrame(), 0) + argxpt;
  3430. var ypt = system.clientToScreenY(this.getOwnerFrame(), 0) + argypt;
  3431. frmf_open(sScreenId, sScreenId, null, xpt, ypt);
  3432. }
  3433. /***************************************************************************************************
  3434. * Function : lf_setSpecOrd
  3435. * Description : 특진료 설정
  3436. * Argument :
  3437. * return type :
  3438. * Creator : 오지훈
  3439. ***************************************************************************************************/
  3440. function lf_setSpecOrd()
  3441. {
  3442. var tempcol2 = ds_prcp.getColumn(0, "tempcol2");
  3443. var temparray = tempcol2.split("|");
  3444. // by sonjy 2008-08-29 진료과, 진료의id setting
  3445. var orddeptcd = opener.ds_paminfo.getColumn(0, "orddeptcd");
  3446. ds_paminfo.setColumn(0, "specordyn", opener.ds_paminfo.getColumn(0, "specordyn")); //by sonjy 2008-08-28 진료의선택창에서 사용.
  3447. // 선택진료과가 있는 경우, 조회해서 사용자를 grid에 보여줌
  3448. var tempcol12 = ds_prcp.getColumn(0, "tempcol12");
  3449. if (utlf_isNull(tempcol12))
  3450. tempcol12 = orddeptcd ; //by sonjy 20081014
  3451. if (tempcol12 != "") {
  3452. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", tempcol12);
  3453. btn_specdrid.enable = true;
  3454. return;
  3455. }
  3456. var ioflag = opener.ds_patflag.getColumn(0, "prcpgenrflag");
  3457. var orddrid = "";
  3458. // 입원, DSC,응급
  3459. if (ioflag == "I" || ioflag == "D" || ioflag == "E") {
  3460. orddeptcd = opener.ds_paminfo.getColumn(0, "orddeptcd");
  3461. orddrid = opener.ds_paminfo.getColumn(0, "medispclid");
  3462. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", orddeptcd);
  3463. if (sysf_getUserInfo("dutplcecd") == orddeptcd){ // 로그인 의사가 동일한 과인 경우
  3464. ds_prcp.setColumn(0, "specdrid", orddrid); // 입원과의 주치의 설정
  3465. btn_specdrid.enable = true;
  3466. }
  3467. else { // 타과의 경우 ,default없음
  3468. var operation;
  3469. if (temparray[1] == "SB" || temparray[2] == "SA99") { // 분류 1 : 수술 OR 기타처치
  3470. operation = sysf_getGlobalVariable("operation");
  3471. if (operation.length > 0) {
  3472. setCSVToNode("/root/init/operation", operation);
  3473. var perfdeptcd = ds_operation.getColumn(0, "perfdeptcd");
  3474. var perfdrid = ds_operation.getColumn(0, "perfdrid");
  3475. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", perfdeptcd);
  3476. ds_prcp.setColumn(0, "specdrid", perfdrid); // 집도의 설정
  3477. }
  3478. else {
  3479. btn_specdrid.enable = true;
  3480. btn_specdrid.click();
  3481. }
  3482. }
  3483. else if (temparray[0] == "L") { // 분류 2 : 마취, 마취의 '1'을 기본 default
  3484. operation = sysf_getGlobalVariable("operation");
  3485. if (operation != null || operation != "") {
  3486. setCSVToNode("/root/init/operation", operation);
  3487. var anstdrid = ds_operation.getColumn(0, "anstdrid");
  3488. lf_mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", "AN"); //마취통증의학과 의사조회
  3489. // 이은영 과장 요청 마취의 setting by sonjy 20080925 start
  3490. if (opener.ds_anst.getColumn(0, "paramyn" ) == "Y") {
  3491. // 마취의 ID가 있고 선택진료일 경우 특진의 선택진료가 아닐경우 일반의 일 경우만 SETTING
  3492. if (!utlf_isNull(opener.ds_anst.getColumn(0, "/root/anst/anst_drid"))) {
  3493. // 선택진료이고 일반의인 경우 선택진료처방여부 'N'처리
  3494. if (ds_paminfo.getColumn(0, "/root/paminfo/list/specordyn") == "Y") {
  3495. if (opener.ds_anst.getColumn(0, "/root/anst/anst_specordflag") != "A") {
  3496. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag" , "N");
  3497. }
  3498. else {
  3499. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag" , "Y");
  3500. }
  3501. }
  3502. else {
  3503. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag" , "N");
  3504. }
  3505. anstdrid = opener.ds_anst.getColumn(0, "/root/anst/anst_drid");
  3506. }
  3507. //바뀐대로 보여야 함 by sonjy 20081010
  3508. btn_specdrid.enable = true;
  3509. if (utlf_isNull( ds_prcp.getColumn(0, "/root/main/prcp/prcplist/specdrid")) || ds_prcp.getColumn(0, "/root/main/prcp/prcplist/specdrid") == "-") {
  3510. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/specdrid", anstdrid); // 마취의1 설정
  3511. }
  3512. }
  3513. else { // 마취의 setting by sonjy 20080925 end
  3514. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/specdrid", anstdrid); // 마취의1 설정
  3515. }
  3516. }
  3517. else {
  3518. btn_specdrid.enable = true;
  3519. btn_specdrid.click();
  3520. }
  3521. }
  3522. else if (temparray[0] == "10" || temparray[1] == "13") { // 분류3 : 위장관검사
  3523. btn_specdrid.enable = true;
  3524. btn_specdrid.click();
  3525. }
  3526. else if (temparray[0] == "10" || temparray[1] == "06") { // 분류4 : 기관지검사
  3527. btn_specdrid.enable = true;
  3528. btn_specdrid.click();
  3529. }
  3530. else if (temparray[1] == "XE" || temparray[1] == "XI") { // 분류 5: 방사선혈관조영
  3531. btn_specdrid.enable = true;
  3532. btn_specdrid.click();
  3533. }
  3534. else if (temparray[0] == "20") { // 방사선혈관조영술 추가. by sonjy 2008-08-29
  3535. btn_specdrid.enable = true;
  3536. btn_specdrid.click();
  3537. }
  3538. else { //그 이외의 경우, 입원과의 주치의 설정
  3539. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/specdrid", orddrid);
  3540. }
  3541. }
  3542. }
  3543. }
  3544. /***************************************************************************************************
  3545. * Function : lf_checkPatLimt
  3546. * Description : 환자별 제한 규정
  3547. * Argument :
  3548. * return type :
  3549. * Creator :
  3550. ***************************************************************************************************/
  3551. function lf_checkPatLimt(flag, strSrc:Dataset, sendRow , chkpayflag)
  3552. {
  3553. var oTrgtObj = null;
  3554. if( flag == "child"){
  3555. oTrgtObj = opener;
  3556. }else{
  3557. oTrgtObj = this;
  3558. }
  3559. var sPrcpCd = strSrc.getColumn(sendRow, "prcpcd");
  3560. var prcpMsg = "";
  3561. var chngyn = "";
  3562. var payflag = "";
  3563. var patNm = "";
  3564. var msgTitle = "";
  3565. var oPointDsPatlimtcdinfo= lf_getTopPatientinfo("N", "ds_patlimtcdinfo") ;
  3566. var nLimitlistIndx = oPointDsPatlimtcdinfo.findRow("prcpcd", sPrcpCd);
  3567. patNm = oTrgtObj.ds_data_paminfo.getColumn(0, "hngnm");
  3568. if (nLimitlistIndx >= 0 ) {
  3569. chngyn = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "prcpchngyn");
  3570. payflag = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "apppayflag");
  3571. prcpMsg = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "prcpmsg");
  3572. msgTitle = oPointDsPatlimtcdinfo.getColumn(nLimitlistIndx, "prcptitle");
  3573. if (utlf_isNull(chkpayflag) ||(!utlf_isNull(chkpayflag) && chngyn == "N" && chkpayflag != payflag)) {
  3574. application.alert(patNm + prcpMsg, msgTitle, "64");
  3575. if (chngyn == "N") {
  3576. strSrc.setColumn(sendRow, "payflagcd", payflag);
  3577. if (!utlf_isNull(chkpayflag)) {
  3578. return false;
  3579. }
  3580. }
  3581. }
  3582. }
  3583. return true;
  3584. }
  3585. /***************************************************************************************************
  3586. * Function : lf_prmsSaveCheck
  3587. * Description : 약속처방에 등록 가능한지 check
  3588. * Argument : usge: 저장화면
  3589. : prcpkindcd: 처방분류
  3590. : prcpnm: 처방명
  3591. * return type : true, false
  3592. * Creator :
  3593. * 변환OK
  3594. ***************************************************************************************************/
  3595. function lf_prmsSaveCheck(usge, prcpkindcd, prcpnm)
  3596. {
  3597. //약속처방, 지시처방에서는 HSCT 처방을 등록할 수 없다.
  3598. if (prcpkindcd == "04" && usge == "prms") {
  3599. sysf_messageBox( "약속처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001");
  3600. return false;
  3601. }
  3602. else if (prcpkindcd == "04" && usge == "direc") {
  3603. sysf_messageBox( "지시처방에는 [" + prcpnm +"] HSCT 처방을 등록", "E001");
  3604. return false;
  3605. }
  3606. return true;
  3607. }
  3608. /***************************************************************************************************
  3609. * Function : lf_checkNigtFlag
  3610. * Description : night시간 체크 (오후 6시~오전9시 사이이면 true 아니면 false 반환)
  3611. * Argument :
  3612. * return type :
  3613. * Creator :
  3614. ***************************************************************************************************/
  3615. function lf_checkNightFlag(exectm)
  3616. {
  3617. if (utlf_isNull(exectm) || exectm.length < 4)
  3618. return false ;
  3619. if (exectm.length < 6)
  3620. exectm = exectm + "00";
  3621. if (parseInt(exectm) >= 180000 || parseInt(exectm) < 90000)
  3622. return true;
  3623. return false;
  3624. }
  3625. /***************************************************************************************************
  3626. * Function : lf_chkSpecDrId
  3627. * Description : 특진의 check
  3628. * Argument :
  3629. * return type : true or false
  3630. * Creator :
  3631. ***************************************************************************************************/
  3632. function lf_chkSpecDrId(specdrid)
  3633. {
  3634. var oUserComboDs = emr_getOrderBaseInfo("usercombo");
  3635. var choiSpclDrid = oUserComboDs.getColumn(0, oUserComboDs.findRowExpr("userid=='"+ specdrid +"' && refseq=='A'"), "userid");
  3636. if (choiSpclDrid == null) {
  3637. return false;
  3638. }
  3639. return true;
  3640. }
  3641. /***************************************************************************************************
  3642. * Function : lf_setPrcpreteflag
  3643. * Description : 희망일자 선택 시 보류 체크(외래)
  3644. * Argument :
  3645. * return type :
  3646. * Creator :
  3647. ***************************************************************************************************/
  3648. function lf_setPrcpreteflag(objSrcNode, nIndx, sTrgtFlag)
  3649. {
  3650. if (nIndx < 0) return;
  3651. var ioflag ="";
  3652. if (sTrgtFlag == "child"){
  3653. ioflag = opener.ds_data_paminfo.getColumn(0, "ioflag");
  3654. }
  3655. else {
  3656. ioflag = ds_data_paminfo.getColumn(0, "ioflag");
  3657. }
  3658. if (ioflag == "O" && objSrcNode.getColumn(nIndx, "prcphopedd") != utlf_getCurrentDate()) {
  3659. objSrcNode.setColumn(nIndx, "prcpreteflag", "Y");
  3660. //보류 체크 시 처방명 앞에 [보류] 도 붙도록 makePrcpNm호출
  3661. lf_makePrcpNm( objSrcNode, nIndx);
  3662. }
  3663. }
  3664. /***************************************************************************************************
  3665. * Function : lf_autoSetAddDr
  3666. * Description : 가산의 자동 셋팅
  3667. * Argument :
  3668. * return type :
  3669. * Creator :
  3670. ***************************************************************************************************/
  3671. function lf_autoSetAddDr(objSrcNode, indx, addfg)
  3672. {
  3673. // 1. 선택진료의 check
  3674. var specdrid = objSrcNode.getColumn(indx, "specdrid");
  3675. ds_init_specdrinfo.filterstr = "userid=='"+specdrid+"' && refseq=='A'";
  3676. var specdridchk = ds_init_specdrinfo;
  3677. if (!utlf_isNull(specdrid) && !utlf_isNull(specdridchk) && specdridchk.rowcount > 0) {
  3678. var specdeptcd = specdridchk.getColumn(0, "dutplcecd");
  3679. if ((specdeptcd == addfg) || (addfg == "ALL" && (specdeptcd == "CS"|| specdeptcd == "GS"))) {
  3680. objSrcNode.setColumn(indx, "tempcol30", specdrid);
  3681. ds_init_specdrinfo.filterstr = "";
  3682. return;
  3683. }
  3684. }
  3685. ds_init_specdrinfo.filterstr = "";
  3686. // 2. 입력의 가산의 check
  3687. var jobkind = sysf_getUserInfo("jobkindcd");
  3688. if (jobkind == "A" || jobkind == "B") {
  3689. var dutplcecd = sysf_getUserInfo("dutplcecd");
  3690. if ((addfg == dutplcecd) || (addfg == "ALL" && (dutplcecd == "CS"|| dutplcecd == "GS"))) {
  3691. objSrcNode.setColumn(indx, "tempcol30", sysf_getUserInfo("userid"));
  3692. }
  3693. }
  3694. // 3.집도과 집도의
  3695. var tmpadddrid = objSrcNode.getColumn(indx, "tempcol30");
  3696. if ((utlf_isNull(tmpadddrid) || tmpadddrid == "-") && (utlf_isNull(specdrid) || specdrid == "-")) {
  3697. var perfdeptcd = ds_init_operation.getColumn(0, "perfdeptcd");
  3698. if (!utlf_isNull(perfdeptcd) && perfdeptcd == addfg) {
  3699. var perfdrid = ds_init_operation.getColumn(0, "perfdrid");
  3700. objSrcNode.setColumn(indx, "tempcol30", perfdrid);
  3701. }
  3702. }
  3703. }
  3704. /***************************************************************************************************
  3705. * Function : lf_checkSrchWord
  3706. * Description : 검색 금지어 체크
  3707. * Argument : srchnm [String : 검색할 문자열]
  3708. * return type : 검색 금지어를 변환 처리한 문자열
  3709. * Creator :
  3710. ***************************************************************************************************/
  3711. function lf_checkSrchWord(srchnm)
  3712. {
  3713. var rtn = "";
  3714. var srchrtn = "";
  3715. var srcharray = srchnm.split(" ");
  3716. var cnt = srcharray.length;
  3717. var len = 0;
  3718. var i = 0;
  3719. var sDsTemp = dsf_createDs("ds_temp_srchlimitword");
  3720. var oDsTemp = this.objects[sDsTemp];
  3721. lf_getHardCDList("N", 421, 0 , oDsTemp);
  3722. var limtcnt = oDsTemp.rowcount;
  3723. var limtword = "";
  3724. var limtflag = "";
  3725. do {
  3726. if (cnt < 1) rtn = srchnm;
  3727. else rtn = srcharray[i];
  3728. for (var j=0 ; j<limtcnt ; j++)
  3729. {
  3730. limtword = oDsTemp.getColumn(j, "hardcdnm");
  3731. limtflag = oDsTemp.getColumn(j, "hardcd");
  3732. if (!utlf_isNull(limtword)) {
  3733. if (limtflag == "NUM") {
  3734. if (rtn == limtword)
  3735. rtn = rtn.replace(limtword , "");
  3736. }
  3737. else {
  3738. rtn = rtn.replace(limtword , "");
  3739. }
  3740. }
  3741. }
  3742. if (i == 0) {
  3743. srchrtn = rtn;
  3744. }
  3745. else {
  3746. len = rtn.length;
  3747. if (len > 1) srchrtn += " " + rtn;
  3748. else srchrtn += rtn;
  3749. }
  3750. i++;
  3751. }
  3752. while (i < cnt);
  3753. // Temp로 사용한 Dataset을 삭제
  3754. var oRemoveDs = this.removeChild(sDsTemp);
  3755. oRemoveDs = null;
  3756. return srchrtn;
  3757. }
  3758. /***************************************************************************************************
  3759. * Function : lf_chkRecModi
  3760. * Description : 외래환자 원무, 환자구분, 상단정보 설정
  3761. * Argument : emrloadingflag 진료대상자 리스트 호출 여부. 진료대상자 리스트에서 호출시에서는 tranf_submit 호출 필요 없음.
  3762. * return type :
  3763. * Creator : 2013-01-16 오후 3:53:53 강지훈 수정
  3764. ***************************************************************************************************/
  3765. function lf_chkRecModi()
  3766. {
  3767. // 2012-12-24 오후 2:09:54 강지훈 : BroadCasting 되기전에 기록지 정보 변경여부 체크 필요
  3768. var mainobj = frmf_getMainViewer();
  3769. var mainscrnid = mainobj.frmf_getScreenID(); //메인화면의 기록지 ID
  3770. if (mainscrnid == "SMMMR00100") {
  3771. var prvIntRecPamInfRtn = mainobj.fPrevInitRecPamInfo();
  3772. // 기록지에 필수 입력사항을 입력하지 않았을 때 그냥 넘어가 버리는 오류 수정
  3773. if (prvIntRecPamInfRtn == false) {
  3774. return false;
  3775. }
  3776. }
  3777. return true;
  3778. }
  3779. /***************************************************************************************************
  3780. * Function : lf_bundlePrcpDD
  3781. * Description : 지정일 셋팅
  3782. * Argument :
  3783. * return type :
  3784. * Creator :
  3785. * 변환OK
  3786. ***************************************************************************************************/
  3787. function lf_bundlePrcpDD(status)
  3788. {
  3789. var prcpgenrflag = opener.ds_patflag.getColumn(0, "prcpgenrflag");
  3790. if (prcpgenrflag != "O") {
  3791. sysf_messageBox("지정일은 외래가 아니면 사용", "E001");
  3792. return false;
  3793. }
  3794. var prcpdd = opener.ds_paminfo.getColumn(0, "orddd");
  3795. var reqparam = utlf_getCurrentDate() + "▩";
  3796. frmf_setParameter("paramcalflag", "multi");
  3797. frmf_setParameter("defaultday", prcpdd);
  3798. frmf_setParameter("reqparam", reqparam);
  3799. lf_prcpModal("SPMMO10600", 20, 50);
  3800. var actordddArray = frmf_getParameter("rtn").split("▩");
  3801. var contprcpspec = "status|actorddd|execprcpstatcd|prcpdd|execprcpno";
  3802. for (var i = 0 ; i < actordddArray.length ; i++) {
  3803. var actorddd = actordddArray[i];
  3804. contprcpspec = contprcpspec + "^" + status + "|" + actorddd + "|" + "" + "|" + prcpdd + "|" + "";
  3805. }
  3806. var rtnval = "";
  3807. var contprcpspecArray = contprcpspec.split("^");
  3808. for (var i = 1; i < contprcpspecArray.length; i++) {
  3809. var tmp = contprcpspecArray[i].split("|");
  3810. rtnval = rtnval + tmp[1] + ",";
  3811. }
  3812. rtnval = rtnval.substring(0, rtnval.length - 1);
  3813. if (actordddArray.length == 1 && actorddd == prcpdd) {
  3814. ds_main_prcplist.setColumn(0, "contprcpspec", "-");
  3815. }
  3816. else {
  3817. ds_main_prcplist.setColumn(0, "contprcpspec", contprcpspec);
  3818. }
  3819. ds_main_prcplist.setColumn(0, "prcpdayno", actordddArray.length);
  3820. ds_init.setColumn(0, "contprcpspec", rtnval);
  3821. return true;
  3822. }
  3823. /***************************************************************************************************
  3824. * Function : lf_chkAuthDeptCd
  3825. * Description : 부서 권한 check . 내과일 경우 환자 진료과 return. 그외는 로그인 근무지부서.
  3826. * Argument :
  3827. * return type : string
  3828. * Creator :
  3829. ***************************************************************************************************/
  3830. function lf_chkAuthDeptCd()
  3831. {
  3832. var authdeptcd = sysf_getUserInfo("dutplcecd");
  3833. if (!this.isValidObject("ds_depthard"))
  3834. return authdeptcd;
  3835. var orddeptcd = fGetPatientInfoDetail("orddeptcd");
  3836. lf_reqHardCodeInfo(ds_depthard, ds_depthard, "423");
  3837. ds_depthard.filterstr = "cdseqno=='1' && hardcd=='"+authdeptcd+"'";
  3838. if (ds_depthard.rowcount > 0) {
  3839. ds_depthard.filterstr = "cdseqno=='3' && hardcd=='"+orddeptcd+"'";
  3840. if (ds_depthard.rowcount > 0) {
  3841. authdeptcd = orddeptcd;
  3842. }
  3843. }
  3844. ds_depthard.filterstr = "";
  3845. return authdeptcd;
  3846. }
  3847. /***************************************************************************************************
  3848. * Function : lf_prcpExecIssDeptCdSet
  3849. * Description : 시행부서, 발행부서 SETTING
  3850. * Argument :
  3851. * return type :
  3852. * Creator :
  3853. * 변환OK
  3854. ***************************************************************************************************/
  3855. function lf_prcpExecIssDeptCdSet(strSrc, sendRow)
  3856. {
  3857. var ds_src = this.objects[strSrc];
  3858. //발행처
  3859. var issdept = (lf_getDsValue(ds_root, 0, "addprcp") == "Y") ? lf_getDsValue(ds_init, 0, "issdept") : lf_getDsValue(ds_root, 0, "issdept");
  3860. if (utlf_isNull(issdept)) {
  3861. issdept = sysf_getUserInfo("dutplcecd");
  3862. }
  3863. ds_src.setColumn(sendRow, "issdeptcd", issdept);
  3864. // 응급실 발행부서 관련 셋팅. 응급실 환자의 경우 센서스에 등록되어 있는 부서코드로 발행부서를 셋팅해준다.2012.04.24 엄영만
  3865. var prcpgenrflag = ds_src.getColumn(sendRow, "prcpgenrflag");
  3866. var erissdeptcd = lf_getDsValue(ds_paminfo, 0, "erissdeptcd");
  3867. if (prcpgenrflag == "E" && issdept == "2280200000" && !utlf_isNull(erissdeptcd) && erissdeptcd != "-") {
  3868. ds_src.setColumn(sendRow, "issdeptcd", erissdeptcd);
  3869. }
  3870. //과내검사 수가코드인 경우는 orddeptcd를 넣어준다. 구현중...
  3871. /*iFind = -1;
  3872. iFind = model.getValue ( "/root/initsrch/prcpetccnts/precureprcpcd" ).search( chkprcpcd + "D" );
  3873. if ( iFind >= 0) {
  3874. model.setValue ( strSrc + "[" + sendRow + "]/prcpexecdeptcd", orddeptcd );
  3875. }*/
  3876. }
  3877. /***************************************************************************************************
  3878. * Function : lf_setRsrvInfo
  3879. * Description : 처방에 대한 예약일시 혹은 반납수량 등 힌트표시
  3880. * Argument :
  3881. * return type :
  3882. * Creator :
  3883. ***************************************************************************************************/
  3884. function lf_setRsrvInfo(grd_prcplist, rsrvcolnm , mrow , mcol)
  3885. {
  3886. var rsrvinfo = grd_prcplist.nodeset.getColumn(mrow, rsrvcolnm);
  3887. var orgprcpnm = grd_prcplist.nodeset.getColumn(mrow, "prcpnm");
  3888. var prcpnm = "";
  3889. var rsrvflag = lf_getArrayData( rsrvinfo , 0, 0, "^", "|");
  3890. var rsrvdt = lf_getArrayData( rsrvinfo , 0, 1, "^", "|");
  3891. if (!utlf_isNull(rsrvdt) && rsrvdt != "00000000000000" && rsrvflag == "3") {
  3892. prcpnm = "[예약일시:" + rsrvdt.substr(0,4) + "/" + rsrvdt.substr(4,2) + "/" + rsrvdt.substr(6,2) + " " + rsrvdt.substr(8,2) + ":" + rsrvdt.substr(10,2) + "] ";
  3893. }
  3894. orgprcpnm = prcpnm + orgprcpnm;
  3895. prcpnm = "";
  3896. var prcphistcd = grd_prcplist.nodeset.getColumn(mrow, "prcphistcd");
  3897. var rtnprcpqty = grd_prcplist.nodeset.getColumn(mrow, "rehbprcpcurepartcd");
  3898. var rtndayno = grd_prcplist.nodeset.getColumn(mrow, "rehbprcpenddd");
  3899. var drprcpetc3 = grd_prcplist.nodeset.getColumn(mrow, "drprcpetc3");
  3900. if (prcphistcd == "E") {
  3901. prcpnm = "\n[반납수량 :" + rtnprcpqty + " " + drprcpetc3 +"] " + "[반납일수 :" + rtndayno +"] ";
  3902. }
  3903. prcpnm = orgprcpnm + prcpnm;
  3904. grd_prcplist.tooltipText(mrow, mcol) = prcpnm;
  3905. }
  3906. /***************************************************************************************************
  3907. * Function : lf_prcpGrupSort
  3908. * Description : Repeat처방 그룹 정렬 복사
  3909. * Argument : strDest : 목적지 주소값
  3910. * : strSrc : 출발지 주소값
  3911. * return type : void
  3912. * Creator :
  3913. ***************************************************************************************************/
  3914. function lf_prcpGrupSort(strSrc:Dataset, strDest:Dataset, sFlag)
  3915. {
  3916. strSrc.clearData();
  3917. strDest.filter("status", "I");
  3918. strSrc.copyData(strDest, true);//lf_addCopyNodeset(strSrc, strDest); // 정렬할 처방복사
  3919. strSrc.keystring = "S:+prcpmixno";//sortNodeList(strSrc, "prcpmixno", "asc"); // 그룹번호 순서대로 정렬한다.
  3920. var nNodeCnt = strSrc.getRowCount(); // getNodeSetCnt(strSrc);
  3921. var sPrcpmixno = "";
  3922. var sTmp_prcpmixno = "";
  3923. // 추천처방 화면이면 화면별로 셋팅
  3924. if (!utlf_isNull(sFlag)) {
  3925. var sCur100 = fCheckPrcpWnd(sFlag);
  3926. if (cur100 != null) {
  3927. cur100.lf_setGroupMaxNo("/root/main/prcp/prcplist");
  3928. }
  3929. } else {
  3930. opener.lf_setGroupMaxNo(opener.ds_grid_prcplist);
  3931. }
  3932. for (var i = 0 ; i < nNodeCnt ; i++) {
  3933. if (i == 0) {
  3934. sTmp_prcpmixno = strSrc.getColumn(i, "prcpmixno"); // 기존 그룹번호를 가지고 있는다.
  3935. if (!utlf_isNull(sFlag)){ //추천처방 화면이면 화면별로 셋팅
  3936. if (cur100 != null) {
  3937. strSrc.setColumn(i, "prcpmixno", parseInt(cur100.ds_init.getColumn(0, "/root/init/prcpmixno"))+1); // 처방 그룹번호 Max + 1 로 초기처방은 그룹번호 셋팅.
  3938. }
  3939. }
  3940. else {
  3941. strSrc.setColumn(i, "prcpmixno", parseInt(opener.ds_temp_search.getColumn(0, "prcpmixno"))+1); // 처방 그룹번호 Max + 1 로 초기처방은 그룹번호 셋팅.
  3942. }
  3943. } else {
  3944. sPrcpmixno = strSrc.getColumn(i, "prcpmixno");
  3945. // 앞의 처방과 그룹번호가 같으면
  3946. if (sPrcpmixno == sTmp_prcpmixno) {
  3947. strSrc.setColumn(i, "prcpmixno", strSrc.getColumn(i-1, "prcpmixno"));
  3948. } else { // 앞의 처방과 그룹번호가 같지 않으면
  3949. tmp_prcpmixno = sPrcpmixno;
  3950. strSrc.setColumn(i, "prcpmixno", parseInt(strSrc.getColumn(i-1 + "prcpmixno")) + 1);
  3951. }
  3952. }
  3953. }
  3954. }
  3955. /***************************************************************************************************
  3956. * Function : lf_chngSpecDr
  3957. * Description : 선택진료의 변경 시 호출 .
  3958. * 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  3959. * Argument : objFlag - child or null
  3960. * : DrID - 진료의id
  3961. * : specDrYN- 특진의여부(A-특진/B..)
  3962. * return type :
  3963. * Creator :
  3964. ***************************************************************************************************/
  3965. function lf_chngSpecDr(objFlag, DrID, specDrYN)
  3966. {
  3967. //선택진료관련 추가 by sonjy 2008-08-27 start
  3968. var tempcol2;
  3969. if (objFlag == "child") {
  3970. if (opener.ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "Y") {
  3971. tempcol2 = pener.ds_prcp.getColumn(0, "/root/main/prcp/prcplist/tempcol2");
  3972. if (!utlf_isNull(tempcol2)) {
  3973. //선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  3974. if (specDrYN!= "A") {
  3975. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  3976. }
  3977. else {
  3978. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3979. }
  3980. }
  3981. }
  3982. // 선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  3983. else if (opener.ds_paminfo.getColumn(0, "/root/paminfo/list/specordyn") == "Y" && opener.ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "N") {
  3984. if (specDrYN == "A") {
  3985. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3986. }
  3987. }
  3988. else { // 의사가 찍은대로 선택진료의를 변경한다.
  3989. if (specDrYN == "A") {
  3990. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  3991. }
  3992. else {
  3993. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  3994. }
  3995. }
  3996. }
  3997. else {
  3998. if (ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "Y") {
  3999. tempcol2 = ds_prcp.getColumn(0, "/root/main/prcp/prcplist/tempcol2");
  4000. if (!utlf_isNull(tempcol2)) {
  4001. var temparray = tempcol2.split("|");
  4002. // 선택진료환자이나 선택한 의사가 특진의가 아닐경우 방사선혈관조영/마취, 수술 처방에 한해 해당 처방의 선택진료여부 = 'N'으로 SETTING
  4003. if (specDrYN != "A") {
  4004. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  4005. } else {
  4006. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  4007. }
  4008. }
  4009. }
  4010. // 선택진료환자이나 비특진의 선택으로 인해 선택진료여부가 'N'으로 변경되었으나 다시 선택진료의를 선택한 경우
  4011. else if (ds_paminfo.getColumn(0, "/root/paminfo/list/specordyn") == "Y" && ds_prcp.getColumn(0, "/root/main/prcp/prcplist/choiordflag") == "N") {
  4012. if (specDrYN == "A") {
  4013. ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  4014. }
  4015. }
  4016. else { // 의사가 찍은대로 선택진료의를 변경한다.
  4017. if (specDrYN == "A") {
  4018. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "Y");
  4019. }
  4020. else {
  4021. opener.ds_prcp.setColumn(0, "/root/main/prcp/prcplist/choiordflag", "N");
  4022. }
  4023. }
  4024. }
  4025. }
  4026. /***************************************************************************************************
  4027. * Function : lf_chkAdrDrug
  4028. * Description : ADR 약물 체크.
  4029. * Argument : strSrc : 해당Node경로
  4030. : sendRow : 선택Row
  4031. : objFlag : opener.model or model
  4032. * return type : void
  4033. * Creator :
  4034. ***************************************************************************************************/
  4035. function lf_chkAdrDrug(strSrc, sendRow, objFlag)
  4036. {
  4037. var sPrcpCd = strSrc.getColumn(sendRow, "prcpcd");
  4038. var adrNode;
  4039. var oTempDsPrcpEtcCnts = lf_getTopPatientinfo("N", "ds_adrdruglist") ;
  4040. var nRow = oTempDsPrcpEtcCnts.findRow("adrdrugcd", sPrcpCd);
  4041. if (nRow > -1){
  4042. sysf_messageBox("해당 약품에 대한 ADR 보고 이력이 있습니다.\n자세한 내용은 ADR 보고내역을", "I007");
  4043. }
  4044. }
  4045. /***************************************************************************************************
  4046. * Function : lf_getBaseSpecDr
  4047. * Description : 수행부서별 기본 선택진료의
  4048. * Argument :
  4049. * return type : string
  4050. * Creator :
  4051. ***************************************************************************************************/
  4052. function lf_getBaseSpecDr(prcpexecdeptcd , orddrid, ioflag)
  4053. {
  4054. var specdrid = "-";
  4055. var chkspecdrid = "";
  4056. // 1. 전달부서별 선택진료의
  4057. var ds_dept = emr_getOrderBaseInfo("dept");
  4058. if (ds_dept != null) {
  4059. // var tmplist = sysMessageobj.instance1.selectNodes("/root/properties/orderbasicinfo/dept[deptcd='" + prcpexecdeptcd + "']");
  4060. ds_dept.filterstr = "deptcd=='" + prcpexecdeptcd + "'";
  4061. var tmplist = ds_dept;
  4062. if (tmplist != null && tmplist.rowcount > 0) {
  4063. chkspecdrid = tmplist.getColumn(0, "specdrid");
  4064. }
  4065. ds_dept.filterstr = "";
  4066. }
  4067. if (utlf_isNull(chkspecdrid)) {
  4068. // 1.처방화면 기본
  4069. chkspecdrid = orddrid;
  4070. // 2. 시행부서처방 or 응급실
  4071. if (ds_init_data.getColumn(0, "addprcp") == "Y" || (ioflag == "E" && utlf_isNull(ds_init_operation.getColumn(0, "perfdrid")))) {
  4072. chkspecdrid = sysf_getUserInfo("userid");
  4073. }
  4074. else if (!utlf_isNull(ds_init_operation.getColumn(0, "perfdrid")) && ds_init_data.getColumn(0, "prcpkindcd") == "35") {
  4075. // 3. 수술탭 처방
  4076. chkspecdrid = ds_init_operation.getColumn(0, "perfdrid");
  4077. }
  4078. }
  4079. if (lf_chkSpecDrId(chkspecdrid))
  4080. specdrid = chkspecdrid ;
  4081. return specdrid ;
  4082. }
  4083. /***************************************************************************************************
  4084. * Function : lf_getPrcpNodeListCSV
  4085. * Description : 노드리스트를 CSV로 반환한다.
  4086. * Argument : nodeList
  4087. * : headerFlag : header 정보 필요유무
  4088. * return type : void
  4089. * Creator :
  4090. ***************************************************************************************************/
  4091. function lf_getPrcpNodeListCSV(nodeList, headerFlag)
  4092. {
  4093. if (nodeList.rowcount == 0)
  4094. return "";
  4095. var sColSep = "▦";
  4096. var sRowSep = "▩";
  4097. var rCSV = "";
  4098. var childNodeList = nodeList.item(0).childNodes;
  4099. var childNodeCnt = childNodeList.length;
  4100. if (childNodeCnt == 0)
  4101. return "";
  4102. if (headerFlag != "N") {
  4103. for(var i = 0 ; i < childNodeCnt - 1 ; i++)
  4104. {
  4105. rCSV += childNodeList.item(i).nodeName + sColSep;
  4106. }
  4107. rCSV += childNodeList.item(i).nodeName + sRowSep;
  4108. }
  4109. var node;
  4110. while (node = nodeList.nextNode())
  4111. {
  4112. childNodeList = node.childNodes;
  4113. for(var i = 0 ; i < childNodeCnt - 1 ; i++)
  4114. {
  4115. rCSV += childNodeList.item(i).text + sColSep;
  4116. }
  4117. rCSV += childNodeList.item(i).text + sRowSep;
  4118. }
  4119. return rCSV;
  4120. }
  4121. /***************************************************************************************************
  4122. * Function : lf_prcpHopeDd
  4123. * Description : 희망일자처리
  4124. * Argument : grdObj: Data Grid
  4125. * : prcpNode: source Node
  4126. * : flag: child
  4127. * : inst: 초기값을 가져올 instance
  4128. * return type : void
  4129. * Creator :
  4130. ***************************************************************************************************/
  4131. function lf_prcpHopeDd(grdObj, prcpNode, flag, inst)
  4132. {
  4133. // 외래진료일자
  4134. if (flag == "child") {
  4135. if (opener.ds_patflag.getColumn(0, "/root/patflag/list/prcpgenrflag") != "O")
  4136. return;
  4137. prcpdd = opener.ds_paminfo.getColumn(0, "/root/paminfo/list/orddd");
  4138. }
  4139. else {
  4140. if (ds_patflag.getColumn(0, "/root/patflag/list/prcpgenrflag") != "O")
  4141. return;
  4142. prcpdd = ds_paminfo.getColumn(0, "/root/paminfo/list/orddd");
  4143. }
  4144. if (grdObj == null)
  4145. grdObj = grd_prcplist;
  4146. if (utlf_isNull(prcpNode))
  4147. prcpNode = "/root/main/prcp/prcplist";
  4148. if (utlf_isNull(inst))
  4149. inst = "prcphopedd";
  4150. frmf_setParameter("defaultday", prcpdd);
  4151. frmf_setParameter("paramcalflag", "sngl");
  4152. frmf_setParameter("reqparam", prcpNode.getColumn(grdObj.row, inst));
  4153. frmf_modal("SPMMO10600", "SPMMO10600");
  4154. // 값이 없으면 return
  4155. if (utlf_isNull(frmf_getParameter("rtn")))
  4156. return;
  4157. var selectedRows = grdObj.selectedRows;
  4158. for (var i=0 ; i<selectedRows ; i++) {
  4159. prcpNode.setColumn(grdObj.selectedrow(i), inst, frmf_getParameter("rtn"));
  4160. }
  4161. }
  4162. /***************************************************************************************************
  4163. * Function : lf_checkDeptDr
  4164. * Description : 처방가능 부서/의사 체크
  4165. * Argument : flag
  4166. * : strSrc
  4167. * : sendRow
  4168. * return type :
  4169. * Creator :
  4170. ***************************************************************************************************/
  4171. function lf_checkDeptDr(flag, strSrc, sendRow )
  4172. {
  4173. var prcpCd = strSrc.getColumn(sendRow, "prcpcd");
  4174. var prcpClsCd = strSrc.getColumn(sendRow, "prcpclscd");
  4175. var prcpDept = "";
  4176. var prcpDr = "";
  4177. var prcpPossYn = ""; // 처방가능여부.
  4178. var prcpDrugCd = "";
  4179. var prcpFlag = "";
  4180. var dutplcecd = sysf_getUserInfo("dutplcecd"); // 로그인한 의사의 부서.
  4181. var userid = sysf_getUserInfo("userid"); // 로그이난 의사의 ID.
  4182. var sysMessageobj = frmf_getViewer("sysMessage");
  4183. var impossfg = "";
  4184. if (sysMessageobj != null) {
  4185. var ds_temp_drugpossprcplist = emr_getOrderBaseInfo("drugpossprcplist");
  4186. if (ds_temp_drugpossprcplist != null && ds_temp_drugpossprcplist.rowcount > 0) {
  4187. for (var i=0 ; i < ds_temp_drugpossprcplist.rowcount ; i++)
  4188. {
  4189. prcpPossYn = ds_temp_drugpossprcplist.getColumn(i, "prcpyn");
  4190. prcpDrugCd = ds_temp_drugpossprcplist.getColumn(i, "drugcd");
  4191. prcpFlag = ds_temp_drugpossprcplist.getColumn(i, "prcpflag");
  4192. prcpDr = ds_temp_drugpossprcplist.getColumn(i, "prcpdr");
  4193. prcpDept = ds_temp_drugpossprcplist.getColumn(i, "prcpdept");
  4194. if (prcpCd != prcpDrugCd)
  4195. continue;
  4196. impossfg = "";
  4197. // 처방 가능한 의사 이면
  4198. if (prcpPossYn == "Y" && prcpFlag == "2") {
  4199. if (prcpDr == userid) {
  4200. impossfg = "ADR";
  4201. break;
  4202. }
  4203. else { // 처방불가 의사 이면
  4204. impossfg = "DR";
  4205. }
  4206. }
  4207. else if (prcpPossYn == "N" && prcpFlag == "2" ) {
  4208. if (prcpDr == userid) {
  4209. impossfg = "DR";
  4210. break;
  4211. }
  4212. }
  4213. else if (prcpPossYn == "Y" && prcpFlag == "1") {
  4214. if (prcpDept == dutplcecd) {
  4215. impossfg = "ADEPT";
  4216. break;
  4217. }
  4218. else { // 처방 불가 부서이면
  4219. impossfg = "DEPT";
  4220. }
  4221. }
  4222. else if (prcpPossYn == "N" && prcpFlag == "1") {
  4223. if (prcpDept == dutplcecd) {
  4224. impossfg = "DEPT";
  4225. break;
  4226. }
  4227. }
  4228. }
  4229. var strMsg = " 처방을 발행할수 없습니다.\n관련 내용은";
  4230. if (impossfg == "DR") {
  4231. strMsg = sysf_getUserInfo("usernm") + "님은 " + prcpCd + strMsg;
  4232. if (prcpClsCd == "B4")
  4233. strMsg = strMsg + " 혈액은행에 문의하세요." ;
  4234. else
  4235. strMsg = strMsg + " 약제팀에 문의하세요." ;
  4236. sysf_messageBox(strMsg , "I");
  4237. return false;
  4238. }
  4239. else if (impossfg == "DEPT") {
  4240. strMsg = sysf_getUserInfo("dutplcenm") + "는(은) " + prcpCd + strMsg;
  4241. if (prcpClsCd == "B4")
  4242. strMsg = strMsg + "혈액은행에 문의하세요." ;
  4243. else
  4244. strMsg = strMsg + "약제팀에 문의하세요." ;
  4245. sysf_messageBox(strMsg , "I");
  4246. return false;
  4247. }
  4248. }
  4249. }
  4250. return true ;
  4251. }
  4252. /***************************************************************************************************
  4253. * Function : mmbfGetHardCodeInfoNm
  4254. * Description : 하드코드 조회 (하드코드, 하드코드명)
  4255. * Argument : ref - reference path
  4256. * : rsltref - result reference path
  4257. * : hardcd - 하드코드
  4258. * return type :
  4259. * Creator :
  4260. ***************************************************************************************************/
  4261. function mmbfGetHardCodeInfoNm(ref, rsltref, hardcd){
  4262. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  4263. model.removeNode(mmb_rsltref);
  4264. model.makeNode(mmb_rsltref);
  4265. model.removeNode(ref);
  4266. model.makeValue(ref + "/hardcd", hardcd);
  4267. if(submit("TRMMB04105", false, ref, mmb_rsltref)==true){ //잘못 된 submit 함수호출 수정("false"->false) 20131112 by zhyun
  4268. model.copyNode(rsltref, mmb_rsltref);
  4269. model.removeNode(mmb_rsltref);
  4270. }
  4271. }
  4272. function lf_addPrcpBfPrcpDetl(strSrc, migyn){
  4273. var bfprcpvol = strSrc.getColumn(sendRow, "prcpvol" );
  4274. var bfprcpqty = strSrc.getColumn(sendRow, "prcpqty" );
  4275. var bfprcptims = strSrc.getColumn(sendRow, "prcptims" );
  4276. var bfprcpdayno = strSrc.getColumn(sendRow, "prcpdayno" );
  4277. var bfprcpdelivefact = strSrc.getColumn(sendRow, "prcpdelivefact");
  4278. var bfpowdflag = strSrc.getColumn(sendRow, "powdflag");
  4279. var bfprnprcpflag = strSrc.getColumn(sendRow, "prnprcpflag");
  4280. var bfprepprcpflag = strSrc.getColumn(sendRow, "prepprcpflag");
  4281. var bfselfprcpflag = strSrc.getColumn(sendRow, "selfprcpflag");
  4282. var bfselfdrugflag = strSrc.getColumn(sendRow, "selfdrugflag");
  4283. var bfdrugpackflag = strSrc.getColumn(sendRow, "drugpackflag");
  4284. var bferprcpflag = strSrc.getColumn(sendRow, "erprcpflag");
  4285. var bfprecureprcpflag = strSrc.getColumn(sendRow, "precureprcpflag");
  4286. var bfnigtprcpflag = strSrc.getColumn(sendRow, "nigtprcpflag");
  4287. var bfportprcpflag = strSrc.getColumn(sendRow, "portprcpflag");
  4288. var bffixprcpflag = strSrc.getColumn(sendRow, "fixprcpflag");
  4289. var bfanamneflag = strSrc.getColumn(sendRow, "anamneflag");
  4290. var bferreadflag = strSrc.getColumn(sendRow, "erreadflag");
  4291. var bfstemcellflag = strSrc.getColumn(sendRow, "stemcellflag");
  4292. var bfprcpexecdeptcd = strSrc.getColumn(sendRow, "prcpexecdeptcd");
  4293. var bfDrprcpetc4 = strSrc.getColumn(sendRow, "drprcpetc4"); // 입력수량
  4294. var bfDrprcpetc3 = strSrc.getColumn(sendRow, "drprcpetc3"); // 입력수량단위
  4295. var bfDrprcpetc7 = strSrc.getColumn(sendRow, "drprcpetc7"); // DIVIDE단위
  4296. var bfDrprcpetc8 = strSrc.getColumn(sendRow, "drprcpetc8"); // 입력횟수
  4297. var bfprcpqtyunitflag = strSrc.getColumn(sendRow, "prcpqtyunitflag"); // 입력수량단위
  4298. var bfprcpvolunitflag = strSrc.getColumn(sendRow, "prcpvolunitflag"); // 입력수량단위
  4299. var bfpayflagcd = strSrc.getColumn(sendRow, "payflagcd"); // 마이그된 처방 전처방 복사시 급여도 복사
  4300. var bfprcpmixno = strSrc.getColumn(sendRow, "prcpmixno");
  4301. //mig data 전처방 copy시 신코드일 경우 reset여부
  4302. if (bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  4303. lf_prcpSrchCom(bfprcpcd.substring(1, bfprcpcd.length), opener.ds_init_data.getColumn(0, "prcpdd"), opener.ds_data_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", "getOldPrcpCdChngInfo", "E", null, ds_data_paminfo);
  4304. }
  4305. else {
  4306. lf_prcpSrchCom(bfprcpcd, opener.ds_init_data.getColumn(0, "prcpdd"), opener.ds_data_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", "getPrcpCdSrchInfo", "E" , false, ds_data_paminfo);
  4307. }
  4308. //ds_temp_OldPrcpsrch -> ds_temp_prcpsrch
  4309. dsf_copyDs(strSrc , ds_temp_OldPrcpsrch, "replace");
  4310. ds_temp_OldDiagcdlist.clearData();
  4311. sendRow = 1;
  4312. if (utlf_isNull(strSrc.getColumn(sendRow, "prcpcd"))) {
  4313. return 0;
  4314. } else {
  4315. strSrc.setColumn(sendRow, "prcpmixno", bfprcpmixno );
  4316. oldprcpflag = "Y";
  4317. prcpclscd = strSrc.getColumn(sendRow, "prcpclscd" );
  4318. if (prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6") {
  4319. bfprcptims = bfDrprcpetc8;
  4320. if (bfDrprcpetc7 == "q" && !utlf_isNull(bfDrprcpetc8) && bfDrprcpetc8 != "0") {
  4321. bfprcptims = 24/parseInt(bfDrprcpetc8);
  4322. }
  4323. if (prcpclscd == "A2") {
  4324. if (strSrc.getColumn(sendRow, "prcptims") != bfprcptims) {
  4325. strSrc.setColumn(sendRow, "prcptims", bfprcptims);
  4326. fBaseMthd("oldprcp"); // lf_baseMthd -> fBaseMthd
  4327. }
  4328. }
  4329. else {
  4330. strSrc.setColumn(sendRow, "prcptims", bfprcptims );
  4331. }
  4332. var chkPrcpVol = strSrc.getColumn(sendRow, "drprcpetc4");
  4333. var orgDrprcpetc3 = strSrc.getColumn(sendRow, "drprcpetc3"); // 입력단위
  4334. var orgDrprcpetc7 = strSrc.getColumn(sendRow, "drprcpetc7"); // 횟수단위
  4335. if (bfprcpsrchyn == "Y" && migyn == "Y" &&(parseInt(chkPrcpVol) < 1 || utlf_isNull(orgDrprcpetc3) || utlf_isNull(orgDrprcpetc7))) {
  4336. strSrc.setColumn(sendRow, "prcpvol", 0);
  4337. strSrc.setColumn(sendRow, "prcpqty", 0);
  4338. strSrc.setColumn(sendRow, "prcpdayno", 0);
  4339. strSrc.setColumn(sendRow, "drprcpetc4", 0);
  4340. strSrc.setColumn(sendRow, "drprcpetc8", 0);
  4341. } else {
  4342. strSrc.setColumn(sendRow, "prcpvol", bfprcpvol);
  4343. strSrc.setColumn(sendRow, "prcpqty", bfprcpqty);
  4344. strSrc.setColumn(sendRow, "prcpdayno", bfprcpdayno);
  4345. strSrc.setColumn(sendRow, "drprcpetc4", bfDrprcpetc4);
  4346. strSrc.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8);
  4347. strSrc.setColumn(sendRow, "drprcpetc3", bfDrprcpetc3);
  4348. strSrc.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7);
  4349. strSrc.setColumn(sendRow, "prcpvolunitflag", bfprcpvolunitflag);
  4350. strSrc.setColumn(sendRow, "prcpqtyunitflag", bfprcpqtyunitflag);
  4351. }
  4352. //전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  4353. if (bfprcpsrchyn == "Y" && migyn == "Y") {
  4354. var sdrugmastspec = strSrc.getColumn(sendRow, "drugmastspec");
  4355. var orgDrprcpetc4 = strSrc.getColumn(sendRow, "drprcpetc4"); // 입력수량
  4356. orgDrprcpetc3 = strSrc.getColumn(sendRow, "drprcpetc3"); // 입력수량
  4357. orgDrprcpetc7 = strSrc.getColumn(sendRow, "drprcpetc7"); // 횟수단위
  4358. if (!utlf_isNull(bfDrprcpetc4) &&!utlf_isNull(bfDrprcpetc7) && !utlf_isNull(bfDrprcpetc8) && (bfDrprcpetc4 != 0 ) && (bfDrprcpetc8 != 0)) {
  4359. var calcmthdcd = lf_getArrayData(sdrugmastspec + "^", 0, 26, "^", "|");
  4360. var calcCnts = 0;
  4361. var calcTims = bfDrprcpetc8;
  4362. if (bfDrprcpetc7 == "q" && utlf_isNull(bfDrprcpetc8) && bfDrprcpetc8 != 0) {
  4363. calcTims = 24/parseInt(bfDrprcpetc8);
  4364. }
  4365. strSrc.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7);
  4366. // 수량단위 입력
  4367. if (!utlf_isNull(bfDrprcpetc3) && bfDrprcpetc3 != "-") {
  4368. if (orgDrprcpetc3 != bfDrprcpetc3 ) {
  4369. if (!lf_checkPrcpUnit(bfprcpcd , bfDrprcpetc3, bfprcpvolunitflag)) {
  4370. sysf_messageBox(strSrc.getColumn(sendRow, "prcpnm") + "의 처방단위["+ bfDrprcpetc3 +"]가 유효하지 않습니다.","I");
  4371. return 0;
  4372. } else {
  4373. strSrc.setColumn(sendRow, "drprcpetc3", bfDrprcpetc3);
  4374. strSrc.setColumn(sendRow, "prcpvolunitflag", bfprcpvolunitflag);
  4375. strSrc.setColumn(sendRow, "prcpqtyunitflag", bfprcpqtyunitflag);
  4376. }
  4377. }
  4378. // 용량보정
  4379. calcCnts = parseFloat(orgDrprcpetc4);
  4380. if (calcmthdcd == "1") {
  4381. if (bfDrprcpetc7 != "#")
  4382. calcCnts *= calcTims;
  4383. }
  4384. if (bfprcptims != calcTims || bfprcpqty != calcCnts || bfprcpvol!= calcCnts) {
  4385. strSrc.setColumn(sendRow, "prcpqty", calcCnts);
  4386. strSrc.setColumn(sendRow, "prcpvol", calcCnts);
  4387. strSrc.setColumn(sendRow, "prcptims", calcTims);
  4388. }
  4389. } else {
  4390. sysf_messageBox(strSrc.getColumn(sendRow, "prcpnm") + "의 처방단위["+ bfDrprcpetc3 +"]가 유효하지 않습니다. ","I");
  4391. return 0;
  4392. }
  4393. }
  4394. }
  4395. }
  4396. strSrc.setColumn(sendRow, "prcpdelivefact", bfprcpdelivefact);
  4397. strSrc.setColumn(sendRow, "powdflag", bfpowdflag);
  4398. strSrc.setColumn(sendRow, "prnprcpflag", bfprnprcpflag);
  4399. strSrc.setColumn(sendRow, "prepprcpflag", bfprepprcpflag);
  4400. strSrc.setColumn(sendRow, "selfprcpflag", bfselfprcpflag);
  4401. strSrc.setColumn(sendRow, "selfdrugflag", bfselfdrugflag);
  4402. strSrc.setColumn(sendRow, "drugpackflag", bfdrugpackflag);
  4403. strSrc.setColumn(sendRow, "erprcpflag", bferprcpflag);
  4404. strSrc.setColumn(sendRow, "precureprcpflag", bfprecureprcpflag);
  4405. strSrc.setColumn(sendRow, "nigtprcpflag", bfnigtprcpflag);
  4406. strSrc.setColumn(sendRow, "portprcpflag", bfportprcpflag);
  4407. strSrc.setColumn(sendRow, "fixprcpflag", bffixprcpflag);
  4408. strSrc.setColumn(sendRow, "anamneflag", bfanamneflag);
  4409. strSrc.setColumn(sendRow, "erreadflag", bferreadflag);
  4410. strSrc.setColumn(sendRow, "payflagcd", bfpayflagcd); // 마이그된 처방 전처방 복사시 급여도 복사
  4411. }
  4412. }
  4413. /***************************************************************************************************
  4414. * Function : lf_contPrcpDdInit
  4415. * Description : 지정일자초기화
  4416. * Argument : grdObj: DataGrid
  4417. * : contPrcpDdCol: main에서 setting 된 값이 있었다면 화면에 , 구분자로 표시해 준다.
  4418. * return type : void
  4419. * Creator :
  4420. * 변환OK
  4421. ***************************************************************************************************/
  4422. function lf_contPrcpDdInit( objPrcpGrd, contPrcpDdCol) {
  4423. var tmp_opener = opener;
  4424. if( opener.name == "ivw_detail" ){
  4425. tmp_opener = opener.parent.parent;
  4426. }
  4427. var objPrcpDs = this.objects[objPrcpGrd.binddataset];
  4428. var prcpdd = lf_getDsValue(tmp_opener.ds_paminfo, 0, "orddd");
  4429. var contPrcpSpec = objPrcpDs.getColumn(0, "contprcpspec");
  4430. var contPrcpSpecArray1;
  4431. var contPrcpSpecArray2;
  4432. var contPrcpDd = "";
  4433. var value = '';
  4434. try{
  4435. value = tmp_opener.ds_patflag.getColumn(0, "prcpgenrflag");
  4436. }
  4437. catch(err){
  4438. }
  4439. if (value != "O" ) {
  4440. objPrcpGrd.setCellProperty("body", contPrcpDdCol, "text", "-");
  4441. return;
  4442. }
  4443. objPrcpGrd.setCellProperty("body", contPrcpDdCol, "text", "");
  4444. if (contPrcpSpec == "-" ) { //처방 당일이었던 지정일 또는 처음검색
  4445. prcpPKSpecArray = objPrcpDs.getColumn(0, "prcppkspec" ).split("|");
  4446. if (!utlf_isNull(prcpPKSpecArray[0])){
  4447. contPrcpDd = prcpPKSpecArray[0]; //처방일자가 있으면
  4448. }else{
  4449. contPrcpDd = prcpdd;
  4450. }
  4451. contPrcpDd = lf_dateFormat(contPrcpDd );
  4452. } else {
  4453. contPrcpSpecArray1 = contPrcpSpec.split("^");
  4454. for(var j = 1; j < contPrcpSpecArray1.length; j++ ){
  4455. contPrcpSpecArray2 = contPrcpSpecArray1[j].split("|");
  4456. if (j == (contPrcpSpecArray1.length - 1))
  4457. contPrcpDd = contPrcpDd + lf_dateFormat(contPrcpSpecArray2[1]);//과거에 선택던 지정일을 넘긴다.
  4458. else
  4459. contPrcpDd = contPrcpDd + lf_dateFormat(contPrcpSpecArray2[1]) + ",";
  4460. }
  4461. }
  4462. objPrcpGrd.setCellProperty("body", contPrcpDdCol, "text", contPrcpDd);
  4463. if(objPrcpGrd.tooltiptype != "default") // 이 컬럼은 데이타셋에 바인드를 하지 않고 쓰기 때문에 tooltip이 나오지 않아 직접 설정함
  4464. objPrcpGrd.setCellProperty("Body", contPrcpDdCol, "tooltiptext", contPrcpDd);
  4465. }
  4466. // 변환OK
  4467. function lf_addPrcpDetl_App(strDest, sCopyInptFlag, sScreenID, sCopykeys, sCopyIoFlag, sPRNSetInfo) {
  4468. var nSrchRow = 0; // 검색Row
  4469. var sTimeStr = utlf_getNewDate().valueOf( ).toString() ; // 반복호출을 처리 하기 위한 노드 변수값으로 사용 (품절약, 대체약, 수혈 추가처방(AST, ABO) 등 화면에서 재귀호출을 처리 하기 위해) 2013.09.16 엄영만
  4470. var sCopyPrcpSrc = "ds_copyprcp_" +sTimeStr+ "_prcplist"; // Copy Prcp Dataset 이름
  4471. var sCopyFlagSrc = "ds_copyprcp_" +sTimeStr+ "_flaginfo"; // Copy Flag Dataset 이름
  4472. var sErrFlag = ""; // 서버체크시 오류구분
  4473. var sErrMsg = ""; // 서버체크시 오류메세지
  4474. var sErrCode = ""; // 서버체크시 오류코드
  4475. var sUsge = ds_root.getColumn(0, "usge");
  4476. if ( ds_paminfo.rowcount == 0 ){
  4477. sysf_messageBox ( "환자정보가", "E014" );
  4478. return;
  4479. }
  4480. //20190419 이돈희 PRN 설정 정보 없는 경우 기본 셋팅
  4481. if(utlf_isNull(sPRNSetInfo)){
  4482. sPRNSetInfo = "-";
  4483. }
  4484. //20191125 이돈희 : 처방 추가시에 "화면에서 체크해야 할 항목 체크" 수행 여부
  4485. var bAddPrcpPop_AppCheck = true;
  4486. //복사 화면정보(copyFlagInfo)
  4487. dsf_createDs("ds_copyflag");
  4488. ds_copyflag.addColumn("subprcp", "string");
  4489. ds_copyflag.addColumn("instcd", "string");
  4490. ds_copyflag.addColumn("copyinptflag", "string");
  4491. ds_copyflag.addColumn("pageinptflag", "string");
  4492. ds_copyflag.addColumn("copykeys", "string");
  4493. ds_copyflag.addColumn("copyioflag", "string");
  4494. ds_copyflag.addColumn("screenid", "string");
  4495. ds_copyflag.addColumn("usge", "string");
  4496. ds_copyflag.addColumn("prcpgenrflag", "string");
  4497. ds_copyflag.addColumn("prcpdd", "string");
  4498. ds_copyflag.addColumn("prcpmixno", "string");
  4499. ds_copyflag.addColumn("addprcp", "string");
  4500. ds_copyflag.addColumn("admininfo", "string");
  4501. ds_copyflag.addColumn("cp", "string");
  4502. ds_copyflag.addColumn("cpgappno", "string");
  4503. ds_copyflag.addColumn("cpgstartstepno", "string"); // cp시작 스텝번호 2017.12.20 엄영만 추가
  4504. ds_copyflag.addColumn("issdept", "string");
  4505. ds_copyflag.addColumn("anstrecno", "string");
  4506. ds_copyflag.addColumn("anstfromdt", "string");
  4507. ds_copyflag.addColumn("ansttm", "string");
  4508. ds_copyflag.addColumn("ansttodt", "string");
  4509. ds_copyflag.addColumn("opansflagcd", "string");
  4510. ds_copyflag.addColumn("paramyn", "string");
  4511. ds_copyflag.addColumn("anst_drid", "string");
  4512. ds_copyflag.addColumn("anst_specordflag", "string");
  4513. ds_copyflag.addColumn("anst_anstdrnm", "string");
  4514. ds_copyflag.addColumn("erresn", "string");
  4515. ds_copyflag.addColumn("hosinprcpresncd", "string");
  4516. ds_copyflag.addColumn("hsctlnkno", "string");
  4517. ds_copyflag.addColumn("inclprcpno", "string");
  4518. ds_copyflag.addColumn("prcpauthflag", "string");
  4519. ds_copyflag.addColumn("prcpfromdd", "string");
  4520. ds_copyflag.addColumn("prcpkindcd", "string");
  4521. ds_copyflag.addColumn("prcptodd", "string");
  4522. ds_copyflag.addColumn("bfprcpviewflag", "string");
  4523. ds_copyflag.addColumn("bfinoutsetflag", "string");
  4524. ds_copyflag.addColumn("subjsubcretno", "string");
  4525. ds_copyflag.addColumn("opcnfmdd", "string");
  4526. ds_copyflag.addColumn("opflagcd", "string");
  4527. ds_copyflag.addColumn("opfromtmcd", "string");
  4528. ds_copyflag.addColumn("oprsrvno", "string");
  4529. ds_copyflag.addColumn("prcpdd_prcpresn", "string");
  4530. ds_copyflag.addColumn("prcptime_prcpresn", "string");
  4531. ds_copyflag.addColumn("resncnt_prcpresn", "string");
  4532. ds_copyflag.addColumn("drprcpetc6", "string");
  4533. ds_copyflag.addRow();
  4534. ds_copyflag.setColumn(0, "subprcp", "N"); // 사용자 설정으로 재조회 여부(품절약 등등)
  4535. ds_copyflag.setColumn(0, "instcd", sysf_getUserInfo("dutplceinstcd"));
  4536. ds_copyflag.setColumn(0, "copyinptflag", sCopyInptFlag);
  4537. ds_copyflag.setColumn(0, "pageinptflag", lf_getDsValue(ds_init, 0, "prcpinptflag"));
  4538. ds_copyflag.setColumn(0, "copykeys", sCopykeys);
  4539. ds_copyflag.setColumn(0, "copyioflag", sCopyIoFlag);
  4540. ds_copyflag.setColumn(0, "screenid", sScreenID);
  4541. ds_copyflag.setColumn(0, "usge", sUsge);
  4542. ds_copyflag.setColumn(0, "prcpgenrflag", ds_patflag.getColumn(0, "prcpgenrflag"));
  4543. ds_copyflag.setColumn(0, "prcpdd", ds_init.getColumn(0, "prcpdd")); // 처방적용일자
  4544. ds_copyflag.setColumn(0, "prcpmixno", ds_init.getColumn(0, "prcpmixno")); // mix번호
  4545. ds_copyflag.setColumn(0, "addprcp", lf_getDsValue(ds_root, 0, "addprcp"));
  4546. ds_copyflag.setColumn(0, "admininfo", lf_getDsValue(ds_root, 0, "admininfo"));
  4547. ds_copyflag.setColumn(0, "cp", ds_root.getColumn(0, "cp"));
  4548. if(ds_root.getColumn(0, "cp") == "Y") {
  4549. ds_copyflag.setColumn(0, "cpgappno", ds_temp1_getdata.getColumn(0, "cpgappno")); // cp적용번호
  4550. ds_copyflag.setColumn(0, "cpgstartstepno", ds_main_steppath_info.getColumn(ds_main_steppath_info.findRow("startendflag","S"),"stepno")); // cp시작 스텝번호 2017.12.20 엄영만 추가
  4551. } else {
  4552. ds_copyflag.setColumn(0, "cpgappno", "0");
  4553. ds_copyflag.setColumn(0, "cpgstartstepno", "1");
  4554. }
  4555. if(lf_getDsValue(ds_root, 0, "addprcp") == "Y") {
  4556. ds_copyflag.setColumn(0, "issdept", ds_init.getColumn(0, "issdept"));
  4557. } else {
  4558. ds_copyflag.setColumn(0, "issdept", lf_getDsValue(ds_root, 0, "issdept"));
  4559. }
  4560. ds_copyflag.setColumn(0, "anstrecno", lf_getDsValue(ds_anst, 0, "anstrecno"));
  4561. ds_copyflag.setColumn(0, "anstfromdt", lf_getDsValue(ds_anst, 0, "anstfromdt"));
  4562. ds_copyflag.setColumn(0, "ansttm", lf_getDsValue(ds_anst, 0, "ansttm"));
  4563. ds_copyflag.setColumn(0, "ansttodt", lf_getDsValue(ds_anst, 0, "ansttodt"));
  4564. ds_copyflag.setColumn(0, "opansflagcd", lf_getDsValue(ds_anst, 0, "opansflagcd"));
  4565. ds_copyflag.setColumn(0, "paramyn", lf_getDsValue(ds_anst, 0, "paramyn"));
  4566. ds_copyflag.setColumn(0, "anst_drid", lf_getDsValue(ds_anst, 0, "anst_drid"));
  4567. ds_copyflag.setColumn(0, "anst_specordflag", lf_getDsValue(ds_anst, 0, "anst_specordflag"));
  4568. //20131107 이정택(마취의 이름 추가)
  4569. ds_copyflag.setColumn(0, "anst_anstdrnm", lf_getDsValue(ds_anst, 0, "anst_anstdrnm"));
  4570. //20131107 이정택
  4571. ds_copyflag.setColumn(0, "erresn", lf_getDsValue(ds_init, 0, "erresn"));
  4572. ds_copyflag.setColumn(0, "hosinprcpresncd", lf_getDsValue(ds_init, 0, "hosinprcpresncd"));
  4573. ds_copyflag.setColumn(0, "hsctlnkno", lf_getDsValue(ds_init, 0, "hsctlnkno"));
  4574. ds_copyflag.setColumn(0, "inclprcpno", lf_getDsValue(ds_init, 0, "inclprcpno"));
  4575. ds_copyflag.setColumn(0, "prcpauthflag", lf_getDsValue(ds_init, 0, "prcpauthflag"));
  4576. ds_copyflag.setColumn(0, "prcpfromdd", lf_getDsValue(ds_init, 0, "prcpfromdd")); // 화면에 따라 해당 컬럼이 없는 곳이 있어서 defalut 처리
  4577. ds_copyflag.setColumn(0, "prcpkindcd", lf_getDsValue(ds_init, 0, "prcpkindcd"));
  4578. ds_copyflag.setColumn(0, "prcptodd", lf_getDsValue(ds_init, 0, "prcptodd")); // 화면에 따라 해당 컬럼이 없는 곳이 있어서 defalut 처리
  4579. ds_copyflag.setColumn(0, "bfprcpviewflag", ds_initsrch_envinfo.lookup("qestcd", '018', "answcnt")); // 전처방 정렬 개인별 설정
  4580. ds_copyflag.setColumn(0, "bfinoutsetflag", ds_initsrch_envinfo.lookup("qestcd", '075', "answcnt")); // 전처방 복사시 약품 원내/원외 개인설정 2016.06.28 엄영만
  4581. ds_copyflag.setColumn(0, "subjsubcretno", lf_getDsValue(ds_init, 0, "subjsubcretno"));
  4582. ds_copyflag.setColumn(0, "opcnfmdd", lf_getDsValue(ds_operation, 0, "opcnfmdd"));
  4583. ds_copyflag.setColumn(0, "opflagcd", lf_getDsValue(ds_operation, 0, "opflagcd"));
  4584. ds_copyflag.setColumn(0, "opfromtmcd", lf_getDsValue(ds_operation, 0, "opfromtmcd"));
  4585. ds_copyflag.setColumn(0, "oprsrvno", lf_getDsValue(ds_operation, 0, "oprsrvno"));
  4586. // 추가 처방 화면 작업 후 확인필요 (추가 처방에 있는 노드임)
  4587. if(!utlf_isNull(this.objects["ds_prcpresn"])) {
  4588. ds_copyflag.setColumn(0, "prcpdd_prcpresn", ds_prcpresn.getColumn(0, "prcpdd"));
  4589. ds_copyflag.setColumn(0, "prcptime_prcpresn", ds_prcpresn.getColumn(0, "prcptime"));
  4590. ds_copyflag.setColumn(0, "resncnt_prcpresn", ds_prcpresn.getColumn(0, "resncnt"));
  4591. }
  4592. ds_copyflag.setColumn(0, "drprcpetc6", sPRNSetInfo);
  4593. dsf_setDefaultVal(ds_paminfo, "orddeptnm:-,orddrnm:-");
  4594. dsf_createDs(sCopyPrcpSrc); // 처방정보 복사 노드생성
  4595. dsf_createDs(sCopyFlagSrc); // 화면정보 복사 노드생성
  4596. var oParam = {};
  4597. oParam.id = "TRMMO00150";
  4598. oParam.service = "prcpmngtapp.PrcpMngt";
  4599. oParam.method = "reqGetAddPrcp";
  4600. oParam.inds = "copyFlagInfo=ds_copyflag copyRgstInfo=ds_paminfo";
  4601. oParam.outds = sCopyFlagSrc + "=flaginfo " + sCopyPrcpSrc + "=prcplist";
  4602. oParam.async = false;
  4603. tranf_submit(oParam); // 처방저장 실시간 체크(RealTimeCheck)변수 설정
  4604. var ds_copyprcp_src = this.objects[sCopyPrcpSrc];
  4605. var ds_copyflag_src = this.objects[sCopyFlagSrc];
  4606. if (ds_copyprcp_src.rowcount > 0) {
  4607. dsf_setDefaultVal(ds_copyprcp_src, "status:I,prcpvol:0,prcpvolunitnm:-,prcpqty:0,prcpqtyunitnm:-,prcptims:0,prcpdayno:0,drugmthdspccdnm:-,hosinhosoutflag:-,hosinprcpresncd:00,drugmthdspccd:-,clincstdyflag:N,hsctdelivepos:0,hsctlnkno:0,etcprcpflag:-,aftcertflag:-,aftcertdrid:-,prcpvalidd:00000000,spynpy1:-,specdrid:-,anticncrdayno:0,druglnkno:0,rehbprcpcurefreqflag:0,dietprcpgenrflag:-,irpayflag:N,irflag:N,procerdietflag:N,diagtestconttestintvlflag:N,drugindependpackflag:N,diagtestconttestbasetm:0,diagtestconttestorgtims:0,ermediscmngtresncd:-,rehbprcpenddd:-,matrallsizespecid:-,rehbprcpcurepartcd:-,lowdrugresncd:N,tfdtlcd:-,dnorreqlnkno:0,subcretno:0,exptmthdfact:-,lowdrugresnetcfact:-,diagtestconttestcdspec:-,drgacptflag:-,drprcpetc1:-,drprcpetc2:-,drprcpetc3:-,drprcpetc4:-,drprcpetc5:-,drprcpetc6:-,drprcpetc7:-,drprcpetc8:-,drprcpetc9:-,drprcpetc10:-,fasttrackflag:N,drprcpetc17:N");
  4608. // 리턴 된 화면 설정값 셋팅 , 15.10.05, 빠떼리처방 두개 연속으로 검색하면 구분이 안되서 수정
  4609. dsf_makeValue(ds_init, "inclprcpno", "string", ds_copyflag_src.getColumn(0, "inclprcpno"));
  4610. dsf_makeValue(ds_init, "prcpmixno", "string", ds_copyflag_src.getColumn(0, "prcpmixno"));
  4611. dsf_makeValue(ds_init, "hsctlnkno", "string", ds_copyflag_src.getColumn(0, "hsctlnkno"));
  4612. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅
  4613. ds_save_saveflaginfo.setColumn(0, "cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  4614. ds_save_saveflaginfo.setColumn(0, "prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  4615. ds_save_saveflaginfo.setColumn(0, "prtlflag", "10" ); //프로토콜구분
  4616. }
  4617. var ds_dest = this.objects[strDest];
  4618. var nCurRow = ds_dest.rowposition;
  4619. for (var i = 0; i < ds_copyprcp_src.rowcount; i++) { // Start of 복사 처방 건별 화면 복사
  4620. if ( utlf_isNull(ds_copyprcp_src.getColumn(i, "prcpcd"))) { continue; }
  4621. if(ds_dest.rowcount == 0) {
  4622. nSrchRow = 0;
  4623. }
  4624. // 20190419 이돈희 : 1. PRN MIX용 수액의 경우 해당 처방 아래에 추가
  4625. // 2. 원 처방에 MIX 번호 적용
  4626. else if(sCopyInptFlag == "46" && !utlf_isNull(ds_copyflag.getColumn(0, "drprcpetc6")) && ds_copyflag.getColumn(0, "drprcpetc6") != "-" ){
  4627. nSrchRow = nCurRow + i + 1;
  4628. ds_dest.setColumn(nCurRow, "prcpmixno", ds_copyprcp_src.getColumn(i, "prcpmixno"));
  4629. }
  4630. //20191125 이돈희 : 복합 수술료와 연계된 일반 수술료 처방을 입력시 연계된 복합 수술료 처방으로 값 복사
  4631. // : H2 : 수술처방 drprcpetc18 : 복합 수술료 처방 사유
  4632. else if(ds_copyprcp_src.getColumn(0, "prcpclscd") == "H2" &&
  4633. ds_dest.getColumn(nCurRow, "prcpclscd") == "H2" && !utlf_isNull(ds_dest.getColumn(nCurRow, "drprcpetc18"))){
  4634. ds_copyprcp_src.addColumn("drprcpetc18", "string");
  4635. ds_copyprcp_src.setColumn(i, "erprcpflag", ds_dest.getColumn(nCurRow, "erprcpflag"));
  4636. ds_copyprcp_src.setColumn(i, "drprcpetc17", ds_dest.getColumn(nCurRow, "drprcpetc17"));
  4637. ds_copyprcp_src.setColumn(i, "nigtprcpflag", ds_dest.getColumn(nCurRow, "nigtprcpflag"));
  4638. ds_copyprcp_src.setColumn(i, "precureprcpflag", ds_dest.getColumn(nCurRow, "precureprcpflag"));
  4639. ds_copyprcp_src.setColumn(i, "opansflagcd", ds_dest.getColumn(nCurRow, "opansflagcd"));
  4640. ds_copyprcp_src.setColumn(i, "drprcpetc14nm", ds_dest.getColumn(nCurRow, "drprcpetc14nm"));
  4641. ds_copyprcp_src.setColumn(i, "prcpexecdeptcd", ds_dest.getColumn(nCurRow, "prcpexecdeptcd"));
  4642. ds_copyprcp_src.setColumn(i, "clincstdyflag", ds_dest.getColumn(nCurRow, "clincstdyflag"));
  4643. ds_copyprcp_src.setColumn(i, "drgacptflag", ds_dest.getColumn(nCurRow, "drgacptflag"));
  4644. ds_copyprcp_src.setColumn(i, "anamneflag", ds_dest.getColumn(nCurRow, "anamneflag"));
  4645. ds_copyprcp_src.setColumn(i, "prcpdelivefact", ds_dest.getColumn(nCurRow, "prcpdelivefact"));
  4646. ds_copyprcp_src.setColumn(i, "drprcpetc18", ds_dest.getColumn(nCurRow, "drprcpetc18"));
  4647. //20191129 이돈희 : 단순행위 수술료 처방 삭제 메시지 필요없으므로 주석처리함(from 심사과 김순애과장)
  4648. //if(sysf_messageBox("복잡행위 수술료 처방(" + ds_copyprcp_src.getColumn(i, "prcpcd") + ")이 추가되었습니다. " + "기존 처방("
  4649. // + ds_dest.getColumn(nCurRow, "prcpcd") + ")은 삭제하시겠습니까?", "Q") == "6"){
  4650. nSrchRow = nCurRow + i;
  4651. ds_dest.deleteRow(nSrchRow);
  4652. //} else {
  4653. // nSrchRow = nCurRow + i + 1;
  4654. //}
  4655. bAddPrcpPop_AppCheck = false;
  4656. }
  4657. else {
  4658. nSrchRow = ds_dest.rowcount - 1;
  4659. }
  4660. if (sCopyInptFlag == "06") { // 항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅
  4661. ds_copyprcp_src.setColumn(i, "etclnkspec", etclnkspecValue_SMMMO00110);
  4662. }
  4663. // 전환처방 복용 방법 설정
  4664. if ( lf_getDsValue(ds_copyprcp_src, i, "tempcol18") == "Y" ) {
  4665. if (utlf_isNull(this.objects["ds_migdrugmthdlist"])) {
  4666. dsf_createDs("ds_migdrugmthdlist", [{col:"prcpcd", type:"string", size:256},
  4667. {col:"prcpnm", type:"string", size:256},
  4668. {col:"migdrugmthdspccdnm", type:"string", size:256},
  4669. {col:"drugmthdspccd", type:"string", size:256},
  4670. {col:"drugmthdspccdnm", type:"string", size:256}]);
  4671. }
  4672. var len = ds_migdrugmthdlist.addRow();
  4673. ds_migdrugmthdlist.setColumn(len, "prcpcd", ds_copyprcp_src.getColumn(i, "prcpcd"));
  4674. ds_migdrugmthdlist.setColumn(len, "prcpnm", ds_copyprcp_src.getColumn(i, "prcpnm"));
  4675. ds_migdrugmthdlist.setColumn(len, "drugmthdspccd", ds_copyprcp_src.getColumn(i, "drugmthdspccd"));
  4676. ds_migdrugmthdlist.setColumn(len, "drugmthdspccdnm", ds_copyprcp_src.getColumn(i, "drugmthdspccdnm"));
  4677. if ( ds_copyprcp_src.getColumn(i, "rateprcpflag") == "Y" ) {
  4678. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + ds_copyprcp_src.getColumn(i, "exptmthdfact" ) + ".");
  4679. ds_copyprcp_src.setColumn(i, "rateprcpflag", "N" )
  4680. ds_copyprcp_src.setColumn(i, "drugrateqty", "-" )
  4681. } else {
  4682. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", ds_copyprcp_src.getColumn(i, "exptmthdfact" ));
  4683. }
  4684. ds_copyprcp_src.setColumn(i, "exptmthdfact", "-" );
  4685. }
  4686. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  4687. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  4688. var raypopwndcheckyn = ds_initsrch_raypopwndcheckyn.getColumn(0, "trgtcd");
  4689. if ( ds_patflag.getColumn(0, "prcpgenrflag") == "O" && ds_copyprcp_src.getColumn(i, "tempcol2").length > 2 && ds_copyprcp_src.getColumn(i, "tempcol2").substring( 0, 2 ) == "18" && sUsge == "prcp" ) {
  4690. var msgTitle = "[영상]" + "[" + ds_copyprcp_src.getColumn(i, "prcpcd") + ":" + ds_copyprcp_src.getColumn(i, "prcpnm") + "]";
  4691. if (raypopwndcheckyn != "Y") {
  4692. if (!confirm( "단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle)){
  4693. ds_copyprcp_src.setColumn(i, "prcphopedd","99991231" );
  4694. }
  4695. }
  4696. }
  4697. sErrFlag = lf_getDsValue(ds_copyprcp_src, i, "errflag"); // ------------------------------------------------------------------
  4698. sErrMsg = lf_getDsValue(ds_copyprcp_src, i, "errmsg"); // 서버체크시 오류가 있을 때만 존재하는 컬럼이라 default 처리함
  4699. sErrCode = lf_getDsValue(ds_copyprcp_src, i, "errcode"); // ------------------------------------------------------------------
  4700. if(sErrFlag == "E") { // 서버체크시 오류가 있으면 메세지 처리
  4701. if(!utlf_isNull(sErrMsg)) sysf_messageBox(sErrMsg, sErrCode);
  4702. continue;
  4703. } else if(sErrFlag == "D") { // 사용자 결정
  4704. if(sErrCode == "D001") { // 품절약
  4705. lf_altDrug ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  4706. if("01" == sCopyInptFlag || "02" == sCopyInptFlag) { // 전처방 또는 약속처방일 경우
  4707. var sOpt079 = ds_initsrch_envinfo.lookup("qestcd", '079', "answcnt"); // 품절약 복사 개인 설정 옵션 (001:대체약품의 기본 횟수(용법), 수량으로 설정, 002:기존약품의 횟수(용법), 수량, 일수로 설정)
  4708. if(sOpt079 == "002" && !utlf_isNull(ds_dest.getColumn(nSrchRow, "prcpcd"))) { // 기존약품의 횟수(용법), 수량, 일수로 설정 이고 품절약을 선택한경우
  4709. ds_dest.setColumn(nSrchRow, "drugmthdspccdnm", ds_copyprcp_src.getColumn(i, "drugmthdspccdnm"));
  4710. ds_dest.setColumn(nSrchRow, "drugmthdspccd", ds_copyprcp_src.getColumn(i, "drugmthdspccd"));
  4711. ds_dest.setColumn(nSrchRow, "prcpdayno", ds_copyprcp_src.getColumn(i, "prcpdayno"));
  4712. bfDrugCalc("prcptims" , nSrchRow);
  4713. ds_dest.setColumn(nSrchRow, "prcptims", ds_copyprcp_src.getColumn(i, "prcptims"));
  4714. DrugCalc("prcptims" , nSrchRow);
  4715. bfDrugCalc("drprcpetc8" , nSrchRow);
  4716. ds_dest.setColumn(nSrchRow, "drprcpetc8", ds_copyprcp_src.getColumn(i, "drprcpetc8"));
  4717. DrugCalc("drprcpetc8" , nSrchRow);
  4718. } // End of 기존약품의 횟수(용법), 수량, 일수로 설정 이고 품절약을 선택한경우
  4719. } // End of 전처방 또는 약속처방일 경우
  4720. } else if(sErrCode == "D002") { // 산제불가
  4721. lf_altDrug ( i, "4", sCopyPrcpSrc, sCopyInptFlag );
  4722. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  4723. frmf_clearParameter ( "SPMMB10100_chkyn" );
  4724. } else {
  4725. ds_dest.insertRow(nSrchRow);
  4726. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4727. addPrcpPop_App(nSrchRow, sUsge);
  4728. }
  4729. } else if(sErrCode == "D003") { // 산제주의
  4730. lf_altDrug ( i, "5", sCopyPrcpSrc, sCopyInptFlag );
  4731. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) { //대체약을 선택했다면 복사시키지 않는다.
  4732. frmf_clearParameter ( "SPMMB10100_chkyn" );
  4733. } else {
  4734. ds_dest.insertRow(nSrchRow);
  4735. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4736. addPrcpPop_App(nSrchRow, sUsge);
  4737. }
  4738. } else if(sErrCode == "D004") { // 투석원내처방사유처리
  4739. if("19" != ds_init.getColumn(0, "hosinprcpresncd")) {
  4740. var message = "원내지정이 가능한 처방입니다. 전체 약제를 원내로 하시려면 [예], 해당약제만 원내처방하시려면 [아니오]를 선택해주십시오.";
  4741. if (sysf_messageBox ( message, "Q" ) == "6" ) {
  4742. ds_init.setColumn(0, "hosinprcpresncd", "19");
  4743. }
  4744. }
  4745. ds_dest.insertRow(nSrchRow);
  4746. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4747. addPrcpPop_App(nSrchRow, sUsge);
  4748. } else if (sErrCode == "D006"){ // 대채처방체크 altcdinfo = X
  4749. lf_altPrcpCd ( i, "1", sCopyPrcpSrc, sCopyInptFlag );
  4750. } else if(sErrCode == "D007"){ // 수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  4751. if (sysf_messageBox ( sErrMsg, "Q999" ) == "7") {
  4752. frmf_setParameter ("SPMMO016000_resnflag" , "O" );
  4753. var mon = sysf_getCurrentMonitorNumber();
  4754. var xpt = this.getOwnerFrame().position.x + 500;
  4755. var ypt = this.getOwnerFrame().position.y + 400;
  4756. frmf_modal("SPMMO16000", "SPMMO16000", null, false, mon, xpt, ypt, null, null, null, null, null, "P"); //사유입력창
  4757. var resncnts = frmf_getParameter ("SPMMO016000_resncnts" );
  4758. ds_copyprcp_src.setColumn(i, "tempcol19" ,resncnts );
  4759. ds_dest.insertRow(nSrchRow);
  4760. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4761. addPrcpPop_App(nSrchRow, sUsge);
  4762. } else {
  4763. continue;
  4764. }
  4765. }
  4766. } else { // 오류가 없으면 화면으로 복사 처리
  4767. if(sErrFlag == "I" && !utlf_isNull(sErrMsg)) { // 서버체크시 정보가 있으면 메세지 처리
  4768. sysf_messageBox(sErrMsg, sErrCode);
  4769. }
  4770. ds_dest.insertRow(nSrchRow);
  4771. // 허만호, 컬럼추가 prcpdd
  4772. var oOpener = this.getOwnerFrame().form;
  4773. if( oOpener.name == "SMMMP00800" && ds_dest.getColumnInfo("prcpdd") == null) {
  4774. ds_dest.addColumn("prcpdd", "string");
  4775. }
  4776. ds_dest.copyRow(nSrchRow, ds_copyprcp_src, i);
  4777. if(bAddPrcpPop_AppCheck == true){
  4778. addPrcpPop_App(nSrchRow, sUsge); // 화면에서 체크해야 할 항목 체크
  4779. }
  4780. //20191125 이돈희 문제 : 연계된 복잡 수술료를 자동으로 입력한 경우 상세창에서 입력된 설정 값들이 prcpnm에 반영이 안됨
  4781. // 해결 : 일반 수술료와 연계된 복잡 수술료를 자동으로 입력시 bAddPrcpPop_AppCheck 는 false 이며, lf_makePrcpNm을 통하여 처방명 변경
  4782. else {
  4783. lf_makePrcpNm(strDest, nSrchRow)
  4784. }
  4785. }
  4786. } // End of 복사 처방 건별 화면 복사
  4787. // 투석원내처방사유처리
  4788. // 15.11.05, 가정간호 처방이고, ds_init 에 hosinprcpresncd이면 "" 입력
  4789. var usge = ds_root.getColumn(0, "usge");
  4790. if( usge == "home" && ds_init.getColumn(0, "hosinprcpresncd") == undefined ) {
  4791. ds_init.setColumn(0, "hosinprcpresncd", "");
  4792. }
  4793. if ( ds_init.getColumn(0, "hosinprcpresncd") != ds_copyflag_src.getColumn(0, "hosinprcpresncd") ) {
  4794. lf_chngHosinPrcpResn();
  4795. }
  4796. //JJE CP,항암프로토콜일 경우 root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  4797. // refresh() 만 하는 경우라 XP에서는 의미 없다, 확인필요
  4798. // if (sCopyInptFlag == "05" || sCopyInptFlag == "06") {
  4799. // if ( ds_initmodel.getValue( "/root/init/prcpdd") != model.getValue(sCopyFlagSrc + "/prcpdd") ) {
  4800. // cmb_prcpdd.refresh();
  4801. // }
  4802. // }
  4803. }
  4804. dsf_deleteDs(sCopyPrcpSrc); // 처방정보, 화면정보 복사 노드삭제
  4805. dsf_deleteDs(sCopyFlagSrc);
  4806. }
  4807. /**
  4808. * @desc : check 된 Source Node의 값을 목적지에 Append Node 한다.(처방검색)
  4809. * @param : objFlag - child or else
  4810. : strSrc - 출발지 Node
  4811. : strDest - 목적지 Node
  4812. : multiFlag - 복수 add 여부
  4813. : checkNM - check로 사용할 instance명
  4814. : checkFlag - check시 Value
  4815. : grdObj - 더블클릭시 값을 넘기는 그리드 명
  4816. : prcpNmClearFlag - 검색 row에 검색명 클리어암㈉?
  4817. : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술, 05 CP, 06 항암 M0034
  4818. : ex) addPrcp ( "child", "/root/prcpsrch/prcplist", "/root/main/prcp", "N", "status", "I", grd_prcpsrchlist, "N");
  4819. * @return : void
  4820. * @authur : 마정민 2007. 3. 12
  4821. * 변환 OK
  4822. * @---------------------------------------------------
  4823. */
  4824. function lf_addPrcp_Web ( objFlag, strSrc, strDest, multiFlag, checkNM, checkFlag, grdObj, prcpNmClearFlag, prcpInptFlag ) {
  4825. var startStepDate = new Date(); // 각 업부 시작 시간
  4826. var endStepDate = null; // 각 업부 종료후 시간
  4827. var step1Elapsed = null; // 코드별 체크 전 소요시간
  4828. var step2Elapsed = null; // 코드별 체크 소요시간
  4829. var step3Elapsed = null; // 코드별 체크 후 소요시간
  4830. var nCopyCnt = 0; // 복사 갯수
  4831. //model.addLog("***************** Start Of addPrcp()");
  4832. var oTrgtObj = lf_getFormObject(objFlag);
  4833. oTrgtObj.ds_drugcalc.setColumn(0, "prcpvol", "");
  4834. oTrgtObj.ds_drugcalc.setColumn(0, "prcpqty", "");
  4835. oTrgtObj.ds_drugcalc.setColumn(0, "prcptims", "");
  4836. oTrgtObj.ds_drugcalc.setColumn(0, "drprcpetc7", "");
  4837. oTrgtObj.ds_drugcalc.setColumn(0, "drprcpetc8", "");
  4838. //목적지를 변수로 받고 싶었으나 iviewer에서 문제가 있어 목적지는 프레그를 구분자로 박아 넣음.
  4839. var srchRow = 0;
  4840. var ds_src = this.objects[strSrc];
  4841. //검색Row 찾기
  4842. var ds_dest = oTrgtObj.objects[strDest];
  4843. for (var i = ds_dest.rowcount - 1; i >= 0; i--){
  4844. if(ds_dest.getColumn(i, "status") == "S") {
  4845. srchRow = i;
  4846. break;
  4847. }
  4848. }
  4849. // 처방 코드정보를 가져온다. (선택진료 자동체크 및 선택진료의사 등의 데이터를 가져오기 위해) 2011.10.13 엄영만
  4850. var sPrcpCodes = ""; // 처방코드 정보를 가져오기 위한 처방 코드 셋팅
  4851. if ( multiFlag == "Y" ){
  4852. for( var i = 0; i < ds_src.rowcount; i++ ) {
  4853. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  4854. if(utlf_isNull(sPrcpCodes)){
  4855. sPrcpCodes = "'" + ds_src.getColumn(i, "prcpcd") + "'";
  4856. } else {
  4857. sPrcpCodes = sPrcpCodes + ",'" + ds_src.getColumn(i, "prcpcd") + "'";
  4858. }
  4859. nCopyCnt++;
  4860. }
  4861. }
  4862. } else {
  4863. sPrcpCodes = "'" + ds_src.getColumn(ds_src.rowposition, "prcpcd") + "'" ;
  4864. nCopyCnt = 1;
  4865. }
  4866. if(!utlf_isNull(sPrcpCodes)){ // 조회할 코드가 있을경우에만 실행하도록 수정함.
  4867. oTrgtObj.lf_getPrcpCodeInfo(sPrcpCodes);
  4868. }
  4869. // 처리 속도 향상을 위해 잠시 데이타셋 이벤트 끔
  4870. // -----------------------------------------------------------------------------------------
  4871. lf_setDatasetEvent(ds_src, ds_dest, false);
  4872. endStepDate = new Date(); // 각 업부 종료후 시간
  4873. step1Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 전 소요시간
  4874. startStepDate = new Date(); // 각 업부 시작 시간
  4875. var cnt = 0;
  4876. if ( multiFlag == "Y" ){
  4877. //약속처방일 경우 MIX 가 있으면 번호를 새로 만들어줌
  4878. if ( prcpInptFlag == "02") { //약속처방이고
  4879. for( var i = 0; i < ds_src.rowcount; i++ ) {
  4880. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  4881. var prcpmixno = ds_src.getColumn(i, "prcpmixno" );
  4882. if ( !utlf_isNull(prcpmixno) && prcpmixno != "-" && prcpmixno != "0" ) { //믹스번호가 있다면
  4883. if ( ds_src.getColumn(i, "tempcol8") == "-" ) { //새로 번호 딴것은 체크 하지 않는다.
  4884. ds_src.setColumn(i, "tempcol8", "");
  4885. } else {
  4886. var mixcnt = 0;
  4887. //믹스번호를 하나 증가시켜서 같은 믹스번호가 있는것은 적용한다.
  4888. var newprcpmixno = eval(opener.ds_init.getColumn(0, "prcpmixno")) + 1;
  4889. for( var j = 0; j < ds_src.rowcount; j++ ) {
  4890. if ( ds_src.getColumn(j, checkNM) == checkFlag ) {
  4891. if ( i != j ) {
  4892. if ( prcpmixno == ds_src.getColumn(j, "prcpmixno" )) {
  4893. ds_src.setColumn(j, "prcpmixno", newprcpmixno );
  4894. ds_src.setColumn(j, "tempcol8", "-" );
  4895. mixcnt++;
  4896. }
  4897. }
  4898. }
  4899. }
  4900. if ( mixcnt == 0 ) { // 같이 적용된것이 하나도 없다면 믹스번호 초기화
  4901. ds_src.setColumn(i, "prcpmixno", "-" );
  4902. } else { // 값이 있으면 본인것도 증가시켜주고, 믹스번호 init 값도 증가시켜준다.
  4903. ds_src.setColumn(i, "prcpmixno", newprcpmixno );
  4904. oTrgtObj.ds_init.setColumn(0, "prcpmixno", newprcpmixno);
  4905. }
  4906. }
  4907. }
  4908. }
  4909. }
  4910. } //약속처방 mix no 체크끝
  4911. for( var i = 0; i < ds_src.rowcount; i++ ) {
  4912. //전처방, 약속처방에서 처방복사 버튼 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  4913. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  4914. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  4915. /*if( model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "*" ||
  4916. model.getValue( strSrc + "[" + i + "]/prcpcd").substring( 0, 1 ) == "_" ||
  4917. model.getValue( strSrc + "[" + i + "]/prcpclscd") == "03" ) {
  4918. if ( objFlag == "child" ) {
  4919. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  4920. } else {
  4921. addprcpchk = model.getValue ( "/root/addprcp" );
  4922. }
  4923. if ( addprcpchk != "Y" ){
  4924. continue ;
  4925. }
  4926. }*/
  4927. if ( ds_src.getColumn(i, "prcpclscd") == "03" ) {
  4928. addprcpchk = oTrgtObj.ds_root.getColumn(0, "addprcp");
  4929. if ( addprcpchk != "Y" ){
  4930. continue ;
  4931. }
  4932. }
  4933. if ( ds_src.getColumn(i, checkNM) == checkFlag ) {
  4934. srchRow = lf_addPrcpDetl ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  4935. if ( srchRow == 0) {
  4936. cnt++;
  4937. //검색줄 다시검색
  4938. var ds_dest = oTrgtObj.objects[strDest];
  4939. for (var j = ds_dest.rowcount - 1; j >= 0; j--){
  4940. if(ds_dest.getColumn(j, "status") == "S") {
  4941. srchRow = j;
  4942. break;
  4943. }
  4944. }
  4945. } else {
  4946. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  4947. //srchRow = fAddSetPrcpChk ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  4948. srchrownum = lf_addSetPrcpChkKNUH ( objFlag , strSrc , strDest , i , srchRow, prcpInptFlag );
  4949. if (srchrownum != srchRow) {
  4950. srchRow = srchrownum;
  4951. oTrgtObj.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  4952. }
  4953. }
  4954. //if ( objFlag == "child" ) {
  4955. // opener.grd_prcplist.refresh();
  4956. //} else {
  4957. // grd_prcplist.refresh();
  4958. //}
  4959. }
  4960. }
  4961. } else { //더블클릭으로 넘길때
  4962. //전처방, 약속처방에서 더블 클릭시...구코드이고 유효하지 않은 코드 일경우 불가처리 조과장님 지시. BY SONJY 2008-09-04
  4963. //전처방, 약속처방에서 처방복사 버튼 클릭시 식사처방 복사 불가처리 by sonjy 2008-09-06
  4964. //20090409 마정민 수정. 성가병원 구코드 복사 기능 요청
  4965. /*if( model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "*" ||
  4966. model.getValue( strSrc + "[" + grdObj.row + "]/prcpcd").substring( 0, 1 ) == "_" ||
  4967. model.getValue( strSrc + "[" + grdObj.row + "]/prcpclscd") == "03" ) {
  4968. if ( objFlag == "child" ) {
  4969. addprcpchk = opener.model.getValue ( "/root/addprcp" );
  4970. } else {
  4971. addprcpchk = model.getValue ( "/root/addprcp" );
  4972. }
  4973. if ( addprcpchk != "Y" ){
  4974. //20090407 마정민 수정. 성가병원 기능 요청
  4975. //return ;
  4976. }
  4977. }*/
  4978. if( ds_src.getColumn(ds_src.rowposition, "prcpclscd") == "03" ) {
  4979. addprcpchk = oTrgtObj.ds_root.getColumn(0, "addprcp");
  4980. if ( addprcpchk != "Y" ){
  4981. // 처리 속도 향상을 위해 꺼뒀던 데이타셋 이벤트 다시 켜두고 종료
  4982. // -----------------------------------------------------------------------------------------
  4983. lf_setDatasetEvent(ds_src, ds_dest, true);
  4984. return ;
  4985. }
  4986. }
  4987. //mix no 초기화
  4988. ds_src.setColumn(ds_src.rowposition, "prcpmixno", "-" );
  4989. srchRow = lf_addPrcpDetl ( objFlag , strSrc , strDest , grdObj.rowposition , srchRow, prcpInptFlag );
  4990. if ( srchRow == 0) {
  4991. cnt++;
  4992. } else {
  4993. //처방복사에 문제가 없다면 하드코드 set 처방 Chk
  4994. //srchRow = fAddSetPrcpChk( objFlag , strSrc , strDest , grdObj.row , srchRow, prcpInptFlag );
  4995. var srchrownum = lf_addSetPrcpChkKNUH( objFlag , strSrc , strDest , grdObj.rowposition , srchRow, prcpInptFlag );
  4996. if (srchrownum != srchRow) {
  4997. srchRow = srchrownum;
  4998. oTrgtObj.DrugCalc ( "drprcpetc8" , parseInt(srchRow) -1 );
  4999. }
  5000. }
  5001. }
  5002. endStepDate = new Date(); // 각 업부 종료후 시간
  5003. step2Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  5004. startStepDate = new Date(); // 각 업부 시작 시간
  5005. // 처리 속도 향상을 위해 꺼뒀던 데이타셋 이벤트 다시 켬
  5006. // -----------------------------------------------------------------------------------------
  5007. lf_setDatasetEvent(ds_src, ds_dest, true);
  5008. lf_hosinPrcpResnChk (objFlag, ds_dest);
  5009. if ( cnt == 0 ) { // 한번도 에러가 없을 때만 메인으로 포커스가 간다.
  5010. lf_focusMain ( srchRow, objFlag, prcpNmClearFlag );
  5011. } else {
  5012. var modiflag = ds_init_rowmodify.getColumn(0, "modiflag");
  5013. // 다른 처방 연계 화면 작업 후 rebuild(), recalculate() 동작 확인필요
  5014. // if ( objFlag == "child" ) {
  5015. // if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  5016. // opener.grd_prcplist.rebuild();
  5017. // opener.model.recalculate();
  5018. // opener.grd_prcplist.refresh();
  5019. // }
  5020. // // opener.model.setfocus( "grd_prcplist" );
  5021. // // if ( srchRow != 0 ) {
  5022. // // opener.grd_prcplist.row = srchRow;
  5023. // // }
  5024. // } else {
  5025. // if ( modiflag != "Y" ){ // 처방 코드에서 수정 모드가 아닐때만 refresh - 20090630 by Moonsh
  5026. // grd_prcplist.rebuild();
  5027. // model.recalculate();
  5028. // grd_prcplist.refresh();
  5029. // }
  5030. // // model.setfocus( "grd_prcplist" );
  5031. // // if ( srchRow != 0 ) {
  5032. // // grd_prcplist.row = srchRow;
  5033. // // }
  5034. // }
  5035. }
  5036. //KNUH, 약속처방 복사 시 치식 팝업이 한번만 뜨고 다른 치과처방에 동일하게 적용되도록 함. 처방복사가 완료되면 임시 instance는 제거함. (2011.03.28 JJE)
  5037. oTrgtObj.dsf_deleteDs("ds_main_toot_prcplist");
  5038. // 20080925 항생제 추가 시는 그리드 editting을 위해 색 변경 로직 생략 by MoonSH
  5039. // 그리드에 expr로 되어 있음
  5040. //var cdssFlag = frmf_getParameter( "SPMMD01600_flag");
  5041. frmf_clearParameter( "SPMMD01600_flag", "");
  5042. // if (cdssFlag != "Y") {
  5043. // fPrcpColor(objFlag);
  5044. // }
  5045. if ( objFlag != "child") {
  5046. //JJE-
  5047. if( ds_root.getColumn(0, "cp" ) == "Y" ){
  5048. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  5049. div_all.div_srch.visible = false;
  5050. }
  5051. }else{
  5052. div_all.div_srch.visible = false;
  5053. }
  5054. //-JJE
  5055. }
  5056. //model.addLog("***************** End Of addPrcp()");
  5057. endStepDate = new Date(); // 각 업부 종료후 시간
  5058. step3Elapsed = endStepDate.getTime() - startStepDate.getTime(); // 코드별 체크 소요시간
  5059. // 속도체크 모니터링 로그 추가 2013.06.27 엄영만
  5060. oTrgtObj.reqSetMonitoringLog("PrcpCopy", "WEB", oTrgtObj.frmf_getScreenID(), objFlag, prcpInptFlag, multiFlag, prcpNmClearFlag, nCopyCnt, step1Elapsed+step2Elapsed+step3Elapsed, step1Elapsed, step2Elapsed, step3Elapsed);
  5061. }
  5062. /***************************************************************************************************
  5063. * Function : lf_addPrcpDetl
  5064. * Description : 검색된 내용중 내릴 처방을 선택하여 전송한다.( double click )
  5065. * Argument : objFlag - child or else
  5066. * : strSrc - source node
  5067. * : strDest - 목적지 node; child일때는 opener.root.main.prcp, 아니면 "/root/main/prcp" 이다
  5068. * : sendRow - 검색된 내용중 메인으로 보내고자 하는 row
  5069. * : srchRow - 메인에 들어간 자리. 검색로우(srchRow) 바로 전이다.
  5070. * : prcpInptFlag - - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5071. * : groupSrc - 옵션: group처방 검색할 경우 node
  5072. * : direcSrc - 옵션: group 지시처방 검색할 경우 node
  5073. * : prcpInptFlag - 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5074. * return type : srchRow 에러시 0
  5075. * Creator :
  5076. * 변환OK
  5077. ***************************************************************************************************/
  5078. function lf_addPrcpDetl(objFlag, strSrc, strDest, sendRow, srchRow, prcpInptFlag, grupSrc, direcSrc)
  5079. {
  5080. var oTrgtObj = lf_getFormObject(objFlag);
  5081. oTrgtObj.reqSetMonitoringLog("addPrcpDetl", "WEB", oTrgtObj.frmf_getScreenID(), objFlag, prcpInptFlag); // 2017.12.20 사용여부를 체크 하기 위해 추가 엄영만
  5082. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  5083. var bfprcpsrchyn = oTrgtObj.ds_initsrch_bfprcpsrchyn.getColumn(0, "trgtcd");
  5084. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  5085. var migyn = "";
  5086. var colHidnValue = lf_grdBaseColHidn("D");
  5087. /***************************** 전처방 구수가코드 검색시 신코드로 변환검색 ****************************************/
  5088. var oldprcpflag = "";
  5089. var ds_src = this.objects[strSrc];
  5090. if ( prcpInptFlag == "01" ) { //전처방이고
  5091. var tempcol9 = ds_src.getColumn(sendRow, "tempcol9");
  5092. var tempcol18 = ds_src.getColumn(sendRow, "tempcol18");
  5093. if ( tempcol9 == "N" ) {
  5094. return 0;
  5095. } else {
  5096. var bfprcpcd = ds_src.getColumn(sendRow, "prcpcd" );
  5097. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  5098. migyn = ds_src.getColumn(sendRow, "tempcol20" );
  5099. /**
  5100. * 20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset
  5101. * 단, 지시처방일 경우는 검색 불필요하므로 제외
  5102. */
  5103. if ( bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ||
  5104. ( bfprcpsrchyn == "Y" && migyn == "Y" && ds_src.getColumn(sendRow, "prcpclscd" ) != "09") ) { //구수가코드이면 신코드로 다시 검색한다. by sonjy20091013
  5105. //20090407 마정민수정. tempcol9로 구분되기 때문에 색깔비교 주석처리.
  5106. //if ( ds_src.getColumn(sendRow, "tempcol10" ) != "#ccffcc" ) { //매핑값이 있으면(색깔은 mgr단에서 박는다)
  5107. var bfprcpvol = ds_src.getColumn(sendRow, "prcpvol" );
  5108. var bfprcpqty = ds_src.getColumn(sendRow, "prcpqty" );
  5109. var bfprcptims = ds_src.getColumn(sendRow, "prcptims" );
  5110. var bfprcpdayno = ds_src.getColumn(sendRow, "prcpdayno" );
  5111. var bfprcpdelivefact = ds_src.getColumn(sendRow, "prcpdelivefact" );
  5112. var bfpowdflag = ds_src.getColumn(sendRow, "powdflag" );
  5113. var bfprnprcpflag = ds_src.getColumn(sendRow, "prnprcpflag" );
  5114. var bfprepprcpflag = ds_src.getColumn(sendRow, "prepprcpflag" );
  5115. var bfselfprcpflag = ds_src.getColumn(sendRow, "selfprcpflag" );
  5116. var bfselfdrugflag = ds_src.getColumn(sendRow, "selfdrugflag" );
  5117. var bfdrugpackflag = ds_src.getColumn(sendRow, "drugpackflag" );
  5118. var bferprcpflag = ds_src.getColumn(sendRow, "erprcpflag" );
  5119. var bfprecureprcpflag = ds_src.getColumn(sendRow, "precureprcpflag" );
  5120. var bfnigtprcpflag = ds_src.getColumn(sendRow, "nigtprcpflag" );
  5121. var bfportprcpflag = ds_src.getColumn(sendRow, "portprcpflag" );
  5122. var bffixprcpflag = ds_src.getColumn(sendRow, "fixprcpflag" );
  5123. var bfanamneflag = ds_src.getColumn(sendRow, "anamneflag" );
  5124. var bferreadflag = ds_src.getColumn(sendRow, "erreadflag" );
  5125. var bfstemcellflag = ds_src.getColumn(sendRow, "stemcellflag" );
  5126. var bfprcpexecdeptcd = ds_src.getColumn(sendRow, "prcpexecdeptcd" );
  5127. var bfDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  5128. var bfDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  5129. var bfDrugmastspec = ds_src.getColumn(sendRow, "drugmastspec");
  5130. var bfpayflagcd = ds_src.getColumn(sendRow, "payflagcd"); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  5131. //20091013 by sonjy 성빈센트병원 요청 => mig data 전처방 copy시 신코드일 경우 reset여부
  5132. if(bfprcpcd.substring( 0, 1 ) == "_" || bfprcpcd.substring( 0, 1 ) == "=" ) {
  5133. // fPrcpSrchCom -> lf_prcpSrchCom 으로 변경 2015.07.29
  5134. lf_prcpSrchCom ( bfprcpcd.substring( 1, bfprcpcd.length ), oTrgtObj.ds_init.getColumn(0, "prcpdd" ), oTrgtObj.ds_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", "getOldPrcpCdChngInfo", "E" );
  5135. } else {
  5136. // fPrcpSrchCom -> lf_prcpSrchCom 으로 변경 2015.07.29
  5137. lf_prcpSrchCom ( bfprcpcd, oTrgtObj.ds_init.getColumn(0, "prcpdd"), ds_paminfo.getColumn(0, "insukind"), "TRMMO02101", "", "getPrcpCdSrchInfo", "E" , false);
  5138. }
  5139. strSrc = "ds_oldprcpchngsrch_prcplist";
  5140. ds_src = this.objects[strSrc];
  5141. sendRow = 0;
  5142. if ( utlf_isNull(ds_src.getColumn(sendRow, "prcpcd"))){
  5143. return 0;
  5144. } else {
  5145. oldprcpflag = "Y";
  5146. var prcpclscd = ds_src.getColumn(sendRow, "prcpclscd");
  5147. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  5148. if ( prcpclscd == "A2" ) {
  5149. if ( ds_src.getColumn(sendRow, "prcptims") != bfprcptims ) {
  5150. ds_src.setColumn(sendRow, "prcptims", bfprcptims);
  5151. fBaseMthd("oldprcp");
  5152. }
  5153. } else {
  5154. ds_src.setColumn(sendRow, "prcptims", bfprcptims);
  5155. }
  5156. var chkPrcpVol = ds_src.getColumn(sendRow, "prcpvol");
  5157. if( bfprcpsrchyn == "Y" && migyn == "Y" && parseInt(chkPrcpVol) < 1 ){
  5158. ds_src.setColumn(sendRow, "prcpvol", 0 );
  5159. ds_src.setColumn(sendRow, "prcpqty", 0 );
  5160. ds_src.setColumn(sendRow, "prcpdayno", 0 );
  5161. } else {
  5162. ds_src.setColumn(sendRow, "prcpvol", bfprcpvol );
  5163. ds_src.setColumn(sendRow, "prcpqty", bfprcpqty );
  5164. ds_src.setColumn(sendRow, "prcpdayno", bfprcpdayno );
  5165. }
  5166. //ds_src.setColumn(sendRow, "drugmthdspccdnm", "-" );
  5167. //ds_src.setColumn(sendRow, "drugmthdspccd", "-" );
  5168. //20091104 by sonjy 성빈센트 전환 데이터 관련 => mig data 전처방 copy시 약/주사 용량 오류 보정
  5169. if( bfprcpsrchyn == "Y" && migyn == "Y" ){
  5170. var sdrugmastspec = ds_src.getColumn(sendRow, "drugmastspec");
  5171. var orgprcpvol = lf_getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량 -> 경북대는 일기준 용량으로 비교
  5172. var orgDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  5173. var orgDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  5174. var orgCalcRate = 0;
  5175. //회기준에서는 수가계산구분이 1이면 횟수도 곱 (2011.01.02 전지은)
  5176. if(!utlf_isNull(bfDrprcpetc7) && !utlf_isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  5177. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  5178. orgCalcRate = Math.round(orgCalcRate);
  5179. orgCalcRate = orgCalcRate / 1000;
  5180. var calcmthdcd = lf_getArrayData ( bfDrugmastspec + "^", 0, 26, "^", "|" );
  5181. if( calcmthdcd == "1" ){
  5182. var volRate = orgDrprcpetc7 / bfDrprcpetc7 * 1000;
  5183. var qtyRate = orgDrprcpetc8 / bfDrprcpetc8 * 1000;
  5184. volRate = Math.round(volRate);
  5185. qtyRate = Math.round(qtyRate);
  5186. volRate = volRate / 1000;
  5187. qtyRate = qtyRate / 1000;
  5188. if ( volRate != qtyRate //회 기준 용량 이상 시
  5189. || Math.round ( orgDrprcpetc7 * Math.round ( orgDrprcpetc8 / bfDrprcpetc8 ) * bfprcptims * 1000 ) != bfprcpvol * 1000 ){ //1회 용량이 잘못 들어왔을 수 있음(mig) 일 기준 용량 이상 시
  5190. if( eval(bfDrprcpetc7) < 1 ){
  5191. ds_src.setColumn(sendRow, "prcpvol", "0") ; //1회용량*횟수
  5192. ds_src.setColumn(sendRow, "drprcpetc7", "0") ; //1회용량*횟수
  5193. ds_src.setColumn(sendRow, "drprcpetc8", "0") ;
  5194. ds_src.setColumn(sendRow, "tempcol22", "0") ;
  5195. } else {
  5196. ds_src.setColumn(sendRow, "prcpvol", orgDrprcpetc7 * bfprcptims) ; //1회용량*횟수
  5197. ds_src.setColumn(sendRow, "drprcpetc7", orgDrprcpetc7 * orgCalcRate ) ; //1회용량*횟수
  5198. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8 ) ;
  5199. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  5200. }
  5201. }
  5202. }else{
  5203. if( eval(bfDrprcpetc7) < 1 ){
  5204. ds_src.setColumn(sendRow, "prcpvol", "0" ) ; //1회용량
  5205. ds_src.setColumn(sendRow, "drprcpetc7", "0") ; //1회용량*횟수
  5206. ds_src.setColumn(sendRow, "drprcpetc8", "0") ;
  5207. ds_src.setColumn(sendRow, "tempcol22", "0") ;
  5208. } else {
  5209. ds_src.setColumn(sendRow, "prcpvol", bfDrprcpetc7 ) ; //1회용량
  5210. ds_src.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7 ) ; //1회용량*횟수
  5211. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8 ) ;
  5212. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  5213. }
  5214. }
  5215. } else{//회기준 보정 끝 원래
  5216. if ( !utlf_isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  5217. ds_src.setColumn(sendRow, "prcpvol", bfprcpqty * orgprcpvol) ;
  5218. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  5219. }
  5220. }
  5221. }
  5222. }
  5223. ds_src.setColumn(sendRow, "prcpdelivefact", bfprcpdelivefact );
  5224. ds_src.setColumn(sendRow, "powdflag", bfpowdflag );
  5225. ds_src.setColumn(sendRow, "prnprcpflag", bfprnprcpflag );
  5226. ds_src.setColumn(sendRow, "prepprcpflag", bfprepprcpflag );
  5227. ds_src.setColumn(sendRow, "selfprcpflag", bfselfprcpflag );
  5228. ds_src.setColumn(sendRow, "selfdrugflag", bfselfdrugflag );
  5229. ds_src.setColumn(sendRow, "drugpackflag", bfdrugpackflag );
  5230. ds_src.setColumn(sendRow, "erprcpflag", bferprcpflag );
  5231. ds_src.setColumn(sendRow, "precureprcpflag", bfprecureprcpflag );
  5232. ds_src.setColumn(sendRow, "nigtprcpflag", bfnigtprcpflag );
  5233. ds_src.setColumn(sendRow, "portprcpflag", bfportprcpflag );
  5234. ds_src.setColumn(sendRow, "fixprcpflag", bffixprcpflag );
  5235. ds_src.setColumn(sendRow, "anamneflag", bfanamneflag );
  5236. ds_src.setColumn(sendRow, "erreadflag", bferreadflag );
  5237. ds_src.setColumn(sendRow, "payflagcd", bfpayflagcd ); // 2011.03.03 마이그된 처방 전처방 복사시 급여도 복사하도록 수정
  5238. }
  5239. }
  5240. }
  5241. //20080917 마정민수정: PRN실처방은 전처방에서 복사되면 안된다.
  5242. if ( ds_src.getColumn(sendRow, "prcpinptflag" ) == "19" ) {
  5243. sysf_messageBox ( "[" + ds_src.getColumn(sendRow, "prcpnm" ) + "]: PRN 실처방은 처방등록 하실수", "I004" );
  5244. return 0;
  5245. }
  5246. // 전처방에서 복사 시 소아 TPN은 전처방에서 복사 안되도록 요청. - 20090720 by MoonSH
  5247. if( ds_src.getColumn(sendRow, "prcpclscd" ) == "A6" &&
  5248. lf_getArrayData ( ds_src.getColumn(sendRow, "drugmastspec" ) + "^", 0, 23 , "^", "|" ) == "B") {
  5249. sysf_messageBox ( "[" + ds_src.getColumn(sendRow, "prcpnm" ) + "]: 소아 TPN 처방은 전처방에서 복사하실수", "I004" );
  5250. return 0;
  5251. }
  5252. // 전처방에서 복사 시 stemcellflag 초기화 요청. - 20081118 by MoonSH
  5253. if ( !utlf_isNull(bfstemcellflag) ){
  5254. ds_src.setColumn(sendRow, "stemcellflag", "00NNN" );
  5255. }
  5256. // 전처방에서 복사 시 마이그레이션 잘못 들어와서 _0으로 존재 하는 실행부서 -으로 수정. - 20081202 by MoonSH
  5257. if ( bfprcpexecdeptcd == "_0" ) {
  5258. ds_src.setColumn(sendRow, "prcpexecdeptcd", "-" );
  5259. }
  5260. //20091203 by sonjy 전처방 copy시 처방종류가 지시인경우 전처방에 저장된 시행부서를 copy하지 않고 초기화.[요청번호 8711 ]
  5261. //(전실 환자의 경우 이전병동으로 보이는 문제 ) -- V/S(지시), 활동(지시), I/O(지시), 지시 : 식이,BMT제외
  5262. var cur_prcpclscd = ds_src.getColumn(sendRow, "prcpclscd" );
  5263. if(cur_prcpclscd == "00" || cur_prcpclscd == "01"|| cur_prcpclscd == "02" || cur_prcpclscd == "09") {
  5264. ds_src.setColumn(sendRow, "prcpexecdeptcd", ds_src.getColumn(sendRow, "tempcol23") );
  5265. }
  5266. }
  5267. //전처방이나 약속처방에서 임상처방체크된 처방을 발행할 경우 임상시험 부유형 자동세팅(subcretno), CHC, 2009-07-22
  5268. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  5269. if ( ds_src.getColumn(sendRow, "clincstdyflag" ) == "Y" ) {
  5270. lf_subcretnoSet("2", "Y", ds_src, sendRow);
  5271. }
  5272. //전처방이나 약속처방일때 용량/수량 보정 20100209 LYJ
  5273. var prcpclscd = ds_src.getColumn(sendRow, "prcpclscd" );
  5274. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  5275. if( bfprcpsrchyn == "Y" && ds_src.getColumn(sendRow, "prcpclscd") != "09" && ds_src.getColumn(sendRow, "prcpinptflag") != "35"){ // 자가보유처방은 보정 제외한다. 20100504 LYJ
  5276. var bfprcpvol = ds_src.getColumn(sendRow, "prcpvol");
  5277. var bfprcpqty = ds_src.getColumn(sendRow, "prcpqty");
  5278. var sdrugmastspec = ds_src.getColumn(sendRow, "drugmastspec");
  5279. var orgprcpvol = lf_getArrayData ( sdrugmastspec + "^", 0, 1 , "^", "|" ); //drugcntsvol 함량기준용량
  5280. if ( !utlf_isNull(orgprcpvol) && Math.round ( orgprcpvol * bfprcpqty * 1000 ) != bfprcpvol * 1000 ){
  5281. var bfDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  5282. var bfDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  5283. var bfprcptims = ds_src.getColumn(sendRow, "prcptims");
  5284. if(!utlf_isNull(bfDrprcpetc7) && !utlf_isNull(bfDrprcpetc8) && (colHidnValue == "C" || colHidnValue == "G" || colHidnValue == "H") ){
  5285. var orgDrprcpetc7 = ds_src.getColumn(sendRow, "drprcpetc7"); //1회용량
  5286. var orgDrprcpetc8 = ds_src.getColumn(sendRow, "drprcpetc8"); //1회수량
  5287. var orgCalcRate = 0;
  5288. var calcmthdcd = lf_getArrayData ( sdrugmastspec + "^", 0, 26, "^", "|" );
  5289. if( calcmthdcd == "1" ){
  5290. orgCalcRate = (orgDrprcpetc8 * bfDrprcpetc8) * 1000;
  5291. orgCalcRate = Math.round(orgCalcRate);
  5292. orgCalcRate = orgCalcRate / 1000;
  5293. ds_src.setColumn(sendRow, "prcpvol", orgDrprcpetc7 * bfprcptims); //1회용량*횟수
  5294. ds_src.setColumn(sendRow, "drprcpetc7", orgDrprcpetc7); //1회용량*횟수
  5295. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8);
  5296. ds_src.setColumn(sendRow, "tempcol22", orgDrprcpetc7);
  5297. } else {
  5298. ds_src.setColumn(sendRow, "prcpvol", bfDrprcpetc7); //1회용량
  5299. ds_src.setColumn(sendRow, "drprcpetc7", bfDrprcpetc7); //1회용량*횟수
  5300. ds_src.setColumn(sendRow, "drprcpetc8", bfDrprcpetc8);
  5301. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol);
  5302. }
  5303. } else {
  5304. ds_src.setColumn(sendRow, "prcpvol", bfprcpqty * orgprcpvol) ;
  5305. ds_src.setColumn(sendRow, "tempcol22", bfprcpvol) ;
  5306. }
  5307. }
  5308. }
  5309. }
  5310. }
  5311. //자가보유 처방일때 처방명 재설정 한다. 20100427 LYJ
  5312. if (ds_src.getColumn(sendRow, "prcpinptflag") == "35"){
  5313. var selfprcpnm = ds_src.getColumn(sendRow, "prcpnm" );
  5314. var selflen = selfprcpnm.length;
  5315. if (prcpInptFlag != "35"){
  5316. selfprcpnm1 = selfprcpnm.substring(7, selflen);
  5317. ds_src.setColumn(sendRow, "orgprcpnm", selfprcpnm1) ;
  5318. }
  5319. }
  5320. if ( prcpInptFlag == "35" ) { //자가보유
  5321. ds_src.setColumn(sendRow, "orgprcpnm", ds_src.getColumn(sendRow, "prcpnm" )) ;
  5322. }
  5323. var prcpClsCd = ds_src.getColumn(sendRow, "prcpclscd" );
  5324. var prcpKindCd = ds_src.getColumn(sendRow, "prcpkindcd" );
  5325. var drugmthdspccd = ds_src.getColumn(sendRow, "drugmthdspccd" );
  5326. var prcpnm = utlf_transNullToEmpty(ds_src.getColumn(sendRow, "prcpnm" ));
  5327. var drugmastspec = ds_src.getColumn(sendRow, "drugmastspec" ) + "^";
  5328. var hsctflag = "N";
  5329. var cpchk = "";
  5330. var usge = "";
  5331. var prcpgenrflag = "";
  5332. usge = oTrgtObj.ds_root.getColumn(0, "usge");
  5333. cpchk = oTrgtObj.ds_root.getColumn(0, "cp" );
  5334. prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag" );
  5335. if ( usge == "prms" || usge == "direc" || usge == "home" ) {
  5336. prcpInptFlag = "02";
  5337. }
  5338. if ( prcpClsCd == "-" ) {
  5339. sysf_messageBox ( prcpnm + " 처방은 처방분류가 없어 처방등록을 하실 수 없습니다.", "E" );
  5340. return 0;
  5341. }
  5342. var iprcpqty = eval(ds_src.getColumn(sendRow, "prcpqty"));
  5343. var iprcptims = eval(ds_src.getColumn(sendRow, "prcptims"));
  5344. if ( ds_src.getColumn(sendRow, "tempcol18" ) == "MC" && (iprcpqty != 1 || iprcptims != 1 )) {
  5345. sysf_messageBox ( "[" + prcpnm + "] 전환데이터 연속검사처방은 처방복사 하실 수 없습니다. ( 수량:" + iprcpqty + ", 횟수:" + iprcptims + " )" , "E" );
  5346. return 0;
  5347. }
  5348. var addprcpchk = lf_getDsValue(oTrgtObj.ds_root, 0, "addprcp");
  5349. if ( addprcpchk == "Y" ){ //시행부서체크
  5350. //시행부서 처방은 마약불가
  5351. var spcldrug = lf_getArrayData ( drugmastspec, 0, 23, "^", "|" );
  5352. //20080721 마정민수정 김민선 선생님의 요청. 의사권한이 있는사람은 처방 가능.
  5353. if ( spcldrug == "M" ) {
  5354. var prcpauthflag = oTrgtObj.ds_init.getColumn(0, "prcpauthflag");
  5355. if (prcpauthflag != "3" ){
  5356. sysf_messageBox ( prcpnm + " 마약처방은 시행부서에서 의사만 등록이 가능한 처방입니다.", "E" );
  5357. return 0;
  5358. }
  5359. }
  5360. }
  5361. //20090302 마정민수정: Irradiation(LBT70010) 단독처방 불가
  5362. if ( ds_src.getColumn(sendRow, "prcpcd" ) == oTrgtObj.ds_initsrch_irrprcpcd.getColumn(0, "trgtcd")) {
  5363. sysf_messageBox ( prcpnm + "는 단독처방이 불가합니다. 수혈상세팝업의 Irr 체크기능을 통해 등록해 주십시오", "E" );
  5364. return 0;
  5365. }
  5366. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  5367. if (utlf_isNull(ds_src.getColumn(sendRow, "prcpvolunitnm"))) {
  5368. sysf_messageBox ( ds_src.getColumn(sendRow, "prcpnm") + " 처방의 용량단위가", "E014" );
  5369. return 0;
  5370. }
  5371. if (utlf_isNull(ds_src.getColumn(sendRow, "prcpqtyunitnm"))) {
  5372. sysf_messageBox ( ds_src.getColumn(sendRow, "prcpnm") + " 처방의 수량단위가", "E014" );
  5373. return 0;
  5374. }
  5375. }
  5376. //20090903 이윤정 추가: 응급 탭에서 선택된 환자의 경우 심야가산적용 자동 체크
  5377. var prcpgenrflag = oTrgtObj.ds_patflag.getColumn(0, "prcpgenrflag" );
  5378. if (prcpgenrflag == "E"){
  5379. if ( prcpClsCd == "H2" || prcpClsCd == "H4" ) {
  5380. ds_src.setColumn(sendRow, "nigtprcpflag","N" );
  5381. var nigtprcptm = oTrgtObj.ds_initsrch_nigtprcptm.getColumn(0, "trgtcd");
  5382. var nigtprcpsplit = nigtprcptm.split("|");
  5383. var nigtprcpstart = nigtprcpsplit[0];
  5384. var nigtprcpend = nigtprcpsplit[1];
  5385. var MyTime = utlf_getCurrentTime();
  5386. var realtime = MyTime.substr(0,4);
  5387. if ( nigtprcpstart < realtime || realtime < nigtprcpend){
  5388. ds_src.setColumn(sendRow, "nigtprcpflag","Y" );
  5389. }
  5390. }
  5391. }
  5392. //-- CP, 항암프로토콜일 경우는 클라이언트에서 품절약체크를 하지 않는다 --//
  5393. if( prcpInptFlag != "05" && prcpInptFlag != "06" && prcpInptFlag != "17" ){
  5394. if ( prcpClsCd == "A2" || prcpClsCd == "A4" || prcpClsCd == "A6" ) {
  5395. //항생제체크
  5396. var returnVal = lf_getHardCDList("Y", 233, 3); // 2010. 10. 26. 경북대는 CDSS 추천항생제를 사용하지 않음. 따라서 사용여부를 처방 하드코드 테이블로 설정할 수 있도록 함.
  5397. if (returnVal =="Y") {
  5398. if ( usge == "prcp" && prcpgenrflag != "O" && prcpClsCd == "A6") {
  5399. if ( lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" ) == "P" && lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "N" ) {
  5400. if ( objFlag == "child" ) {
  5401. if (oTrgtObj.lf_antiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  5402. return 0;
  5403. }
  5404. } else {
  5405. if (lf_antiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  5406. return 0;
  5407. }
  5408. }
  5409. }
  5410. }
  5411. //제한항생제체크
  5412. if ( usge == "prcp" && prcpgenrflag != "O" ) {
  5413. if ( lf_getArrayData ( drugmastspec + "^", 0, 16, "^", "|" ) == "Y" ) {
  5414. if ( objFlag == "child" ) {
  5415. if (oTrgtObj.lf_antiMicChk ( sendRow, "child", strSrc, prcpInptFlag ) == 0){
  5416. return 0;
  5417. }
  5418. } else {
  5419. if (lf_antiMicChk ( sendRow, "1", strSrc, prcpInptFlag ) == 0 ){
  5420. return 0;
  5421. }
  5422. }
  5423. }
  5424. }
  5425. }
  5426. //BY 문세희 20080930 END
  5427. //품절약 체크
  5428. if ( lf_getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) {
  5429. if ( objFlag == "child" ) {
  5430. oTrgtObj.lf_altDrug ( sendRow, "child", strSrc, prcpInptFlag );
  5431. } else {
  5432. lf_altDrug ( sendRow, "1", strSrc, prcpInptFlag );
  5433. }
  5434. return 0;
  5435. }
  5436. //20090528 마정민 추가. 6세미만 경구약 자동 powdflag전환 때문에 처방복사시 powdflag체크로직 추가. 단 전처방복사는제외.
  5437. var vAge = lf_getDsValue(oTrgtObj.ds_paminfo, 0, "age" );
  5438. if ( vAge < 6 && prcpClsCd == "A2" && prcpInptFlag != "01" ) {
  5439. if ( lf_getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "2" ) { //산제불가
  5440. if ( objFlag == "child" ) {
  5441. oTrgtObj.lf_altDrug ( sendRow, "child", strSrc, prcpInptFlag, "4" );
  5442. if ( oTrgtObj.frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5443. oTrgtObj.frmf_clearParameter ( "SPMMB10100_chkyn" );
  5444. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5445. }
  5446. } else {
  5447. lf_altDrug ( sendRow, "4", strSrc, prcpInptFlag );
  5448. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5449. frmf_clearParameter ( "SPMMB10100_chkyn" );
  5450. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5451. }
  5452. }
  5453. //20090602 배성미선생님 요청으로 산제불가 취소해도 복사되게 수정
  5454. } else if ( lf_getArrayData ( drugmastspec + "^", 0, 19, "^", "|" ) == "1" ) { //산제주의
  5455. if ( objFlag == "child" ) {
  5456. oTrgtObj.lf_altDrug ( sendRow, "child", strSrc, prcpInptFlag, "5" );
  5457. if ( oTrgtObj.frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5458. oTrgtObj.frmf_clearParameter ( "SPMMB10100_chkyn" );
  5459. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5460. }
  5461. } else {
  5462. lf_altDrug ( sendRow, "5", strSrc, prcpInptFlag );
  5463. if ( frmf_getParameter ( "SPMMB10100_chkyn" ) == "Y" ) {
  5464. frmf_clearParameter ( "SPMMB10100_chkyn" );
  5465. return 0; //대체약을 선택했다면 복사시키지 않는다.
  5466. }
  5467. }
  5468. }
  5469. }
  5470. }
  5471. //대체처방체크
  5472. var altcdinfo = ds_src.getColumn(sendRow, "tempcol16" );
  5473. var prcpinptflag = ds_src.getColumn(sendRow, "prcpinptflag" );
  5474. if ( altcdinfo.substring( 0, 1 ) != "X" && altcdinfo.substring( 0, 1 ) != "A" ) {
  5475. if(altcdinfo.substring( 0, 1 ) == "D") { // 수가 종료 처방 복사 불가 처리 2013.04.18 엄영만
  5476. if(prcpInptFlag == "02") {
  5477. sysf_messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사 할 수 없습니다.\n\n상단메뉴 기본정보관리->약속Set 메뉴에서 약속처방을 재구성 하시기 바랍니다.", "E999" );
  5478. } else {
  5479. sysf_messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  5480. }
  5481. return 0;
  5482. }
  5483. if (prcpinptflag !="35") { // 자가보유처방은 복사 가능 20100504 by LYJ
  5484. sysf_messageBox ( "[" + prcpnm + "]: 수가 또는 검사실 사용종료 되어 처방을 복사", "E001" );
  5485. return 0;
  5486. }
  5487. }
  5488. if (altcdinfo.substring( 0, 1 ) == "X" ) {
  5489. if ( objFlag == "child" ) {
  5490. oTrgtObj.lf_altPrcpCd ( sendRow, "child", strSrc, prcpInptFlag );
  5491. } else {
  5492. lf_altPrcpCd ( sendRow, "1", strSrc, prcpInptFlag );
  5493. }
  5494. return 0;
  5495. }
  5496. }
  5497. //-- CP, 항암프로토콜 처방의 품절약 체크 제외 끝 --//
  5498. if (!lf_prmsSaveCheck ( usge, prcpKindCd, prcpnm )) {
  5499. return 0;
  5500. }
  5501. if ( prcpInptFlag == "01" ) { //전회처방
  5502. //반환요청된 처방, D/C된 처방 모두 처방 복사 불가, CHC, 2009-08-03
  5503. //if ( ds_src.getColumn(sendRow, "prcphistcd" ) == "E" ) {
  5504. if ( ds_src.getColumn(sendRow, "prcphistcd" ) == "E" || ds_src.getColumn(sendRow, "prcphistcd" ) == "C" || ds_src.getColumn(sendRow, "prcphistcd" ) == "L") {
  5505. sysf_messageBox ( "반납처방은 처방복사", "E001" );
  5506. return 0;
  5507. }
  5508. //종속처방 자처방 복사 불가
  5509. var inclprcpno = ds_src.getColumn(sendRow, "inclprcpno" );
  5510. if ( !utlf_isNull(inclprcpno) && inclprcpno != "-" ) {
  5511. if ( eval(inclprcpno) > 0 ) {
  5512. if ( ds_src.getColumn(sendRow, "grupsnglflag" ) != "M" ) {
  5513. return 0;
  5514. }
  5515. }
  5516. }
  5517. //20080731: 마정민 수정 hsct 자처방 복사 불가
  5518. var hsctlnkno = ds_src.getColumn(sendRow, "hsctlnkno" );
  5519. if ( !utlf_isNull(hsctlnkno) && hsctlnkno != "-" ) {
  5520. if ( eval(hsctlnkno) > 0 ) {
  5521. if ( ds_src.getColumn(sendRow, "prcpsetcd" ) != "-" ) {
  5522. return 0;
  5523. }
  5524. }
  5525. }
  5526. }
  5527. if ( ds_src.getColumn(sendRow, "grupsnglflag" ) == "M" ) { //그룹코드 M을 찾아낸다. 처방검색일때만 풀린다.
  5528. var grupCond1 = ds_src.getColumn(sendRow, "prcpcd" );
  5529. var inclprcpno = "";
  5530. var grupCond3 = oTrgtObj.ds_init.getColumn(0, "prcpdd");
  5531. var grupCond4 = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  5532. if ( usge == "prcp" ) { //처방화면에만 종속처방이 적용된다.
  5533. inclprcpno = eval(oTrgtObj.ds_init.getColumn(0, "inclprcpno")) + 1; //종속처방번호를 받아온다.
  5534. }
  5535. lf_prcpGroupSrch ( ds_prcpgroup_prcplist, grupCond1, grupCond3, grupCond4 );
  5536. if ( utlf_isNull(grupSrc) ) grupSrc = "ds_prcpgroup_prcplist";
  5537. var ds_groupSrc = this.objects[grupSrc];
  5538. if ( ds_groupSrc.rowcount > 0 ) {
  5539. var ds_dest = oTrgtObj.objects[strDest];
  5540. ds_dest.insertRow(srchRow);
  5541. ds_dest.copyRow(srchRow, ds_src, sendRow);
  5542. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, "N", inclprcpno )) {
  5543. return 0;
  5544. }
  5545. srchRow ++;
  5546. if ( usge == "prcp" ) {
  5547. for (var i = 0; i < ds_groupSrc.rowcount; i++) {
  5548. ds_dest.insertRow(srchRow);
  5549. ds_dest.copyRow(srchRow, ds_groupSrc, i);
  5550. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, "N", inclprcpno )) {
  5551. return 0;
  5552. }
  5553. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5554. srchRow ++;
  5555. }
  5556. }
  5557. }
  5558. } else if ( ds_src.getColumn(sendRow, "grupsnglflag" ) == "J" ) { //그룹지시처방 J을 찾아낸다.
  5559. //조회조건
  5560. var direcCond1 = ds_src.getColumn(sendRow, "srchcondcnts" );
  5561. var direcCond5 = ds_src.getColumn(sendRow, "prcpcd" );
  5562. var direcCond3 = "";
  5563. var direcCond4 = "";
  5564. if ( prcpClsCd == "04" ) {
  5565. hsctflag = "Y";
  5566. }
  5567. direcCond3 = oTrgtObj.ds_init.getColumn(0, "prcpdd" );
  5568. direcCond4 = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  5569. lf_prcpDirecSrch ( direcCond1, direcCond3, direcCond4, direcCond5 );
  5570. if ( utlf_isNull(direcSrc) ) direcSrc = "ds_prcpdirec_prcplist";
  5571. var ds_direcSrc = this.objects[direcSrc];
  5572. if ( ds_direcSrc.rowcount > 0 ){ //그룹지시처방 J는 종속하는 수가 코드가 있을 때만 추가.
  5573. //HSCT 모코드는 HSCTTEMPFLAG 가 N이다.
  5574. var ds_dest = oTrgtObj.objects[strDest];
  5575. ds_dest.insertRow(srchRow);
  5576. ds_dest.copyRow(srchRow, ds_direcSrc, sendRow);
  5577. //종속처방번호 Setting ( hsctlnkno )
  5578. var hsctlnkno = eval( oTrgtObj.ds_init.getColumn(0, "hsctlnkno" )) + 1;
  5579. oTrgtObj.ds_init.setColumn(0, "hsctlnkno", hsctlnkno );
  5580. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, "M" )) {
  5581. return 0;
  5582. }
  5583. //CP 약속셋 생성 시에는 자코드가 풀리면 안된다. CP배치를 통해 실처방 저장시 풀린다! (2008.01.22)
  5584. if( oTrgtObj.ds_root.getColumn(0, "cp") == "S" || ds_root.getColumn(0, "cp") == "S" ){
  5585. return;
  5586. }
  5587. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5588. srchRow ++;
  5589. for (var k = 0; k < ds_direcSrc.rowcount; k++) {
  5590. ds_dest.insertRow(srchRow);
  5591. ds_dest.copyRow(srchRow, ds_direcSrc, k);
  5592. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag, hsctflag )) {
  5593. return 0;
  5594. }
  5595. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5596. srchRow ++;
  5597. }
  5598. }
  5599. } else if ( (prcpClsCd == "B2" || prcpClsCd == "B4" || prcpClsCd == "B6") && (lf_getArrayData (drugmastspec, 0, 2, "^", "|" ) == "0" || lf_getArrayData (drugmastspec, 0, 2, "^", "|" ) == "-")){
  5600. //검사대분류유형(testlrgkind) 그룹: 0, 1
  5601. //-일 때는 검체와 상관없는 그룹코드
  5602. var grupCond1 = ds_src.getColumn(sendRow, "prcpcd" );
  5603. var grupCond3 = "";
  5604. var grupCond4 = "";
  5605. var popflag = "group"
  5606. if ( objFlag == "child" ) {
  5607. popflag = "child";
  5608. }
  5609. grupCond3 = oTrgtObj.ds_init.getColumn(0, "prcpdd" );
  5610. grupCond4 = oTrgtObj.ds_paminfo.getColumn(0, "insukind");
  5611. //구수가코드일 경우
  5612. if ( oldprcpflag == "Y" ) {
  5613. popflag = "oldprcp";
  5614. }
  5615. var drugmthdspccd = ds_src.getColumn(sendRow, "drugmthdspccd" );
  5616. var spccd = "";
  5617. var spcnm = "";
  5618. fGetSpc ( sendRow, popflag, objFlag )
  5619. if ( drugmthdspccd == "998" ) {
  5620. if ( frmf_getParameter ("SPMMO03500_rtn_useyn") == "Y" ) {
  5621. spccd = frmf_getParameter ( "SPMMO03500_rtn_spccd" );
  5622. spcnm = frmf_getParameter ( "SPMMO03500_rtn_spcscrnnm" );
  5623. }
  5624. frmf_clearParameter ( "SPMMO03500_rtn_useyn" );
  5625. frmf_clearParameter ( "SPMMO03500_rtn_spccd" );
  5626. frmf_clearParameter ( "SPMMO03500_rtn_spcscrnnm" );
  5627. } else if ( drugmthdspccd == "999" ) {
  5628. if ( frmf_getParameter ("SPMMO03400_rtn_useyn") == "Y" ) {
  5629. spccd = frmf_getParameter ( "SPMMO03400_rtn_spccd" );
  5630. spcnm = frmf_getParameter ("SPMMO03400_rtn_spcscrnnm" );
  5631. }
  5632. frmf_clearParameter ( "SPMMO03400_rtn_useyn" );
  5633. frmf_clearParameter ( "SPMMO03400_rtn_spccd" );
  5634. frmf_clearParameter ( "SPMMO03400_rtn_spcscrnnm" );
  5635. } else { //팝업이 뜨지 않을 때는 본체의 검체코드로 검색한다.
  5636. spccd = drugmthdspccd;
  5637. spcnm = ds_src.getColumn(sendRow, "drugmthdspccdnm" );
  5638. }
  5639. lf_prcpGroupSrch ( ds_prcpgroup_prcplist, grupCond1, grupCond3, grupCond4, spccd, lf_getArrayData (drugmastspec, 0, 2, "^", "|" ), "getLisPrcpGroupInfo" );
  5640. var ds_dest = oTrgtObj.objects[strDest];
  5641. if ( utlf_isNull(grupSrc) ) grupSrc = "ds_prcpgroup_prcplist";
  5642. var ds_grupSrc = this.objects[grupSrc];
  5643. for (var i = 0; i < ds_grupSrc.rowcount; i++) {
  5644. ds_dest.insertRow(srchRow);
  5645. ds_dest.copyRow(srchRow, ds_grupSrc, i);
  5646. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag )) {
  5647. return 0;
  5648. }
  5649. if (!utlf_isNull(spccd)) {
  5650. if ( lfgetArrayData (drugmastspec, 0, 2, "^", "|" ) != "-" ) {
  5651. oTrgtObj.ds_main_prcplist.setColumn(srchRow, "drugmthdspccd", spccd );
  5652. oTrgtObj.ds_main_prcplist.setColumn(srchRow, "drugmthdspccdnm", spcnm );
  5653. }
  5654. }
  5655. srchRow ++;
  5656. }
  5657. } else { //그룹코드 M, J 가 아닐 경우
  5658. var ds_dest = oTrgtObj.objects[strDest];
  5659. ds_dest.insertRow(srchRow);
  5660. ds_dest.copyRow(srchRow, ds_src, sendRow);
  5661. //전처방 때문에 duplicate => addPrcpSetValue 하는 것으로 수정
  5662. //먼저 set 하면 전처방 화면 내용이 수정되고 그로인해 처방키 초기화로 인해 D/C 시 에러
  5663. if (!oTrgtObj.lf_addPrcpSetValue ( "main", strDest, srchRow, prcpInptFlag )) {
  5664. return 0;
  5665. }
  5666. srchRow = oTrgtObj.addPrcpPop (srchRow, usge, prcpClsCd, srchRow );
  5667. srchRow ++;
  5668. }
  5669. //model.addLog(" ***************** End Of addPrcpDetl()");
  5670. return srchRow; //검색 row 값을 넘겨준다.
  5671. }
  5672. /***************************************************************************************************
  5673. * Function : lf_addPrcpSetValue
  5674. * Description : 처방main에 넘긴 후에 기본값을 setting한다.
  5675. * Argument : objFlag => child or ...
  5676. * : strSrc => setting할 source node
  5677. * : sendRow => setting할 row
  5678. * : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  5679. * : hsctflag => hsct 인지 표시
  5680. * : inclprcpcd => 종속처방코드
  5681. * return type : true, false
  5682. * Creator :
  5683. * 변환OK
  5684. ***************************************************************************************************/
  5685. function lf_addPrcpSetValue(objFlag, strSrc , sendRow, prcpInptFlag, hsctflag, inclprcpno) {
  5686. var oTrgtObj = lf_getFormObject(objFlag);
  5687. oTrgtObj.reqSetMonitoringLog("addPrcpSetValue", "WEB", oTrgtObj.frmf_getScreenID(), objFlag, prcpInptFlag); // 2017.12.20 사용여부를 체크 하기 위해 추가 엄영만
  5688. var ds_src = oTrgtObj.objects[strSrc];
  5689. var prcpdd = ""; //처방일
  5690. var prcpkindcd = ""; //처방종류변수
  5691. var pamInfoNode = "/root/paminfo/list";
  5692. var pid = ""; //환자번호
  5693. var indd = ""; //진료일자
  5694. var cretno = ""; //생성번호
  5695. var orddeptcd = ""; //담당부서
  5696. var orddrid = ""; //담당교수
  5697. var prcpgenrflag = ""; //외래입원구분
  5698. var prcpclscd = utlf_transNullToEmpty(ds_src.getColumn(sendRow, "prcpclscd" ));
  5699. var orddeptcd = "";
  5700. var org_prcpInptFlag = prcpInptFlag;
  5701. if ( utlf_isNull(prcpInptFlag)){
  5702. prcpInptFlag = ds_src.getColumn(sendRow, "prcpinptflag" );
  5703. }
  5704. if( (org_prcpInptFlag != "05" || (org_prcpInptFlag == "05" && ds_src.getColumn(sendRow, "prcpinptflag") == "00")) && ds_src.getColumn(sendRow, "prcpinptflag") != "35"){ //20100426 자가보유약일 때 prcpinptflag 35 로 지정한다 LYJ
  5705. ds_src.setColumn(sendRow, "prcpinptflag", prcpInptFlag ); //처방입력구분
  5706. prcpInptFlag = org_prcpInptFlag;
  5707. }
  5708. ds_src.setColumn(sendRow, "prcphistcd", "O" ); //처방이력코드:O
  5709. ds_src.setColumn(sendRow, "prcpsignflag", "2" ); //처방이력구분:2
  5710. ds_src.setColumn(sendRow, "prcprefseq", "0" ); //처방순서(전처방에 넘어올때도 있기때문에 0으로 클리어)
  5711. ds_src.setColumn(sendRow, "etcprcpflag", "-" ); //디폴트세팅.
  5712. //-- CP, 항암프로토콜일 경우 추가되는 saveflaginfo 값 셋팅 --//
  5713. if( prcpInptFlag == "05" || prcpInptFlag == "06" ){
  5714. if( ds_src.getColumn(sendRow, "prcpcd") != "000000000033" ){
  5715. //처방명의 구분이 2개가 중복되어 저장되는 문제 -> 원처방명을 저장, 공통 지시처방의 원처방명은 "전달사항" 이므로, 공통 지시처방만 제외
  5716. ds_src.setColumn(sendRow, "prcpnm", ds_src.getColumn(sendRow, "orgprcpnm") ); //makePrcpNm() 때문에 prcpnm->orgprcpnm
  5717. }
  5718. if( prcpInptFlag == "06" ){
  5719. ds_save_saveflaginfo.setColumn(0, "cpgappno", appNo_SMMMO00110 ); //CP처방 or 프로토콜처방 no
  5720. ds_save_saveflaginfo.setColumn(0, "prtlprcpstatus", prtlprcpstatus_SMMMO00110 ); //CP처방 or 프로토콜처방 저장 status
  5721. ds_save_saveflaginfo.setColumn(0, "prtlflag", "10" ); //프로토콜구분
  5722. }
  5723. }else{
  5724. ds_src.setColumn(sendRow, "status", "I" );
  5725. }
  5726. //-- 셋팅 끝 --//
  5727. var drugmastspec = ds_src.getColumn(sendRow, "drugmastspec") + "^";
  5728. var usge = ds_root.getColumn(0, "usge" );
  5729. var spcldrug = lf_getArrayData ( drugmastspec + "^", 0, 23, "^", "|" );
  5730. //가정간호일때 시작일,종료일 바꿔준다.
  5731. if (usge == "home") {
  5732. ds_src.setColumn(sendRow, "tempcol6", ds_init.getColumn(0, "prcpfromdd")); //시작일자
  5733. ds_src.setColumn(sendRow, "tempcol7", ds_init.getColumn(0, "prcptodd")); //종료일자
  5734. //20080825 마정민 수정 가정간호처방 주사일 경우 자동으로 home 체크. 단 마약이 아닐경우. TPN일 경우 추가 20081013 by Moonsh
  5735. if ( prcpclscd == "A6" && spcldrug != "M" && lf_getArrayData (drugmastspec , 0, 14, "^", "|" ) == "Y" ) {
  5736. ds_src.setColumn(sendRow, "selfprcpflag","Y"); //종료일자
  5737. }
  5738. }
  5739. ds_src.setColumn(sendRow, "prcpauthflag", lf_getDsValue(ds_init, 0, "prcpauthflag" )); //처방권한구분
  5740. //수술예약번호 setting
  5741. if( !utlf_isNull (ds_operation.getColumn(0, "oprsrvno"))){
  5742. ds_src.setColumn(sendRow, "oprsrvno", ds_operation.getColumn(0, "oprsrvno"));
  5743. //by sonjy 20091120 심야가산 check 마취료처방 추가
  5744. if ( prcpclscd == "H2" || ds_src.getColumn(sendRow, "tempcol2" ) == "13|01|00" ) { //수술처방인경우
  5745. //응급으로 수술예약정보가 있다면 erprcpflag를 Y로 setting 한다.
  5746. var opflagcd = ds_operation.getColumn(0, "opflagcd"); // opflagcd 1:정규, 2:응급, 3:추가
  5747. if(opflagcd == "2"){
  5748. //model.setValue("/root/main/prcp/prcplist/erprcpflag", "Y");
  5749. ds_src.setColumn(sendRow, "erprcpflag", "Y");
  5750. }
  5751. //수술시작시간이 오후 5시 이후에는 야간으로 체크한다.
  5752. var opfromtmcd = ds_operation.getColumn(0, "opfromtmcd"); //opfromtmcd 수술시작시간
  5753. //if(eval(opfromtmcd) > 170000 ) { //야간 시간 기준을 물어볼 것
  5754. //수술및 마취료처방시 심야기준 08시이전, 18시 이후 by sonjy 20081211
  5755. if(eval(opfromtmcd) >= 180000 || eval(opfromtmcd) < 80000 ) {
  5756. ds_src.setColumn(sendRow, "nigtprcpflag", "Y");
  5757. }
  5758. //수술액팅일자 = 확정수술일자
  5759. ds_src.setColumn(sendRow, "tempcol22", ds_operation.getColumn(0, "opcnfmdd"));
  5760. }
  5761. } else {
  5762. // CP 에서는 수동으로 수술예약번호를 mapping 한다.
  5763. if( ds_root.getColumn(0, "cp") != "Y" ){
  5764. ds_src.setColumn(sendRow, "oprsrvno", "0");
  5765. }else{
  5766. if( utlf_isNull (ds_src.getColumn(sendRow, "oprsrvno")))
  5767. ds_src.setColumn(sendRow, "oprsrvno", "0" );
  5768. }
  5769. }
  5770. if ( ds_paminfo.rowcount == 0 ){
  5771. sysf_messageBox ( "환자정보가", "E014" );
  5772. return false;
  5773. }
  5774. prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag");
  5775. pid = lf_getDsValue(ds_paminfo, 0, "pid");
  5776. orddeptcd = lf_getDsValue(ds_paminfo, 0, "orddeptcd");
  5777. //by sonjy 2008-08-25 건진일 경우 check추가.
  5778. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  5779. indd = lf_getDsValue(ds_paminfo, 0, "orddd");
  5780. orddrid = lf_getDsValue(ds_paminfo, 0, "orddrid");
  5781. } else {
  5782. indd = lf_getDsValue(ds_paminfo, 0, "indd");
  5783. orddrid = lf_getDsValue(ds_paminfo, 0, "medispclid");
  5784. }
  5785. cretno = lf_getDsValue(ds_paminfo, 0, "cretno");
  5786. orddeptcd = lf_getDsValue(ds_paminfo, 0, "orddeptcd");
  5787. //2011.11.07 엄영만 선택진료여부 및 선택진료의사 셋팅
  5788. if (prcpclscd != "D2" || usge != "prcp") { // 처방시에 병리처방은 의뢰지 팝업후 검체코드설정되면 선택의사 설정 함.(의뢰지 작성후 팝업 되도록) 2011.11.25 엄영만.
  5789. lf_setPrcpSpecValue(strSrc, sendRow, prcpInptFlag);
  5790. }
  5791. //-- CP,항암프로토콜일 경우, 처방일과 처방종류가 일률적으로 입력되지 않는다 --//
  5792. if( prcpInptFlag != "05" && prcpInptFlag != "06" ){
  5793. prcpdd = ds_init.getColumn(0, "prcpdd"); //처방일
  5794. prcpkindcd = lf_getDsValue(ds_init, 0, "prcpkindcd"); //처방종류(정규,추가...)
  5795. //외래이고 약속 set/전처방 copy시 입원전 검사일 경우 prcpkindcd를 20으로 초기화하지 않는다.
  5796. //by sonjy 김민선 선생님 요청사항 20080925
  5797. if( prcpgenrflag == "O" &&
  5798. (ds_src.getColumn(sendRow, "prcpkindcd") == "90" ||
  5799. ds_src.getColumn(sendRow, "prcpkindcd") == "95" ) ){
  5800. prcpkindcd = ds_src.getColumn(sendRow, "prcpkindcd") ;
  5801. }
  5802. }else{
  5803. //JJE-
  5804. prcpdd = ds_src.getColumn(sendRow, "prcpdd");
  5805. prcpkindcd = ds_src.getColumn(sendRow, "prcpkindcd");
  5806. if(utlf_isNull(prcpdd)){
  5807. prcpdd = ds_init.getColumn(0, "prcpdd");
  5808. }
  5809. //JJE root/init/prcpdd 를 해당 미래일자로 변경... (2008.09.11)
  5810. if( prcpdd != ds_init.getColumn(0, "prcpdd") && prcpdd > ds_init.getColumn(0, "prcpdd") ){
  5811. ds_init.setColumn(0, "prcpdd", prcpdd);
  5812. }
  5813. var prcpsetcd = ds_src.getColumn(sendRow, "prcpsetcd");
  5814. if(prcpsetcd != "-"){
  5815. //풀린 자코드에 처방종류 및 처방입력구분을 모코드와 동일하게 넣어줌
  5816. var prcpddNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "prcpdd");
  5817. var prcpkindcdNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "prcpkindcd");
  5818. var etclnkspecNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "etclnkspec");
  5819. var prcpinptflagNode = ds_main_prcplist.lookup("prcpcd", prcpsetcd, "prcpinptflag");
  5820. if( !utlf_isNull(prcpddNode) ){
  5821. prcpdd = prcpddNode;
  5822. }
  5823. if( !utlf_isNull(prcpkindcdNode) ) prcpkindcd = prcpkindcdNode;
  5824. if( !utlf_isNull(etclnkspecNode) ){
  5825. ds_src.setColumn(sendRow, "etclnkspec", etclnkspecNode);
  5826. }
  5827. if( !utlf_isNull(prcpinptflagNode) ){
  5828. ds_src.setColumn(sendRow, "prcpinptflag", prcpinptflagNode);
  5829. }
  5830. }
  5831. ds_src.setColumn(sendRow, "prcphopedd", prcpdd);
  5832. //-JJE
  5833. }
  5834. //마취기록화면에서 처방화면을 띄우면
  5835. //마취처방일 경우 필수입력구분이 1이면 수술시간과, 수술구분을 넣어준다. 넣어지는 기준은 마취처방상세팝업과 동일하다.
  5836. if ( ds_anst.getColumn(0, "paramyn") == "Y" ) {
  5837. ds_src.setColumn(sendRow, "prcpinptflag", "27");
  5838. if ( prcpclscd == "I2" || prcpclscd == "I4"){ //마취
  5839. if ( ds_src.getColumn(sendRow, "prcpessninptflag") == "1" ) { // 필수입력구분이 1
  5840. var earncls = ds_src.getColumn(sendRow, "tempcol2");
  5841. if ( earncls != "04|01|00" && earncls != "05|01|00" ) { //마취구분
  5842. ds_src.setColumn(sendRow, "opansflagcd", ds_anst.getColumn(0, "opansflagcd"));
  5843. }
  5844. ds_src.setColumn(sendRow, "ansttm", ds_anst.getColumn(0, "ansttm"));//마취시간
  5845. ds_src.setColumn(sendRow, "clinccmtcnts", ds_anst.getColumn(0, "anstfromdt") + "|" + ds_anst.getColumn(0, "ansttodt"));
  5846. }
  5847. }
  5848. } else {
  5849. if ( prcpclscd == "I2" || prcpclscd == "I4" ){ //마취
  5850. ds_src.setColumn(sendRow, "clinccmtcnts", "-");
  5851. }
  5852. }
  5853. ds_src.setColumn(sendRow, "prcphopedd", prcpdd); //처방희망일자
  5854. //전처방이나 약속처방에서 시행부서가 현재 존재 하는 부서인지 체크 2012.10.29 엄영만
  5855. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  5856. var bfprcpexecdeptcd = ds_src.getColumn(sendRow, "prcpexecdeptcd");
  5857. var CheckExecdeptcdNode = oTrgtObj.ds_orddept.findRow("deptcd", bfprcpexecdeptcd);
  5858. if(CheckExecdeptcdNode == -1) {
  5859. ds_src.setColumn(sendRow, "prcpexecdeptcd", "-");
  5860. }
  5861. }
  5862. //전처방 clear
  5863. if ( prcpInptFlag == "01" ) {
  5864. // 전처방 복사시 초기화해야 할 것 ( PAMPKSpec, PrcpKindCd 등은 처방 복사시 다시 setting 해줌 )
  5865. if ( prcpclscd == "B2" ) { // 진검 전처방에서 응급 체크되어 있는 것은 복사 시에도 응급 체크되어지도록 요청 - 20081127 by MoonSH
  5866. var erprcpflag = ds_src.getColumn(sendRow, "erprcpflag");
  5867. if ( erprcpflag == "Y" ) {
  5868. ds_src.setColumn(sendRow, "erprcpflag", "Y");
  5869. } else {
  5870. ds_src.setColumn(sendRow, "erprcpflag", "N");
  5871. }
  5872. } else {
  5873. ds_src.setColumn(sendRow, "erprcpflag", "N"); //2008-01-28 약국요청 응급은 복사되면 안됨
  5874. }
  5875. ds_src.setColumn(sendRow, "rgstdt", ""); //rgstdt: 등록일시
  5876. ds_src.setColumn(sendRow, "rgstridnm", ""); //rgstridnm: 등록자명
  5877. ds_src.setColumn(sendRow, "tempprcpflag", "N"); //tempprcpflag: 임시처방구분
  5878. ds_src.setColumn(sendRow, "etcprcpresncd", "-"); //etcprcpresncd: 응급의학관리료 사유 (코드정의서 M0012 참조), 수혈반납 및 폐기사유코드 (코드정의서 M0037, M0038 참조), 재활처방 마감일자
  5879. ds_src.setColumn(sendRow, "ordreqlnkno", "0"); //ordreqlnkno: 진료의뢰연결번호
  5880. ds_src.setColumn(sendRow, "testreqlnkno", "0"); //testreqlnkno: 검사의뢰연결번호
  5881. ds_src.setColumn(sendRow, "prcplnkdd", "00000000"); //prcplnkdd: 임시처방에 대한 연계 일자
  5882. ds_src.setColumn(sendRow, "prcplnkno", "0"); //prcplnkno: 임시처방에 대한 연계 번호
  5883. ds_src.setColumn(sendRow, "prtlno", "0"); //prtlno: 프로토콜SET에 대한 코드로 일련번호 형태로 관리
  5884. ds_src.setColumn(sendRow, "contprcpspec", "-"); //contprcpspec: 연속처방내역
  5885. ds_src.setColumn(sendRow, "etclnkspec", "-"); //etclnkspec: 항암프로토콜번호|CP번호
  5886. ds_src.setColumn(sendRow, "tempcol6", ""); //전처방 화면 display clear
  5887. ds_src.setColumn(sendRow, "tempcol7", ""); //전처방 화면 display clear
  5888. var antibiotics = lf_getArrayData ( ds_src.getColumn(sendRow, "tempcol8") + "^", 0, 0, "^", "|" );
  5889. if ( antibiotics != "antibiotics" ){ //20081020: 마정민수정. 전처방에 항생제 값이 setting 되어 있다면 클리어 시키지 않는다.
  5890. ds_src.setColumn(sendRow, "tempcol8", ""); //전처방 화면 display clear
  5891. }
  5892. ds_src.setColumn(sendRow, "tempcol9", ""); //전처방 화면 display clear
  5893. ds_src.setColumn(sendRow, "tempcol12", ""); //전처방 화면 display clear
  5894. ds_src.setColumn(sendRow, "tempcol13", ""); //전처방 화면 display clear
  5895. ds_src.setColumn(sendRow, "tempcol14", ""); //전처방 화면 display clear
  5896. ds_src.setColumn(sendRow, "tempcol15", ""); //전처방 화면 display clear
  5897. ds_src.setColumn(sendRow, "drprcpetc1", ""); //건진 SET처방
  5898. ds_src.setColumn(sendRow, "drprcpetc3", ""); //OCR출력정보
  5899. ds_src.setColumn(sendRow, "drprcpetc4", ""); //귀가유치용물품여부
  5900. ds_src.setColumn(sendRow, "drprcpetc5", ""); //multi-day no
  5901. ds_src.setColumn(sendRow, "druglnkno", "0");
  5902. ds_src.setColumn(sendRow, "drgacptflag", "-"); // DRG인정 전처방 복사시 clear
  5903. if ( prcpclscd == "B2" || prcpclscd == "B6") {
  5904. var contyn = lf_getArrayData ( drugmastspec, 0, 5, "^", "|" );
  5905. if ( contyn == "Y" ) {
  5906. var conttestintvlflag = ds_src.getColumn(sendRow, "diagtestconttestintvlflag");
  5907. if ( conttestintvlflag == "N" ) {
  5908. ds_src.setColumn(sendRow, "diagtestconttestcdspec", "-");
  5909. ds_src.setColumn(sendRow, "drugrateqty", "-");
  5910. ds_src.setColumn(sendRow, "diagtestconttestorgtims", "1");
  5911. } else {
  5912. var cdnm = ds_M0545.lookup("cdid", conttestintvlflag, "cdnm");
  5913. var diagtestconttestbasetm = ds_src.getColumn(sendRow, "diagtestconttestbasetm");
  5914. ds_src.setColumn(sendRow, "diagtestconttestcdspec", diagtestconttestbasetm + cdnm);
  5915. ds_src.setColumn(sendRow, "drugrateqty", diagtestconttestbasetm);
  5916. ds_src.setColumn(sendRow, "diagtestconttestorgtims", "1");
  5917. }
  5918. }
  5919. }
  5920. }
  5921. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 --//
  5922. else if( prcpInptFlag == "05" ){
  5923. //Hsct 처방일 경우, 조회해 온 자코드들에 값을 setting
  5924. ds_src.setColumn(sendRow, "status", "I");
  5925. //model.setValue(strSrc + "[" + sendRow + "]/prcphopedd", model.getValue ( "/root/init/prcpdd" )); //JJE(-)
  5926. //cp는 이미 인스턴스에 값이 들어있음
  5927. if( utlf_isNull(ds_src.getColumn(sendRow, "etclnkspec")) ){
  5928. ds_src.setColumn(sendRow, "etclnkspec", "-"); //CP처방 or 프로토콜처방 no
  5929. }
  5930. }
  5931. else if( prcpInptFlag == "06" ){
  5932. //항암은 이미 인스턴스에 값이 들어있음
  5933. ds_src.setColumn(sendRow, "etclnkspec", etclnkspecValue_SMMMO00110); //CP처방 or 프로토콜처방 no
  5934. //model.makeValue ( strSrc + "[" + sendRow + "]/cpno", ds_src.getColumn(sendRow, "prtldg") ); //CpNo 에 프로토콜 차수 저장
  5935. }
  5936. else if( prcpInptFlag == "07" ){ //임상시험 프로토콜에서 불러올때.
  5937. if(prcpgenrflag == "I" || prcpgenrflag == "D"){
  5938. ds_src.setColumn(sendRow, "subcretno", ds_init.getColumn(0, "subjsubcretno")); // 임상프로토콜에서 처방시 임상유형의 cretno를 subcretno로 세팅
  5939. }
  5940. }
  5941. //-- CP,항암프로토콜일 경우 etclnkspec 컬럼 값 셋팅 끝 --//
  5942. ds_src.setColumn(sendRow, "inclprcpcd", "-"); //종속처방
  5943. ds_src.setColumn(sendRow, "inclprcpno", "0");//종속처방번호
  5944. //20090518 마정민수정. 입원일 경우 전처방, 약속처방 복사처방의 선처치를 제외한다.
  5945. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  5946. if ( prcpInptFlag == "01" || prcpInptFlag == "02" ) {
  5947. if ( ds_src.getColumn(sendRow, "precureprcpflag") == "Y" ) {
  5948. if( prcpclscd.substring(0,1) == "A" || prcpclscd == "M2" ) ds_src.setColumn(sendRow, "precureprcpflag", "N");
  5949. }
  5950. }
  5951. }
  5952. if ( prcpclscd == "F2" && prcpgenrflag == "O") {
  5953. ds_src.setColumn(sendRow, "rehbprcpenddd", prcpdd); //재활마감일
  5954. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  5955. // 원내처방사유 SETTING
  5956. lf_hosinPrcpResncdSed( objFlag, strSrc, sendRow );
  5957. //2010. 12. 29 김영학 약처방 원외일 경우 시행부서가 셋팅되어 있지 않으면 기본 외래약국으로 셋팅해준다.
  5958. if( prcpgenrflag != "O" && prcpgenrflag != "S" ) {
  5959. if ( ds_src.getColumn(sendRow, "hosinhosoutflag") == "O"
  5960. && (ds_src.getColumn(sendRow, "prcpexecdeptcd" ) == "-" || ds_src.getColumn(sendRow, "prcpexecdeptcd" ) == "D")) {
  5961. ds_src.setColumn(sendRow, "prcpexecdeptcd", lf_getHardCDList("Y", 260, 3))
  5962. }
  5963. }
  5964. //AST 검사 체크
  5965. var astyn = lf_getArrayData ( drugmastspec, 0, 22, "^", "|" );
  5966. if ( astyn == "Y" ) {
  5967. ds_src.setColumn(sendRow, "asttestflag", "Y");
  5968. }
  5969. //응급 flag 가 Y인 경우는 1회만 가능
  5970. if ( ds_src.getColumn(sendRow, "erprcpflag") == "Y" ||
  5971. ds_src.getColumn(sendRow, "prnprcpflag") == "Y") {
  5972. var prcptims = ds_src.getColumn(sendRow, "prcptims");
  5973. if ( prcptims != "1" ) {
  5974. //1이 아닌 경우는 1로 바꿔주고 경구약인 경우는 용법도 바꿔준다.
  5975. ds_src.setColumn(sendRow, "prcptims", "1");
  5976. var prcpqty = ds_src.getColumn(sendRow, "prcpqty");
  5977. var prcpvol = ds_src.getColumn(sendRow, "prcpvol");
  5978. if ( prcpclscd == "A2" ) {
  5979. fBaseMthd(sendRow);
  5980. }
  5981. if ( prcpclscd == "A2" || prcpclscd == "A4" ) {
  5982. if ( prcptims != "0" ) {
  5983. prcpqty = (eval(prcpqty)*1000/eval(prcptims));
  5984. prcpvol = (eval(prcpvol)*1000/eval(prcptims));
  5985. ds_src.setColumn(sendRow, "prcpqty", Math.round ( prcpqty ) / 1000);
  5986. ds_src.setColumn(sendRow, "prcpvol", Math.round ( prcpvol ) / 1000);
  5987. }
  5988. }
  5989. }
  5990. }
  5991. //by sonjy 20081216 외래일경우 전처방/약속처방에서 copy시 약/주사에 한해 수행부서를 마스터의 부서로 초기화
  5992. //영수증의 환자 가야할곳이 병동약국으로 찍혀 나오는 오류 때문.
  5993. //20081230 마정민수정 변환조건을 병동약국으로 축소함
  5994. if( ds_src.getColumn(sendRow, "prcpexecdeptcd") == "3240300000" && prcpgenrflag == "O" && ( prcpInptFlag == "01" || prcpInptFlag == "02" )) {
  5995. var sTmp23 = ds_src.getColumn(sendRow, "tempcol23");
  5996. if( !isNull(sTmp23) && sTmp23 != "-" ){
  5997. ds_src.setColumn(sendRow, "prcpexecdeptcd", sTmp23);
  5998. }
  5999. }
  6000. } else if ( prcpclscd == "03" ) { //보호자식일 때는 procerdietflag 을 Y로 바꿈
  6001. if ( ds_src.getColumn(sendRow, "prcpcd") == "Q4131004" ) {
  6002. ds_src.setColumn(sendRow, "procerdietflag", "Y");
  6003. }
  6004. } else if ( prcpclscd == "B4" ){
  6005. if ( prcpgenrflag == "O" ) {
  6006. ds_src.setColumn(sendRow, "prepprcpflag", "N");
  6007. } else {
  6008. ds_src.setColumn(sendRow, "prepprcpflag", "Y");
  6009. }
  6010. }
  6011. // hsct 체크
  6012. if ( hsctflag == "Y" ) {
  6013. ds_src.setColumn(sendRow, "hsctlnkno", ds_init.getColumn(0, "hsctlnkno")); //HSCT
  6014. ds_src.setColumn(sendRow, "hscttempprcpflag", "Y"); //HSCT
  6015. } else if ( hsctflag == "M" ){
  6016. ds_src.setColumn(sendRow, "hsctlnkno", ds_init.getColumn(0, "hsctlnkno")); //HSCT
  6017. ds_src.setColumn(sendRow, "hscttempprcpflag", "N"); //HSCT
  6018. }
  6019. if ( !utlf_isNull(inclprcpno) && inclprcpno != "0" ) { //종속처방 처리
  6020. var prcpcd = ds_src.getColumn(sendRow, "prcpcd" );
  6021. //initsrch에서 가져온 종속처방 instance에 값이 있으면 종속처방 코드와 번호를 박아준다.
  6022. var prcpsetcd = ds_src.getColumn(sendRow, "prcpsetcd" );
  6023. var findRow = ds_initsrch_inclprcpcnts.findRowExpr("snglcd == '" + prcpcd + "' && calcscorcdgrup == '" + prcpsetcd + "'");
  6024. var inclprcpcd = ds_initsrch_inclprcpcnts.getColumn(findRow, "inclprcpcd");
  6025. var calcscorcdgrup = "";
  6026. if ( utlf_isNull(inclprcpcd)) {
  6027. //본체에도 코드를 박아준다.
  6028. calcscorcdgrup = ds_initsrch_inclprcpcnts.lookup("calcscorcdgrup", prcpcd, "inclprcpcd"); // GROUP 처방
  6029. } else {
  6030. if ( prcpgenrflag == "O" ) {
  6031. //외래일경우 약, 주사 에 원내처방사유 검사 수술처리에 사용
  6032. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ){
  6033. ds_src.setColumn(sendRow, "hosinhosoutflag", "I");//원내
  6034. ds_src.setColumn(sendRow, "hosinprcpresncd", "55");//원내처방사유(원내처방사유 검사 수술처리에 사용)
  6035. }
  6036. }
  6037. }
  6038. if ( !utlf_isNull(inclprcpcd) || !utlf_isNull(calcscorcdgrup)) {
  6039. ds_src.setColumn(sendRow, "inclprcpno", inclprcpno ); //종속처방번호
  6040. if ( utlf_isNull(inclprcpcd)){
  6041. ds_src.setColumn(sendRow, "inclprcpcd", calcscorcdgrup ); //종속처방
  6042. } else {
  6043. ds_src.setColumn(sendRow, "inclprcpcd", inclprcpcd ); //종속처방
  6044. }
  6045. ds_init.setColumn(0, "inclprcpno", inclprcpno);
  6046. var remainder = inclprcpno % 2;
  6047. // "child 로 구분 하는데 TF소스가 둘다 model.setValue 이다(opener.model.setValue 아님) 확인필요
  6048. // if ( objFlag == "child" ){
  6049. if ( remainder == 1 ) {
  6050. oTrgtObj.ds_src.setColumn(sendRow, "tempcol10", "#eaeaea");
  6051. } else {
  6052. oTrgtObj.ds_src.setColumn(sendRow, "tempcol10", "#ffffcc");
  6053. }
  6054. // } else {
  6055. // if ( remainder == 1 ) {
  6056. // ds_src.setColumn(sendRow, "tempcol10", "#eaeaea" );
  6057. // } else {
  6058. // ds_src.setColumn(sendRow, "tempcol10", "#ffffcc" );
  6059. // }
  6060. // }
  6061. }
  6062. }
  6063. /* by sonjy 20091019 요청번호:3667
  6064. * 전처방(01)과 약속처방(02)을 복사하여 처방시 처방일수가 1일로 수정이 되도록
  6065. * => 무조건 1로 SETTING처리
  6066. */
  6067. var calcmthdcd = lf_getArrayData ( drugmastspec , 0, 26, "^", "|" );
  6068. if ( //model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "01" && model.getValue(strSrc + "[" + sendRow + "]/prcpinptflag") == "02" &&
  6069. prcpclscd.substring(0,1) == "A" && calcmthdcd == "4" && ds_src.getColumn(sendRow, "prcpdayno") > 1 ) {
  6070. ds_src.setColumn(sendRow, "prcpdayno", "1");
  6071. }
  6072. /*by sonjy 20091019
  6073. * 외래처방과 퇴원,퇴원호외래,외출외박처방(응급실,DSC 퇴원 포함)에만 해당으로, 4번에 해당하지 않는 약품 (계산법이 1,2,3,5번)을 처방할 때 처방일수가 0 으로 되도록
  6074. * (0 으로 저장시 처방일수를 넣으라는 메시지가 뜨도록 : 현재 되고 있는 기능임)
  6075. * 전처방과 약속처방, 프로토콜처방을 복사하여 처방시에는 제외 => 즉, 처방검색시에만 적용하되 MSET제외
  6076. */
  6077. if ( prcpclscd.substring(0,1) == "A" && calcmthdcd != "4" && prcpInptFlag == "00" &&
  6078. ( ds_patflag.getColumn(0, "prcpgenrflag") == "O" || ds_init.getColumn(0, "prcpkindcd") == "50" ||
  6079. ds_init.getColumn(0, "prcpkindcd") == "60" || ds_init.getColumn(0, "prcpkindcd") == "70" ) ) {
  6080. if( ds_src.getColumn(sendRow, "inclprcpno") == "0" || ds_src.getColumn(sendRow, "inclprcpno") == "-" ) {
  6081. ds_src.setColumn(sendRow, "prcpdayno", "0");
  6082. }
  6083. }
  6084. ds_src.setColumn(sendRow, "prcpgenrflag", prcpgenrflag ); //처방발생구분
  6085. ds_src.setColumn(sendRow, "prcpkindcd", prcpkindcd ); //처방종류
  6086. if( ds_src.getColumnInfo("pampkspec") == null ) ds_src.addColumn("pampkspec", "string");
  6087. if( ds_src.getColumnInfo("prcppkspec") == null ) ds_src.addColumn("prcppkspec", "string");
  6088. //20131105 Start 이정택(마취에서 처방이동시에 수익부서와 수익의를 자동으로 세팅하도록 수정)
  6089. if(ds_src.getColumn(sendRow, "prcpinptflag") == "27"){
  6090. var orddeptcd = "2090000000";
  6091. var orddrid = ds_anst.getColumn(0, "anst_drid");
  6092. var anstdrnm = ds_anst.getColumn(0, "anst_anstdrnm");
  6093. ds_src.setColumn(sendRow, "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  6094. ds_src.setColumn(sendRow, "tempcol20", "[마취통증의학과]["+anstdrnm+"]"); //처방창의 주진료과/진료의를 세팅
  6095. }else{
  6096. var sOldPamPkSpec = ds_src.getColumn(sendRow, "pampkspec");
  6097. //trace(sOldPamPkSpec);
  6098. if(utlf_isNull(sOldPamPkSpec) || sOldPamPkSpec.length < 30) { // 2017.10.16 엄영만 CP에서 처방의 변경 기능 안되는 오류 수정(기존 설정된 값이 있으면 그대로 적용)
  6099. ds_src.setColumn(sendRow, "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  6100. }
  6101. }
  6102. // 20131105 End
  6103. //ds_src.setColumn(sendRow, "pampkspec", pid + "|" + indd + "|" + cretno + "|" + orddeptcd + "|" + orddrid ); //pampkspec : 등록번호|진료일자|생성번호|진료과|담당의 // 원무PK내역
  6104. ds_src.setColumn(sendRow, "prcppkspec", prcpdd + "|0|0|" + sysf_getUserInfo("dutplceinstcd")); //처방키: 처방일자|처방번호|처방이력번호|기관코드
  6105. //20081007 마정민 수정
  6106. //원래 회처방 불가
  6107. //수혈, 영상, Angio, 핵의학영상, 병리, 기능, RT, 수술, 마취, 마취약제, 재료, 기타 이고 마이그레이션 데이터는 1로 setting
  6108. //추가 처치 H4
  6109. //20090514 마정민추가 K2 치과
  6110. if ( ds_src.getColumn(sendRow, "tempcol20" ) == "Y" && (
  6111. prcpclscd == "B4" || prcpclscd == "C2" || prcpclscd == "C4" || prcpclscd == "C6" ||
  6112. prcpclscd == "D2" || prcpclscd == "E2" || prcpclscd == "G2" || prcpclscd == "H2" ||
  6113. prcpclscd == "I2" || prcpclscd == "I4" || prcpclscd == "M2" || prcpclscd == "Z0" ||
  6114. prcpclscd == "H4" || prcpclscd == "K2")) {
  6115. ds_src.setColumn(sendRow, "prcptims", "1"); //처방발생구분
  6116. }
  6117. //20090122 마정민수정: 변경요청번호 670. 단순 방사선 예약 자동 팝업요청
  6118. //20090709 CHC, 단순방사선예약자동팝업 병원별 적용
  6119. var raypopwndcheckyn = ds_initsrch_raypopwndcheckyn.getColumn(0, "trgtcd");
  6120. if ( prcpgenrflag == "O" && lf_getDsValue(ds_src, sendRow, "tempcol2").length > 2 && ds_src.getColumn(sendRow, "tempcol2").substring( 0, 2 ) == "18" && usge == "prcp" ) {
  6121. var msgTitle = "[영상]" + "[" + ds_src.getColumn(sendRow, "prcpcd") + ":" + ds_src.getColumn(sendRow, "prcpnm") + "]";
  6122. if (raypopwndcheckyn != "Y") {
  6123. if(!confirm("단순 방사선 검사를 당일 시행 하시겠습니까? [예:당일,아니요:예약]", msgTitle)) {
  6124. ds_src.setColumn(sendRow, "prcphopedd", "99991231");
  6125. }
  6126. }
  6127. }
  6128. // 허만호 추가 START
  6129. // var oOpener = this.getOwnerFrame().form;
  6130. // if( oOpener.name == "SMMMP00800" ) {
  6131. // dsf_createDs("ds_initsrch_prcpetccnts");
  6132. // dsf_createDs("ds_initsrch_escopedirecprcpcd");
  6133. // ds_initsrch_escopedirecprcpcd.copyData(oOpener.grp_biz.swt_formatt.incompletion_tab.ivw_invalprcp.ds_initsrch_escopedirecprcpcd); // 미완성처방 데이터셋
  6134. // ds_initsrch_prcpetccnts.copyData(oOpener.grp_biz.swt_formatt.incompletion_tab.ivw_invalprcp.ds_initsrch_prcpetccnts); // 미완성처방 데이터셋
  6135. // }
  6136. // 허만호 추가 END
  6137. //20090827 차현철, 치료내시경예약 지시처방일 경우 처방명 선택 팝업창 호출
  6138. var escopedirecprcpcd = ds_initsrch_escopedirecprcpcd.getColumn(0, "trgtcd");
  6139. if ( escopedirecprcpcd == ds_src.getColumn(sendRow, "prcpcd") ) {
  6140. frmf_setParameter ( "SPMMB02200_cond2", "5" );
  6141. lf_prcpModal ( "SPMMB02200", 50, 50 );
  6142. ds_src.setColumn(sendRow, "prcpnm", frmf_getParameter ( "SPMMB02200_clinccmt" ));
  6143. frmf_clearParameter("SPMMB02200_clinccmt");
  6144. }
  6145. //SON0919 G3아닌 응급일경우 원내사유 PRCPKINDCD에 의해 움직이므로 PRCPKINDCD가 설정된 후 다시 호출 start
  6146. //퇴원처방 전처방에서 추가처방모드에서 복사시 퇴원처방 원내사유가 적용되는것을 막기 위함임.
  6147. var g3flag = lf_getDsValue(oTrgtObj.ds_init, 0, "erresn");
  6148. if( (prcpgenrflag == "E" && g3flag!= "G3") || prcpgenrflag == "D" ){
  6149. if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) { //약처방
  6150. // 원내처방사유 SETTING
  6151. lf_hosinPrcpResncdSed ( objFlag, strSrc, sendRow );
  6152. }
  6153. }
  6154. //SON0919 end
  6155. if ( (prcpkindcd == "50" || prcpkindcd == "60" ) && lf_getArrayData (drugmastspec, 0, 20, "^", "|") == "Y" ) {
  6156. //2008-01-18 김은희 약사 모든처방 자가주사가 가능하게 수정
  6157. if ( prcpclscd == "A6") {
  6158. ds_src.setColumn(sendRow, "selfprcpflag", "Y");
  6159. }
  6160. }
  6161. //20080721 마정민 임상처방에서 넘어오는 것은 clincstdyflag를 Y로 처리
  6162. if ( prcpInptFlag == "07" ) {
  6163. ds_src.setColumn(sendRow, "clincstdyflag", "Y"); //
  6164. }
  6165. var chkprcpcd = utlf_transNullToEmpty(ds_src.getColumn(sendRow, "prcpcd"));
  6166. /******************** 선처치, 과내검사 시행부서처리 *******************/
  6167. var iFind = -1;
  6168. var precureexecdeptchk = utlf_isNull(this.objects["ds_initsrchprcp_prcpetccnts"]) ? "" : lf_getDsValue(ds_initsrchprcp_prcpetccnts, 0, "precureprcpcd");
  6169. // 기존 search함수에서 무결성이 어긋나 개별 체크 변경 - 20081008 by MoonSH
  6170. var precureprcpflag = "";
  6171. var prcpexecdeptcd = "";
  6172. if( chkprcpcd.charAt(0) != "*" ){
  6173. var firStage = precureexecdeptchk.split("^");
  6174. for( var i = 0; i < firStage.length ; i++ ){
  6175. var secStage = firStage[i].split("|");
  6176. if( chkprcpcd == secStage[0]) {
  6177. iFind = 1;
  6178. precureprcpflag = secStage[1];
  6179. prcpexecdeptcd = secStage[2];
  6180. break;
  6181. }
  6182. }
  6183. }
  6184. if ( parseInt(iFind) >= 0) {
  6185. var charchk = "";
  6186. var arraychk = "";
  6187. if ( precureprcpflag == "Y" ) {
  6188. if( prcpgenrflag == "I" || prcpgenrflag == "E" || prcpgenrflag == "D" ) {
  6189. //입원일 경우 선처치 적용시 약/재료코드는 제외한다. 정보관리팀 요구변경 요청서 2008-11-08 미액팅 분석 후 액팅시점 변경건
  6190. //by sonjy 20081115
  6191. if( prcpclscd.substring(0,1) != "A" && prcpclscd != "M2" ) ds_src.setColumn(sendRow, "precureprcpflag", "Y");
  6192. } else {
  6193. ds_src.setColumn(sendRow, "precureprcpflag", "Y");
  6194. }
  6195. }
  6196. if ( prcpexecdeptcd != "X" && !utlf_isNull ( prcpexecdeptcd ) ) {
  6197. ds_src.setColumn(sendRow, "prcpexecdeptcd", prcpexecdeptcd);
  6198. }
  6199. }
  6200. if ( lf_getDsValue(ds_root, 0, "addprcp") == "Y" && ds_src.getColumn(sendRow, "inclprcpno") == "0" ) {
  6201. //시행부서 수혈, 식이, 재활, 마취, 치과, 방사선치료, 기타를 제외한 처방은 자동 선처치. 단 m-set은 예외
  6202. if ((ds_src.getColumn(sendRow, "prcpclscd") == "A2" ||
  6203. ds_src.getColumn(sendRow, "prcpclscd") == "A4" ||
  6204. ds_src.getColumn(sendRow, "prcpclscd") == "A6" ||
  6205. ds_src.getColumn(sendRow, "prcpclscd") == "B2" ||
  6206. ds_src.getColumn(sendRow, "prcpclscd") == "B6" ||
  6207. ds_src.getColumn(sendRow, "prcpclscd") == "C2" ||
  6208. ds_src.getColumn(sendRow, "prcpclscd") == "C4" ||
  6209. ds_src.getColumn(sendRow, "prcpclscd") == "C6" ||
  6210. ds_src.getColumn(sendRow, "prcpclscd") == "D2" ||
  6211. ds_src.getColumn(sendRow, "prcpclscd") == "E2" ||
  6212. ds_src.getColumn(sendRow, "prcpclscd") == "H2" ||
  6213. ds_src.getColumn(sendRow, "prcpclscd") == "H4" ||
  6214. ds_src.getColumn(sendRow, "prcpclscd") == "M2" ) &&
  6215. lf_getDsValue(ds_root, 0, "admininfo").substring (0,1) != "Y" ) {
  6216. ds_src.setColumn(sendRow, "precureprcpflag", "Y");
  6217. }
  6218. }
  6219. // 시행부서 처방 가퇴원 누락처방 사유 및 일시 셋팅 - 20081221 by MoonSH
  6220. if ( lf_getDsValue(ds_root, 0, "addprcp") == "Y" && !utlf_isNull(ds_prcpresn.getColumn(0, "prcpdd")) ) {
  6221. ds_src.setColumn(sendRow, "tempcol19", ds_prcpresn.getColumn(0, "resncnt"));
  6222. ds_src.setColumn(sendRow, "tempcol12", ds_prcpresn.getColumn(0, "prcptime")); // tempcol24를 사용하던것을 tempcol12로 변경 처리 2013.11.28 엄영만
  6223. }
  6224. /******************** 선처치, 과내검사 시행부서 처리 끝 ********************/
  6225. //시행부서, 발행부서 SETTING
  6226. lf_prcpExecIssDeptCdSet( strSrc, sendRow )
  6227. if (!utlf_isNull(lf_getDsValue(ds_init, 0, "prcpinptflag" ))){ //27: 마취기록, 28: 시행부서처방
  6228. ds_src.setColumn(sendRow, "prcpinptflag", ds_init.getColumn(0, "prcpinptflag"));
  6229. }
  6230. //추가컬럼 test
  6231. ds_src.setColumn(sendRow, "aftcertflag", "-");
  6232. ds_src.setColumn(sendRow, "aftcertdrid", "-");
  6233. ds_src.setColumn(sendRow, "prcpvalidd", "00000000");
  6234. if ( utlf_isNull(ds_src.getColumn(sendRow, "anticncrdayno"))) {
  6235. ds_src.setColumn(sendRow, "anticncrdayno", "0");
  6236. }
  6237. if ( utlf_isNull(ds_src.getColumn(sendRow, "druglnkno"))) {
  6238. ds_src.setColumn(sendRow, "druglnkno", "0");
  6239. }
  6240. if (ds_src.getColumn(sendRow, "prcpcd") == "FE6541" ) {
  6241. var prcpdelivefact = lf_getDsValue(ds_src, sendRow, "prcpdelivefact");
  6242. var iFind1 = prcpdelivefact.indexOf( "Long Stream" );
  6243. var iFind2 = prcpdelivefact.indexOf( "Routine" );
  6244. //전달사항에 값이 있으면 "-" 로처리
  6245. if ( eval( iFind1) <= 0 && eval(iFind2) <= 0 ) {
  6246. if ( prcpdelivefact == "-" ) {
  6247. ds_src.setColumn(sendRow, "prcpdelivefact", "[Routine]");
  6248. } else {
  6249. ds_src.setColumn(sendRow, "prcpdelivefact", "[Routine] " + prcpdelivefact);
  6250. }
  6251. }
  6252. }
  6253. if ( ds_src.getColumn(sendRow, "tempcol18") == "Y" ) {
  6254. var len = 0;
  6255. if (utlf_isNull(this.objects["ds_migdrugmthdlist"])) {
  6256. dsf_createDs("ds_migdrugmthdlist", [{col:"prcpcd", type:"string", size:256},
  6257. {col:"prcpnm", type:"string", size:256},
  6258. {col:"migdrugmthdspccdnm", type:"string", size:256},
  6259. {col:"drugmthdspccd", type:"string", size:256},
  6260. {col:"drugmthdspccdnm", type:"string", size:256}]);
  6261. }
  6262. len = ds_migdrugmthdlist.addRow();
  6263. ds_migdrugmthdlist.setColumn(len, "prcpcd", ds_src.getColumn(sendRow, "prcpcd"));
  6264. ds_migdrugmthdlist.setColumn(len, "prcpnm", ds_src.getColumn(sendRow, "prcpnm"));
  6265. if ( ds_src.getColumn(sendRow, "rateprcpflag") == "Y" ) {
  6266. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", "[비율처방불가] 투약량이 다른 처방을 분리해서 처방하셔야 합니다.\n\n" + ds_src.getColumn(sendRow, "exptmthdfact") + ".");
  6267. ds_src.setColumn(sendRow, "rateprcpflag", "N");
  6268. ds_src.setColumn(sendRow, "drugrateqty", "-");
  6269. } else {
  6270. ds_migdrugmthdlist.setColumn(len, "migdrugmthdspccdnm", ds_src.getColumn(sendRow, "exptmthdfact"));
  6271. }
  6272. ds_migdrugmthdlist.setColumn(len, "drugmthdspccd", ds_src.getColumn(sendRow, "drugmthdspccd"));
  6273. ds_migdrugmthdlist.setColumn(len, "drugmthdspccdnm", ds_src.getColumn(sendRow, "drugmthdspccdnm"));
  6274. ds_src.setColumn(sendRow, "exptmthdfact", "-");
  6275. }
  6276. //수술예방적 항생제 CHECK SON0926 START 사유입력 대상자일 경우
  6277. //경구약은 cdss항생제 에서 제외. 따라서 외용/주사일 경우 cdss항생제 화면이 뜬 후에 check로직이 뜨도록..
  6278. //trace("sendRow : " + sendRow);
  6279. if ( prcpgenrflag == "I" && usge == "prcp" && ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" )) { //약처방
  6280. if( !lf_chkOpDrug(objFlag , strSrc , sendRow) ) return 0;
  6281. }
  6282. //수술예방적 항생제 CHECK SON0926 END
  6283. //20090520 마정민수정
  6284. //저장시 체크하던 ocrprnt 여부를 search 함수의 문제로 처방복사시 tempcol13에 값을 넣어놨다가 저장시 tempcol13을 읽는 방법으로 수정
  6285. var ocrprnt = utlf_isNull(this.objects["ds_initsrchprcp_prcpetccnts"]) ? "" : ds_initsrchprcp_prcpetccnts.getColumn(0, "ocrprnt");
  6286. if (utlf_isNull(ocrprnt)) {
  6287. ocrprnt = ds_initsrch_prcpetccnts.getColumn(0, "ocrprnt");
  6288. }
  6289. var ocrprntArray = ocrprnt.split("|");
  6290. var ocrprcpcd = "OCR" + ds_src.getColumn(sendRow, "prcpcd");
  6291. for( var m = 0; m < ocrprntArray.length; m++ ){
  6292. if( ocrprcpcd == ocrprntArray[m]) {
  6293. ds_src.setColumn(sendRow, "tempcol13", "Y");
  6294. break;
  6295. }
  6296. }
  6297. // 20100108 한재상 - 유전자검사 동의서 출력방식 변경 (OCR -> REX)
  6298. var ocrprogprnt = utlf_isNull(this.objects["ds_initsrchprcp_prcpetccnts"]) ? "" : utlf_transNullToEmpty(ds_initsrchprcp_prcpetccnts.getColumn(0, "ocrprogprnt"));
  6299. var ocrprogprntArray = ocrprogprnt.split("|");
  6300. var ocrprogprcpcd = "OCRPROG" + ds_src.getColumn(sendRow, "prcpcd");
  6301. for( var m = 0; m < ocrprogprntArray.length; m++ ){
  6302. if( ocrprogprcpcd == ocrprogprntArray[m]) {
  6303. ds_src.setColumn(sendRow, "tempcol13", "A");
  6304. break;
  6305. }
  6306. }
  6307. //20090521 마정민추가 외래수술프로세스의 추가로 외래수술탭에서 처방을 낼 경우 자동선처치로 수정
  6308. if (!utlf_isNull(ds_operation.getColumn(0, "oprsrvno")) && prcpgenrflag == "O"
  6309. && ds_src.getColumn(sendRow, "prnprcpflag") != "Y"
  6310. && ds_src.getColumn(sendRow, "prcpclscd") != "B4"
  6311. ) {
  6312. ds_src.setColumn(sendRow, "precureprcpflag", "Y"); //
  6313. }
  6314. if ( ds_src.getColumn(sendRow, "prcpflag") != "2" ) { //지시처방이 아니면 이름을 다시 만들어 준다.
  6315. lf_makePrcpNm( "ds_main_prcplist", sendRow );
  6316. }
  6317. // 2010. 10. 19 약속처방이나 전처방에서 처방 복사시 1회 용량에 값이 없을 경우 용량 계산하는 로직 수행
  6318. if ( ds_src.getColumn(sendRow, "drprcpetc7") == "-" ) {
  6319. if (lf_ContainsHardCD("420", "Y") && ds_src.getColumn(sendRow, "prcpinptflag") == "02") { // 2013.02.21 엄영만 약속처방 1회 용량 없을 시 메세지 팝업.
  6320. var sPrcpcd = ds_src.getColumn(sendRow, "prcpcd");
  6321. var sPrcpnm = ds_src.getColumn(sendRow, "prcpnm");
  6322. sysf_messageBox ( sPrcpnm +"["+ sPrcpcd + "] 처방의 1회용량값이 존재하지 않습니다.\n약속처방 구성을 확인 하시기 바랍니다.", "E999" );
  6323. } else {
  6324. DrugCalc2( "prcpqty" , sendRow);
  6325. }
  6326. }
  6327. // 2011.07.05 엄영만 수익분류 의료영상복사-CD 복사-CD copy 처방, 산재/자보 환자 디폴트 비급여 셋팅 원무 최인영(5069) 요청
  6328. if (ds_src.getColumn(sendRow, "tempcol2") == "24|01|01" && (ds_paminfo.getColumn(0, "insukind") == "31" || ds_paminfo.getColumn(0, "insukind") == "41")) {
  6329. ds_src.setColumn(sendRow, "payflagcd", "1");
  6330. }
  6331. // 2013.09.26 엄영만 수익분류 초음파 처방이고 수가정보의 급비가 급여(0), 급여불가 보조유형일 경우 디폴트 비급여 설정
  6332. /*
  6333. var sTempcol2 = utlf_transNullToEmpty(ds_src.getColumn(sendRow, "tempcol2"));
  6334. if (sTempcol2.length > 2 && sTempcol2.substring( 0, 2 ) == "21" && ds_src.getColumn(sendRow, "spynpy1") == "0" ) {
  6335. var insukind = ds_paminfo.getColumn(0, "insukind");
  6336. if ( (insukind != "11" && insukind != "21" && insukind != "22") // 보험 유형이 건강보험 또는 의료급여 1,2종이 아니면 비급여 처리
  6337. || (!lf_ContainsHardCD("442", ds_paminfo.getColumn(0, "suppkind"))) ) { // 급여가능 보조유형이 아닐경우
  6338. ds_src.setColumn(sendRow, "payflagcd", "2"); // 디폴트 비급여 처리
  6339. }
  6340. }
  6341. */
  6342. //model.addLog(" ************* End Of addPrcpSetValue()");
  6343. return true;
  6344. }
  6345. /**
  6346. * @desc : 처방 코드 정보를 조회 하는 함수 addPrcpSetValue()에서 값을 셋팅 할때 처방 코드별 참조자료를 셋팅 한다.
  6347. * @param : sPrcpCodes - 처방 편집 화면으로 복사되는 처방 코드
  6348. * @return : 처방화면(SMMO00100) /root/prcpcodeinfo 셋팅
  6349. * @authur : 엄영만 2011. 10. 13
  6350. * 변환OK
  6351. * @---------------------------------------------------
  6352. */
  6353. function lf_getPrcpCodeInfo(sPrcpCodes) {
  6354. var pamInfoNode = "/root/paminfo/list";
  6355. var prcpgenrflag = ds_patflag.getColumn(0, "prcpgenrflag" ); //입력구분
  6356. var prcpdd = ds_init.getColumn(0, "prcpdd" ); //처방일
  6357. var pid = ds_paminfo.getColumn(0, "pid" );
  6358. var ioflag = ds_paminfo.getColumn(0, "ioflag" );
  6359. var cretno = ds_paminfo.getColumn(0, "cretno" );
  6360. var orddeptcd = ds_paminfo.getColumn(0, "orddeptcd" );
  6361. var orddd = "";
  6362. var orddrid = "";
  6363. //건진일 경우 check추가.
  6364. if ( prcpgenrflag == "O" || prcpgenrflag == "S" ) {
  6365. orddd = ds_paminfo.getColumn(0, "orddd" );
  6366. orddrid = ds_paminfo.getColumn(0, "orddrid" );
  6367. } else {
  6368. orddd = ds_paminfo.getColumn(0, "indd" );
  6369. orddrid = ds_paminfo.getColumn(0, "medispclid" );
  6370. }
  6371. ds_TRMMO00143.clearData();
  6372. ds_TRMMO00143.addRow();
  6373. if(!utlf_isNull(sPrcpCodes)){
  6374. ds_TRMMO00143.setColumn(0, "prcpcds", sPrcpCodes); //처방코드
  6375. ds_TRMMO00143.setColumn(0, "prcpdd", prcpdd); //처방일
  6376. ds_TRMMO00143.setColumn(0, "ioflag", ioflag); //외래입원구분
  6377. ds_TRMMO00143.setColumn(0, "pid", pid); //등록번호
  6378. ds_TRMMO00143.setColumn(0, "orddd", orddd); //진료일자
  6379. ds_TRMMO00143.setColumn(0, "cretno", cretno); //생성번호
  6380. ds_TRMMO00143.setColumn(0, "orddeptcd", orddeptcd); //진료과
  6381. ds_TRMMO00143.setColumn(0, "orddrid", orddrid); //진료의
  6382. var oParam = {};
  6383. oParam.id = "TRMMO00143";
  6384. oParam.service = "prcpmngtapp.PrcpMngt";
  6385. oParam.method = "reqGetPrcpCodeInfo";
  6386. oParam.inds = "req=ds_TRMMO00143";
  6387. oParam.outds = "ds_prcpcodelist=prcpcodelist";
  6388. oParam.async = false;
  6389. oParam.callback = "cf_TRMMO00143";
  6390. tranf_submit(oParam);
  6391. }
  6392. }
  6393. function cf_TRMMO00143(sSvcId, nErrorCode, sErrorMsg) {
  6394. if(nErrorCode < 0) {
  6395. // 테스트 메세지 팝업 여부 추후 삭제 해야 함. 엄영만 2011.11.19
  6396. var sChkMsgPopYn = lf_getHardCDList("Y", 403, 3); // 403 테스트메세지 사용여부
  6397. if (sChkMsgPopYn == "Y"){
  6398. alert("처방정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6399. }
  6400. }
  6401. }
  6402. /**
  6403. * @desc : 선택진료 여부 선택진료의사를
  6404. * addPrcpSetValue()에서 값을 셋팅 선택진료처방 및 선택진료의사를 셋팅 한다..
  6405. * @param : strSrc => setting할 source node
  6406. : sendRow => setting할 row
  6407. : prcpInptFlag => 처방입력구분 00 처방검색, 01 전회처방, 02 약속처방, 03 약속수술.. M0034
  6408. * @return : 선택진료처방여부, 선택진료의사 셋팅
  6409. * @authur : 엄영만 2011. 11. 08
  6410. * 변환OK
  6411. * @---------------------------------------------------
  6412. */
  6413. function lf_setPrcpSpecValue( strSrc, sendRow, prcpInptFlag ) {
  6414. var ds_src = this.objects[strSrc];
  6415. //2011.01.12 MJM수정. 선택진료 가능처방은 일괄위임일 경우 무조건 선택진료처리.
  6416. //2011.10.01 고시관련 수정 일괄위임의 경우 선택진료 처리.
  6417. //선택진료여부처리는 결정(검사,영상진단) 무조건 선택진료가능항목으로 처리
  6418. var sChoiordFlag = "N";
  6419. var sOrdDrId = "";
  6420. var sPrcpClsCd = ds_src.getColumn(sendRow, "prcpclscd"); // 처방종류
  6421. var sPrcpCd = ds_src.getColumn(sendRow, "prcpcd"); // 처방코드
  6422. var sDrugMthdSpcCd = ds_src.getColumn(sendRow, "drugmthdspccd"); // 처방 검체코드(병리 처방은 검체코드가 있을때만 선택진료 설정함.)
  6423. var sPrcpGenrFlag = ds_patflag.getColumn(0, "prcpgenrflag"); // 처방입력구분(외래, 입원, 응급..)
  6424. var sSpecOrdType = lf_getDsValue(ds_paminfo, 0, "specordtype"); // 선택진료 타입 (B:일괄 위임)
  6425. var sSpcspifYn = ""; // 부분 선택진료 위임 여부
  6426. var sSpecCls = ""; // 선택진료처방 분류
  6427. var sTodaySpcDrId = ""; // 오늘 선택진료의
  6428. var sAllSpcDrId = ""; // 가능 선택진료의
  6429. var sPreSpecDrId = ""; // 기존 선택진료의
  6430. var sPrcpSpecDrId = "";
  6431. var sChkSpecDrId = "";
  6432. var sUserID = sysf_getUserInfo("userid");
  6433. sSpcspifYn = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "spcspifyn");
  6434. if(utlf_isNull(sSpcspifYn)) { // 처방 코드 정보가 없으면 -- App 처방 복사 로직
  6435. sSpcspifYn = lf_getDsValue(ds_src, sendRow, "spcspifyn"); // 부분 선택진료 위임 여부
  6436. sSpecCls = lf_getDsValue(ds_src, sendRow, "speccls"); // 선택진료처방 분류
  6437. sTodaySpcDrId = lf_getDsValue(ds_src, sendRow, "todayspcdrid"); // 오늘 선택진료의
  6438. sAllSpcDrId = lf_getDsValue(ds_src, sendRow, "allspcdrid"); // 가능 선택진료의
  6439. } else { // 처방 코드 정보가 있으면 -- Web 처방 복사 로직
  6440. sSpcspifYn = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "spcspifyn"); // 부분 선택진료 위임 여부
  6441. sSpecCls = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "speccls"); // 선택진료처방 분류
  6442. sTodaySpcDrId = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "todayspcdrid"); // 오늘 선택진료의
  6443. sAllSpcDrId = ds_prcpcodelist.lookup("prcpcd", sPrcpCd, "allspcdrid"); // 가능 선택진료의
  6444. }
  6445. if (ds_src.getColumn(sendRow, "tempcol24") == "Y") { //선택진료가능처방
  6446. if (sPrcpGenrFlag == "E") { // 응급실에서 발행 하는 처방일경우 선택진료 자동 셋팅 하지 않도록 수정. 심사실 윤순길팀장님 요청. 엄영만 2011.11.23
  6447. if ( sSpecOrdType == "B" || sSpcspifYn == "Y" ) {// 일괄선택진료 위임 일 경우 또는 부분선택진료 위임 일 경우(처방 항목에 위임)
  6448. sChoiordFlag = "Y";
  6449. ds_src.setColumn(sendRow, "choiordflag", "Y");
  6450. }
  6451. } else { // 응급실에서 발행 하는 처방이 아닐 경우
  6452. if ( ds_paminfo.getColumn(0, "specordyn") == "Y" // 선택진료의사(교수님 진료)
  6453. || sSpecOrdType == "B" // 일괄선택진료 위임 일 경우
  6454. || sSpcspifYn == "Y" // 부분선택진료 위임 일 경우(처방 항목에 위임)
  6455. || sSpecCls == "02" // 선택진료 분류가 검사인것
  6456. || sSpecCls == "03" // 선택진료 분류가 영상진단인것
  6457. || (sPrcpClsCd == "C6" && ds_paminfo.getColumn(0, "insukind") == "11") // 건강보험이면서 처방분류가 핵의학체내 일 경우는 무조건 선택진료가 발생하도록 수정 (의사가 체크 해제 할 수 있음): 2011. 02.07 김영학
  6458. || (sPrcpClsCd == "D2" && ds_paminfo.getColumn(0, "insukind") == "11") // 건강보험이면서 처방분류가 병리 처방은 선택진료 가능 처방은 무조건 선택진료로 한다. 김영학
  6459. || ((prcpInptFlag == '02' || prcpInptFlag == '05') && ds_src.getColumn(sendRow, "choiordflag") == "Y") ) { //약속처방이고 선택진료 체크 되어 있는경우
  6460. sChoiordFlag = "Y";
  6461. ds_src.setColumn(sendRow, "choiordflag", "Y");
  6462. }
  6463. }
  6464. }
  6465. if ( sChoiordFlag == "Y" ) {
  6466. if ( sPrcpGenrFlag == "O" ) {
  6467. sOrdDrId = ds_paminfo.getColumn(0, "orddrid");
  6468. } else {
  6469. sOrdDrId = ds_paminfo.getColumn(0, "medispclid");
  6470. }
  6471. sPreSpecDrId = ds_src.getColumn(sendRow, "specdrid"); // 기존 선택진료의
  6472. if (sPreSpecDrId == "-") {
  6473. sPreSpecDrId = "";
  6474. }
  6475. if (sPrcpClsCd == "D2" && (!utlf_isNull(sDrugMthdSpcCd) || sDrugMthdSpcCd != "-")) { // 병리처방은 검체 코드로 조회 한다.
  6476. var sPrcpDd = ds_init.getColumn(0, "prcpdd");
  6477. ds_TRMMO00144.clearData();
  6478. ds_TRMMO00144.addRow();
  6479. ds_TRMMO00144.setColumn(0, "codeflag", "G" ); //코드구분(S 수가코드, G 검체)
  6480. ds_TRMMO00144.setColumn(0, "prcpdd", sPrcpDd ); //처방일
  6481. ds_TRMMO00144.setColumn(0, "calcscorcd", sDrugMthdSpcCd ); //검체코드
  6482. var oParam = {};
  6483. oParam.id = "TRMMO00144";
  6484. oParam.service = "prcpmngtapp.PrcpMngt";
  6485. oParam.method = "reqGetPrcpSpcDrInfo";
  6486. oParam.inds = "req=ds_TRMMO00144";
  6487. oParam.outds = "ds_spcdrinfo=info";
  6488. oParam.async = false;
  6489. oParam.callback = "cf_TRMMO00144";
  6490. tranf_submit(oParam);
  6491. sTodaySpcDrId = ds_spcdrinfo.getColumn(0, "todayspcdrid"); // 오늘 선택진료의
  6492. sAllSpcDrId = ds_spcdrinfo.getColumn(0, "allspcdrid"); // 가능 선택진료의
  6493. }
  6494. // 현행화, rev.71108
  6495. // if( prcpInptFlag == '02' && !utlf_isNull(sPreSpecDrId) && utlf_isSearchString(sAllSpcDrId, sPreSpecDrId)) { // 약속처방 선택의가 가능선택의일 경우 약속처방 선택의 설정
  6496. // ds_src.setColumn(sendRow, "specdrid", sPreSpecDrId);
  6497. // } else if (utlf_isSearchString(sAllSpcDrId, sOrdDrId) ){ // 가능선택의에 진료의가 포함 될 경우
  6498. // ds_src.setColumn(sendRow, "specdrid", sOrdDrId);
  6499. // 현행화, rev.71108
  6500. if (utlf_isSearchString(sAllSpcDrId, sOrdDrId) ){ // 가능선택의에 진료의가 포함 될 경우
  6501. ds_src.setColumn(sendRow, "specdrid", sOrdDrId);
  6502. } else if( (prcpInptFlag == '02' || prcpInptFlag == '05') && !utlf_isNull(sPreSpecDrId) && utlf_isSearchString(sAllSpcDrId, sPreSpecDrId)) { // 약속처방 선택의가 가능선택의일 경우 약속처방 선택의 설정
  6503. ds_src.setColumn(sendRow, "specdrid", sPreSpecDrId);
  6504. } else {
  6505. switch(sTodaySpcDrId) {
  6506. case "NO_DATA_FOUND": // 오늘 선택진료의사가 없는경우
  6507. if ( sAllSpcDrId == "NO_DATA_FOUND" ) { // 가능한 선택의가 없을경우
  6508. if ( (prcpInptFlag == '02' || prcpInptFlag == '05') && !utlf_isNull(sPreSpecDrId) ) { // 약속처방의사가 있으면
  6509. ds_src.setColumn(sendRow, "specdrid", sPreSpecDrId);
  6510. } else if ( ds_paminfo.getColumn(0, "specordyn") == "Y" ) { // 교수진료이고, 시행부서가 없거나 진료과랑 같으면 진료의로 설정
  6511. if ( ds_paminfo.getColumn(0, "orddeptcd") == ds_src.getColumn(sendRow, "prcpexecdeptcd")
  6512. || ds_src.getColumn(sendRow, "prcpexecdeptcd") == ""
  6513. || ds_src.getColumn(sendRow, "prcpexecdeptcd") == "-") {
  6514. ds_src.setColumn(sendRow, "specdrid", sOrdDrId ); // 진료의를 선택의로 설정
  6515. } else {
  6516. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6517. }
  6518. } else {
  6519. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6520. }
  6521. } else if (utlf_isSearchString(sAllSpcDrId, ",")) { // 가능의사가 2명 이상일경우
  6522. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6523. } else if (sAllSpcDrId == "ERROR") { // 가능의사 정보 조회시 에러
  6524. alert("선택진료 가능의사 정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6525. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6526. } else { // 가능의사가 1명일 경우
  6527. ds_src.setColumn(sendRow, "specdrid", sAllSpcDrId); // 가능의사 셋팅
  6528. }
  6529. break;
  6530. case "TOO_MANY_ROWS": // 오늘 선택진료의사가 2명이상인경우
  6531. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6532. break;
  6533. case "ERROR": // 오늘 선택진료의사정보를 가져오는중 에러
  6534. alert("오늘 선택진료 의사정보 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6535. ds_src.setColumn(sendRow, "specdrid", ""); // 선택진료의사 설정 안함 선택창 팝업
  6536. break;
  6537. default: // 오늘 선택진료의사가 1명인경우
  6538. ds_src.setColumn(sendRow, "specdrid", sTodaySpcDrId); // 오늘 선택진료의 설정
  6539. break;
  6540. }
  6541. }
  6542. sPrcpSpecDrId = ds_src.getColumn(sendRow, "specdrid");
  6543. sChkSpecDrId = ds_specdrinfo.lookup("userid", sPrcpSpecDrId, "userid");
  6544. if (utlf_isNull(sChkSpecDrId) && (sPrcpSpecDrId != sUserID) ) { // 진료의가 선택진료의와 같은경우 선택진료 가능여부 체크 하지 않도록 수정 2015.09.21 엄영만
  6545. ds_src.setColumn(sendRow, "choiordflag", "" );
  6546. lf_chgChoiDr ( "auto", sendRow );
  6547. }
  6548. } else {
  6549. ds_src.setColumn(sendRow, "choiordflag", "N" );
  6550. ds_src.setColumn(sendRow, "specdrid", "-" );
  6551. }
  6552. //이은영 과장 요청 마취의 setting by sonjy 20081010 start
  6553. if ( ds_anst.getColumn(0, "paramyn" ) == "Y" ) {
  6554. if ( sPrcpClsCd == "I2" || sPrcpClsCd == "I4" ) {
  6555. //마취의 ID가 있을 경우 만 setting
  6556. if( !utlf_isNull( ds_anst.getColumn(0, "anst_drid") ) ){
  6557. //특진처방 이나 의사가 특진의사가 아닌경우 일반진료처방으로 설정
  6558. if( sChoiordFlag == "Y" ) {
  6559. if( ds_anst.getColumn(0, "anst_specordflag") != "A" ){
  6560. ds_src.setColumn(sendRow, "choiordflag", "N" );
  6561. }
  6562. }
  6563. ds_src.setColumn(sendRow, "specdrid", ds_anst.getColumn(0, "anst_drid") ) ;
  6564. }
  6565. }
  6566. }
  6567. //마취의 setting by sonjy 20081010 end
  6568. //20110517_김영학 /선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다.
  6569. // 선택진료 체크가 되어 있으면서 의사가 비선택의사 일 경우에는 선택진료 여부를 -으로 처리한다.
  6570. if (sChoiordFlag == "Y" ) {
  6571. var chkChoiSpcldrid = ds_src.getColumn(sendRow, "specdrid" );
  6572. var ds_usercombo = emr_getOrderBaseInfo("usercombo")
  6573. // 현행화, rev.71108
  6574. ds_usercombo.filter("refseq == 'A' && userid =='" + chkChoiSpcldrid + "'");
  6575. var choiSpclDrid = ds_usercombo.getColumn(0, "userid");
  6576. ds_usercombo.filter("");
  6577. if ( utlf_isNull(choiSpclDrid)) {
  6578. if(chkChoiSpcldrid == sUserID) {
  6579. ds_src.setColumn(sendRow, "choiordflag", "N" ); // 현행화, rev.71373
  6580. ds_src.setColumn(sendRow, "specdrid", chkChoiSpcldrid );
  6581. } else {
  6582. ds_src.setColumn(sendRow, "specdrid", "-" );
  6583. }
  6584. }
  6585. }
  6586. //20110517 선택진료 처방이지만 선택진료의가 비선택진료의 일 경우에는 선택진료여부를 기본값으로 변경한다. END
  6587. }
  6588. function cf_TRMMO00144(sSvcId, nErrorCode, sErrorMsg) {
  6589. if(nErrorCode < 0)
  6590. alert("병리검체 선택진료의사 조회시 에러가 발생 하였습니다. 전산실(6598)로 문의 하세요.");
  6591. }
  6592. /***************************************************************************************************
  6593. * Function : lf_clearEMRLoadingInfo
  6594. * Description : 상단의 로딩 Instance Clear
  6595. * Argument :
  6596. * return type : void
  6597. * Creator :
  6598. ***************************************************************************************************/
  6599. function lf_clearEMRLoadingInfo()
  6600. {
  6601. var viewerObj = frmf_getViewer("patientInfo");
  6602. viewerObj.ds_loadinginfo.clearData();
  6603. }
  6604. /***************************************************************************************************
  6605. * Function : lf_setEMRLoadingInfo
  6606. * Description : 처방 기록 환자정보 setting
  6607. * Argument :
  6608. * return type :
  6609. * Creator :
  6610. ***************************************************************************************************/
  6611. function lf_setEMRLoadingInfo()
  6612. {
  6613. sysf_setGlobalVariable("OrderMainRefresh", "Y");// 처방 메인 refresh 단일화를 위한 글로벌 변수 셋팅 - 20081212 by Moonsh
  6614. ds_reqdata.clearData("/root/send/reqdata");
  6615. var sysMessageobj = frmf_getViewer("sysMessage");
  6616. var srchtabflag = sysMessageobj.frmf_getParameter("PATLIST_TABFLAG");
  6617. var OPERATIONINFO_NODE = "/root/properties/patient/operationinfo";
  6618. if (ds_operationinfo.instances(0).selectNodes("/root/properties/patient/operationinfo").rowcount == 0) {
  6619. OPERATIONINFO_NODE = "/root/initdata/oppatopscheinfo";
  6620. }
  6621. var sPid = fGetPatientInfo("pid");
  6622. var sCretno = fGetPatientInfoDetail("cretno");
  6623. var sOrdtype = srchtabflag;
  6624. var sOrddeptcd = fGetPatientInfoDetail("orddeptcd");
  6625. var sInsukind = fGetPatientInfoDetail("insukind");
  6626. var sOrddrid = "";
  6627. var sOrddd = "";
  6628. var sSrchdd = "";
  6629. var sPrcpdd = "";
  6630. if (sOrdtype == "O" || sOrdtype == "S") {
  6631. sOrddrid = fGetPatientInfoDetail("orddrid");
  6632. sOrddd = fGetPatientInfoDetail("orddd");
  6633. sSrchdd = "";
  6634. sPrcpdd = sOrddd;
  6635. }
  6636. else if (sOrdtype == "T") {
  6637. sOrddd = OPERATIONINFO_NODE.getColumn(0, "opcnfmdd");
  6638. sOrddrid = OPERATIONINFO_NODE.getColumn(0, "perfdrid");
  6639. sOrddeptcd = OPERATIONINFO_NODE.getColumn(0, "perfdeptcd");
  6640. ds_reqdata.setColumn(0, "/root/send/reqdata/patflag" , OPERATIONINFO_NODE.getColumn(0, "oppatflagcd")); //실제 ioflag는 patflag로 설정
  6641. ds_reqdata.setColumn(0, "/root/send/reqdata/procflag" , "F");
  6642. ds_reqdata.setColumn(0, "/root/send/reqdata/oprsrvno" , OPERATIONINFO_NODE.getColumn(0, "oprsrvno"));
  6643. ds_reqdata.setColumn(0, "/root/send/reqdata/ophistno" , OPERATIONINFO_NODE.getColumn(0, "ophistno"));
  6644. sSrchdd = ds_patinfo.getColumn(0, "/root/main/patinfo/prcpdd"); //조회일자
  6645. if (!utlf_isNull(sSrchdd) && sSrchdd != "-")
  6646. sPrcpdd = sSrchdd;
  6647. else
  6648. sPrcpdd = utlf_getCurrentDate();
  6649. }
  6650. else {
  6651. sOrddrid = fGetPatientInfoDetail("medispclid");
  6652. sOrddd = fGetPatientInfoDetail("indd");
  6653. sPrcpdd = fGetPatientInfo("prcpdd");
  6654. }
  6655. var sHngnm = "";
  6656. ds_reqdata.setColumn(0, "/root/send/reqdata/pid" , sPid);
  6657. ds_reqdata.setColumn(0, "/root/send/reqdata/orddd" , sOrddd);
  6658. ds_reqdata.setColumn(0, "/root/send/reqdata/cretno" , sCretno);
  6659. ds_reqdata.setColumn(0, "/root/send/reqdata/hngnm" , sHngnm);
  6660. ds_reqdata.setColumn(0, "/root/send/reqdata/prcpgenrflag" , sOrdtype);
  6661. ds_reqdata.setColumn(0, "/root/send/reqdata/orddeptcd" , sOrddeptcd);
  6662. ds_reqdata.setColumn(0, "/root/send/reqdata/orddrid" , sOrddrid);
  6663. ds_reqdata.setColumn(0, "/root/send/reqdata/instcd" , sysf_getUserInfo("dutplceinstcd"));
  6664. ds_reqdata.setColumn(0, "/root/send/reqdata/prcpdd" , sPrcpdd);
  6665. ds_reqdata.setColumn(0, "/root/send/reqdata/srchtabflag" , sOrdtype );//대상자리스트탭 구분
  6666. ds_reqdata.setColumn(0, "/root/send/reqdata/insukind" , sInsukind);
  6667. //입원
  6668. ds_reqdata.setColumn(0, "/root/send/reqdata/srchdd" , sSrchdd);
  6669. //후인증 count start
  6670. ds_reqdata.setColumn(0, "/root/send/reqdata/userdeptcd" , sysf_getUserInfo("dutplcecd"));
  6671. ds_reqdata.setColumn(0, "/root/send/reqdata/userkind" , "D");
  6672. ds_reqdata.setColumn(0, "/root/send/reqdata/execkind" , "patlist");
  6673. ds_reqdata.setColumn(0, "/root/send/reqdata/aftcertorddrid", sysf_getUserInfo("userid"));
  6674. //후인증 count end
  6675. //전처방 개인별 조회 option 추가
  6676. var bfprcpviewflag = sysMessageobj.ds_orderbasicinfo.getColumn(0, "/root/properties/orderbasicinfo/envinfo[qestcd='018']/answcnt");
  6677. ds_reqdata.setColumn(0, "/root/send/reqdata/bfprcpviewflag", bfprcpviewflag);
  6678. if (sOrdtype == "O" || sOrdtype == "S") {
  6679. if (!tranf_submit("TRMMO04310", false)) {
  6680. }
  6681. }
  6682. else if (sOrdtype == "I" || sOrdtype == "E" || sOrdtype == "D" || sOrdtype == "W") { //병동현황판(W) 조건 추가 2012.06.22 kskim
  6683. //입원 base 첫 로딩은 정규처방
  6684. if (sOrdtype != "W") {
  6685. ds_reqdata.setColumn(0, "/root/send/reqdata/tabprcpkindcd" ,"10");
  6686. }
  6687. if (!tranf_submit("TRMMO04311", false)) {
  6688. }
  6689. }
  6690. else if (sOrdtype == "T") {
  6691. if (!tranf_submit("TRMMO04312")) {
  6692. }
  6693. }
  6694. ds_initdata.setColumn(0, "/root/initdata/loadflag", "Y" );
  6695. ds_initdata.setColumn(0, "/root/initdata/loaddate", utlf_getCurrentDate());
  6696. ds_initdata.setColumn(0, "/root/initdata/loadtime", utlf_getCurrentTime());
  6697. var viewerObj = frmf_getViewer("patientInfo");
  6698. viewerObj.ds_loadinginfo.clearData("/root/loadinginfo");
  6699. viewerObj.ds_loadinginfo.setColumn(0, "/root/loadinginfo");
  6700. viewerObj.ds_loadinginfo.copyData(ds_initdata);
  6701. }
  6702. /***************************************************************************************************
  6703. * Function : lf_focusMain
  6704. * Description : 포커스를 메인으로 한다.(처방화면 으로 포커스 옮기는 함수)
  6705. * Argument : curRow => 메인의 검색 row
  6706. * : flag => child
  6707. * : prcpNmClearFlag => 검색명을 클리어 시킬건지 여부
  6708. * return type :
  6709. * Creator :
  6710. * @---------------------------------------------------
  6711. */
  6712. function lf_focusMain( curRow, flag, prcpNmClearFlag){
  6713. var enableevent; // enableevent 가 false 일때는 rowposition이 제대로 안바뀐다. 잠시 켜놓고 함수 끝날때 원래 상태로 다시 되돌림
  6714. if (flag == "child") {
  6715. var oTrgtObj = lf_getFormObject(flag);
  6716. // cp 추가
  6717. if( oTrgtObj.name == "SMMMP00800" ) { // TF는 CP에 ds_main_prcplist가 없으면 처방에 ds_main_prcplist를 보는데 XP는 에러남
  6718. oTrgtObj = grp_biz.grp_prcp.imp_prcp; // 처방화면의 ds_main_prcplist
  6719. }
  6720. if( oTrgtObj.name == "SMMMR04200" ) {
  6721. oTrgtObj = sw_left.case_prcpmast;
  6722. }
  6723. if ( prcpNmClearFlag != "N" ) {
  6724. oTrgtObj.ds_main_prcplist.setColumn(curRow, "prcpnm", "");
  6725. oTrgtObj.ds_main_prcplist.setColumn(curRow, "prcpcd", "");
  6726. }
  6727. enableevent = oTrgtObj.ds_main_prcplist.enableevent;
  6728. if(!enableevent)
  6729. oTrgtObj.ds_main_prcplist.enableevent = true;
  6730. var bfRow = curRow - 1;
  6731. var sPrcpClsCd = oTrgtObj.ds_main_prcplist.getColumn(bfRow, "prcpclscd");
  6732. if(sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6"){
  6733. oTrgtObj.ds_main_prcplist.selectRow(bfRow);
  6734. oTrgtObj.ds_main_prcplist.rowposition = bfRow;
  6735. oTrgtObj.div_all.grd_prcplist.setCellPos(oTrgtObj.div_all.grd_prcplist.getBindCellIndex("body", "drprcpetc7"));
  6736. }else{
  6737. oTrgtObj.ds_main_prcplist.selectRow(curRow);
  6738. oTrgtObj.ds_main_prcplist.rowposition = curRow;
  6739. if(oTrgtObj.ds_send.getColumn(0, "cond99") == "getPrcpCdOldSrchInfo") {
  6740. oTrgtObj.div_all.grd_prcplist.setCellPos(prcpcdCol);
  6741. oTrgtObj.ds_send.setColumn(0, "cond99", "");
  6742. } else {
  6743. oTrgtObj.div_all.grd_prcplist.setCellPos(prcpnmCol);
  6744. }
  6745. }
  6746. if( oTrgtObj.ds_root.getColumn(0, "cp") == "Y" ){
  6747. try {
  6748. //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  6749. if( !utlf_isNull(curSavePrcpFlag_SMMMO00110) && (curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T") ){
  6750. if(!enableevent)
  6751. oTrgtObj.ds_main_prcplist.enableevent = false;
  6752. return;
  6753. }
  6754. } catch(e) {
  6755. sysf_catchTrace(e);
  6756. }
  6757. }
  6758. // 항생제에서 데이타 추가 후 dispatch 시엔 Focus가 안 가서 setFocus 사용 20080925 by Moonsh
  6759. var cdssFlag = oTrgtObj.frmf_getParameter( "SPMMD01600_flag");
  6760. var sAltDrugFlag = oTrgtObj.frmf_getParameter( "SPMMB10100_flag"); // 대체약 선택으로 호출시
  6761. if ( cdssFlag == "Y" ) {
  6762. oTrgtObj.div_all.grd_prcplist.setFocus();
  6763. } else if (sAltDrugFlag == "Y") {
  6764. } else {
  6765. //by sonjy 20090923 성공적으로 copy햇을 경우 ...
  6766. //iviewer에서 addprcp호출시 grid edit 안되는 bug 수정
  6767. oTrgtObj.div_all.grd_prcplist.setFocus();
  6768. oTrgtObj.div_all.grd_prcplist.showEditor(true);
  6769. if( oTrgtObj.name == "SMMMR04200" ) {
  6770. oTrgtObj.btn_editcell.click();
  6771. }
  6772. //oTrgtObj.div_all.btn_editcell.onclick.fireEvent(oOpener.div_all.btn_editcell, new ClickEventInfo());
  6773. }
  6774. if(!enableevent)
  6775. oTrgtObj.ds_main_prcplist.enableevent = false;
  6776. // bold 처리 확인필요
  6777. // opener.grd_prcplist.allstyle( "all", "font-weight" ) = ""; //기존 focus cell bold체 해제 (2010.01.27 JJE)
  6778. } else {
  6779. ds_prcpsrch_prcplist.clearData();
  6780. ds_prcpgroup_prcplist.clearData();
  6781. ds_prcpdirec_prcplist.clearData();
  6782. enableevent = ds_main_prcplist.enableevent;
  6783. var oTrgtObj = lf_getFormObject(flag);
  6784. if (prcpNmClearFlag != "N") {
  6785. if( oTrgtObj.name == "SMMMR04200" ) {
  6786. if(enableevent)
  6787. ds_main_prcplist.enableevent = false;
  6788. }
  6789. ds_main_prcplist.setColumn(curRow, "prcpnm", "");
  6790. ds_main_prcplist.setColumn(curRow, "prcpcd", "");
  6791. if( oTrgtObj.name == "SMMMR04200" ) {
  6792. if(enableevent)
  6793. ds_main_prcplist.enableevent = true;
  6794. }
  6795. }
  6796. if(!enableevent)
  6797. ds_main_prcplist.enableevent = true;
  6798. var bfRow = curRow - 1;
  6799. var sPrcpClsCd = ds_main_prcplist.getColumn(bfRow, "prcpclscd");
  6800. if(sPrcpClsCd == "A2" || sPrcpClsCd == "A4" || sPrcpClsCd == "A6"){
  6801. ds_main_prcplist.selectRow(bfRow);
  6802. ds_main_prcplist.rowposition = bfRow;
  6803. div_all.grd_prcplist.setCellPos(div_all.grd_prcplist.getBindCellIndex("body", "drprcpetc7"));
  6804. }else{
  6805. ds_main_prcplist.selectRow(curRow);
  6806. ds_main_prcplist.rowposition = curRow ;
  6807. if(ds_send.getColumn(0, "cond99") == "getPrcpCdOldSrchInfo") {
  6808. div_all.grd_prcplist.setCellPos(prcpcdCol);
  6809. ds_send.setColumn(0, "cond99", "");
  6810. } else {
  6811. div_all.grd_prcplist.setCellPos(prcpnmCol);
  6812. }
  6813. }
  6814. if( ds_root.getColumn(0, "cp") == "Y" ){ //CP에서 저장 시 AddPrcp()를 수행 시, 마지막 라인에 포커스가 남아있는 상태에서 저장 수행 과정에 "onendedit" 이번트 동시 수행하면서 윈도우 에러 발생 -> 이 경우 막음처리 (2008.10.02 JJE)
  6815. try {
  6816. if( !utlf_isNull(curSavePrcpFlag_SMMMO00110) && (curSavePrcpFlag_SMMMO00110 == "N" || curSavePrcpFlag_SMMMO00110 == "T") ){
  6817. if(!enableevent)
  6818. ds_main_prcplist.enableevent = false;
  6819. return;
  6820. }
  6821. } catch(e) {
  6822. sysf_catchTrace(e);
  6823. }
  6824. if (prtlprcpstatus_SMMMO00110 != "U" ) {
  6825. div_all.grd_prcplist.showEditor(true);
  6826. }
  6827. } else {
  6828. div_all.grd_prcplist.showEditor(true);
  6829. if( oTrgtObj.name == "SMMMR04200" ) {
  6830. oTrgtObj = sw_left.case_prcpmast;
  6831. oTrgtObj.btn_editcell.click();
  6832. }
  6833. }
  6834. if(!enableevent)
  6835. ds_main_prcplist.enableevent = false;
  6836. //기존 focus cell bold체 해제 (2010.01.27 JJE)
  6837. // bold 처리 확인필요
  6838. // grd_prcplist.allstyle( "all", "font-weight" ) = "";
  6839. }
  6840. }
  6841. /****************************************************************************************
  6842. * Argument : curRow: 호출 row
  6843. * : flag: 처방복사시 호출하면 refresh 시켜주면서 어느 row의 팝업인지 알게함
  6844. * Description : 새로운 빈줄 한줄 생성
  6845. ****************************************************************************************/
  6846. function lf_newPrcpRow(nTrgtRow){
  6847. if(nTrgtRow != 0){
  6848. nTrgtRow = nTrgtRow - 1;
  6849. }
  6850. ds_grid_prcplist.insertRow(nTrgtRow);
  6851. }
  6852. /********************************************************************************************************************************************
  6853. * Argument : sQuery - 검색명
  6854. * sPrcpds - 결과 저장할 데이터셋(String)
  6855. * sSrchflag - 검색구분 : null(처방명, 처방코드 모두로 검색), "prcpcd"(처방코드로 검색), "prcpnm"(처방명으로 검색)
  6856. * sPrcpdd - 처방검색기준일자(null이면 현재일자)
  6857. * Description : 처방정보 간단 조회(처방마스터 코드 또는 명칭으로만 조회)
  6858. ********************************************************************************************************************************************/
  6859. function lf_SimplePrcpSrch(sQuery, sPrcpds, sSrchflag, sPrcpdd){
  6860. var mSrchFlag = sSrchflag;
  6861. var mPrcpdd = sPrcpdd;
  6862. // Dataset NULL 체크
  6863. if(utlf_isNull(sPrcpds)){
  6864. return false; // 데이터셋이 없을 경우 리턴처리
  6865. }
  6866. var mQuery = sQuery.trim();
  6867. // 검색명 NULL 체크
  6868. if(utlf_isNull(mQuery)){
  6869. sysf_messageBox("검색명을 입력하세요", "E");
  6870. return false;
  6871. }
  6872. //질의어 사이즈 체크
  6873. var sIsHangul = utlf_isHangul(sQuery);
  6874. if(sIsHangul == "E" && mQuery.length < 2){
  6875. sysf_messageBox("검색명은 2글자 이상", "C001");
  6876. return false;
  6877. }
  6878. //처방검색 기준일자 세팅
  6879. if(utlf_isNull(sPrcpdd))
  6880. mPrcpdd = utlf_getCurrentDate();
  6881. if(utlf_isNull(sSrchflag))
  6882. mSrchFlag = null;
  6883. dsf_createDsRow("ds_cond_req_simpleprcpnfo",
  6884. [{col:"prcpdd", val:mPrcpdd},
  6885. {col:"srchflag", val:mSrchFlag},
  6886. {col:"srchnm", val:mQuery}]);
  6887. var objParam = new Object();
  6888. objParam.id = "reqGetSimplePrcpInfo";
  6889. objParam.service = "prcpmngtapp.PrcpMngt";
  6890. objParam.method = "reqGetSimplePrcpInfo";
  6891. objParam.inds = "req=ds_cond_req_simpleprcpnfo";
  6892. objParam.outds = sPrcpds + "=prcpinfolist";
  6893. tranf_submit(objParam);
  6894. }
  6895. /***************************************************************************************************
  6896. * Function : lf_addDrChk
  6897. * Description : 가산의 체크
  6898. * Argument :
  6899. * return type :
  6900. * Creator :
  6901. ***************************************************************************************************/
  6902. function lf_addDrChk(srcNode, indx, msgyn)
  6903. {
  6904. var addfg = "";
  6905. if (indx < 0) {
  6906. return addfg;
  6907. }
  6908. var calcscormastspec = srcNode.getColumn(indx, "calcscormastspec");
  6909. if (utlf_isNull(calcscormastspec))
  6910. return addfg ;
  6911. var calcspecArr = calcscormastspec.split("|");
  6912. if (calcspecArr != null && calcspecArr.length > 4) {
  6913. if (calcspecArr[4] == "A") addfg = "GS";
  6914. else if (calcspecArr[4] == "B") addfg = "ALL"; // CS
  6915. else if (calcspecArr[4] == "C") addfg = "CS";
  6916. else if (calcspecArr[4] == "D") addfg = "GS";
  6917. if (utlf_isNull(addfg)) {
  6918. if (calcspecArr[5] == "A"){
  6919. addfg = "GS";
  6920. }else if (calcspecArr[5] == "B"){
  6921. addfg = "ALL";
  6922. }else if (calcspecArr[5] == "C"){
  6923. addfg = "CS";
  6924. }else if (calcspecArr[5] == "D"){
  6925. addfg = "GS";
  6926. }
  6927. }
  6928. if (utlf_isNull(addfg)) {
  6929. if (msgyn == "Y") {
  6930. sysf_messageBox("가산의 지정이 불가한 처방입니다.", "E");
  6931. }
  6932. }
  6933. }
  6934. return addfg;
  6935. }
  6936. /***************************************************************************************************
  6937. * Function : lf_chngAddDr
  6938. * Description : 가산의 변경
  6939. * Argument :
  6940. * return type :
  6941. * Creator :
  6942. ***************************************************************************************************/
  6943. function lf_chngAddDr(objPrcpList, indx, addfg, grdObj, objPaminfoDS )
  6944. {
  6945. if(utlf_isNull(objPaminfoDS)){
  6946. objPaminfoDS = ds_data_paminfo;
  6947. }
  6948. var ordtype = objPaminfoDS.getColumn(0, "ioflag");
  6949. var oParamObj = new Object();
  6950. oParamObj.plgv_orddeptcd = addfg;
  6951. oParamObj.plgv_ioflag = ordtype;
  6952. oParamObj.plgv_flag = "adddr";
  6953. oParamObj.plgv_specdrid = objPrcpList.getColumn(indx, "specdrid");
  6954. var scrid = frmf_getScreenID();
  6955. var xpt = 400;
  6956. var ypt = 300;
  6957. if (!utlf_isNull(scrid) && scrid.length > 5) {
  6958. if (scrid.substring(0,5) == "SPMMO") {
  6959. ypt = 10 ;
  6960. }
  6961. }
  6962. var objRtnVal = lf_prcpModal("SPMMB08300", oParamObj);
  6963. var sUseyn = objRtnVal.prv_sUseyn;
  6964. var userid = objRtnVal.prv_sUserid;
  6965. if (sUseyn == "Y") {
  6966. objPrcpList.setColumn(indx, "tempcol30", userid);
  6967. return true ;
  6968. }
  6969. return false ;
  6970. }
  6971. /****************************************************************************************
  6972. * Argument : nRow 포커스를 이동시킬 row
  6973. * : nCol 포커스를 이동시킬 column
  6974. * Description : 엔터키를 칠때 다음셀로 이동시킨다.
  6975. ****************************************************************************************/
  6976. function lf_setCellFocus(nRow, nCol, oTrgtObj){
  6977. //trace("focus move event Target" + ", row : " + nRow + ", nCol : " + nCol);
  6978. if(utlf_isNull(oTrgtObj)){
  6979. oTrgtObj = this;
  6980. }
  6981. oTrgtObj.ds_grid_prcplist.rowposition = nRow;
  6982. oTrgtObj.grp_prcp.grd_prcplist.setCellPos(-1);
  6983. if(utlf_isNull(oTrgtObj.grp_prcp.grd_prcplist.getCellProperty("body", nCol, "edittype") )){
  6984. oTrgtObj.grp_prcp.grd_prcplist.showEditor(false);
  6985. oTrgtObj.grp_prcp.grd_prcplist.setCellPos(nCol);
  6986. }
  6987. else{
  6988. oTrgtObj.grp_prcp.grd_prcplist.setCellPos(nCol);
  6989. oTrgtObj.grp_prcp.grd_prcplist.showEditor(true);
  6990. }
  6991. oTrgtObj.ds_grid_prcplist.selectRow(nRow, true);
  6992. }
  6993. /********************************************************************************************************************************************
  6994. * Argument : objDataset : 해당 dataset
  6995. * Description : grid 검색ROW 추가
  6996. ********************************************************************************************************************************************/
  6997. function lf_addSearchRow(objDataset:Dataset){
  6998. if(objDataset.findRow("status", "S") > -1) {
  6999. objDataset.deleteRow(objDataset.findRow("status", "S"));
  7000. }
  7001. objDataset.addRow();
  7002. objDataset.setColumn(objDataset.rowcount-1, "status", "S");
  7003. }
  7004. /********************************************************************************************************************************************
  7005. * Argument :
  7006. * Description : 처방 전달사항
  7007. ********************************************************************************************************************************************/
  7008. function lf_setPrcpdelivefact(){
  7009. ds_grid_prcplist.enableevent = false;
  7010. var nCurrow = grp_prcp.grd_prcplist.currentrow ;
  7011. if(nCurrow < 0 || nCurrow >= grp_prcp.grd_prcplist.rowcount){
  7012. return;
  7013. }
  7014. var sStatus = ds_grid_prcplist.getColumn(nCurrow, "status");
  7015. var sTempcol1 = ds_grid_prcplist.getColumn(nCurrow, "tempcol1" );
  7016. if(utlf_isNull(sTempcol1)) {
  7017. sTempcol1 = "000" ;
  7018. }
  7019. if(sStatus != "S") {
  7020. if(sStatus == "B" && sTempcol1 != "000") {
  7021. return ;
  7022. }
  7023. var sAftprcpdelivefact = grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.txt_prcpdelivefact.value;
  7024. var sBfprcpdelivefact = ds_grid_prcplist.getColumn(nCurrow, "prcpdelivefact");
  7025. if(sAftprcpdelivefact != sBfprcpdelivefact){
  7026. ds_grid_prcplist.setColumn(nCurrow, "prcpdelivefact", sAftprcpdelivefact);
  7027. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text = "■전달";
  7028. if((sStatus == "B" && sTempcol1== "000") || sStatus == "-") {
  7029. ds_grid_prcplist.setColumn(nCurrow, "status", "U" );
  7030. }
  7031. if(utlf_isNull(sAftprcpdelivefact) || sAftprcpdelivefact == "-") {
  7032. ds_grid_prcplist.setColumn(nCurrow, "remyn", "N");
  7033. } else {
  7034. ds_grid_prcplist.setColumn(nCurrow, "remyn", "Y" );
  7035. }
  7036. lf_setPrcpGridColor('EMR', 'E', grp_prcp.grd_prcplist, ds_grid_prcplist); //그리드 색 처리
  7037. }
  7038. }
  7039. ds_grid_prcplist.enableevent = true;
  7040. }
  7041. /********************************************************************************************************************************************
  7042. * Argument :
  7043. * Description : 처방 진료기타 화면 확장/축소
  7044. ********************************************************************************************************************************************/
  7045. function lf_prcpEtcDivSizeControl(obj:Button) {
  7046. if(obj.name == "btn_expansion") { //확장
  7047. ///////////////오른쪽 DIV 사이즈 조절/////////////
  7048. div_prcpetc.move(this.position.right - 400, div_prcpetc.position.top);
  7049. div_prcpetc.position.right = this.position.right-20;
  7050. //////////////////////////////////////////////////
  7051. ///////////////버튼 및 line 위치 조절/////////////
  7052. Static00.move(div_prcpetc.position.left-4,Static00.position.top);
  7053. obj.visible = false;
  7054. btn_default.visible = true;
  7055. btn_default.move(Static00.position.right-btn_default.position.width,btn_default.position.top);
  7056. //////////////////////////////////////////////////
  7057. //미니모드 or 숨김모드 일 경우 진료기타 div변경
  7058. if(div_prcpetc.pDIv_mode.btn_defaultMode.class != "btn_ScreenSelect") {
  7059. div_prcpetc.visible = true;
  7060. div_prcpetc.div_mini.visible = false;
  7061. div_prcpetc.div_normal.visible = true;
  7062. }
  7063. } else if(obj.name == "btn_default") { //축소
  7064. var e = new ClickEventInfo;
  7065. if(div_prcpetc.pDIv_mode.btn_miniMode.class == "btn_ScreenSelect") { //미니모드일 떄는 축소 버튼 클릭 시 미니모드로
  7066. div_prcpetc.pDIv_mode.btn_miniMode.onclick.fireEvent(div_prcpetc.pDIv_mode.btn_miniMode, e);
  7067. } else if(div_prcpetc.pDIv_mode.btn_hideMode.class == "btn_ScreenSelect") { //숨김일 떄는 축소 버튼 클릭 시 숨김모드로
  7068. div_prcpetc.pDIv_mode.btn_hideMode.onclick.fireEvent(div_prcpetc.pDIv_mode.btn_hideMode, e);
  7069. } else {
  7070. ///////////////오른쪽 DIV 사이즈 조절/////////////
  7071. div_prcpetc.move(this.position.right - 200, div_prcpetc.position.top);
  7072. div_prcpetc.position.right = this.position.right-20;
  7073. //////////////////////////////////////////////////
  7074. ///////////////버튼 및 line 위치 조절/////////////
  7075. Static00.move(div_prcpetc.position.left-4,Static00.position.top);
  7076. obj.visible = false;
  7077. btn_expansion.visible = true;
  7078. btn_expansion.move(Static00.position.right-btn_expansion.position.width,btn_expansion.position.top);
  7079. //////////////////////////////////////////////////
  7080. /////////////////처방 DIV 사이즈 조절/////////////
  7081. grp_prcp.position.width = Static00.position.left-15;
  7082. //////////////////////////////////////////////////
  7083. }
  7084. } else if(obj.name == "btn_miniMode") { //미니모드
  7085. ///////////////오른쪽 DIV 사이즈 조절/////////////
  7086. div_prcpetc.move(this.position.right - 70, div_prcpetc.position.top);
  7087. div_prcpetc.position.right = this.position.right-20;
  7088. //////////////////////////////////////////////////
  7089. ///////////////버튼 및 line 위치 조절/////////////
  7090. //Static00.position.left = 1182;
  7091. //Static00.position.right = 1186;
  7092. Static00.move(div_prcpetc.position.left-4,Static00.position.top);
  7093. //btn_expansion.position.left = 1170;
  7094. //btn_expansion.position.right = 1186;
  7095. //btn_default.position.left = 1170;
  7096. //btn_default.position.right = 1186;
  7097. btn_default.move(Static00.position.right-btn_default.position.width,btn_default.position.top);
  7098. btn_expansion.move(Static00.position.right-btn_expansion.position.width,btn_expansion.position.top);
  7099. btn_expansion.visible = true;
  7100. btn_default.visible = false;
  7101. //////////////////////////////////////////////////
  7102. ///////////////DIV_MINI 위치 조정/////////////////
  7103. div_prcpetc.div_mini.position.left = 00;
  7104. div_prcpetc.div_mini.position.right = 51;
  7105. //////////////////////////////////////////////////
  7106. /////////////////처방 DIV 사이즈 조절/////////////
  7107. grp_prcp.position.width = this.position.right-80;
  7108. //////////////////////////////////////////////////
  7109. } else if(obj.name == "btn_hideMode") { //숨김모드
  7110. ///////////////오른쪽 DIV 숨김/////////////
  7111. div_prcpetc.visible = false;
  7112. ///////////////////////////////////////////
  7113. ///////////////버튼 및 line 위치 조절/////////////
  7114. //Static00.position.left = 1252;
  7115. //Static00.position.right = 1256;
  7116. Static00.move(this.position.right-Static00.position.width-20,Static00.position.top);
  7117. /*btn_expansion.position.left = 1240;
  7118. btn_expansion.position.right = 1256;
  7119. btn_default.position.left = 1240;
  7120. btn_default.position.right = 1256;*/
  7121. btn_default.move(Static00.position.right-btn_default.position.width,btn_default.position.top);
  7122. btn_expansion.move(Static00.position.right-btn_expansion.position.width,btn_expansion.position.top);
  7123. btn_expansion.visible = true;
  7124. btn_default.visible = false;
  7125. //////////////////////////////////////////////////
  7126. /////////////////처방 DIV 사이즈 조절/////////////
  7127. grp_prcp.position.width = this.position.right - 30;
  7128. //////////////////////////////////////////////////
  7129. }
  7130. }
  7131. /********************************************************************************************************************************************
  7132. * Argument :
  7133. * Description : 선택한 처방 전달사항 표시
  7134. ********************************************************************************************************************************************/
  7135. function lf_setPrcpDelivefactCellClick(obj:Grid, e:GridClickEventInfo) {
  7136. if( e.cell >= 0 ) {
  7137. var nCurRow = ds_grid_prcplist.rowposition;
  7138. var sPrcpdelivefact = ds_grid_prcplist.getColumn(nCurRow, "prcpdelivefact");
  7139. var sNursdelivefact = ds_grid_prcplist.getColumn(nCurRow, "nursdelivefact");
  7140. var sSuppdeptdelivefact = ds_grid_prcplist.getColumn(nCurRow, "suppdeptdelivefact");
  7141. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.txt_prcpdelivefact.value = sPrcpdelivefact;
  7142. grp_prcp.grp_prcp_bottom.switch_delivefact.case_nr.txt_nursdelivefact.value = sNursdelivefact;
  7143. grp_prcp.grp_prcp_bottom.switch_delivefact.case_supp.txt_suppdeptdelivefact.value = sSuppdeptdelivefact;
  7144. }
  7145. var sRemyn = ds_grid_prcplist.getColumn(ds_grid_prcplist.rowposition, "remyn");
  7146. if(sRemyn == "Y"){
  7147. if(grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text != "■ 전달 ") {
  7148. grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.move(grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.left + 6, grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.top);
  7149. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text = "■ 전달 ";
  7150. }
  7151. } else {
  7152. if(grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text != "전달 ") {
  7153. grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.move(grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.left - 6, grp_prcp.grp_prcp_bottom.btn_prcpdelivefact.position.top);
  7154. grp_prcp.grp_prcp_bottom.switch_delivefact.case_dr.text = "전달 ";
  7155. }
  7156. }
  7157. }
  7158. /**
  7159. * @desc : 경구약 투약일수 일괄 변경
  7160. */
  7161. function lf_setDrugPrcpdayno(sDayno,objflag){
  7162. if(utlf_isNull(sDayno) || sDayno == "0") {
  7163. return ;
  7164. }
  7165. var sPrcpclscd = "";
  7166. var sPrcpstatcd = "";
  7167. var sStatus = "";
  7168. var sSNodeList = null;
  7169. if(objflag == "child"){
  7170. for(var i = 0 ; i < opener.ds_grid_prcplist.rowcount ; i++) {
  7171. sPrcpclscd = opener.ds_grid_prcplist.getColumn(i, "prcpclscd");
  7172. sPrcpstatcd = opener.ds_grid_prcplist.getColumn(i, "tempcol1");
  7173. sStatus = opener.ds_grid_prcplist.getColumn(i, "status");
  7174. if(utlf_isNull(sPrcpstatcd)) {
  7175. sPrcpstatcd = "000";
  7176. }
  7177. if(sPrcpclscd == "A2" && sPrcpstatcd == "000" && sStatus != "D" ) {
  7178. opener.ds_grid_prcplist.setColumn(i, "prcpdayno", sDayno);
  7179. if(sStatus != "I" && sStatus != "U") {
  7180. opener.ds_grid_prcplist.setColumn(i, "status", "U");
  7181. }
  7182. }
  7183. }
  7184. opener.ds_init_data.setColumn(0, "initprcpdayno", sDayno);
  7185. }else{
  7186. for(var i = 0 ; i < ds_grid_prcplist.rowcount ; i++) {
  7187. sPrcpclscd = ds_grid_prcplist.getColumn(i, "prcpclscd");
  7188. sPrcpstatcd = ds_grid_prcplist.getColumn(i, "tempcol1");
  7189. sStatus = ds_grid_prcplist.getColumn(i, "status");
  7190. if(utlf_isNull(sPrcpstatcd)) {
  7191. sPrcpstatcd = "000";
  7192. }
  7193. if(sPrcpclscd == "A2" && sPrcpstatcd == "000" && sStatus != "D" ) {
  7194. ds_grid_prcplist.setColumn(i, "prcpdayno", sDayno);
  7195. if(sStatus != "I" && sStatus != "U") {
  7196. ds_grid_prcplist.setColumn(i, "status", "U");
  7197. }
  7198. }
  7199. }
  7200. ds_init_data.setColumn(0, "initprcpdayno", sDayno);
  7201. }
  7202. }
  7203. /****************************************************************************************
  7204. * Components : dataGrid
  7205. * Components ID : ds_data_prcplist
  7206. * Event : oncolumnchanged
  7207. * Argument :
  7208. * Description : 처방상세 - 이중유형 체크
  7209. ****************************************************************************************/
  7210. function lf_setAnamneFlagOnColumnChanged(e, oPamDs, objPrcpDs ){
  7211. if(e.columnid != "anamneflag"){
  7212. return;
  7213. }
  7214. var sPrcpgenrflag = oPamDs.getColumn(0, "ioflag");
  7215. var sAnamneflag = objPrcpDs.getColumn(0, "anamneflag");
  7216. if(sPrcpgenrflag == "I" || sPrcpgenrflag == "D"){
  7217. if(sAnamneflag == "Y"){ //기왕증이 Y로 처리된 경우에만 보조유형선택 팝업 open
  7218. var sPid = oPamDs.getColumn(0, "pid");
  7219. var sIndd = oPamDs.getColumn(0, "indd");
  7220. dsf_createDsRow("ds_temp_req",
  7221. [{col:"pid", val:sPid}
  7222. ,{col:"indd", val:sIndd}]);
  7223. var objParam = new Object();
  7224. objParam.id = "TRMMO15701";
  7225. objParam.service = "prcpmngtapp.PatPrcpSrchMngt";
  7226. objParam.method = "reqGetPatSupKind";
  7227. objParam.inds = "req=ds_temp_req";
  7228. objParam.outds ="ds_temp_patsupkind=patsupkind";
  7229. objParam.callback = "cbf_TRMMO15701";
  7230. tranf_submit(objParam);
  7231. var objDs = this.removeChild("ds_temp_req");
  7232. delete objDs;
  7233. objDs = null;
  7234. if(!utlf_isNull(ds_temp_patsupkind)) {
  7235. if(ds_temp_patsupkind.rowcount > 0){
  7236. var nXpt = system.clientToScreenX(grd_prcplist, 0);
  7237. var nYpt = system.clientToScreenY(grd_prcplist, 0);
  7238. var oRtnVal = frmf_modal("SPMMO15700", "SPMMO15700", null, false, null, nXpt,nYpt, null, null, "title=true");
  7239. var nSubCretNo = oRtnVal.nSubCretNo
  7240. objPrcpDs.setColumn(0, "subcretno", nSubCretNo);
  7241. }
  7242. }
  7243. }else{ //기왕증이 N로 처리된 경우에는 subcretno 0로 처리
  7244. objPrcpDs.setColumn(0, "subcretno", "0");
  7245. }
  7246. }
  7247. }
  7248. function cbf_TRMMO15701(strSvcID, nErrorCode, strErrorMsg){
  7249. //에러 처리
  7250. if(nErrorCode != 0){
  7251. sysf_messageBox ("임상시험 보험유형을 가져오는데 실패했습니다.", "C");
  7252. return -1;
  7253. }
  7254. }
  7255. /* 컨설트 화면 오픈 함수 */
  7256. function lf_openCnst(sSendflag) {
  7257. var sCnststatflag = "all";
  7258. if(sSendflag == "S"){ //의뢰의 경우
  7259. sSendflag = "pidreq";//환자별 의뢰한 건
  7260. }else{
  7261. sSendflag = "userrecv";//해당의사가 의뢰받은 건
  7262. }
  7263. var objArg = new Object();
  7264. objArg.plgv_paramyn = "Y";
  7265. objArg.plgv_condflag = sSendflag;
  7266. objArg.plgv_cnststatflag = sCnststatflag;
  7267. objArg.plgv_orddeptcd = sysf_getUserInfo("dutplcecd");
  7268. objArg.plgv_orddrid = sysf_getUserId();
  7269. objArg.plgv_userdept = "doctor";
  7270. var sIoflag = ds_data_paminfo.getColumn(0, "ioflag");
  7271. if(sIoflag == "I" || sIoflag == "D" || sIoflag == "E"){ //입원
  7272. frmf_modal("SMMMR05100", "SMMMR05100", objArg, 10, 10, null, null, null, null, null, null, null, "M"); // 병동 컨설트 화면
  7273. }
  7274. else if(patflag == "O" || patflag == "S"){ //외래
  7275. frmf_modal("SMMMR05110", "SMMMR05110", objArg, 10, 10, null, null, null, null, null, null, null, "M"); // 외래 컨설트 화면
  7276. }
  7277. }
  7278. /**
  7279. * @desc : 처방 이동 (위로 or 아래로 버튼을 통한 이동)
  7280. * @param : btnFlag 버튼구분(top or bottom)
  7281. * @return : void
  7282. * @authur : 전지은 2009.11.18
  7283. * @---------------------------------------------------
  7284. */
  7285. function lf_movePrcpList ( btnFlag ) {
  7286. var selectedRows = grd_prcplist.selectedRows;
  7287. var frstRow = 0;
  7288. if( btnFlag == "top" ) frstRow = grd_prcplist.selectedRow(0);
  7289. else if( btnFlag == "bottom" ) frstRow = grd_prcplist.selectedRow(selectedRows - 1);
  7290. var allRows = grd_prcplist.rows - 2; //caption, search row
  7291. var addChkRow = 0;
  7292. //var cnt = 0;
  7293. var chngYN = 0; //선택된 row인지 체크
  7294. var rowNum = 0;
  7295. var chkNum = 0; //위, 아래 row의 mset여부에 따라 달라지는 +/- row
  7296. var moveCnt = 0;
  7297. var iRow = 0;
  7298. var addNum = 0; //추가해야할 num
  7299. //var pmFlag = 0; //rowNum + - 여부 : 0 or else
  7300. var selInclprcpno = "";
  7301. var chkInclprcpno = "";
  7302. //var inclprcpnoExistYN = "N";
  7303. var inclprcpnoCVS = "";
  7304. var inclprcpnoItem = "";
  7305. var printRow = new Array();
  7306. var printRow2 = new Array();
  7307. var selRows = new Array();
  7308. if( !(selectedRows > 0) ) return;
  7309. model.makeNode("/root/tmp_moveprcp");
  7310. for(var i=selectedRows-1; i>=0; i--){
  7311. if(model.getValue("/root/main/prcp/prcplist["+ grd_prcplist.selectedrow(i) +"]/inclprcpno") > "0" && model.getValue("/root/main/prcp/prcplist["+ grd_prcplist.selectedrow(i) +"]/prcpsetcd") == "-")
  7312. inclprcpnoCVS = inclprcpnoCVS + model.getValue("/root/main/prcp/prcplist["+ grd_prcplist.selectedrow(i) +"]/inclprcpno") + "|";
  7313. }
  7314. inclprcpnoItem = inclprcpnoCVS.split("|");
  7315. //전체 row를 보면서 rowSeq를 설정해 줌 , rowseq순으로 /root/tmp_moveprcp => /root/main/prcp 로 이동
  7316. if( btnFlag == "top" ){
  7317. for( var i=grd_prcplist.rows-1; i>0; i-- ){
  7318. iRow = i;
  7319. chkNum = 0;
  7320. chngYN = 0;
  7321. addNum = 0;
  7322. //pmFlag = 0;
  7323. if( iRow > 1 ){
  7324. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ iRow +"]/inclprcpno");
  7325. if( inclprcpnoItem.length-1 > 0 ){
  7326. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7327. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7328. chngYN = 1;
  7329. }
  7330. }
  7331. }
  7332. if( chngYN == 0 && grd_prcplist.isselected(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  7333. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  7334. addChkRow = iRow - 1;
  7335. selInclprcpno = "";
  7336. if( addChkRow > 0 && addChkRow < grd_prcplist.rows ){
  7337. for(var j=addChkRow; j>=1; j--){
  7338. addYN = "N";
  7339. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7340. if( inclprcpnoItem.length-1 > 0 ){
  7341. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7342. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7343. //addNum++;
  7344. addYN = "Y";
  7345. }
  7346. }
  7347. }
  7348. if( addYN != "Y" && grd_prcplist.isselected(j) == true && chkInclprcpno == "0" ){
  7349. //addNum++;
  7350. addYN = "Y";
  7351. }
  7352. if( addYN != "Y" ){
  7353. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  7354. if( isNull(selInclprcpno) ) selInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7355. if( !isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7356. chkNum++;
  7357. }
  7358. else{
  7359. if( printRow.length <= 0 ){
  7360. if( isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7361. chkNum++;
  7362. }
  7363. break;
  7364. }
  7365. }
  7366. }
  7367. }
  7368. }
  7369. }
  7370. if( chngYN > 0 ){
  7371. rowNum = i - printRow.length;
  7372. moveCnt++;
  7373. selRows[selRows.length] = rowNum;
  7374. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  7375. if( model.getValue ( prcpNode + "[" + i + "]/status") == "-") model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  7376. }else{
  7377. if( printRow.length > 0 ){
  7378. for( var p=0; p<printRow.length; p++ ){
  7379. if( printRow[p] == i ) addNum = moveCnt;
  7380. }
  7381. }
  7382. rowNum = i + addNum;
  7383. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  7384. moveCnt = 0;
  7385. printRow = new Array();
  7386. }
  7387. }
  7388. //검색 row는 rowseq 변동 없음
  7389. if( model.getValue(prcpNode + "["+ i +"]/status") == "S" ) rowNum = i;
  7390. model.makeValue(prcpNode + "[" + i + "]/rowseq", rowNum);
  7391. printRow2[i-1] = rowNum;
  7392. }
  7393. }
  7394. else{
  7395. for( var i=1; i<grd_prcplist.rows; i++ ){
  7396. iRow = i;
  7397. chkNum = 0;
  7398. chngYN = 0;
  7399. addNum = 0;
  7400. //pmFlag = 0;
  7401. if( iRow < grd_prcplist.rows ){
  7402. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ iRow +"]/inclprcpno");
  7403. if( inclprcpnoItem.length-1 > 0 ){
  7404. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7405. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7406. chngYN = 1;
  7407. }
  7408. }
  7409. }
  7410. if( chngYN == 0 && grd_prcplist.isselected(iRow) == true && chkInclprcpno == "0" ) chngYN = 1;
  7411. if( chngYN == 1 ){ //선택된 row이면(선택된모코드의 자코드도 포함)
  7412. addChkRow = iRow + 1;
  7413. selInclprcpno = "";
  7414. if( addChkRow > 0 && addChkRow < grd_prcplist.rows ){
  7415. for(var j=addChkRow; j<=allRows; j++){
  7416. addYN = "N";
  7417. chkInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7418. if( inclprcpnoItem.length-1 > 0 ){
  7419. for(var k=0; k<inclprcpnoItem.length-1; k++){ //copy대상의 mset
  7420. if( chkInclprcpno != "0" && chkInclprcpno == inclprcpnoItem[k] ){
  7421. //addNum++;
  7422. addYN = "Y";
  7423. }
  7424. }
  7425. }
  7426. if( addYN != "Y" && grd_prcplist.isselected(j) == true && chkInclprcpno == "0" ){
  7427. //addNum++;
  7428. addYN = "Y";
  7429. }
  7430. if( addYN != "Y" ){
  7431. if( chkInclprcpno != "0" ){ // && chkInclprcpno != inclprcpnoItem[k]
  7432. if( isNull(selInclprcpno) ) selInclprcpno = model.getValue("/root/main/prcp/prcplist["+ j +"]/inclprcpno");
  7433. if( !isNull(selInclprcpno) && selInclprcpno == chkInclprcpno && isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7434. chkNum++;
  7435. }
  7436. else{
  7437. if( printRow.length <= 0 ){
  7438. if( isNull(printRow[chkNum]) ) printRow[printRow.length] = j;
  7439. chkNum++;
  7440. }
  7441. break;
  7442. }
  7443. }
  7444. }
  7445. }
  7446. }
  7447. }
  7448. if( chngYN > 0 ){
  7449. rowNum = i + printRow.length;
  7450. moveCnt++;
  7451. selRows[selRows.length] = rowNum;
  7452. //임시처방은 순서변경 시 수정모드로 상태를 세팅해줌
  7453. if( model.getValue(prcpNode + "[" + i + "]/status") == "-") model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  7454. }else{
  7455. if( printRow.length > 0 ){
  7456. for( var p=0; p<printRow.length; p++ ){
  7457. if( printRow[p] == i ) addNum = moveCnt;
  7458. }
  7459. }
  7460. rowNum = i - addNum;
  7461. if( printRow.length == 0 || (printRow.length > 0 && i == printRow[printRow.length-1]) ){
  7462. moveCnt = 0;
  7463. printRow = new Array();
  7464. }
  7465. }
  7466. //검색 row는 rowseq 변동 없음
  7467. if( model.getValue(prcpNode + "["+ i +"]/status") == "S" ) rowNum = i;
  7468. model.makeValue(prcpNode + "[" + i + "]/rowseq", rowNum);
  7469. printRow2[i-1] = rowNum;
  7470. }
  7471. }
  7472. //alert( printRow2 );
  7473. copyNodeListType ( "/root/tmp_moveprcp", "/root/main/prcp/prcplist" , "replace", model, model);
  7474. //처방 인스턴스로 이동 후 refresh
  7475. model.removeNodeset(prcpNode);
  7476. for( var i=1; i<grd_prcplist.rows; i++ ){
  7477. copyNodeListType ( "/root/main/prcp", "/root/tmp_moveprcp/prcplist[rowseq='" + i + "']" , "after", model, model);
  7478. model.removenode(prcpNode + "[" + i + "]/rowseq");
  7479. }
  7480. model.removeNodeset("/root/tmp_moveprcp/prcplist");
  7481. grd_prcplist.rebuild();
  7482. //grd_prcplist.refresh();
  7483. model.recalculate();
  7484. fPrcpColor();
  7485. //이동된 row를 select 처리함
  7486. if( selRows.length > 0 ){
  7487. for(var i=0; i<selRows.length; i++){
  7488. grd_prcplist.AddListSelect(selRows[i]);
  7489. }
  7490. }
  7491. }
  7492. // function lf_createEssDs() {
  7493. //
  7494. // for(var i = 0 ; i < lgds_arrEssentialDsList.length ; i++) {
  7495. // var sDatasetNm = lgds_arrEssentialDsList[i];
  7496. // if(utlf_isNull(this.objects[sDatasetNm])) {
  7497. // var objDs = new Dataset(sDatasetNm);
  7498. // this.addChild(sDatasetNm, objDs);
  7499. // objDs.name = sDatasetNm;
  7500. // }
  7501. // }
  7502. // }
  7503. /**
  7504. * @desc : 하드코드 리스트에 해당 파라미터의 코드 값이 존재 하는지 여부를 체크 한다.
  7505. * @param : sHardCdNo : 하드코드 번호
  7506. * sCheckCode : 체크 할 하드코드
  7507. * lf_ContainsHardCD("339", "LIR112");
  7508. * @return : true : 값이 존재 함.
  7509. false : 값이 존재하지 않음.
  7510. * @author : 엄영만 2012.11.26
  7511. * 변환 OK
  7512. * @---------------------------------------------------
  7513. */
  7514. function lf_ContainsHardCD(sHardCdNo, sCheckCode) {
  7515. var bRtn = false; // 반환값
  7516. dsf_createDs("ds_chekPath"); //체크용 DS 생성
  7517. try {
  7518. lf_getHardCDList("N", sHardCdNo, null, ds_chekPath);
  7519. if(ds_chekPath.rowcount > 0) {
  7520. if(!utlf_isNull(ds_chekPath.getColumn(ds_chekPath.findRow("hardcd",sCheckCode),"hardcd"))) {
  7521. bRtn = true;
  7522. }
  7523. }
  7524. } catch(err) {
  7525. sysf_messageBox ( "lf_ContainsHardCD() 실행 중 오류가 발생 하였습니다. sHardCdNo:" + sHardCdNo + " sCheckCode:"+ sCheckCode, "E" );
  7526. } finally {
  7527. //model.removeNodeset(sChekPath);
  7528. dsf_deleteDs("ds_chekPath"); //체크용 DS 삭제
  7529. }
  7530. return bRtn;
  7531. }
  7532. /**
  7533. * @desc : 공통 상세보기
  7534. * @param : flag: 상세보기를 호출하는 화면 구분
  7535. * @return : void
  7536. * @authur : 마정민 2007. 6. 12
  7537. * 변환OK
  7538. * @---------------------------------------------------
  7539. */
  7540. function fIvwDetlVwCom ( grdObj ) {
  7541. var grdLeft = 382;
  7542. var minGrdLeft = 898;
  7543. var grdnm = ds_init.getColumn(0, "grdnm" );
  7544. var oGrid = this.components[grdnm];
  7545. // 속도 향상을 위해 이벤트 끔
  7546. oGrid.enableevent = false;
  7547. oGrid.enableredraw = false;
  7548. if( oOpener.name == "SMMMP00800" ) {
  7549. oOpener = import_prcp;
  7550. }
  7551. oOpener.div_all.grd_prcplist.enableevent = false;
  7552. oOpener.div_all.grd_prcplist.enableredraw = false;
  7553. oOpener.div_all.Splitter00.enableevent = false;
  7554. oOpener.div_all.Splitter00.enableredraw = false;
  7555. oOpener.div_all.Tab_prcp.enableevent = false;
  7556. oOpener.div_all.Tab_prcp.enableredraw = false;
  7557. if ( ds_init.getColumn(0, "detlvw") == "p") {
  7558. if (oOpener.ds_patflag.getColumn(0, "prcpgenrflag") != "O" && !utlf_isNull(oOpener.ds_patflag.getColumn(0, "prcpgenrflag"))){
  7559. oOpener.div_all.grd_prcplist.setFormatColProperty(3, "size", 0);
  7560. }
  7561. if (typeof(oOpener.div_all.grd_prcplist) != "undefined") {
  7562. oOpener.div_all.grd_prcplist.setFormatColProperty(4, "size", 0);
  7563. oOpener.div_all.Splitter00.position.x = minGrdLeft;
  7564. }
  7565. ds_init.setColumn(0, "detlvw", "m");
  7566. oOpener.ds_init.setColumn(0, "detlivw", "m");
  7567. if(!utlf_isNull(oGrid)) {
  7568. if ( grdObj == "bf" ) {
  7569. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol6"), "size", ds_init.getColumn(0, "tempcol6exwd"));
  7570. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol7"), "size", ds_init.getColumn(0, "tempcol7exwd"));
  7571. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. word일때는 아래와 같이
  7572. oGrid.extendsizetype = "row";
  7573. oGrid.autosizingtype = "row";
  7574. } else if(grdObj == "prom") {
  7575. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "prcpdelivefact"), "size", ds_init.getColumn(0, "prcpdelivefactexwd"));
  7576. }
  7577. }
  7578. } else {
  7579. if (oOpener.ds_patflag.getColumn(0, "prcpgenrflag") != "O" && !utlf_isNull(oOpener.ds_patflag.getColumn(0, "prcpgenrflag"))){
  7580. oOpener.div_all.grd_prcplist.setFormatColProperty(3, "size", 55);
  7581. }
  7582. if (typeof(oOpener.div_all.grd_prcplist) != "undefined") {
  7583. oOpener.div_all.grd_prcplist.setFormatColProperty(4, "size", 80);
  7584. oOpener.div_all.Splitter00.position.x = grdLeft;
  7585. }
  7586. ds_init.setColumn(0, "detlvw", "p");
  7587. oOpener.ds_init.setColumn(0, "detlivw", "p");
  7588. if(!utlf_isNull(oGrid)) {
  7589. if ( grdObj == "bf" ) {
  7590. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol6"), "size", ds_init.getColumn(0, "tempcol6wd"));
  7591. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "tempcol7"), "size", ds_init.getColumn(0, "tempcol7wd"));
  7592. //20081031 마정민 수정 전처방에 지정일을 추가하면서 상세보기시 word 추가. none일때는 autoResize = false;
  7593. oGrid.extendsizetype = "none";
  7594. oGrid.autosizingtype = "none";
  7595. } else if(grdObj == "prom") {
  7596. oGrid.setFormatColProperty(oGrid.getBindCellIndex("body", "prcpdelivefact"), "size", ds_init.getColumn(0, "prcpdelivefactwd"));
  7597. }
  7598. }
  7599. }
  7600. // 속도 향상을 위해 꺼놨던 이벤트 다시 켬
  7601. oGrid.enableevent = true;
  7602. oGrid.enableredraw = true;
  7603. oOpener.div_all.grd_prcplist.enableevent = true;
  7604. oOpener.div_all.grd_prcplist.enableredraw = true;
  7605. oOpener.div_all.Splitter00.enableevent = true;
  7606. oOpener.div_all.Splitter00.enableredraw = true;
  7607. oOpener.div_all.Tab_prcp.enableevent = true;
  7608. oOpener.div_all.Tab_prcp.enableredraw = true;
  7609. //CP일 경우, viewer안의 컨트롤 height 사이즈를 모두 조정해야 함 (2008.08.28 JJE)
  7610. //전처방 상세보기 모드일 경우 타 버튼 클릭시 전처방 축소시 오류 발생으로 조건 추가(2008.10.21 JJE)
  7611. if ( oOpener.ds_root.getColumn(0, "cp" ) == "Y" && grdObj != "bf" ) {
  7612. fResizeControls(); // 허만호, oOpener 삭제
  7613. }
  7614. }
  7615. /**
  7616. * @desc : 인증 암호화 전 데이터 생성
  7617. * @param : sFlag: 인증정보 구분 ("1":처방정보, "2":진단정보)
  7618. : sRegpath : 접수정보 인스턴스노드 패스
  7619. : sSrcPath : 정보 인스턴스노드 패스
  7620. * @return : void
  7621. * @authur : 엄영만 2013. 05. 29
  7622. */
  7623. function lf_getSignBfConts (sFlag, sRegpath, sSrcPath) {
  7624. var sRtn = "";
  7625. var sRegConts = ""; // 환자 등록정보
  7626. var sSrcConts = ""; // 처방및 진단 암호화전 데이터
  7627. var regNodeList = this.objects[sRegpath];
  7628. var srcNodeList = this.objects[sSrcPath];
  7629. if ( !regNodeList.rowcount > 0 || !srcNodeList.rowcount > 0) { return sRtn; }
  7630. var sOrdType = regNodeList.getColumn(0, "ioflag");
  7631. sRegConts = "$환자진료정보";
  7632. sRegConts = sRegConts + "@등록번호:" + regNodeList.getColumn(0, "pid");
  7633. sRegConts = sRegConts + "@이름:" + regNodeList.getColumn(0, "hngnm");
  7634. sRegConts = sRegConts + "@성별/나이:" + regNodeList.getColumn(0, "sex") + "/" + regNodeList.getColumn(0, "age");
  7635. sRegConts = sRegConts + "@진료과:" + regNodeList.getColumn(0, "orddeptnm") + "(" + regNodeList.getColumn(0, "orddeptcd") + ")";
  7636. if ("O" == sOrdType || "S" == sOrdType) { // 외래
  7637. sRegConts = sRegConts + "@진료의:" + regNodeList.getColumn(0, "orddrnm") + "(" + regNodeList.getColumn(0, "orddrid") + ")";
  7638. sRegConts = sRegConts + "@진료일자:" + regNodeList.getColumn(0, "orddd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  7639. } else { // 입원
  7640. sRegConts = sRegConts + "@진료의:" + regNodeList.getColumn(0, "orddrnm") + "(" + regNodeList.getColumn(0, "medispclid") + ")";
  7641. sRegConts = sRegConts + "@입원일자:" + regNodeList.getColumn(0, "indd").toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  7642. }
  7643. switch (sFlag) {
  7644. case "1": // 처방정보
  7645. var sStatus = "";
  7646. var sPrcpflag = "";
  7647. var sPrcpclscd = "";
  7648. var sPrcpdd = "";
  7649. sSrcConts = "$환자처방정보";
  7650. for(var i = 0; i < srcNodeList.rowcount; i++) {
  7651. sStatus = srcNodeList.getColumn(i, "status");
  7652. sPrcpflag = srcNodeList.getColumn(i, "prcpflag");
  7653. sPrcpclscd = srcNodeList.getColumn(i, "prcpclscd");
  7654. sPrcpdd = lf_getDsValue(srcNodeList, i, "prcppkspec").substring(0,8);
  7655. // 20100210 한재상 수정 - 사망환자 사망등록이후 처방시 처방일자를 사망일자로 변경
  7656. if ("I" == sOrdType || "E" == sOrdType || "D" == sOrdType) {
  7657. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  7658. var sDethdd = regNodeList.getColumn(0, "dethdt"); // 사망일자 설정
  7659. if(sDethdd.length >= 8 && sPrcpdd > sDethdd) {
  7660. sPrcpdd = sDethdd;
  7661. }
  7662. }
  7663. }
  7664. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  7665. else if ("-" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  7666. else if ("U" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 수정 인증저장
  7667. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC(임시저장)"; } // 임시저장후 DC
  7668. else if ("C" == sStatus) { sSrcConts = sSrcConts + "@처리구분:DC"; }
  7669. else if ("S" == sStatus) {
  7670. if ("O" == srcNodeList.getColumn(i, "prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:후인증"; }
  7671. else if ("D" == srcNodeList.getColumn(i, "prcphistcd")) { sSrcConts = sSrcConts + "@처리구분:DC 후인증"; }
  7672. } else { continue; }
  7673. if ("1" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:수가"; }
  7674. else if ("2" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:지시"; }
  7675. else if ("3" == sPrcpflag) { sSrcConts = sSrcConts + "@처방구분:식사"; }
  7676. else { continue; }
  7677. sSrcConts = sSrcConts + "@처방일자:" + sPrcpdd.toDate("YYYYMMDD").getDateFormat("YYYY년 MM월 DD일");
  7678. sSrcConts = sSrcConts + "@처방코드:" + srcNodeList.getColumn(i, "prcpcd");
  7679. sSrcConts = sSrcConts + "@처방명:" + srcNodeList.getColumn(i, "prcpnm");
  7680. sSrcConts = sSrcConts + "@처방내역:" + srcNodeList.getColumn(i, "prcpqty") + " * #" + srcNodeList.getColumn(i, "prcptims") + " * " + srcNodeList.getColumn(i, "prcpdayno");
  7681. if ("1" == sPrcpflag && "A" == sPrcpclscd.substring(0,1)) { // 복용방법, 비율처방
  7682. sSrcConts = sSrcConts + "@복용방법:" + srcNodeList.getColumn(i, "drugmthdspccdnm") + "(" + srcNodeList.getColumn(i, "drugmthdspccd") + ")";
  7683. if ( "-" != srcNodeList.getColumn(i, "drugrateqty")) {
  7684. sSrcConts = sSrcConts + "@투여비율적용:" + srcNodeList.getColumn(i, "drugrateqty").replaceAll("\\|", ",");
  7685. }
  7686. }
  7687. if ("1" == sPrcpflag && ( "B" == sPrcpclscd.substring(0,1) || "D2" == sPrcpclscd)) { // 진단검사, 병리 검체명
  7688. sSrcConts = sSrcConts + "@검체:" + srcNodeList.getColumn(i, "drugmthdspccdnm") + "(" + srcNodeList.getColumn(i, "drugmthdspccd") + ")";
  7689. }
  7690. sSrcConts = sSrcConts + "@전달사항:" + srcNodeList.getColumn(i, "prcpdelivefact");
  7691. if ("1" == sPrcpflag && "C2" == sPrcpclscd) { // 임상소견
  7692. sSrcConts = sSrcConts + "@임상소견:" + srcNodeList.getColumn(i, "clinccmtcnts")
  7693. }
  7694. if ("I" == sStatus || "-" == sStatus || "U" == sStatus) {
  7695. sSrcConts = sSrcConts + "@등록일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7696. sSrcConts = sSrcConts + "@등록자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7697. } else {
  7698. sSrcConts = sSrcConts + "@수정일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7699. sSrcConts = sSrcConts + "@수정자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7700. }
  7701. }
  7702. break;
  7703. case "2": // 진단정보
  7704. var sStatus = "";
  7705. var sDiagKindcd = "";
  7706. var sDiagKindcdFlag = "";
  7707. var sDiagHistCd = "";
  7708. sSrcConts = "$환자진단정보";
  7709. for(var i = 0; i < srcNodeList.rowcount; i++) {
  7710. sStatus = srcNodeList.getColumn(i, "status");
  7711. sDiagKindcd = srcNodeList.getColumn(i, "diagkindcd");
  7712. sDiagKindcdFlag = srcNodeList.getColumn(i, "diagkindcdflag");
  7713. sDiagHistCd = srcNodeList.getColumn(i, "diaghistcd");
  7714. if ("I" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; }
  7715. else if ("T" == sStatus) { sSrcConts = sSrcConts + "@처리구분:신규"; } // 임시저장후 인증저장
  7716. else if ("U" == sStatus) {
  7717. if ("T" == sDiagHistCd) { sSrcConts = sSrcConts + "@처리구분:신규"; // 임시저장후 수정 인증저장
  7718. } else { sSrcConts = sSrcConts + "@처리구분:수정"; }
  7719. }
  7720. else if ("D" == sStatus) { sSrcConts = sSrcConts + "@처리구분:삭제"; }
  7721. else if ("S" == sStatus) { continue; } // 검색
  7722. else { continue; }
  7723. if ("C" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:확정"; }
  7724. else if ("R" == sDiagKindcd) { sSrcConts = sSrcConts + "@종류:R/O"; }
  7725. else { continue; }
  7726. if ("M" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:주"; }
  7727. else if("S" == sDiagKindcdFlag) { sSrcConts = sSrcConts + "@주부구분:부"; }
  7728. else { continue; }
  7729. sSrcConts = sSrcConts + "@진단코드:" + srcNodeList.getColumn(i, "diagcd");
  7730. sSrcConts = sSrcConts + "@진단영문명:" + srcNodeList.getColumn(i, "diagengnm");
  7731. sSrcConts = sSrcConts + "@진단한글명:" + srcNodeList.getColumn(i, "diaghngnm");
  7732. if ("I" == sStatus || "T" == sStatus || ("U" == sStatus && "T" == sDiagHistCd)) {
  7733. sSrcConts = sSrcConts + "@등록일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7734. sSrcConts = sSrcConts + "@등록자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7735. } else {
  7736. sSrcConts = sSrcConts + "@수정일시:" + (new Date()).getDateFormat("YYYY년 MM월 DD일 hh시 mm분 ss초");
  7737. sSrcConts = sSrcConts + "@수정자:" + sysf_getUserInfo("usernm") + "(" + sysf_getUserInfo("userid") + ")";
  7738. }
  7739. }
  7740. break;
  7741. default:
  7742. break;
  7743. }
  7744. if( sSrcConts != "$환자처방정보" && sSrcConts != "$환자진단정보" ) { // 저장할 처방 또는 진단정보가 있을경우만 리턴
  7745. sRtn = sRegConts + sSrcConts;
  7746. }
  7747. return sRtn;
  7748. }
  7749. /**
  7750. * @desc : 속도체크를 위한 모니터링 로그 데이터 생성.
  7751. * @param : sType: 모니터링 타입값
  7752. : sItem01 ~ sItem20 : 모니터링 필드값
  7753. * @return : void
  7754. * @authur : 엄영만 2013. 06. 27
  7755. */
  7756. function reqSetMonitoringLog (sType, sItem01, sItem02, sItem03, sItem04, sItem05, sItem06, sItem07, sItem08, sItem09, sItem10, sItem11, sItem12, sItem13, sItem14, sItem15, sItem16, sItem17, sItem18, sItem19, sItem20) {
  7757. try {
  7758. if(utlf_isNull(sType)) { if (0 == sType ) sType = sType.toString(); else sType = "-"; }
  7759. if(utlf_isNull(sItem01)) { if (0 == sItem01) sItem01 = sItem01.toString(); else sItem01 = "-"; }
  7760. if(utlf_isNull(sItem02)) { if (0 == sItem02) sItem02 = sItem02.toString(); else sItem02 = "-"; }
  7761. if(utlf_isNull(sItem03)) { if (0 == sItem03) sItem03 = sItem03.toString(); else sItem03 = "-"; }
  7762. if(utlf_isNull(sItem04)) { if (0 == sItem04) sItem04 = sItem04.toString(); else sItem04 = "-"; }
  7763. if(utlf_isNull(sItem05)) { if (0 == sItem05) sItem05 = sItem05.toString(); else sItem05 = "-"; }
  7764. if(utlf_isNull(sItem06)) { if (0 == sItem06) sItem06 = sItem06.toString(); else sItem06 = "-"; }
  7765. if(utlf_isNull(sItem07)) { if (0 == sItem07) sItem07 = sItem07.toString(); else sItem07 = "-"; }
  7766. if(utlf_isNull(sItem08)) { if (0 == sItem08) sItem08 = sItem08.toString(); else sItem08 = "-"; }
  7767. if(utlf_isNull(sItem09)) { if (0 == sItem09) sItem09 = sItem09.toString(); else sItem09 = "-"; }
  7768. if(utlf_isNull(sItem10)) { if (0 == sItem10) sItem10 = sItem10.toString(); else sItem10 = "-"; }
  7769. if(utlf_isNull(sItem11)) { if (0 == sItem11) sItem11 = sItem11.toString(); else sItem11 = "-"; }
  7770. if(utlf_isNull(sItem12)) { if (0 == sItem12) sItem12 = sItem12.toString(); else sItem12 = "-"; }
  7771. if(utlf_isNull(sItem13)) { if (0 == sItem13) sItem13 = sItem13.toString(); else sItem13 = "-"; }
  7772. if(utlf_isNull(sItem14)) { if (0 == sItem14) sItem14 = sItem14.toString(); else sItem14 = "-"; }
  7773. if(utlf_isNull(sItem15)) { if (0 == sItem15) sItem15 = sItem15.toString(); else sItem15 = "-"; }
  7774. if(utlf_isNull(sItem16)) { if (0 == sItem16) sItem16 = sItem16.toString(); else sItem16 = "-"; }
  7775. if(utlf_isNull(sItem17)) { if (0 == sItem17) sItem17 = sItem17.toString(); else sItem17 = "-"; }
  7776. if(utlf_isNull(sItem18)) { if (0 == sItem18) sItem18 = sItem18.toString(); else sItem18 = "-"; }
  7777. if(utlf_isNull(sItem19)) { if (0 == sItem19) sItem19 = sItem19.toString(); else sItem19 = "-"; }
  7778. if(utlf_isNull(sItem20)) { if (0 == sItem20) sItem20 = sItem20.toString(); else sItem20 = "-"; }
  7779. var sRef = dsf_createDsRow("ds_monitoringlog_reqdata", [{col:"type", type:"string", size:256, val:sType},
  7780. {col:"item01", type:"string", size:256, val:sItem01},
  7781. {col:"item02", type:"string", size:256, val:sItem02},
  7782. {col:"item03", type:"string", size:256, val:sItem03},
  7783. {col:"item04", type:"string", size:256, val:sItem04},
  7784. {col:"item05", type:"string", size:256, val:sItem05},
  7785. {col:"item06", type:"string", size:256, val:sItem06},
  7786. {col:"item07", type:"string", size:256, val:sItem07},
  7787. {col:"item08", type:"string", size:256, val:sItem08},
  7788. {col:"item09", type:"string", size:256, val:sItem09},
  7789. {col:"item10", type:"string", size:256, val:sItem10},
  7790. {col:"item11", type:"string", size:256, val:sItem11},
  7791. {col:"item12", type:"string", size:256, val:sItem12},
  7792. {col:"item13", type:"string", size:256, val:sItem13},
  7793. {col:"item14", type:"string", size:256, val:sItem14},
  7794. {col:"item15", type:"string", size:256, val:sItem15},
  7795. {col:"item16", type:"string", size:256, val:sItem16},
  7796. {col:"item17", type:"string", size:256, val:sItem17},
  7797. {col:"item18", type:"string", size:256, val:sItem18},
  7798. {col:"item19", type:"string", size:256, val:sItem19},
  7799. {col:"item20", type:"string", size:256, val:sItem20}]);
  7800. var oParam = {};
  7801. oParam.id = "TXMMO00120";
  7802. oParam.service = "prcpmngtapp.PrcpMngt";
  7803. oParam.method = "reqSetMonitoringLog";
  7804. oParam.inds = "req=" + sRef;
  7805. oParam.async = false;
  7806. tranf_submit(oParam);
  7807. } catch(err) {
  7808. sysf_messageBox ( "reqSetMonitoringLog() 실행 중 오류가 발생 하였습니다.", "E999" );
  7809. }
  7810. }
  7811. /**
  7812. * @---------------------------------------------------
  7813. * @desc : StringBuffer 관련 추가 2013.07.16 엄영만
  7814. * @use it : var sb = new StringBuffer();
  7815. sb.append("Hello ");
  7816. sb.append("Java");
  7817. sb.append("script!");
  7818. document.write(sb.toString());
  7819. * @---------------------------------------------------
  7820. */
  7821. var StringBuffer = function() { this.buffer = []; }
  7822. StringBuffer.prototype.append = function(str) {
  7823. if (utlf_isNull(str)) { str = ""; }
  7824. this.buffer.push(str);
  7825. return this;
  7826. }
  7827. StringBuffer.prototype.toString = function(str) {
  7828. if (utlf_isNull(str)) { str = ""; }
  7829. return this.buffer.join(str);
  7830. }
  7831. function lf_setDatasetEvent(oDsSrc, oDsDest, enable) {
  7832. oDsSrc.enableevent = enable;
  7833. oDsDest.enableevent = enable;
  7834. }
  7835. /**
  7836. * @desc : EMR부서콤보 조회
  7837. * @
  7838. * @param : ref - reference path
  7839. * rsltref - result reference path
  7840. * orddeptflag- 진료과구분
  7841. * @return :
  7842. * @author : 오지훈
  7843. * @---------------------------------------------------
  7844. */
  7845. function mmbfGetDeptCodeComboList(rsltref, orddeptflag, stnddd){
  7846. if( !utlf_isNull(stnddd) && stnddd.length == 8) { // 기준일자를 입력하는경우 DB에서 신규로 조회 하도록 수정. 2014.04.03 엄영만
  7847. dsf_createDsRow("ds_cond_deptCode", [{col:"orddeptflag", type:"string", size:256, val:orddeptflag},
  7848. {col:"stnddd", type:"string", size:256, val:stnddd}]);
  7849. var oParam = {};
  7850. oParam.id = "TRMMB04101";
  7851. oParam.service = "prcpbaseapp.EnvInfoMngt";
  7852. oParam.method = "reqGetDeptComboList";
  7853. oParam.inds = "req=ds_cond_deptCode";
  7854. oParam.outds = rsltref+"=dept";
  7855. oParam.async = false;
  7856. tranf_submit(oParam);
  7857. } else { // 기준일자가 없는경우 KNUH_20110208, 진료속도개선 수정, TRMMB04101 submit을 안하고 로그인시 가져온 데이터를 copy하는것으로 변경, 주희경
  7858. var srcref = "";
  7859. if ( orddeptflag == "A" || utlf_isNull(orddeptflag) ){
  7860. srcref = "alldeptinfo";
  7861. } else if ( orddeptflag == "C"){
  7862. srcref = "centdeptinfo";
  7863. } else if ( orddeptflag == "D"){
  7864. srcref = "dscdeptinfo";
  7865. } else if ( orddeptflag == "W"){
  7866. srcref = "warddeptinfo";
  7867. } else if ( orddeptflag == "O"){
  7868. srcref = "otptdeptinfo";
  7869. } else if ( orddeptflag == "I"){
  7870. srcref = "inptdeptinfo";
  7871. } else if ( orddeptflag == "T" ){
  7872. srcref= "deptinfoinall";
  7873. }
  7874. var objOrderBasicInfoDs = emr_getOrderBaseInfo(srcref);
  7875. if ( objOrderBasicInfoDs.rowcount > 0 ) { // 복사할 원본 데이터가 존재하면 복사
  7876. this.objects[rsltref].assign(objOrderBasicInfoDs);
  7877. } else { //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  7878. dsf_createDsRow("ds_cond_deptCode", [{col:"orddeptflag", type:"string", size:256, val:orddeptflag}]);
  7879. var oParam = {};
  7880. oParam.id = "TRMMB04101";
  7881. oParam.service = "prcpbaseapp.EnvInfoMngt";
  7882. oParam.method = "reqGetDeptComboList";
  7883. oParam.inds = "req=ds_cond_deptCode";
  7884. oParam.outds = rsltref+"=dept";
  7885. oParam.async = false;
  7886. tranf_submit(oParam);
  7887. }
  7888. }
  7889. }
  7890. /**
  7891. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  7892. * @
  7893. * @param :
  7894. * @event :
  7895. * @return :
  7896. * @---------------------------------------------------
  7897. */
  7898. function addComboInstance(combopath, nodename, nodeval, parentnode){
  7899. if( this.objects[combopath+"_"+parentnode].rowcount == 0 ){
  7900. return;
  7901. }
  7902. nodename = nodename.split("^");
  7903. nodeval = nodeval.split("^");
  7904. if(nodename.length != nodeval.length){
  7905. return;
  7906. }
  7907. this.objects[combopath+"_"+parentnode].insertRow(0);
  7908. this.objects[combopath+"_"+parentnode].setColumn(0, nodename[0], nodeval[0]);
  7909. this.objects[combopath+"_"+parentnode].setColumn(0, nodename[1], nodeval[1]);
  7910. }
  7911. /****************************************************************************************
  7912. * Argument :
  7913. * Description : 환자메모 창 종료
  7914. * return type :
  7915. ****************************************************************************************/
  7916. function lf_ClosePatMemo() {
  7917. var curPatMemotObj = frmf_findPopup("SPMMR05600"); //활성화된 환자메모 화면 object
  7918. if( !utlf_isNull(curPatMemotObj) && lf_mmbfGetUserEnvQuestValue("072") == "001" ){
  7919. curPatMemotObj.close();
  7920. }
  7921. }
  7922. /****************************************************************************************
  7923. * Function : lf_RecPrnt
  7924. * Description : 퇴원통지서 기록 출력
  7925. * Argument :
  7926. * retrun type :
  7927. * Creator :
  7928. ****************************************************************************************/
  7929. function lf_RecPrnt(nFormrecseq){
  7930. if( utlf_isNull(nFormrecseq) ){
  7931. sysf_messageBox("작성된 기록이 존재하지 않습니다.");
  7932. return;
  7933. }
  7934. // Step1. 기록 내용 조회
  7935. dsf_createDsRow("ds_cond_recdatareq",
  7936. [{col:"formrecseq", val:nFormrecseq}]);
  7937. dsf_createDs("ds_data_formrec");
  7938. dsf_createDs("ds_data_recitem");
  7939. var objParam = new Object();
  7940. objParam.id = "TRMMR01301";
  7941. objParam.service = "medirecapp.ComnMediRec";
  7942. objParam.method = "reqGetFormRecInfo";
  7943. objParam.inds = "req=ds_cond_recdatareq";
  7944. objParam.outds ="ds_data_formrec=formrec ds_data_recitem=recitem";
  7945. objParam.async = false;
  7946. objParam.progress = false;
  7947. //objParam.callback = "cbf_TRMMR01301";
  7948. tranf_submit(objParam);
  7949. var objDOM = rptf_createDOM(); // DOM 객체 설정
  7950. rptf_setNodeListToDOM(objDOM, "/root/main/recinfo/recitem", ds_data_recitem); // 데이터셋 1
  7951. var objParam = new Object();
  7952. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  7953. //0900005261
  7954. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=0;";
  7955. rptf_exeReportPreview30(["RFM1719126"],[objParam], option);
  7956. dsf_deleteDs("ds_cond_recdatareq");
  7957. dsf_deleteDs("ds_data_formrec");
  7958. dsf_deleteDs("ds_data_recitem");
  7959. }
  7960. /**
  7961. * @desc : 환자정보 조회
  7962. * @param : paramFlag - 등록번호/환자명 구분(pid/hngnm)
  7963. * : param - 등록번호/환자명
  7964. : param2 - 외래/입원일자
  7965. * : tblFlag - 테이블구분(환자기본/외래/입원, ptbs/otpt/inpt)
  7966. * @return : void
  7967. * @authur : 오지훈 2007. 6. 14
  7968. */
  7969. function reqPatInfo(paramFlag, tblFlag, param, param2){
  7970. ds_send_reqdata.clearData();
  7971. ds_send_reqdata.addRow();
  7972. if(paramFlag == "pid"){ //등록번호 검색
  7973. ds_send_reqdata.setColumn(0, "pid" , param);
  7974. ds_send_reqdata.setColumn(0, "hngnm", "");
  7975. }else if(paramFlag == "hngnm"){ //환자명 검색
  7976. ds_send_reqdata.setColumn(0, "pid" , "");
  7977. ds_send_reqdata.setColumn(0, "hngnm", param);
  7978. }
  7979. ds_send_reqdata.setColumn(0, "orddd" , param2);
  7980. ds_send_reqdata.setColumn(0, "queryflag", tblFlag);
  7981. ds_send_reqdata.setColumn(0, "srchflag" , paramFlag);
  7982. var oParam = {};
  7983. oParam.id = "TRMMO04105";
  7984. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  7985. oParam.method = "reqGetPatNM";
  7986. oParam.inds = "req=ds_send_reqdata";
  7987. oParam.outds = "ds_init_patnm_patnm=patnm";
  7988. oParam.async = false;
  7989. //oParam.callback = "cf_TRMMO04105";
  7990. tranf_submit(oParam);
  7991. var Node = ds_init_patnm_patnm.getColumn(0, "hngnm");
  7992. if( utlf_isNull(Node) && paramFlag == "pid" ){
  7993. sysf_messageBox("등록번호 [" + param + "] 환자를 찾을 수 ", "I004");
  7994. return false;
  7995. }else if( utlf_isNull(Node) && paramFlag == "hngnm" ){
  7996. sysf_messageBox("환자명 [" + param + "] 환자를 찾을 수 ", "I004");
  7997. return false;
  7998. }
  7999. return true;
  8000. }
  8001. function fPrcpExecDeptSrch(flag) {
  8002. var prcpcd = "";
  8003. if( !utlf_isNull(this.objects["ds_main_prcp_prcplist"]) ){
  8004. prcpcd = ds_main_prcp_prcplist.getColumn(0, "prcpcd" );
  8005. }else{
  8006. prcpcd = ds_main_prcplist.getColumn(0, "prcpcd" );
  8007. }
  8008. var prcpdd = "";//opener.ds_init.getColumn(0, "prcpdd" );
  8009. if ( utlf_isNull(opener.ds_init) || utlf_isNull(opener.ds_init.getColumn(0, "prcpdd" ))) {
  8010. prcpdd = ds_init.getColumn(0, "prcpdd" );
  8011. if (utlf_isNull(prcpdd)) {
  8012. prcpdd = utlf_getCurrentDate();
  8013. }
  8014. }else{
  8015. prcpdd = opener.ds_init.getColumn(0, "prcpdd" );
  8016. }
  8017. if( utlf_isNull(this.objects["ds_send"]) ){
  8018. dsf_createDs("ds_send", [{col:"cond1", type:"string", size:256}, {col:"cond2", type:"string", size:256}, {col:"cond3", type:"string", size:256}]);
  8019. }
  8020. dsf_makeValue(ds_send, "cond1", "string", prcpcd, 0);
  8021. dsf_makeValue(ds_send, "cond2", "string", prcpdd, 0);
  8022. dsf_makeValue(ds_send, "cond3", "string", flag, 0);
  8023. //KNUH_20110208, 주희경, 진료 속도 개선을 위해 로그인 시 미리 데이터를 조회해 놓고 copy해서 쓰는 방식으로 변경
  8024. //flag가 all이면 이미 조회 해 놓은 데이터 카피
  8025. if ( flag == "all" ) {
  8026. dsf_createDs("ds_orddept");
  8027. var viewerObj = frmf_getViewer("sysMessage");
  8028. var srcNodes = emr_getOrderBaseInfo("dept");
  8029. var targetNodes = ds_orddept;
  8030. if ( srcNodes.rowcount > 0 ) {
  8031. ds_orddept.copyData(srcNodes);
  8032. ds_orddept.clearData();
  8033. for(var i=0; i<srcNodes.rowcount; i++) {
  8034. var nRow = ds_orddept.addRow();
  8035. ds_orddept.copyRow(nRow, srcNodes, i);
  8036. }
  8037. } else { //KNUH_20110208, 주희경 복사할 데이터가 없을 시 (비정상 로딩) 강제 로그아웃
  8038. var oParam = {};
  8039. oParam.id = "TRMMO00100";
  8040. oParam.service = "prcpmngtapp.PrcpMngt";
  8041. oParam.method = "reqGetPrcpExecDeptSrch";
  8042. oParam.inds = "req=ds_send";
  8043. oParam.outds = "ds_orddept=dept";
  8044. oParam.async = false;
  8045. oParam.callback = "cf_TRMMO00100";
  8046. tranf_submit(oParam);
  8047. if(arErrorCode.pop("TRMMO00100") > -1){
  8048. return true;
  8049. } else {
  8050. return false;
  8051. }
  8052. }
  8053. } else { //all이 아니면 해당 데이터 조회
  8054. var oParam = {};
  8055. oParam.id = "TRMMO00100";
  8056. oParam.service = "prcpmngtapp.PrcpMngt";
  8057. oParam.method = "reqGetPrcpExecDeptSrch";
  8058. oParam.inds = "req=ds_send";
  8059. oParam.outds = "ds_orddept=dept";
  8060. oParam.async = false;
  8061. oParam.callback = "cf_TRMMO00100";
  8062. tranf_submit(oParam);
  8063. if(arErrorCode.pop("TRMMO00100") > -1){
  8064. return true;
  8065. }else{
  8066. return false;
  8067. }
  8068. }
  8069. }
  8070. function cf_TRMMO00100(sSvcId, nErrorCode, sErrorMsg) {
  8071. arErrorCode.push(sSvcId, nErrorCode);
  8072. }
  8073. /****************************************************************************************
  8074. * Function : lf_PopPrcpRsen
  8075. * Description : 처방 사유입력 화면을 팝업 한다.
  8076. * Argument :
  8077. * retrun type :
  8078. * Creator : 2017.12.29 엄영만
  8079. ****************************************************************************************/
  8080. function lf_PopPrcpRsen(sRsenFlag, sAutoYn, sOrdType, sPid, sOrdDd, sCretNo, sOrdDeptCd, sPrcpDd, sPrcpNo, sPrcpHistNo, sPrcpCd, sPrcpNm, sResnCd, sResnCnts){
  8081. if(utlf_isNull(sRsenFlag)){
  8082. sysf_messageBox("사유 구분 정보가 없습니다.", "E999");
  8083. return;
  8084. }
  8085. if(utlf_isNull(sOrdType)){
  8086. sysf_messageBox("입원/외래 구분자 정보가 없습니다.", "E999");
  8087. return;
  8088. }
  8089. if(utlf_isNull(sPid)){
  8090. sysf_messageBox("환자번호가 없습니다.", "E999");
  8091. return;
  8092. }
  8093. if(utlf_isNull(sOrdDd)){
  8094. sysf_messageBox("진료일자가 없습니다.", "E999");
  8095. return;
  8096. }
  8097. if(utlf_isNull(sCretNo)){
  8098. sysf_messageBox("접수번호가 없습니다.", "E999");
  8099. return;
  8100. }
  8101. if(utlf_isNull(sAutoYn)) { sAutoYn = "N"; }
  8102. if(utlf_isNull(sPrcpDd)) { sPrcpDd = "00000000"; }
  8103. if(utlf_isNull(sPrcpNo)) { sPrcpNo = "0"; }
  8104. if(utlf_isNull(sPrcpHistNo)){ sPrcpHistNo = "0"; }
  8105. frmf_clearParameter("SPMMO90800_rtn");
  8106. dsf_createDsRow("ds_pop_resninfo", [{col:"resnflag", type:"string", size:256, val:sRsenFlag},
  8107. {col:"autoyn", type:"string", size:256, val:sAutoYn},
  8108. {col:"ordtype", type:"string", size:256, val:sOrdType},
  8109. {col:"pid", type:"string", size:256, val:sPid},
  8110. {col:"orddd", type:"string", size:256, val:sOrdDd},
  8111. {col:"cretno", type:"string", size:256, val:sCretNo},
  8112. {col:"orddeptcd", type:"string", size:256, val:sOrdDeptCd},
  8113. {col:"prcpdd", type:"string", size:256, val:sPrcpDd},
  8114. {col:"prcpno", type:"string", size:256, val:sPrcpNo},
  8115. {col:"prcphistno", type:"string", size:256, val:sPrcpHistNo},
  8116. {col:"prcpcd", type:"string", size:256, val:sPrcpCd},
  8117. {col:"prcpnm", type:"string", size:256, val:sPrcpNm},
  8118. {col:"resncd", type:"string", size:256, val:sResnCd},
  8119. {col:"resncnts", type:"string", size:256, val:sResnCnts}]);
  8120. var objArg = new Object();
  8121. objArg.arg_ds_resninfo = ds_pop_resninfo;
  8122. var mon = sysf_getCurrentMonitorNumber();
  8123. var xpt = this.getOwnerFrame().position.x + 400;
  8124. var ypt = this.getOwnerFrame().position.y + 90;
  8125. frmf_modal("SPMMO90800", "SPMMO90800", objArg, false, mon, xpt, ypt, null, null, null, null, null, "M");
  8126. }
  8127. /****************************************************************************************
  8128. * Function : lf_getCheckRecExist
  8129. * Description : 작성된(유효한) 기록이 있는지 확인 한다. 임시저장 포함.
  8130. * - 기록창 오픈시 신규 오픈 할지 기존 기록 오픈 할지 결정 하기 위해 사용
  8131. * Argument :
  8132. * retrun type : 기록이 없으면 'N', 기록이 있는경우 최근 기록의 formrecseq
  8133. * Creator : 2018.06.11 엄영만
  8134. ****************************************************************************************/
  8135. function lf_getCheckRecExist(sFormCd, sPid, sOrdDd, sCretNo) {
  8136. var sRtn = "";
  8137. if(utlf_isNull(sFormCd)) {
  8138. sysf_messageBox("서식코드가 없습니다.", "E999");
  8139. return "N";
  8140. }
  8141. if(utlf_isNull(sPid)) {
  8142. sysf_messageBox("환자번호가 없습니다.", "E999");
  8143. return "N";
  8144. }
  8145. dsf_createDsRow("ds_req_checkrecexist", [ {col:"formcd", type:"string", size:256, val:sFormCd}
  8146. , {col:"pid", type:"string", size:256, val:sPid}
  8147. , {col:"orddd", type:"string", size:256, val:sOrdDd}
  8148. , {col:"cretno", type:"string", size:256, val:sCretNo} ]);
  8149. dsf_createDsRow("ds_rtn_checkrecexist", [ {col:"existyn", type:"string", size:256, val:""}
  8150. , {col:"formrecseq", type:"string", size:256, val:""} ]);
  8151. var oParam = {};
  8152. oParam.id = "getCheckRecExist";
  8153. oParam.service = "prcpmngtapp.EtcPrcpMngt";
  8154. oParam.method = "reqGetCheckRecExist";
  8155. oParam.inds = "req=ds_req_checkrecexist";
  8156. oParam.outds = "ds_rtn_checkrecexist=rtndata";
  8157. oParam.async = false;
  8158. tranf_submit(oParam);
  8159. var sExistYn = ds_rtn_checkrecexist.getColumn(0,"existyn");
  8160. var sFormRecSeq = ds_rtn_checkrecexist.getColumn(0,"formrecseq");
  8161. dsf_deleteDs("ds_req_checkrecexist");
  8162. dsf_deleteDs("ds_rtn_checkrecexist");
  8163. if(!utlf_isNull(sExistYn) && sExistYn == "Y") {
  8164. sRtn = sFormRecSeq;
  8165. } else {
  8166. sRtn = "N";
  8167. }
  8168. return sRtn;
  8169. }
  8170. /****************************************************************************************
  8171. * Function : lf_DrugInfo
  8172. * Description : 약품 편람 팝업
  8173. * Argument :
  8174. * retrun type :
  8175. * Creator : 2018.11.22 엄영만
  8176. ****************************************************************************************/
  8177. function lf_DrugInfo(sDrugCd) {
  8178. dsf_createDsRow("ds_req_druginfo", [{col:"srchdrugcd", type:"string", size:256, val:sDrugCd}]);
  8179. var objArg = new Object(); //약품편람 조회 화면 open시 약코드 parameter기본 설정
  8180. objArg.arg_ds_hidden_receivedata = ds_req_druginfo;
  8181. if(lf_ContainsHardCD("619", "Y")) { // Kims 약품정보 사용여부
  8182. var curPopupObj = frmf_findPopup("SPMMO50800"); //활성화된 화면 object loading
  8183. if(!utlf_isNull(curPopupObj)) {
  8184. curPopupObj.fGetDrugInfo(objArg.arg_ds_hidden_receivedata);
  8185. curPopupObj.setFocus();
  8186. } else {
  8187. frmf_open("SPMMO50800", "SPMMO50800", objArg, null, 0, 0, 0, null, null, null, null, null, "M");
  8188. }
  8189. } else {
  8190. frmf_open("SMADB01900", "SMADB01900", objArg, null, 0, 0, 0, null, null, null, null, null, "M");
  8191. }
  8192. dsf_deleteDs("ds_req_druginfo");
  8193. }
  8194. // 20200401 김현석, 예약 CP인 경우 적용일자를 가져오기, 20200310998
  8195. function fGetAppdd()
  8196. {
  8197. var sAppdd = utlf_getCurrentDate();
  8198. var sIndd = utlf_transNullToEmpty(ds_paminfo.getColumn(0, "indd"));
  8199. var sIoflag = utlf_transNullToEmpty(ds_paminfo.getColumn(0, "ioflag"));
  8200. var cphrcd = lf_getHardCDList("Y", "1800000001", 3);
  8201. if (cphrcd == "Y")
  8202. {
  8203. if (sAppdd < sIndd && !utlf_isNull(sIndd))
  8204. {
  8205. sAppdd = sIndd;
  8206. }
  8207. }
  8208. if ( !utlf_isNull(this.objects["ds_temp1_getdata"]) )
  8209. {
  8210. dsf_makeValue(ds_temp1_getdata, "appdd", "string", sAppdd); //model.makeValue("/root/temp1/getdata/appdd", getCurrentDate());
  8211. }
  8212. return sAppdd;
  8213. }]]></Script>