MMR01100.xjs 268 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[var gMediRecMain = false; //진료기록에서 호출 할때만 true로 세팅됨.
  3. var gSaveAfterClose = false;
  4. var gIsPouUp = false;
  5. var gPrestIvw;
  6. var gFstLevlItemCd = "";
  7. var gIsFirstOpen = false; //초진기록지 처음 오픈시에만 messageBox띄우기 위한 변수
  8. var gViewPrt;
  9. var beforeSaveExeFuncNm = "";
  10. var afterSaveExeFuncNm = "";
  11. var gOpenMode = "";
  12. var gSaveYN = false;
  13. //코사인 기록의 변경여부를 위해 대상서식 로딩 후 기록정보를 넣어두기 위한 변수
  14. var g_formrec_newimge_cosign = "";
  15. var g_recitem_newimge_cosign = "";
  16. var g_formrec_oldimge = "";
  17. var g_recitem_oldimge = "";
  18. var g_formrec_newimge = "";
  19. var g_recitem_newimge = "";
  20. var g_recitem_oldrec = "";
  21. var g_recitem_newrec = "";
  22. var gRecdd = "";
  23. //var gFormLoadStatus = new FORM_LOAD_STATUS();
  24. var PATH_LOADER_INI = "/root/hidden/loader_ini";
  25. var ComnFormObj = "";
  26. var objExt = new ExtCommon();
  27. var gChkModiRecFlag = true; // 수정여부 체크 플래그
  28. var lgv_Foldernm = system.convertRealPath("%MYDOCUMENT%") + "\KU20\\temp\\";
  29. //var lgv_Foldernm = objExt.getSystemDir("PERSONAL") + "\\KU20\\temp\\";
  30. //MRF02000.xjs
  31. var gCashedFormDegnSeq = "";
  32. // 2016.04.22 기록확정저장시 기준일자 제어 제거
  33. // 2016.04.08 순환기내과 채성철교수님 요청 기록확정저장시 기준일자 제어
  34. // var gChkFormrecdt = true;
  35. /**
  36. * @desc :
  37. * @id :
  38. * @event :
  39. * @return :
  40. * @authur : 박종훈
  41. */
  42. function fLoaderEndForm()
  43. {
  44. if (gOpenMode == "newform")
  45. {
  46. fInitClearForm();
  47. SetUserTimeLog("fLoaderEndForm", "fInitClearForm END");
  48. try {
  49. gPrestIvw.window.javascript.fInitFormRec();
  50. }
  51. catch (e) {};
  52. fShowProgress(false);
  53. SetToLoadTime(1);
  54. SetUserTimeLog("fLoaderEndForm", "newform END");
  55. }
  56. else if (gOpenMode == "recform")
  57. {
  58. fInitFormRec();
  59. SetUserTimeLog("fLoaderEndForm", "fInitFormRec END");
  60. fShowProgress(false);
  61. SetToLoadTime(1);
  62. SetUserTimeLog("fLoaderEndForm", "recform END");
  63. }
  64. gOpenMode = "";
  65. if (gMediRecMain)
  66. {
  67. opener.window.javascript.fOpenPrcpMainWnd();
  68. }
  69. }
  70. /**
  71. * @desc : 기록 아이템 밸류 SET
  72. * @id :
  73. * @event :
  74. * @return :
  75. * @authur : 박종훈
  76. */
  77. function fSetRecItemValue_MMR01100(reciteminfo)
  78. {
  79. if (fGetFormMast("formprogflag") == "PROG" && fGetFormMast("formprognm") != "-")
  80. {
  81. return ivw_base.window.javascript.fSetRecItemValue(reciteminfo);
  82. }
  83. }
  84. /****************************************************************************************
  85. * Argument : N/A
  86. * Description : 삭제버튼 클릭
  87. * return type : true / flase
  88. ****************************************************************************************/
  89. function fClickDelete()
  90. {
  91. //2010.03.18 안치원 - 상단환자정보와 기록환자정보가 같은지 검사한다.
  92. if (validPamInfo_MMR01100("btn_delete") == false) {
  93. return false;
  94. }
  95. //ktas 전송완료된 건(20151224 이윤주)
  96. if (fGetFormRec("fstktas") == "Y")
  97. {
  98. sysf_messageBox("NEDIS 전송 완료되어 삭제 불가합니다","E");
  99. return;
  100. }
  101. if (utlf_isNull(fGetFormRec("formrecseq")))
  102. {
  103. sysf_messageBox("삭제 ", "E001");
  104. return;
  105. }
  106. //2010.05.03 김달현 updtfreeyn이 Y일경우 모든 권한체크 제외.
  107. var updtfreeyn = ds_data_formmast.getColumn(0, "updtfreeyn");
  108. if(!fCheckSaveDept() && updtfreeyn != "Y") //기록부서와 수정부서 동일여부 체크
  109. {
  110. sysf_messageBox("타부서 또는 타사용자의 작성 기록은 삭제", "E001");
  111. return;
  112. }
  113. if (fGetFormMast("srcformcd") == "0000000677")
  114. {
  115. sysf_messageBox("컨설트 기록은 삭제 할 수 없습니다. 의뢰취소는 컨설트 관리화면을 이용", "I008");
  116. return;
  117. }
  118. //2014.01.28 사용자가 의사이고 서식로더가 진료기록조회(SMMMR00100) 속해 있으면 검사기록지는 삭제 못하도록 블로킹 처리
  119. if(fCheckedTestRecYN()){
  120. return;
  121. }
  122. //2014.01.28 end
  123. // [요청번호:20171026045] 의무기록 접근권한 관리 및 정정관리 프로그램개발 요청
  124. // [요청번호:20190107033] 입원(응급실)기록 정정화면 내 임시저장 버튼 추가 요청
  125. // : 인증저장 건에 대하여 삭제시 체크
  126. if( fGetFormRec("espiyn") == "Y" && lf_getChkRecCorrect("D") == false ){
  127. return;
  128. }
  129. var oprnerId = oOpener.frmf_getScreenID();
  130. if(oprnerId == "SMMMR00100"){
  131. // 20191010 금정화 추가; 퇴원(퇴실)전 사본발급 시 정정 주의 팝업 메시지
  132. // 조건추가 -> 1. 임시기록작성이나 신규작성일 경우 인증저장/새 이름으로 저장 시 팝업
  133. // 2. 확정기록 수정일 경우 인증저장/새 이름으로 저장/삭제 시 팝업 (삭제 로직에도 추가)
  134. var espiyn = utlf_transNullToEmpty(fGetFormRec("espiyn"));
  135. if (lf_ContainsHardCD("100016", "Y") && espiyn == "Y") {
  136. if(!oOpener.lf_checkConditionYesNo(espiyn)) return; // MMR00100
  137. }
  138. }
  139. fBeforeSaveExtnDoing();
  140. if (gMediRecMain)
  141. {
  142. oOpener.fDelete();
  143. }
  144. else
  145. {
  146. var rtnDel = fDelFormRec();
  147. //2016.04.22 기록삭제 중지 기능추가
  148. if( !utlf_isNull(rtnDel) && !utlf_isNull(rtnDel.rechistseq) && rtnDel.rechistseq == -100 ){
  149. return;
  150. }
  151. if (oOpener.frmf_getParameter("openmode") == "openform")
  152. {
  153. oOpener.frmf_setParameter("openmadalformsave", "Y");
  154. }
  155. }
  156. fAfterSaveExtnDoing();
  157. }
  158. /****************************************************************************************
  159. * Function : fClickSave
  160. * Description : 저장버튼 클릭
  161. * Argument : 01. signedYn - 인증저장 유무
  162. * retrun type :
  163. * Creator :
  164. ****************************************************************************************/
  165. function fClickSave(signedYn)
  166. {
  167. sysf_trace("***** fClickSave("+signedYn+") MMR01100 저장로직 시작!! *****");
  168. var oprnerId = oOpener.frmf_getScreenID();
  169. sysf_trace("***** fClickSave("+signedYn+") oprnerId : " + oprnerId + " *****");
  170. var rscdeptcd = this.objects["ds_init_cond"] == null ? "" : ds_init_cond.getColumn(0, "rscdeptcd");
  171. //2010.03.18 안치원 - 상단환자정보와 기록환자정보가 같은지 검사한다.
  172. if (validPamInfo_MMR01100("btn_save") == false) {
  173. return false;
  174. }
  175. //2016.04.22 삭제 중지 기능에 따른 상태변경
  176. if(fGetFormRec("status") == "D"){
  177. fSetFormRec("status", "U");
  178. }
  179. if(fGetFormRec("status") == "U")
  180. {
  181. var userid = sysf_getUserInfo("userid"); //userid, usernm, dutplceinstcd, dutplcecd
  182. //2010.05.03 dhkim updtfreeyn이 Y일경우 모든 권한체크 제외.
  183. var updtfreeyn = ds_data_formmast.getColumn(0, "updtfreeyn");
  184. //이윤주 수정(20190521)
  185. if (lf_ContainsHardCD("5967",fGetFormMast("srcformcd"))) {
  186. var recUserid = fGetFormRec("formrecuserid");
  187. //대상서식중 작성자와 수정자가 다르면
  188. if (recUserid != sysf_getUserInfo("userid")) {
  189. sysf_messageBox("타사용자가 기록을 수정할 수 없습니다!");
  190. return false;
  191. }
  192. }
  193. //이윤주 추가(20150209)
  194. lf_getHardCDList("N", 5987, 0 , ds_init_savecross);
  195. //mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/savecross", 5987);
  196. var srcformCnt = ds_init_savecross.getCaseCount("hardcd == '" + fGetFormMast("srcformcd") + "'"); //서식존재여부
  197. if(srcformCnt == 0 && !fCheckSaveDept() && updtfreeyn != "Y") //기록부서와 수정부서 동일여부 체크
  198. {
  199. sysf_messageBox("타부서 또는 타사용자의 작성 기록은 수정", "E001");
  200. return false;
  201. }
  202. //20151224 이윤주 수정
  203. if (fGetFormRec("fstktas") == "Y") {
  204. sysf_messageBox("NEDIS 전송완료되어 기록을 수정할 수 없습니다!", "E");
  205. return false;
  206. }
  207. }
  208. if(oprnerId == "SMMMR00100"){
  209. // 20191010 금정화 추가; 퇴원(퇴실)전 사본발급 시 정정 주의 팝업 메시지
  210. // 조건추가 -> 1. 임시기록작성이나 신규작성일 경우 인증저장/새 이름으로 저장 시 팝업
  211. // 2. 확정기록 수정일 경우 인증저장/새 이름으로 저장/삭제 시 팝업 (삭제 로직에도 추가)
  212. //trace("cosignyn >>> " + utlf_transNullToEmpty(fGetFormRec("cosignyn")));
  213. if(lf_ContainsHardCD("100016", "Y")){
  214. if(signedYn == "Y" && utlf_transNullToEmpty(fGetFormRec("cosignyn")) != "Y") {
  215. if(!oOpener.lf_checkConditionYesNo(signedYn)) return false; // MMR00100
  216. }
  217. }
  218. }else if(oprnerId == "SMMMR02900"){
  219. // 20191014 금정화 추가. 제증명 관리 화면에서 특정 서식일 때 체크하는 로직 (저장제어 없이 알림성 팝업만 띄움)
  220. oOpener.lf_checkCondition(signedYn); // MMR02900
  221. }
  222. //저장 전 실행할 함수 여부 검사 후 있을경우 실행
  223. fBeforeSaveExtnDoing();
  224. //수술부위 확인 점검표 저장확인 이윤주 with 손성훈 20120425
  225. if (signedYn == "Y"){
  226. var oprsrvno = ds_data_formrec.getColumn(0, "oprsrvno");
  227. var formcd = fGetFormRec("srcformcd");
  228. if( fOppartchk(oprsrvno, formcd) == false ){ //CareCom.xjs
  229. return;
  230. }
  231. //2016.04.22 기록확정저장시 기준일자 제어 제거
  232. /*
  233. if( lf_mmbfGetUserEnvQuestValue("072") == "001" ){
  234. // 2016.04.08 순환기내과 채성철교수님 요청 기록확정저장시 기준일자 제어
  235. //기준 : 신규 or 임시저장상태 기록 확정저장, 외래초재진(scrformcd '0000000001', '0000000002')만
  236. var sEspiyn = utlf_transNullToEmpty(ds_data_formrec.getColumn(ds_data_formrec.rowposition, "espiyn"));
  237. if( (fGetFormRec("status") == "C" || sEspiyn == "N") && (fGetFormMast("srcformcd") == "0000000001" || fGetFormMast("srcformcd") == "0000000002") ){
  238. var orddd = utlf_transNullToEmpty(ds_data_formrec.getColumn(ds_data_formrec.rowposition, "orddd"));
  239. var formrecdd = utlf_transNullToEmpty(ds_data_formrec.getColumn(ds_data_formrec.rowposition, "formrecdd"));
  240. var formrechm = utlf_transNullToEmpty(ds_data_formrec.getColumn(ds_data_formrec.rowposition, "formrechm"));
  241. var currenthm = utlf_getCurrentTime().substring(0, 4);
  242. //Check1 수진일자 != 기준일자
  243. //Check2 기준일자가 현재시간대비 10분 초과 시
  244. //Check3 임시저장상태일때 현재시간 이후 설정되어있을 경우
  245. var rMsg = "";
  246. if( gChkFormrecdt == true && !utlf_isNull(orddd) && !utlf_isNull(formrecdd) && orddd != formrecdd ){
  247. rMsg= sysf_messageBox("대상자의 수진일자와 기록 기준일자가 일치하지 않습니다.", "Q003");
  248. gChkFormrecdt = false;
  249. }else if( fGetFormRec("status") == "C" && gChkFormrecdt == true && !utlf_isNull(formrechm) && formrechm.length == 4 && utlf_getTimeInterval(formrechm, currenthm) >= 600){
  250. rMsg= sysf_messageBox("기준시간이 현재 시간대비 10분을 초과하였습니다.", "Q003");
  251. gChkFormrecdt = false;
  252. }else if( sEspiyn == "N" && gChkFormrecdt == true && !utlf_isNull(formrechm) && formrechm.length == 4 && utlf_getTimeInterval(formrechm, currenthm) < 0){
  253. rMsg= sysf_messageBox("기준시간이 현재 시간보다 미래시간입니다.", "Q003");
  254. gChkFormrecdt = false;
  255. }
  256. if( rMsg == 7 ){
  257. gChkFormrecdt = true;
  258. return false;
  259. }
  260. }
  261. }
  262. */
  263. }
  264. //2010.02.23 안치원 - 인증저장후에 임시저장 차단 TASK(39128)요청번호(9402)
  265. //2010.05.26 김달현 - call visit되지 않은 환자의 인증저장 제한(서소영선생님요청)
  266. if (fChkPreSave_MMR01100(signedYn) == false)
  267. return false;
  268. //2010.02.16 dhkim (JCI xsltflag세팅)
  269. try
  270. {
  271. if (ivw_base.fSetXsltFlag() == false)
  272. {
  273. return false;
  274. }
  275. }
  276. catch (e)
  277. {
  278. sysf_catchTrace(e);
  279. }
  280. // 2018.01.10 저장 부서 선택 팝업(내과계열 전공의가 등록부서를 선택 하여 저장 하는 기능)
  281. //if (signedYn == "Y"){
  282. var sUserDeptCd = sysf_getUserInfo("dutplcecd"); // 사용자 부서코드
  283. var sUserDeptNm = sysf_getUserInfo("dutplcenm"); // 사용자 부서명
  284. var sUserDeptEngNm = sysf_getUserInfo("deptengnm"); // 사용자 영문부서명
  285. var sOrdDeptCd = fGetFormRec("orddeptcd");
  286. var sIoFlag = fGetFormRec("chosflag");
  287. var sJobPosCd = sysf_getUserInfo("jobposcd"); // 사용자 직군
  288. var sUserId = sysf_getUserInfo ("userid");
  289. utlf_addLog("598 : " + lf_ContainsHardCD("598", "Y") + " || 568 : " + lf_ContainsHardCD("568", sOrdDeptCd) + " || 568 : " + lf_ContainsHardCD("568", sUserDeptCd));
  290. frmf_clearParameter ( "SPMMB08700_deptcd" );
  291. frmf_clearParameter ( "SPMMB08700_deptnm" );
  292. if ( ("I" == sIoFlag || "E" == sIoFlag || "D" == sIoFlag) // 외래 제외
  293. && sOrdDeptCd != sUserDeptCd // 환자의 부서와 로그인 부서가 다른경우
  294. && lf_ContainsHardCD("598", "Y") // 내과계열 등록부서 사용여부(598)
  295. && lf_ContainsHardCD("568", sOrdDeptCd) // 환자의 진료과 내과계열 부서(568)
  296. && lf_ContainsHardCD("568", sUserDeptCd) // 로그인 부서 내과계열 부서(568)
  297. ) {
  298. if( sJobPosCd == "1799" // 인턴
  299. || sJobPosCd == "1800" // 전공의
  300. || lf_ContainsHardCD("617", sUserId) // 처방 기록 저장 부서 선택 팝업 사용자 (내과계열 전공의 제외)
  301. ) {
  302. frmf_setParameter("SPMMB08700_deptcd", sOrdDeptCd); // 디폴트 선택 부서 없으면 로그인 부서
  303. frmf_modal("SPMMB08700", "SPMMB08700", null, null, null, null, null, null, null, null, null, null, "P");
  304. sUserDeptCd = frmf_getParameter("SPMMB08700_deptcd");
  305. sUserDeptNm = frmf_getParameter("SPMMB08700_deptnm");
  306. sUserDeptEngNm = frmf_getParameter("SPMMB08700_deptengnm");
  307. utlf_addLog("sUserDeptCd : " + sUserDeptCd + " || sUserDeptNm : " + sUserDeptNm );
  308. if( !utlf_isNull(sUserDeptCd) && !utlf_isNull(sUserDeptNm)){
  309. fSetFormRec("formrecdeptcd" , sUserDeptCd);
  310. fSetFormRec("formrecdeptnm" , sUserDeptNm);
  311. fSetFormRec("newformrecdeptcd" , sUserDeptCd);
  312. fSetFormRec("newformrecdeptnm" , sUserDeptNm);
  313. if( oprnerId == "SMMMR02900" ){
  314. var itemvalue = new ITEMVAL();
  315. var langflag = fGetFormMast("langflag");
  316. if(langflag == "EN"){ //영문서식인 경우 영문명 설정
  317. itemvalue.reccnts = sUserDeptEngNm;
  318. lf_setItemDataByItemBaseCd("0000965", "0000965", itemvalue); //진료과 : 0000965
  319. }else{
  320. itemvalue.reccnts = sUserDeptNm;
  321. lf_setItemDataByItemBaseCd("0000965", "0000965", itemvalue); //진료과 : 0000965
  322. }
  323. }
  324. }
  325. }
  326. }
  327. //}
  328. //KNUH, 가정간호 의뢰 인증저장 후 가정간호 처방 발행 메세지 보여주도록 (2011.03.21 JJE)
  329. var bfCnstStat = 0; //저장 전 의뢰상태
  330. if( oprnerId == "SMMMR05000" ) bfCnstStat = fGetFormRec("cnststat");
  331. // <--- 인증 저장 전
  332. var savedInfo = fSaveFormRec(signedYn); // 저장 데이터 취합 및 인증데이터 return
  333. // ---> 인증 저장 후
  334. //2007.12.13 박종훈 수정
  335. if (!utlf_isNull(savedInfo.formrecseq) && savedInfo.formrecseq != 0)
  336. {
  337. if (oOpener.frmf_getParameter("openmode") == "openform")
  338. {
  339. oOpener.frmf_setParameter("openmadalformsave", "Y");
  340. }
  341. if (!utlf_isNull(fGetFormRec("calledflag")) && fGetFormRec("calledflag").indexOf("cpgmain") == 0)
  342. {
  343. try
  344. {
  345. var ordpatlistObj = frmf_findPopup("SMMMP00800");
  346. if(!utlf_isNull(ordpatlistObj))
  347. {
  348. addEmrLog("calledflag : " + fGetFormRec("calledflag"));
  349. ordpatlistObj.fSnedValToCpWnd(fGetFormRec("formcd"), savedInfo.formrecseq, fGetFormRec("calledflag"));
  350. }
  351. }
  352. catch(e)
  353. {
  354. return false
  355. }
  356. }
  357. frmf_setParameter("espisavesuccess", signedYn);;
  358. fAfterSaveExtnDoing();
  359. //20081209 오지훈SW 요청
  360. var wndobj = frmf_findPopup("SMMRI01800"); //의사별 미비리스트
  361. if(!utlf_isNull(wndobj)){
  362. var status = fGetFormRec("status");
  363. var pid = fGetFormRec("pid");
  364. var orddd = fGetFormRec("orddd");
  365. var cretno = fGetFormRec("cretno");
  366. var formcd = fGetFormRec("srcformcd");
  367. var formrecdd = fGetFormRec("formrecdd");
  368. var formrecseq = fGetFormRec("formrecseq");
  369. //2010.02.27 안치원 - 미비항목화면연계 수정 formrecdeptcd추가(이은영 요청)
  370. var formrecdeptcd = fGetFormRec("formrecdeptcd");
  371. //2010.02.09 안치원 - 미비항목화면연계 수정(이은영 요청)
  372. //var unprepFlag = signedYn == "Y" ? "usg" : "";
  373. //2010.04.19 dhkim (미비확인 오류)
  374. //cosign이 Y일때는 uss, 인증저장일?는 usg넘김.
  375. var cosignYn = fGetFormRec("cosignyn");
  376. var unprepFlag = (cosignYn == "Y")? "uss" : (signedYn == "Y") ? "usg" : "";
  377. var param = status + "^" + pid + "^" + orddd + "^" + cretno + "^" + formcd + "^" + formrecdd + "^" + formrecseq + "^" + unprepFlag + "^" + formrecdeptcd;
  378. //oOpener.frmf_setParameter("SMMRI01800_medirecinfo", param);
  379. wndobj.fDispUnPrepDrCnfm(param);
  380. frmf_setFocusPop("SMMRI01800");
  381. wndobj.grd_unpreplist.setFocus();
  382. }
  383. //KNUH, 가정간호 의뢰 인증저장 후 가정간호 처방 발행 메세지 보여주도록 (2011.03.21 JJE)
  384. if( oprnerId == "SMMMR05000" && signedYn == "Y" && (fGetFormMast("formcd") == "0000000692" || fGetFormMast("formcd") == "1600017738") && bfCnstStat < 12 && savedInfo.formrecseq != frmf_getParameter("savedReqHomeCareSeq") ){
  385. sysf_messageBox("가정간호 의뢰를 인증저장하였습니다.\n\n가정간호 PRN처방을 발행", "I008"); //하십시오
  386. frmf_setParameter("savedReqHomeCareSeq", savedInfo.formrecseq);
  387. // 가정간호 안내문 출력 _ 2011.06.01 _ 손성훈 ------------------------
  388. dsf_createDsRow("ds_main_homecarerep_patinfo", [{col: "pid", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "pid")}
  389. , {col: "sex", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "sex")}
  390. , {col: "hngnm", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "hngnm")}
  391. , {col: "age", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "age")}
  392. , {col: "rgstno1", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "rrgstno1")}
  393. , {col: "rgstno2", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "rrgstno2")}
  394. , {col: "deptnm", type:"string", size:256, val:ds_main_vpaminfo.getColumn(0, "orddeptnm")}
  395. ]);
  396. var objDOM = rptf_createDOM(); // DOM 객체 설정
  397. rptf_setNodeListToDOM(objDOM, "/root/main/homecarerep/patinfo", ds_main_homecarerep_patinfo); // 데이터셋 1
  398. var objParam = new Object();
  399. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  400. var option = "open=1;save=1;directprint=1;printdialog=0;print=1;zoom=1;show=0";
  401. if (fGetFormMast("formcd") == "1600017738") {
  402. rptf_exeReportPreview30(["RPMMR05001"],[objParam], option);
  403. }else{
  404. rptf_exeReportPreview30(["RPMMR05000"],[objParam], option);
  405. }
  406. //exeReportPreview("RPMMR05000", "XMLSTR", "/root/main/homecarerep/patinfo", "", "true", "", "", "", "", "true");
  407. //exeReportPreview(레포트명, 연계방법, 매개변수필드 XPath, SubmitID, 출력여부, 인쇄 창 보임 여부, 저장타입, 파일명, 파일 저장 창 보임여부, 미리보기창닫기여부, 모니터 번호, 데이터 소스, 데이터 XPath , 메인리포트 반복XPath, 서브리포트1 반복Xpath)
  408. ivw_base.fDoHomeNurOrd();
  409. }
  410. }
  411. else
  412. {
  413. var oprnerId = oOpener.frmf_getScreenID();
  414. if((oprnerId == "SMMMR00100" && sysf_getObjType(this) != "Form" ) || oprnerId == "SPMMR05400" || oprnerId == "SMMMR05000")
  415. {
  416. return false;
  417. }
  418. else
  419. {
  420. if (frmf_getParameter("mediRecCnclYn") == "Y")
  421. {
  422. oOpener.frmf_setParameter("SMMMR02900_saveerr", "Y");
  423. frmf_clearParameter("mediRecCnclYn");
  424. return false;
  425. }
  426. else
  427. {
  428. frmf_clearParameter("mediRecCnclYn");
  429. return true;
  430. }
  431. }
  432. }
  433. if (!gSubmitSaveFlag)
  434. {
  435. if (savedInfo.rechistseq == -100)
  436. return true;
  437. else
  438. return false;
  439. }
  440. gSaveYN = true;
  441. return true;
  442. }
  443. /****************************************************************************************
  444. * Argument : N/A
  445. * Description : 기존 작성된기록을 새 기록으로 저장(수정모드에서 신규기록으로 저장)
  446. ****************************************************************************************/
  447. function fClickSaveAsNew()
  448. {
  449. //이윤주 수정(20140221) - 공통서식 서식폼 변경에 따른 새이름 저장 제어
  450. lf_getHardCDList("N", 5629, 0 , ds_init_srcformcd);
  451. //mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/srcformcd", 5629);
  452. var srcformcd = fGetFormRec("srcformcd");
  453. var formprognm = ivw_base.url;
  454. if( !utlf_isNull(formprognm) ){
  455. formprognm = utlf_transNullToEmpty(formprognm.split("::")[1]).replace("xfdl","xrw");
  456. }
  457. var nodeCnt = ds_init_srcformcd.getCaseCount("hardcd == '" + srcformcd + "'");
  458. if (nodeCnt > 0) {
  459. var formableprognm = ds_init_srcformcd.lookup("hardcd", srcformcd, "hardcdnm");
  460. if ( formableprognm != formprognm ) {
  461. sysf_messageBox("새이름으로 저장할 수 없습니다"+"\n"+"관련근거 칠곡:전자결재(진료행정팀(의무기록)-104(2014.02.25.) 진료기록 서식 개정에 대한 공지 및 업무 협조)"+"\n"+"문의사항 의무기록파트:김창수(2402)","I999");
  462. return;
  463. }
  464. }
  465. if (fIsValidForm_MMR01100(true) == false)
  466. return;
  467. //2010-03-26 오전 9:27:48 강지훈 수정 : [요청번호 10010] 입원수진에 외래[formchosflag = 'O']기록 작성을 막는다.
  468. if (validFormchos_MMR01100(true) == false) {
  469. return false;
  470. }
  471. //20160824021 이윤주수정(20170808) :외래수진에 입원서식 사용불가토록 제어
  472. if (validFormchos_MMR01100_OUT(true) == false) {
  473. return false;
  474. }
  475. var formrechm = utlf_getCurrentTime().substring(0, 4);
  476. var tmpstat = fGetFormRec("status");
  477. var tmprecdd = fGetFormRec("formrecdd");
  478. var tmprechm = fGetFormRec("formrechm");
  479. var tmpespiseq = fGetFormRec("espiseq");
  480. var tmporddd = fGetFormRec("orddd");
  481. var tmporddrid = fGetFormRec("orddrid");
  482. var tmpcretno = fGetFormRec("cretno");
  483. var tmpchosflag = fGetFormRec("chosflag");
  484. var tmpformrecdeptcd = fGetFormRec("formrecdeptcd");
  485. var tmpformrecdeptnm = fGetFormRec("formrecdeptnm");
  486. var tmpformrecuserid = fGetFormRec("formrecuserid");
  487. var tmpformrecusernm = fGetFormRec("formrecusernm");
  488. fSetFormRec("status", "C");
  489. fSetFormRec("espiseq", 0);
  490. if (fGetPamInfo("ioflag") == "O" || fGetPamInfo("ioflag") == "S")
  491. {
  492. fSetFormRec("orddd" , fGetPamInfo("orddd"));
  493. fSetFormRec("orddrid" , fGetPamInfo("orddrid"));
  494. }
  495. else
  496. {
  497. fSetFormRec("orddd" , fGetPamInfo("indd"));
  498. fSetFormRec("orddrid" , fGetPamInfo("medispclid"));
  499. }
  500. fSetFormRec("cretno", fGetPamInfo("cretno"));
  501. fSetFormRec("chosflag", fGetPamInfo("ioflag"));
  502. fSetFormRec("formrecdeptcd", sysf_getUserInfo("dutplcecd"));
  503. fSetFormRec("formrecdeptnm", sysf_getUserInfo("dutplcenm"));
  504. fSetFormRec("formrecuserid", sysf_getUserInfo("userid"));
  505. fSetFormRec("formrecusernm", sysf_getUserInfo("usernm"));
  506. // fSetFormRec("formrecdd", getCurrentDate());
  507. // fSetFormRec("formrechm", formrechm);
  508. // ipt_formrecdd.refresh();
  509. // ipt_formrectm.refresh();
  510. oOpener.frmf_setParameter("chkdeptpresave", "N");
  511. if(lf_getChkRecCorrect("NEW", "Y") == false ){
  512. fSetFormRec("status", tmpstat);
  513. fSetFormRec("formrecdd", tmprecdd);
  514. fSetFormRec("formrechm", tmprechm);
  515. fSetFormRec("espiseq", tmpespiseq);
  516. fSetFormRec("orddd", tmporddd);
  517. fSetFormRec("orddrid", tmporddrid);
  518. fSetFormRec("cretno", tmpcretno);
  519. fSetFormRec("chosflag", tmpchosflag);
  520. fSetFormRec("formrecdeptcd", tmpformrecdeptcd);
  521. fSetFormRec("formrecdeptnm", tmpformrecdeptnm);
  522. fSetFormRec("formrecuserid", tmpformrecuserid);
  523. fSetFormRec("formrecusernm", tmpformrecusernm);
  524. frmf_clearParameter("espisavesuccess");
  525. // 현재 수진으로 다시 설정
  526. lf_getChkRecCorrect("Y", "Y");
  527. return false;
  528. }
  529. fClickSave("Y");
  530. utlf_addLog("@@@@@ frmf_getParameter(\"espisavesuccess\") : " + frmf_getParameter("espisavesuccess") + " MMR01100 @@@@@");
  531. if (frmf_getParameter("espisavesuccess") != "Y")
  532. {
  533. fSetFormRec("status", tmpstat);
  534. fSetFormRec("formrecdd", tmprecdd);
  535. fSetFormRec("formrechm", tmprechm);
  536. fSetFormRec("espiseq", tmpespiseq);
  537. fSetFormRec("orddd", tmporddd);
  538. fSetFormRec("orddrid", tmporddrid);
  539. fSetFormRec("cretno", tmpcretno);
  540. fSetFormRec("chosflag", tmpchosflag);
  541. fSetFormRec("formrecdeptcd", tmpformrecdeptcd);
  542. fSetFormRec("formrecdeptnm", tmpformrecdeptnm);
  543. fSetFormRec("formrecuserid", tmpformrecuserid);
  544. fSetFormRec("formrecusernm", tmpformrecusernm);
  545. frmf_clearParameter("espisavesuccess");
  546. }
  547. }
  548. /****************************************************************************************
  549. * Function : fBeforeSaveExtnDoing
  550. * Description : 저장 전 실행할 함수 여부 검사 후 있을경우 실행
  551. * retrun type :
  552. * Creator : (사용안함으로 판단됨)
  553. ****************************************************************************************/
  554. function fBeforeSaveExtnDoing()
  555. {
  556. sysf_trace("***** fBeforeSaveExtnDoing() MMR01100 저장 전 실행할 함수 *****");
  557. if (!utlf_isNull(beforeSaveExeFuncNm))
  558. {
  559. var funcnm = "oOpener." + beforeSaveExeFuncNm + "()";
  560. sysf_trace("***** fBeforeSaveExtnDoing() funcnm : " + funcnm + " *****");
  561. eval(funcnm);
  562. }
  563. }
  564. /****************************************************************************************
  565. * Function : fAfterSaveExtnDoing
  566. * Description : 저장 후 실행할 함수 여부 검사 후 있을경우 실행
  567. * retrun type :
  568. * Creator :
  569. ****************************************************************************************/
  570. function fAfterSaveExtnDoing()
  571. {
  572. sysf_trace("***** fAfterSaveExtnDoing MMR01100 저장 후 실행할 함수 *****");
  573. try
  574. {
  575. if (!utlf_isNull(afterSaveExeFuncNm))
  576. {
  577. var funcnm = "oOpener." + afterSaveExeFuncNm + "()";
  578. sysf_trace("***** fAfterSaveExtnDoing funcnm : " + funcnm + " *****");
  579. eval(funcnm);
  580. }
  581. ivw_base.fSaveAfter();
  582. }
  583. catch (e)
  584. {
  585. sysf_catchTrace(e);
  586. }
  587. //20151110 fRefMediRecList 함수 수행 시 tabindex 를 변환으로 focus가 빼앗기는 현상
  588. try{
  589. //인증저장 후 진료대상자 리스트 활성화(2008-11-28일 김영학SW 요청 - 박종훈)
  590. var oprnerId = oOpener.frmf_getScreenID();
  591. if (fGetFormRec("espiyn") == "Y" && fGetFormMast("mainyn") == "Y" && oprnerId == "SMMMR00100")
  592. {
  593. var curPatListObj= frmf_findPopup("SMMMO04100"); //활성화된 진료대상자 화면 object loading
  594. var pid = appf_getPatientInfo("pid");
  595. appf_setPatientInfoDetailByKey("emrsaveyn", pid+ "|Y");
  596. if (!utlf_isNull(curPatListObj)) {
  597. var prcpsaveyn = appf_getPatientInfoDetail("prcpsaveyn");
  598. var emrsaveyn = appf_getPatientInfoDetail("emrsaveyn");
  599. if (prcpsaveyn == "Y" && emrsaveyn == "Y") {
  600. if( curPatListObj.openstatus != "normal" ){
  601. curPatListObj.openstatus = "normal";
  602. }
  603. //curPatListObj.restore(); //2009-10-26 오후 6:58:17 강지훈추가 : 요청번호 8585
  604. //curPatListObj.frmf_setFocus();
  605. application.popupframes["SMMMO04100"].form.setFocus();
  606. }
  607. }
  608. }
  609. if( (fGetFormRec("espiyn") == "Y" || fGetFormRec("espiyn") == "N") && oprnerId == "SMMMR00100"){
  610. // 2016.04.22 환자메모 화면 종료
  611. lf_ClosePatMemo();
  612. }
  613. }
  614. catch (e)
  615. {
  616. sysf_catchTrace(e);
  617. }
  618. if (gSaveAfterClose)
  619. {
  620. //부모창에 서식기록순번을 파라미터로 넘긴다.
  621. //2010-02-20 박종훈 추가(삭제의 경우 0으로 넘겨준다)
  622. if (fGetFormRec("status") == "D")
  623. {
  624. oOpener.frmf_setParameter("SSMMR01100_formrecseq", "0");
  625. }
  626. else
  627. {
  628. oOpener.frmf_setParameter("SSMMR01100_formrecseq", ds_data_formrec.getColumn(0, "formrecseq"));
  629. }
  630. var objForm = this.getOwnerFrame().form;
  631. if (!utlf_isNull(objForm) && objForm.frmf_getScreenID() == "SSMMR01100")
  632. {
  633. objForm = frmf_getMainViewer();
  634. if(objForm.frmf_getScreenID() == "SMMMR00100")
  635. //objForm.fGetRecMainlist();
  636. objForm.fRefMediRecList();
  637. }
  638. this.close();
  639. }
  640. }
  641. /****************************************************************************************
  642. * Description : 출력버튼 클릭
  643. * Argument : 01. N/A
  644. * retrun type :
  645. ****************************************************************************************/
  646. function fClickPrint()
  647. {
  648. if (fGetFormMast("formprogflag") == "OCR")
  649. {
  650. gPrestIvw.fPrint();
  651. }
  652. else
  653. {
  654. var signno = fGetFormRec("espiseq");
  655. var formcd = fGetFormRec("formcd");
  656. if (formcd != "")
  657. {
  658. var parmkey = "E▦" + signno + "▦" + formcd + "▩";
  659. frmf_setParameter("SPMRI02400_autoprtYn", "Y");
  660. frmf_setParameter("SPMRI02400_prtrecinfo", parmkey); //E/I▦signno▦formcd▩
  661. frmf_modal("SPMRI02400", "SPMRI02400", null, false, 1, null, null, null, null, null, null, null, "M");
  662. }
  663. }
  664. }
  665. /****************************************************************************************
  666. * Function : fSaveFormRec
  667. * Description : 출력버튼 클릭
  668. * Argument : 01. signedYn - 인증저장유무
  669. * retrun type : true / false
  670. * Creator :
  671. ****************************************************************************************/
  672. function fSaveFormRec(signedYn, mode)
  673. {
  674. sysf_trace("***** fSaveFormRec("+signedYn+", "+mode+") MMR01100 출력버튼 클릭 || 기록 취합!!! *****");
  675. if (utlf_isNull(fGetFormMast("formcd"))) return;
  676. if (isProgForm())
  677. {
  678. /*
  679. var tmpsavedInfo = new SAVED_INFO();
  680. tmpsavedInfo = ivw_base.getSaveComnFormData(mode);
  681. if (!utlf_isNull(tmpsavedInfo))
  682. {
  683. return tmpsavedInfo
  684. }
  685. */
  686. var rtn = false;
  687. if( signedYn == "N" && ds_init_notchkessn.findRow("hardcd", fGetFormMast("srcformcd")) > -1 ){
  688. rtn = lf_getProgFormRecData(null, "1");
  689. }else{
  690. rtn = lf_getProgFormRecData(); // 공통서식 기록데이터 취합
  691. }
  692. if(rtn == false){
  693. var tmpsavedInfo = new SAVED_INFO();
  694. return tmpsavedInfo;
  695. //return;
  696. }
  697. ds_data_recitem.copyData(ivw_base.ds_data_recitem);
  698. }
  699. else
  700. {
  701. /*
  702. //필수 입력항목 체크(특수서식)
  703. if(ivw_base.chkEssentialitem() == false)
  704. {
  705. var oprnerId = oOpener.frmf_getScreenID();
  706. if(oprnerId == "SMMMR02900")
  707. {
  708. oOpener.frmf_setParameter("SMMMR02900_saveerr", "Y");
  709. }
  710. var savedInfo = new SAVED_INFO();
  711. return savedInfo;
  712. }
  713. ivw_base.getSaveData("ds_temp_sort_recitem", "replace", this, null, mode);
  714. SortRecItem();
  715. */
  716. var rtn = false;
  717. if( signedYn == "N" && ds_init_notchkessn.findRow("hardcd", fGetFormMast("srcformcd")) > -1 ){
  718. rtn = lf_getGenFormData(null, "1");
  719. }else{
  720. rtn = lf_getGenFormData();
  721. }
  722. if( rtn == false ){
  723. var oprnerId = oOpener.frmf_getScreenID();
  724. if(oprnerId == "SMMMR02900")
  725. {
  726. oOpener.frmf_setParameter("SMMMR02900_saveerr", "Y");
  727. }
  728. var savedInfo = new SAVED_INFO();
  729. return savedInfo;
  730. }
  731. }
  732. //window.clipBoardData = model.instances(0).selectSingleNode("/root/hidden/recinfo").xml;
  733. if (!utlf_isNull(signedYn))
  734. {
  735. utlf_addLog("jw.choe fSaveComnFormRecInfo 호출 MMR01100 " );
  736. return fSaveComnFormRecInfo(signedYn);
  737. }
  738. }
  739. /**
  740. * @desc : 미리보기 데이터 조회해오기
  741. * @id :
  742. * @event :
  743. * @return :
  744. * @authur : 박종훈
  745. */
  746. var gPath_preview = "/root/hidden/medirec/medireccnts";
  747. function fGetPreviewData(flag, targetPath, targetModel, mode)
  748. {
  749. model.removeNodeset(gPath_preview);
  750. if (flag != "sign")
  751. {
  752. fSaveFormRec(null, mode);
  753. var cnt = getNodesetCnt(model, gPageInfo.recItemRef2);
  754. if (cnt == 0) return;
  755. }
  756. var formdegnseq;
  757. var degnitemno;
  758. var formcd;
  759. var node;
  760. var j = 1;
  761. var std_nodepath = gPath_preview + "[#jIdx#]";
  762. var std_nodepath2 = std_nodepath + "#colnm#";
  763. var nodepath;
  764. var nodepath2;
  765. var path_recItemRef2 = gPageInfo.recItemRef2 + "[#iIdx#]";
  766. var path_recItemRef2_row;
  767. var path_recItemRef2_formcd = path_recItemRef2 + "/formcd";
  768. var path_recItemRef2_formdegnseq = path_recItemRef2 + "/formdegnseq";
  769. var path_recItemRef2_degnitemno = path_recItemRef2 + "/degnitemno";
  770. var path_recItemRef2_degnitemlevlno = path_recItemRef2 + "/degnitemlevlno";
  771. var addCnts = "";
  772. var extnflag = true;
  773. for (var i = 1; i <= cnt; i++)
  774. {
  775. try
  776. {
  777. extnflag = true;
  778. nodepath2 = std_nodepath2.replace("#jIdx#", j);
  779. path_recItemRef2_row = path_recItemRef2.replace("#iIdx#", i);
  780. if (model.getValue(path_recItemRef2_row+"/orgdegnitemkind") == "")
  781. {
  782. copyNodeset(gPath_preview, path_recItemRef2_row, "append", model, model);
  783. }
  784. else
  785. {
  786. continue;
  787. }
  788. formcd = model.getValue(path_recItemRef2_formcd.replace("#iIdx#", i));
  789. formdegnseq = model.getValue(path_recItemRef2_formdegnseq.replace("#iIdx#", i));
  790. degnitemno = model.getValue(path_recItemRef2_degnitemno.replace("#iIdx#", i));
  791. model.makeNode(nodepath2.replace("#colnm#", "/imgehei"));
  792. model.makeNode(nodepath2.replace("#colnm#", "/imgewid"));
  793. model.makeValue(nodepath2.replace("#colnm#", "/viewflag"), "data");
  794. model.makeNode(nodepath2.replace("#colnm#", "/compflag"));
  795. model.makeNode(nodepath2.replace("#colnm#", "/viewcnts"));
  796. model.makeNode(nodepath2.replace("#colnm#", "/viewimge"));
  797. model.makeValue( nodepath2.replace("#colnm#", "/degnitemlevlno"), model.getValue(path_recItemRef2_degnitemlevlno.replace("#iIdx#", i)) );
  798. if (false && (formcd == "0000000899" || formcd == "0000000900" || formcd == "0000000901" ))
  799. {
  800. if (model.getValue(path_recItemRef2_row + "/degnitemkind") == "GRD" || model.getValue(path_recItemRef2_row + "/degnitemkind") == "CCN" ||
  801. model.getValue(path_recItemRef2_row + "/degnitemkind") == "OPN")
  802. {
  803. extnflag = false;
  804. }
  805. else if ( formcd == "0000000899" &&
  806. (model.getValue(path_recItemRef2_row + "/recrefcd") == "C" || model.getValue(path_recItemRef2_row + "/recrefcd") == "M") )
  807. {
  808. addCnts += model.getValue(path_recItemRef2_row + "/recitemnm");
  809. extnflag = false;
  810. }
  811. else
  812. {
  813. nodepath = std_nodepath.replace("#jIdx#", j++);
  814. fMakeRowRecCnts(nodepath, true);
  815. var viewcnts = model.getValue(nodepath + "/viewcnts");
  816. var tempcnts = parseInt(model.getValue(path_recItemRef2_row + "/rowno")) + 1 + ". ";
  817. if (addCnts != "")
  818. {
  819. tempcnts = tempcnts + "[" +addCnts+ "] ";
  820. addCnts = "";
  821. }
  822. viewcnts = tempcnts + viewcnts;
  823. model.setValue(nodepath + "/viewcnts", viewcnts);
  824. }
  825. }
  826. else
  827. {
  828. nodepath = std_nodepath.replace("#jIdx#", j++);
  829. fMakeRowRecCnts(nodepath, true);
  830. }
  831. if (extnflag && model.getValue(nodepath+"/compflag") == "6")
  832. {
  833. copyNodeset(gPath_preview, nodepath, "append", model, model);
  834. nodepath = std_nodepath.replace("#jIdx#", j++);
  835. model.setValue(nodepath + "/viewflag", "data");
  836. fMakeRowRecCnts(nodepath, false);
  837. }
  838. }
  839. catch (e)
  840. {
  841. model.setValue(nodepath+"/viewcnts", model.getValue(nodepath+"/viewcnts") + " [ERROR!]");
  842. }
  843. }
  844. if (flag == "view")
  845. {
  846. node = model.instances(0).selectSingleNode("/root/hidden/medirec");
  847. opener.window.javascript.fPreview(node);
  848. }
  849. else if(flag == "copy")
  850. {
  851. if(targetPath == null || targetPath == "")
  852. {
  853. alert("미리보기 데이터를 copy할 대상노드가 지정되지 않았습니다");
  854. return;
  855. }
  856. if(targetModel == null)
  857. targetModel = model;
  858. copyNodeset(targetPath, "/root/hidden/medirec", "replace", targetModel, model);
  859. }
  860. }
  861. /****************************************************************************************
  862. * Argument : N/A
  863. * Description : 미리보기(임시저장 후 기록내용보기)
  864. ****************************************************************************************/
  865. function fPreviewRec()
  866. {
  867. fClickSave("N");
  868. var formrecseq = fGetFormRec("formrecseq");
  869. oOpener.fShowMediRecCnt(formrecseq);
  870. }
  871. /**
  872. * @desc : 미리보기 팝업
  873. * @id :
  874. * @event :
  875. * @return :
  876. * @authur : 박종훈
  877. */
  878. function fShowPreview()
  879. {
  880. fGetPreviewData("get");
  881. setParameter("formnm", fGetFormMast("formnm"));
  882. modal("SSMMR01200", 1, 0, 0, "", "/root/hidden/medirec", "/root/main/medirec");
  883. }
  884. /**
  885. * @desc : 기록내역 라인별 설정
  886. * @id :
  887. * @event :
  888. * @return :
  889. * @authur : 박종훈
  890. */
  891. var LINE_STR = "‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥";
  892. function fMakeRowRecCnts(path, flag)
  893. {
  894. try
  895. {
  896. var path_viewflag = path+"/viewflag";
  897. var path_compflag = path+"/compflag";
  898. var path_rectermnm = path+"/rectermnm";
  899. var path_rectermcd = path+"/rectermcd";
  900. var path_reccnts = path+"/reccnts";
  901. var path_degnitemkind = path+"/degnitemkind";
  902. var path_degnitemnm = path+"/degnitemnm";
  903. var path_viewimge = path+"/viewimge";
  904. var path_recimge = path+"/recimge";
  905. var path_rowno = path+"/rowno";
  906. var path_degnitemlevlno = path+"/degnitemlevlno";
  907. var path_recitemnm = path+"/recitemnm";
  908. var sb = new StringBuffer();
  909. var isAdd = false;
  910. var existValu = model.getValue(path_rectermnm) != "" || model.getValue(path_recitemnm) != "" || model.getValue(path_reccnts) != "" ? true : false;
  911. if (model.getValue(path_degnitemkind) == "IMG")
  912. {
  913. model.setValue(path_compflag, "7");
  914. model.setValue(path_viewimge, model.getValue(path_recimge), true);
  915. setImageRefInstance(path_viewimge);
  916. }
  917. else if ((model.getValue(path_degnitemkind) == "GRD" /*|| model.getValue(path_degnitemkind) == "CCN" ||
  918. model.getValue(path_degnitemkind) == "OPN" || model.getValue(path_degnitemkind) == "DGN"*/) &&
  919. model.getValue(path_rowno) != "0")
  920. {
  921. model.setValue(path_compflag, "8");
  922. var degnitemlevlno = parseInt(model.getValue(path_degnitemlevlno))+1;
  923. model.setValue(path_degnitemlevlno, degnitemlevlno);
  924. }
  925. else if ((flag && model.getValue(path+"/fstlevlitemcd") == model.getValue(path+"/degnitemcd"))
  926. && model.getValue(path_degnitemkind) != "GRD")
  927. //else if (flag && model.getValue(path+"/degnitemlevlno") == "1")
  928. {
  929. model.setValue(path_viewflag, "fstlevl");
  930. model.setValue(path_compflag, "1");
  931. sb.append(model.getValue(path_degnitemnm));
  932. if (model.getValue(path_degnitemlevlno) == "1")
  933. {
  934. sb.append("> ");
  935. }
  936. else if (model.getValue(path_rectermnm) != "")
  937. {
  938. sb.append(": ");
  939. model.setValue(path_viewflag, "data");
  940. }
  941. if (existValu)
  942. {
  943. if (model.getValue(path_degnitemkind) == "MTX")
  944. {
  945. model.setValue(path_compflag, "6");
  946. }
  947. else
  948. {
  949. isAdd = true;
  950. flag = false;
  951. }
  952. }
  953. }
  954. else if (model.getValue(path_degnitemkind) == "MTX" &&
  955. model.getValue(path+"/formcd") == "0000000005")
  956. {
  957. model.setValue(path_compflag, "2");
  958. sb.append(model.getValue(path_reccnts));
  959. }
  960. else
  961. {
  962. isAdd = true;
  963. }
  964. if (isAdd)
  965. {
  966. model.setValue(path_compflag, "3");
  967. if (flag)
  968. sb.append(model.getValue(path_degnitemnm));
  969. if (existValu)
  970. {
  971. if (flag)
  972. sb.append(" : ");
  973. if (model.getValue(path_recitemnm) != "")
  974. {
  975. model.setValue(path_compflag, "4");
  976. sb.append(model.getValue(path_recitemnm));
  977. }
  978. else if (model.getValue(path_rectermnm) != "")
  979. {
  980. model.setValue(path_compflag, "4");
  981. sb.append(model.getValue(path_rectermnm));
  982. }
  983. if (model.getValue(path_reccnts) != "")
  984. {
  985. model.setValue(path_compflag, "5");
  986. if (model.getValue(path_rectermnm) != "" || model.getValue(path_recitemnm) != "")
  987. {
  988. sb.append(" ※");
  989. }
  990. sb.append(model.getValue(path_reccnts));
  991. }
  992. if (model.getValue(path+"/unitnm") != "")
  993. {
  994. sb.append(" ");
  995. sb.append(model.getValue(path+"/unitnm"));
  996. }
  997. }
  998. }
  999. model.setValue(path+"/viewcnts", sb.toString());
  1000. }
  1001. catch (e)
  1002. {
  1003. model.setValue(path+"/viewcnts", model.getValue(path+"/viewcnts") + "[SYSTEM ERROR]");
  1004. }
  1005. }
  1006. /**
  1007. * @desc : 기록데이터 가져오기
  1008. * @id :
  1009. * @event :
  1010. * @return :
  1011. * @authur : 박종훈
  1012. */
  1013. function fGetFormRecData()
  1014. {
  1015. gPrestIvw.window.javascript.InitSaveComnFormRecItemData();
  1016. fSetSaveComnFormRecInfo();
  1017. return model.instances(0).selectNodes("/root/send/saverecinfo");
  1018. }
  1019. /**
  1020. * @desc : 서식 디자인 정보 가져오기
  1021. * @id :
  1022. * @event :
  1023. * @return :
  1024. * @authur : 박종훈
  1025. */
  1026. function fGetFormDegnData()
  1027. {
  1028. return model.instances(0).selectNodes(gPageInfo.forminfoRef);
  1029. }
  1030. /****************************************************************************************
  1031. * Argument : N/A
  1032. * Description : 기록 삭제
  1033. ****************************************************************************************/
  1034. function fDelFormRec()
  1035. {
  1036. if (utlf_isNull(fGetFormRec("formrecseq")))
  1037. {
  1038. sysf_messageBox("삭제 ", "E001");
  1039. return;
  1040. }
  1041. fSetFormRec("status", "D");
  1042. gChkModiRecFlag = false;
  1043. return fSaveComnFormRecInfo();
  1044. }
  1045. /**
  1046. * @desc : 화면 로딩 후 실행되는 로직
  1047. * @id :
  1048. * @event :
  1049. * @return :
  1050. * @authur : 박종훈
  1051. */
  1052. function fEndFormReady(xrwid)
  1053. {
  1054. if (isPopup())
  1055. {
  1056. if (xrwid == "SMMMR04900")
  1057. {
  1058. if (opener.window.javascript.getParameter("openmode") == "newcnstform")
  1059. {
  1060. var formcd = opener.window.javascript.getParameter("formcd");
  1061. var userdeptcd = opener.window.javascript.getParameter("userdeptcd");
  1062. var flag = gPrestIvw.window.javascript.fNewCnstForm(formcd, userdeptcd);
  1063. if (! flag)
  1064. {
  1065. window.close();
  1066. }
  1067. }
  1068. }
  1069. }
  1070. else
  1071. {
  1072. if (xrwid == "SMMMR04900_newcnstform")
  1073. {
  1074. var formcd = getParameter("SMMMR04900_reqformcd");
  1075. var userdeptcd = getParameter("userdeptcd");
  1076. gPrestIvw.window.javascript.fNewCnstForm(formcd, userdeptcd);
  1077. }
  1078. }
  1079. }
  1080. /**
  1081. * @desc : 화면 사이즈 조절 및 속성 설정
  1082. * @id :
  1083. * @event :
  1084. * @return :
  1085. * @authur : 박종훈
  1086. */
  1087. function fInitPage(isViewTitl, isViewSaveBtn, height, wid, isViewPrtBtn)
  1088. {
  1089. utlf_addLog("***** fInitPage("+isViewTitl+", "+isViewSaveBtn+", "+height+", "+wid+", "+isViewPrtBtn+") *****");
  1090. if (!utlf_isNull(isViewPrtBtn))
  1091. {
  1092. gViewPrt = isViewPrtBtn;
  1093. }
  1094. var hei_titl = parseInt(grup_titl.position.height);
  1095. var hei_btn = parseInt(grup_btn.position.height);
  1096. var top_titl = parseInt(grup_titl.position.top);
  1097. var top_btn = parseInt(grup_btn.position.top);
  1098. this.position.height = height;
  1099. if (!utlf_isNull(wid))
  1100. this.position.width = wid;
  1101. if (isViewTitl)
  1102. {
  1103. grup_titl.visible = true;
  1104. }
  1105. else
  1106. {
  1107. grup_titl.visible = false;
  1108. hei_titl = 0;
  1109. top_titl = 0;
  1110. }
  1111. if (!isViewSaveBtn)
  1112. {
  1113. hei_btn = 0;
  1114. }
  1115. ivw_base.position.height = height - hei_titl - hei_btn - 2;
  1116. if (!utlf_isNull(wid))
  1117. ivw_base.position.width = wid - 2;
  1118. ivw_base.position.top = top_titl + hei_titl;
  1119. ivw_base.position.left = 0;
  1120. ivw_base.style.borderBottomStyle = "none";
  1121. if (isViewSaveBtn)
  1122. {
  1123. grup_btn.position.width = parseInt(ivw_base.position.width);
  1124. grup_btn.position.top = parseInt(ivw_base.position.top) + parseInt(ivw_base.position.height);
  1125. grup_btn.position.left = 0;
  1126. grup_btn.visible = true;
  1127. }
  1128. else
  1129. {
  1130. grup_btn.position.top = 0;
  1131. grup_btn.visible = false;
  1132. }
  1133. ivw_fst.position.height = ivw_base.position.height;
  1134. ivw_fst.position.width = ivw_base.position.width;
  1135. ivw_fst.position.top = ivw_base.position.top;
  1136. ivw_fst.position.left = ivw_base.position.left;
  1137. ivw_fst.style.borderBottomStyle = ivw_base.style.borderBottomStyle;
  1138. if (! gMediRecMain)
  1139. {
  1140. grup_btn.btn_preview.visible = false;
  1141. grup_btn.btn_del.visible = false;
  1142. }
  1143. }
  1144. var gPrePID = "";
  1145. var gSpecFormFlag = false;
  1146. var gFormLoad = false;
  1147. /**
  1148. * @desc : formxrwyn을 반환
  1149. * @id :
  1150. * @event :
  1151. * @return :
  1152. * @authur : 박종훈
  1153. */
  1154. function fInitForm()
  1155. {
  1156. //alert("fInitForm");
  1157. SetUserTimeLog("fInitForm", "START");
  1158. gSubmitID = TX_SUBMIT_COMN_FORM;
  1159. var pageInfo = new PAGEINFO();
  1160. var formprogflag = fGetFormMast("formprogflag");
  1161. var formprognm = fGetFormMast("formprognm");
  1162. gFormLoad = false;
  1163. var ivwsrc = "../../../emr/formmngtweb/xrw/SSMRF01200.xrw";
  1164. //var ivwsrc = "../../../emr/medirecweb/xrw/SMMMR00000_Empty.xrw";
  1165. if (formprogflag == "OCR")
  1166. {
  1167. ivw_base.src = "../../../emr/formmngtweb/xrw/SSMRF03800_OCR뷰어.xrw";
  1168. gPrestIvw = ivw_base;
  1169. var sIoflag = fGetPamInfo("ioflag");
  1170. var sOrddd = "";
  1171. if(sIoflag == "I"){
  1172. sOrddd = fGetPamInfo("indd");
  1173. }else if(sIoflag == "O"){
  1174. sOrddd = fGetPamInfo("orddd");
  1175. }
  1176. gPrestIvw.window.javascript.fGetOCRInfo(fGetFormMast("formcd"), fGetPamInfo("pid"), sOrddd, fGetPamInfo("cretno"), sIoflag);
  1177. }
  1178. else
  1179. {
  1180. if (gMediRecMain)
  1181. {
  1182. if (fGetFormMast("srcformcd") == "0000000002" && fGetPamInfo("ioflag") == "O")
  1183. {
  1184. opener.window.javascript.fSetPatSmm(true);
  1185. }
  1186. else
  1187. {
  1188. opener.window.javascript.fSetPatSmm(false);
  1189. }
  1190. }
  1191. if (isProgForm())
  1192. {
  1193. ivwsrc = "../../../emr/medirecweb/xrw/" + formprognm + ".xrw";
  1194. }
  1195. if (fGetFormMast("srcformcd") == "0000000001" || fGetFormMast("srcformcd") == "0000000003")
  1196. gPrestIvw = ivw_fst;
  1197. else
  1198. gPrestIvw = ivw_base;
  1199. //if (fGetFormMast("formprogflag") == "SMMMR04900_CONSULT")
  1200. if (fGetFormMast("formprognm") == "SMMMR04900_CONSULT")
  1201. {
  1202. gPrestIvw.src = ivwsrc;
  1203. gFormLoad = true;
  1204. }
  1205. else if (gPrestIvw.src != ivwsrc)
  1206. {
  1207. gPrestIvw.src = ivwsrc;
  1208. gFormLoad = true;
  1209. }
  1210. else if (gPrestIvw.attribute("formdegnseq") != fGetFormMast("formdegnseq"))
  1211. {
  1212. gFormLoad = true;
  1213. }
  1214. SetUserTimeLog("fInitForm", "gFormLoad END");
  1215. if (gFormLoad)
  1216. {
  1217. if (isProgForm())// && fGetFormMast("formprogflag") != "PROF")
  1218. {
  1219. SetUserTimeLog("fInitForm", "copyNodeset START");
  1220. copyNodeset(gPageInfo.forminfoRef, gPageInfo.forminfoRef, null, gPrestIvw.model, model);
  1221. SetUserTimeLog("fInitForm", "copyNodeset END");
  1222. gPrestIvw.window.javascript.fLoadForm();
  1223. SetUserTimeLog("fInitForm", "fLoadForm END");
  1224. gPrestIvw.attribute("formdegnseq") = fGetFormMast("formdegnseq");
  1225. }
  1226. else
  1227. {
  1228. //if ((isPopup() && opener.model.getValue("/root/emrtemp/sysformxrwyn") == "Y") &&
  1229. // fGetFormMast("formxrwyn") == "Y")
  1230. if(fGetFormMast("formxrwyn") == "Y")
  1231. {
  1232. /*********************/
  1233. /* XRW Loading Logic */
  1234. /*********************/
  1235. //gPrestIvw.src = GetFormXrwSubmitStr(fGetFormMast("formdegnseq"), "", "");
  1236. gPrestIvw.window.javascript.fDrawFormByFormDegnSeq(fGetFormMast("formdegnseq"), gPrestIvw.attribute("id"));
  1237. SetUserTimeLog("fInitForm", "GetFormXrwSubmitStr END");
  1238. //copyNodeset(gPageInfo.imgelistRef, gPageInfo.imgelistRef, "replace", gPrestIvw.model, model);
  1239. //SetUserTimeLog("fInitForm", "imgelistRef copyNodeset END");
  1240. /*copyNodeset(gPageInfo.forminfoRef, gPageInfo.forminfoRef, "replace", gPrestIvw.model, model);
  1241. SetUserTimeLog("fInitForm", "copyNodeset END");
  1242. gPrestIvw.window.javascript.makeInstance();
  1243. SetUserTimeLog("fInitForm", "makeInstance END");
  1244. gPrestIvw.model.refresh();*/
  1245. }
  1246. else
  1247. {
  1248. gPrestIvw.src = "../../../emr/formmngtweb/xrw/SSMRF01200.xrw";
  1249. SetUserTimeLog("fInitForm", "gPrestIvw.src END");
  1250. // 1. 이미지의 개수를 확인
  1251. // 2. 이미지 이름과 디자인아이템이름이 같은지 확인
  1252. // 3. Shape정보가 있는지 확인 한 후, Shape정보를 입력
  1253. var imagecnt = getNodesetCnt(model, pageInfo.imgelistRef);
  1254. var imagecd;
  1255. var imagenm;
  1256. var degnitemnm;
  1257. var degnitemkind;
  1258. var shapeInfo;
  1259. for(var i = 1; i <= imagecnt; i++)
  1260. {
  1261. imagecd = model.getValue(pageInfo.imgelistRef + "[" + i + "]/imgecd");
  1262. imagenm = model.getValue(pageInfo.imgelistRef + "[" + i + "]/imgenm");
  1263. //alert("imagecd: " + imagecd);
  1264. //alert("imagenm: " + imagenm);
  1265. if(imagecd != "" && imagenm != "")
  1266. {
  1267. degnitemnm = model.getValue(pageInfo.formdegnRef + "[" + i + "][degnitemcd=" + imagecd + "]/degnitemnm");
  1268. degnitemkind = model.getValue(pageInfo.formdegnRef + "[" + i + "][degnitemcd=" + imagecd + "]/degnitemkind");
  1269. //alert("degnitemnm: " + degnitemnm);
  1270. //alert("degnitemkind: " + degnitemkind);
  1271. if( degnitemkind == "IMG" )
  1272. {
  1273. shapeInfo = model.getValue(pageInfo.recItemRef + "[" + i + "][degnitemcd='" + imagecd + "' and degnitemkind='" + degnitemkind + "']/reccnts");
  1274. //alert(shapeInfo);
  1275. if(shapeInfo != "")
  1276. {
  1277. model.makeValue( gPageInfo.imgelistRef +"[" + i + "]/reccnts", shapeInfo);
  1278. }
  1279. }
  1280. }
  1281. }
  1282. gPrestIvw.window.javascript.fPreviewByDegnItems(gPageInfo.formmastRef,
  1283. gPageInfo.formdegnRef,
  1284. gPageInfo.vallistRef,
  1285. gPageInfo.imgelistRef,
  1286. "record",
  1287. gFstLevlItemCd,
  1288. gPrestIvw);
  1289. SetUserTimeLog("fInitForm", "fPreviewByDegnItems END");
  1290. }
  1291. }
  1292. if (formprogflag == "PROF")
  1293. {
  1294. gSubmitID = TX_SUBMIT_EXTN_FORM;
  1295. }
  1296. }
  1297. }
  1298. SetUserTimeLog("fInitForm", "END");
  1299. return fGetFormMast("formxrwyn");
  1300. }
  1301. /**
  1302. * @desc : 데이터 Setting
  1303. * @id :
  1304. * @event :
  1305. * @return :
  1306. * @authur : 박종훈
  1307. */
  1308. function fSetLoadData()
  1309. {
  1310. if(gOpenMode == "recform")
  1311. {
  1312. //이미지 데이터 Setting
  1313. copyNodeset(gPageInfo.imgelistRef, gPageInfo.imgelistRef, "replace", gPrestIvw.model, model);
  1314. //기록 데이터 Setting
  1315. fInitFormRec();
  1316. SetUserTimeLog("fLoaderEndForm", "fInitFormRec END");
  1317. SetToLoadTime(1);
  1318. SetUserTimeLog("fLoadRecForm", "END");
  1319. fCheckWriteUser();
  1320. fShowProgress(false);
  1321. }
  1322. //else
  1323. //{
  1324. /*alert("test");
  1325. fInitClearForm();
  1326. try {
  1327. gPrestIvw.window.javascript.fExtnInitFormRec();
  1328. }
  1329. catch (e) {};
  1330. fCheckWriteUser();*/
  1331. copyNodeset(gPageInfo.imgelistRef, gPageInfo.imgelistRef, "replace", gPrestIvw.model, model);
  1332. var imgeCnt = getNodesetCnt(gPrestIvw.model, gPageInfo.imgelistRef);
  1333. for(var i = 1; i <= imgeCnt; i++)
  1334. {
  1335. var degnitemcd = gPrestIvw.model.getValue(gPageInfo.imgelistRef + "[" + i + "]/imgecd");
  1336. var degnitemno = gPrestIvw.model.getValue(gPageInfo.formdegnRef + "[degnitemcd = '" + degnitemcd + "']/degnitemno");
  1337. //if(gPrestIvw.window.javascript.eval("IMG_" + degnitemno).attribute("ref") == "")
  1338. try
  1339. {
  1340. //jw.choe 초기화 에러 임시
  1341. // gPrestIvw.window.javascript.eval("IMG_" + degnitemno).LoadImageBase64(
  1342. // gPrestIvw.model.getValue(gPageInfo.imgelistRef + "[imgecd='" + degnitemcd + "']/imgedata"));
  1343. }
  1344. catch(e)
  1345. {
  1346. gPrestIvw.window.javascript.setImageRefInstance(gPageInfo.imgelistRef + "[" + i + "]/imgedata");
  1347. }
  1348. }
  1349. /*var len = gPrestIvw.window.document.body.children.length;
  1350. alert("len : " + len);
  1351. for(var i = len - 1; i >= 0; i--)
  1352. {
  1353. var ctrl = gPrestIvw.window.document.body.children.item(i);
  1354. alert(ctrl.elementName + ", " + ctrl.attribute("clsid"));
  1355. if(ctrl.elementName != "xforms:object" || ctrl.attribute("clsid") != "{7b1f53ab-6137-4773-88cc-53a46af2d289}")//{72e5d9ed-0d6a-46e8-aead-23144bfef878}
  1356. continue;
  1357. var degnitemno = ctrl.attribute("id").split("_")[1];
  1358. var degnitemcd = gPrestIvw.model.getValue(pageInfo.formdegnRef + "[degnitemno = '" + degnitemno +"']/degnitemcd");
  1359. alert("degnitemcd : " + degnitemcd);
  1360. gPrestIvw.window.javascript.eval(ctrl.attribute("id")).LoadImageBase64(model.getValue(pageInfo.imgelistRef + "[imgecd='" + degnitemcd + "']/imgedata"));
  1361. }*/
  1362. gPrestIvw.model.refresh();
  1363. //}
  1364. }
  1365. /**
  1366. * @desc : XRW 로딩
  1367. * @id :
  1368. * @event :
  1369. * @return :
  1370. * @authur : 박종훈
  1371. */
  1372. function fLoadNewXRW(xrwid)
  1373. {
  1374. if (gMediRecMain)
  1375. opener.window.javascript.fSetPatSmm(false);
  1376. if (ivw_base.src == "")
  1377. {
  1378. ivw_base.src = "../../../emr/medirecweb/xrw/SMMMR00000_Empty.xrw";
  1379. }
  1380. gPrestIvw = ivw_base;
  1381. gPrestIvw.window.javascript.navigate(xrwid, "", "", "", "");
  1382. // if (window.document.location == "C:/CMCProject/application/webapps/emr/medirecweb/xrw/")
  1383. // {
  1384. // if (xrwid == "SMMMR04900")
  1385. // gPrestIvw.window.javascript.navigateUrl("../../../emr/medirecweb/xrw/SMMMR04900_CONSULT.xrw", "", "", "", "");
  1386. // else
  1387. // gPrestIvw.window.javascript.navigate(xrwid, "", "", "", "");
  1388. // }
  1389. // else
  1390. // {
  1391. // gPrestIvw.window.javascript.navigate(xrwid, "", "", "", "");
  1392. // }
  1393. }
  1394. /****************************************************************************************
  1395. * Description : 기록을 위한 환자 원무정보 셋팅
  1396. * retrun type : true / false
  1397. ****************************************************************************************/
  1398. function fSetPamInfo(pid, orddd, cretno, ioflag, orddeptcd, orddrid,wardcd)
  1399. {
  1400. /*
  1401. if (utlf_isNull(pid))
  1402. {
  1403. sysf_messageBox("등록번호가 ", "I004");
  1404. return false;
  1405. } else if (utlf_isNull(orddd)){
  1406. sysf_messageBox("진료일자가 ", "I004");
  1407. return false;
  1408. } else if (utlf_isNull(cretno)){
  1409. sysf_messageBox("생성번호가 ", "I004");
  1410. return false;
  1411. } else if (utlf_isNull(ioflag)){
  1412. sysf_messageBox("내원구분이 ", "I004");
  1413. return false;
  1414. } else if (utlf_isNull(orddeptcd)){
  1415. sysf_messageBox("진료과 정보가 ", "I004");
  1416. return false;
  1417. } else if (utlf_isNull(orddrid)){
  1418. sysf_messageBox("진료의사 정보가 ", "I004");
  1419. return false;
  1420. }
  1421. */
  1422. if (pid == "")
  1423. {
  1424. sysf_messageBox("등록번호가 ", "I004");
  1425. return false;
  1426. } else if (orddd == ""){
  1427. sysf_messageBox("진료일자가 ", "I004");
  1428. return false;
  1429. } else if (cretno == ""){
  1430. sysf_messageBox("생성번호가 ", "I004");
  1431. return false;
  1432. } else if (ioflag == ""){
  1433. sysf_messageBox("내원구분이 ", "I004");
  1434. return false;
  1435. } else if (orddeptcd == ""){
  1436. sysf_messageBox("진료과 정보가 ", "I004");
  1437. return false;
  1438. } else if (orddrid == ""){
  1439. sysf_messageBox("진료의사 정보가 ", "I004");
  1440. return false;
  1441. }
  1442. ds_data_paminfo.clearData();
  1443. dsf_makeValue(ds_data_paminfo, "pid", null, pid);
  1444. if (ioflag == "O" || ioflag == "S")
  1445. {
  1446. dsf_makeValue(ds_data_paminfo, "orddd", null, orddd);
  1447. dsf_makeValue(ds_data_paminfo, "orddrid", null, utlf_transNullToEmpty(orddrid));
  1448. }
  1449. else
  1450. {
  1451. dsf_makeValue(ds_data_paminfo, "indd", null, orddd);
  1452. dsf_makeValue(ds_data_paminfo, "medispclid", null, utlf_transNullToEmpty(orddrid));
  1453. }
  1454. dsf_makeValue(ds_data_paminfo, "cretno", null, cretno);
  1455. if (orddeptcd == "2280000000")
  1456. dsf_makeValue(ds_data_paminfo, "ioflag", null, "E");
  1457. else
  1458. dsf_makeValue(ds_data_paminfo, "ioflag", null, ioflag);
  1459. dsf_makeValue(ds_data_paminfo, "orddeptcd", null, utlf_transNullToEmpty(orddeptcd));
  1460. dsf_makeValue(ds_data_paminfo, "wardcd", null, utlf_transNullToEmpty(wardcd));
  1461. return true;
  1462. }
  1463. /****************************************************************************************
  1464. * Argument : N/A
  1465. * Description : 서식 Clear
  1466. ****************************************************************************************/
  1467. function fInitClearForm()
  1468. {
  1469. utlf_addLog("***** fInitClearForm() *****");
  1470. if (fIsValidForm_MMR01100(true) == false)
  1471. return;
  1472. var formprogflag = fGetFormMast("formprogflag");
  1473. grup_btn.btn_print.visible = false;
  1474. fSetNewFormRec();
  1475. //2016.04.20 부제목 초기화
  1476. grup_titl.cbo_formrecextnnm.usertext = ds_data_formrec.getColumn(0, "formrecextnnm");
  1477. lf_checkFormrecextnnm();
  1478. grup_titl.cbo_formrecextnnm.text = ds_data_formrec.getColumn(0, "formrecextnnm");
  1479. if (formprogflag == "OCR")
  1480. {
  1481. btn_print.visible = true;
  1482. }
  1483. else{
  1484. lf_clearFormRec();
  1485. }
  1486. /*
  1487. else if (isProgForm())
  1488. {
  1489. //var rtn = gPrestIvw.window.javascript.fClearComnFormData();
  1490. var rtn = ivw_base.fClearComnFormData();
  1491. if(rtn == "oprfalse") //수술기록지 버튼 disable
  1492. {
  1493. fDisalbeSave(true);
  1494. return;
  1495. }
  1496. /**
  1497. * @desc : 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  1498. * @history : 2009.09.09 신규 안치원 ACW_090909A
  1499. */
  1500. /*
  1501. try {
  1502. //alert("fInitClearForm");
  1503. setButtonToggleAllByRecYn(ivw_base, ivw_base.gExtnBtnIds);
  1504. }
  1505. catch (e) {
  1506. utlf_addLog("***** SSMMR01100 fInitClearForm() try catch *****" );
  1507. sysf_catchTrace(e);
  1508. }
  1509. }
  1510. else
  1511. {
  1512. ivw_base.lf_clearData();
  1513. }
  1514. */
  1515. }
  1516. /****************************************************************************************
  1517. * Description : 서식로드시 LoadingBar표시, 닫기
  1518. * retrun type : (사용안함)
  1519. ****************************************************************************************/
  1520. function fShowProgress(flag, msg) {
  1521. if (!utlf_isNull(gPrestIvw)) {
  1522. gPrestIvw.visible = !flag;
  1523. }
  1524. if (flag) {
  1525. //frmf_openLoadingBar();
  1526. } else {
  1527. //frmf_closeLoadingBar();
  1528. }
  1529. }
  1530. /**
  1531. * @desc : 팝업서식 오픈
  1532. * @id :
  1533. * @event :
  1534. * @return :
  1535. * @authur : 박종훈
  1536. */
  1537. function fOpenModalForm(status)
  1538. {
  1539. fShowProgress(false);
  1540. setParameter("frtime", GetFrLoadTime());
  1541. setParameter("openmode", "openform");
  1542. setParameter("status", status);
  1543. setParameter("pid", fGetPamInfo("pid"));
  1544. if (fGetPamInfo("ioflag") == "O")
  1545. {
  1546. setParameter("orddd", fGetPamInfo("orddd"));
  1547. setParameter("orddrid", fGetPamInfo("orddrid"));
  1548. }
  1549. else
  1550. {
  1551. setParameter("orddd", fGetPamInfo("indd"));
  1552. setParameter("orddrid", fGetPamInfo("medispclid"));
  1553. }
  1554. setParameter("cretno", fGetPamInfo("cretno"));
  1555. if (fGetPamInfo("orddeptcd") == "2280000000")
  1556. setParameter("ioflag", "E");
  1557. else
  1558. setParameter("ioflag", fGetPamInfo("ioflag"));
  1559. setParameter("orddeptcd", fGetPamInfo("orddeptcd"));
  1560. // setParameter("forminfo", fGetCSVByFormInfo());
  1561. //
  1562. // if (status == "C")
  1563. // setParameter("recinfo", "");
  1564. // else
  1565. // setParameter("recinfo", fGetCSVByRecInfo());
  1566. setParameter("openmadalformsave", "");
  1567. modalUrl("../../../emr/medirecweb/xrw/SSMMR01100_서식로더.xrw", 1, 0, 0, "", "", "");
  1568. if (getParameter("openmadalformsave") == "Y")
  1569. {
  1570. if (gMediRecMain)
  1571. {
  1572. opener.window.javascript.fRefMediRecList();
  1573. }
  1574. }
  1575. }
  1576. /**
  1577. * @desc : 서식명칭 화면 표시
  1578. * @id :
  1579. * @event :
  1580. * @return :
  1581. * @authur : 박종훈
  1582. */
  1583. function fSetFormNm(formnm)
  1584. {
  1585. // fSetFormMast("formnm", formnm);
  1586. cap_formnm.text = formnm;
  1587. cap_formnm.refresh();
  1588. }
  1589. /**
  1590. * @desc : 부분서식 갯수 카운트
  1591. * @id :
  1592. * @event :
  1593. * @return :
  1594. * @authur : 박종훈
  1595. */
  1596. function fGetUnitFormCnt()
  1597. {
  1598. var cnt = getNodesetCnt(model, gPageInfo.formdegnRef+"[degnitemkind='FRM' and itemuseflag='F0']");
  1599. return cnt;
  1600. }
  1601. /**
  1602. * @desc : 컨설트 서식 로드
  1603. * @id :
  1604. * @event :
  1605. * @return :
  1606. * @authur : 박종훈
  1607. */
  1608. function fLoadNewCnstForm(formcd)
  1609. {
  1610. setParameter("SMMMR04900_reqformcd", formcd);
  1611. setParameter("SMMMR04900_newcnstform", "Y");
  1612. fLoadNewXRW("SMMMR04900");
  1613. }
  1614. /**
  1615. * @desc : 사용자 권한 체크
  1616. * @id :
  1617. * @event :
  1618. * @return :
  1619. * @authur : 박종훈
  1620. */
  1621. function fCheckWriteUser()
  1622. {
  1623. var pageInfo = new PAGEINFO();
  1624. var formprogflag = model.getValue(pageInfo.formmastRef + "/formprogflag");
  1625. var formprognm = model.getValue(pageInfo.formmastRef + "/formprognm");
  1626. //alert("formprogflag="+formprogflag);
  1627. //if (fGetFormRec("formrecuserid") == getUserId())
  1628. if (((fGetFormRec("formrecuserid") == getUserId()) || fGetFormMast("foctsnwyn") == "Y") && formprognm != "SMMMR04900_CONSULT") //예진기록여부 검사 추가
  1629. //if (fGetFormRec("formrecuserid") == getUserId() && formprognm != "SMMMR04900_CONSULT") //예진기록여부 검사 추가
  1630. {
  1631. grup_btn.disabled = false;
  1632. }
  1633. else
  1634. {
  1635. if (formprognm == "SMMMR04900_CONSULT")
  1636. {
  1637. if (fGetFormRec("status") == "C")
  1638. {
  1639. grup_btn.disabled = false;
  1640. }
  1641. else
  1642. {
  1643. var reqedityn = ivw_base.model.getValue("/root/main/cnstinfo/reqedityn");
  1644. var recvedityn = ivw_base.model.getValue("/root/main/cnstinfo/recvedityn");
  1645. if (reqedityn == "Y" || recvedityn == "Y")
  1646. {
  1647. grup_btn.disabled = false;
  1648. }
  1649. else
  1650. {
  1651. grup_btn.disabled = true;
  1652. }
  1653. }
  1654. }
  1655. else
  1656. {
  1657. grup_btn.disabled = true;
  1658. }
  1659. }
  1660. if (formprognm != "SMMMR04900_CONSULT")
  1661. {
  1662. addEmrLog("fCheckWriteUser : " + !grup_btn.disabled);
  1663. //EditableCtrl(gPrestIvw.window.body , !grup_btn.disabled);
  1664. }
  1665. try {
  1666. ivw_base.window.javascript.fCheckWriteUserSubForm();
  1667. }
  1668. catch (e) {};
  1669. //alert(fGetFormRec("formcd"));
  1670. //alert(fGetFormRec("formprogflag"));
  1671. }
  1672. /****************************************************************************************
  1673. * Argument : flag - true / false value
  1674. * Description : 저장버튼 막기
  1675. ****************************************************************************************/
  1676. function fDisalbeSave(flag)
  1677. {
  1678. sysf_trace( "***** fDisalbeSave 저장버튼막기 *****");
  1679. if (flag)
  1680. {
  1681. //grup_btn.disabled = true;
  1682. grup_btn.btn_del.enable = false;
  1683. grup_btn.btn_signsave.enable = false;
  1684. grup_btn.btn_tmpsave.enable = false;
  1685. grup_btn.btn_signsaveasnew.enable = false;
  1686. grup_btn.btn_preview.enable = false;
  1687. grup_btn.btn_init.enable = false;
  1688. }
  1689. else
  1690. {
  1691. grup_btn.enable = true;
  1692. grup_btn.btn_del.enable = true;
  1693. grup_btn.btn_signsave.enable = true;
  1694. grup_btn.btn_tmpsave.enable = true;
  1695. grup_btn.btn_signsaveasnew.enable = true;
  1696. grup_btn.btn_preview.enable = true;
  1697. grup_btn.btn_init.enable = true;
  1698. }
  1699. }
  1700. /**
  1701. * @desc : 기록을 위한 초기화
  1702. * @id :
  1703. * @event :
  1704. * @return :
  1705. * @authur : 박종훈
  1706. */
  1707. function fInitFormRec()
  1708. {
  1709. fSetFormRec("status", "U");
  1710. fSetOldFormRecInfo();
  1711. copyNodeset(gPageInfo.recItemRef2, gPageInfo.recItemRef, "replace", gPrestIvw.model, model);
  1712. if (isProgForm())
  1713. {
  1714. gPrestIvw.window.javascript.fLoadData();
  1715. }
  1716. else
  1717. {
  1718. setSrchData(gPageInfo.recItemRef, gPrestIvw);
  1719. }
  1720. }
  1721. /****************************************************************************************
  1722. * Argument : N/A
  1723. * Description : 창닫기
  1724. ****************************************************************************************/
  1725. function fClose()
  1726. {
  1727. this.close();
  1728. }
  1729. /****************************************************************************************
  1730. * Function : fGetFormSubTitle
  1731. * Description : 서식 부제목 가져오기
  1732. * retrun type :
  1733. * Creator :
  1734. ****************************************************************************************/
  1735. function fGetFormSubTitle()
  1736. {
  1737. var list = sysf_getGlobalVariable("emr_gsv_formsubtitlelist");
  1738. if(!utlf_isNull(list) && list != "-"){
  1739. dsf_setCSVToDs("ds_init_formsubtitle_formsubtitlelist",list);
  1740. }else{
  1741. ds_init_formsubtitle_formsubtitlelist.clearData();
  1742. var srcNode = emr_getOrderBaseInfo("formsubtitlelist");
  1743. dsf_copyColInfo(ds_init_formsubtitle_formsubtitlelist, srcNode);
  1744. ds_init_formsubtitle_formsubtitlelist.appendData(srcNode);
  1745. fFormSubTitlesetglobal(); //Global 변수에 저장
  1746. }
  1747. }
  1748. /****************************************************************************************
  1749. * Function : fFormSubTitlesetglobal
  1750. * Description : 서식부제목 리스트 전역변수로 셋팅
  1751. * retrun type :
  1752. * Creator :
  1753. ****************************************************************************************/
  1754. function fFormSubTitlesetglobal()
  1755. {
  1756. var csv = dsf_getDsCSV(ds_init_formsubtitle_formsubtitlelist);
  1757. if (utlf_isNull(csv)) csv = "-";
  1758. sysf_setGlobalVariable("emr_gsv_formsubtitlelist",csv);
  1759. }
  1760. /****************************************************************************************
  1761. * Function : lf_checkFormrecextnnm
  1762. * Description : 서식부제목 리스트 추가
  1763. * retrun type :
  1764. * Creator :
  1765. ****************************************************************************************/
  1766. function lf_checkFormrecextnnm(){
  1767. var formrecextnnm = grup_titl.cbo_formrecextnnm.usertext;//ds_data_formrec.getColumn(0, "formrecextnnm");
  1768. var nFindRow = ds_init_formsubtitle_formsubtitlelist.findRow("formsubtitle", formrecextnnm);
  1769. if( nFindRow < 0 ){
  1770. nFindRow = ds_init_formsubtitle_formsubtitlelist.findRow("formsubtitleseq", "999999");
  1771. var nRow = "";
  1772. if( nFindRow < 0 ){
  1773. ds_init_formsubtitle_formsubtitlelist.copyData(emr_getOrderBaseInfo("formsubtitlelist"));
  1774. nRow = ds_init_formsubtitle_formsubtitlelist.addRow();
  1775. ds_init_formsubtitle_formsubtitlelist.setColumn(nRow, "formsubtitleseq", "999999");
  1776. }else{
  1777. nRow = nFindRow;
  1778. }
  1779. ds_init_formsubtitle_formsubtitlelist.setColumn(nRow, "formsubtitle", formrecextnnm);
  1780. fFormSubTitlesetglobal();
  1781. }
  1782. }
  1783. /*******************************************************************************************************
  1784. 튜닝 작업
  1785. *******************************************************************************************************/
  1786. /****************************************************************************************
  1787. * Function : fFormReady
  1788. * Description : 초기화 작업 수행
  1789. * retrun type : formmast, formdegn, vallist, unitformmast, extnformlist (unitformdegn, imgelist 제외)
  1790. * Creator :
  1791. * Histoty : jonghun(2008.07.07 서식부제목조회 추가)
  1792. lf_resetForm 사용으로 변경
  1793. ****************************************************************************************/
  1794. function fFormReady()
  1795. {
  1796. utlf_addLog("***** fFormReady() *****");
  1797. ivw_base.visible = true;
  1798. ivw_fst.visible = false;
  1799. oOpener = frmf_getoOpener();
  1800. var formcd = oOpener.frmf_getParameter("formcd");
  1801. var sGetTopYn = oOpener.frmf_getParameter("SSMMR01100_getTopYn"); //SSMMR01100_getTopYn => top정보 조회여부 정보(N일경우 넘어온 파라미터기준, 아닐결루 TOP정보 기준)
  1802. var node = sysf_getGlobalVariable("paminfo");
  1803. if(!utlf_isNull(node) && sGetTopYn != "N") {
  1804. ds_data_paminfo.clearData();
  1805. dsf_setCSVToDs("ds_data_paminfo", node);
  1806. }
  1807. //if(window.type != 'main' && model.getValue("/root/loadcomplete") != "true") {
  1808. // parent.body.dispatch("SSMMR01100_onloadcomplete");
  1809. // model.makeValue("/root/loadcomplete", "true")
  1810. //}
  1811. if( frmf_getCurrentFormKind() != "main" && loadcomplete != "true" ){
  1812. try{
  1813. oOpener.SSMMR01100_onloadcomplete();
  1814. }catch(e){
  1815. sysf_catchTrace(e);
  1816. }
  1817. loadcomplete = "true";
  1818. }
  1819. if (frmf_isPopup() && sysf_getObjType(this) == "Form") {
  1820. fModalProcess();
  1821. if (validPamInfo_MMR01100("open_popup") == false) { //2010.03.18 안치원 - 상단환자정보와 기록환자정보가 같은지 검사한다.
  1822. return false;
  1823. }
  1824. } else {
  1825. fLoadNewForm(formcd);
  1826. if (grup_titl.visible != false) {
  1827. fGetFormSubTitle(); // 서식부제목리스트조회
  1828. }
  1829. }
  1830. }
  1831. /****************************************************************************************
  1832. * Function : fGetNewFormMast
  1833. * Description : 로드할 새로운 서식의 기본정보 조회
  1834. * Argument : 01. formcd - load할 서식코드
  1835. * retrun type : formmast, formdegn, vallist, unitformmast, extnformlist (unitformdegn, imgelist 제외)
  1836. * Creator : (로직 변경으로 사용하지 않음)
  1837. ****************************************************************************************/
  1838. function fGetNewFormMast(formcd)
  1839. {
  1840. utlf_addLog("서식로더 마스터조회1 시작, fGetNewFormMast()");
  1841. utlf_addLog("***** fGetNewFormMast("+formcd+") 로드할 새로운 서식의 기본정보 조회*****");
  1842. dsf_createDsRow("ds_send_req",
  1843. [{col:"formcd", type:"string", size:256, val:formcd}
  1844. ,{col:"formdegnseq", type:"int", size:256, val:0}
  1845. ,{col:"extnunitformlistyn", type:"string", size:256, val:"Y"}
  1846. ,{col:"cashedformdegnseq", type:"string", size:256, val:gCashedFormDegnSeq}
  1847. ,{col:"sysformrecdt", type:"string", size:256, val:""}
  1848. ,{col:"formfromdt", type:"string", size:256, val:""}
  1849. ,{col:"mode", type:"string", size:256, val: ""}]);
  1850. var oParam = {};
  1851. oParam.id = "TRMRF02001";
  1852. oParam.service = "formmngtapp.FormDegnMngt";
  1853. oParam.method = "reqGetFormDegnInfo";
  1854. oParam.inds = "req=ds_send_req";
  1855. oParam.outds = "ds_data_formmast=formmast ds_data_formdegn=formdegn ds_data_unitformmast=unitformmast ds_data_unitformdegn=unitformdegn ds_data_vallist=vallist ds_data_imgelist=imgelist ds_data_extnformlist=extnformlist ds_data_readonlylist=readonlylist ds_data_programdesignformlist=programdesignformlist";
  1856. oParam.async = false;
  1857. oParam.progress = false;
  1858. oParam.callback = "cf_TRMRF02001";
  1859. tranf_submit(oParam);
  1860. utlf_addLog("서식로더 마스터조회1 종료, fGetNewFormMast()");
  1861. //submit("TRMRF02001", false);
  1862. return true;
  1863. }
  1864. /****************************************************************************************
  1865. * Description : 로드할 기록 서식의 기본정보 조회.
  1866. * Argument : 01. formrecseq : 서식기록순번
  1867. * retrun type : formmast, formdegn, vallist, unitformmast, extnformlist (unitformdegn, imgelist 제외)
  1868. * Creator :
  1869. ****************************************************************************************/
  1870. function fGetRecFormMast(formrecseq)
  1871. {
  1872. utlf_addLog("서식로더 마스터조회2 시작, fGetRecFormMast()");
  1873. utlf_addLog("***** fGetRecFormMast("+formrecseq+") *****");
  1874. ds_data_validinfo.clearData();
  1875. ds_data_formmast.clearData();
  1876. ds_data_formdegn.clearData();
  1877. ds_data_unitformmast.clearData();
  1878. ds_data_vallist.clearData();
  1879. ds_script.clearData();
  1880. ds_script_map.clearData();
  1881. dsf_createDsRow("ds_send_req",
  1882. [{col:"formrecseq", type:"string", size:256, val:formrecseq}
  1883. ,{col:"formdegnseq", type:"int", size:256, val:0}
  1884. ,{col:"extnunitformlistyn", type:"string", size:256, val:"Y"}
  1885. ,{col:"cashedformdegnseq", type:"string", size:256, val:gCashedFormDegnSeq}
  1886. ,{col:"sysformrecdt", type:"string", size:256, val:""}
  1887. ,{col:"formfromdt", type:"string", size:256, val:""}
  1888. ,{col:"mode", type:"string", size:256, val: ""}]);
  1889. var oParam = {};
  1890. oParam.id = "TRMRF02004";
  1891. oParam.service = "formmngtapp.FormDegnMngt";
  1892. oParam.method = "reqGetFormDegnInfo";
  1893. oParam.inds = "req=ds_send_req";
  1894. oParam.outds = "ds_data_formmast=formmast ds_data_formdegn=formdegn ds_data_unitformmast=unitformmast ds_data_vallist=vallist ds_data_imgelist=imgelist ds_data_extnformlist=extnformlist ds_script=script ds_script_map=script_map";
  1895. oParam.async = false;
  1896. oParam.progress = false;
  1897. oParam.callback = "cf_TRMRF02001"; //cf_TRMRF02001 과 동일하여 같이 처리
  1898. tranf_submit(oParam);
  1899. //submit("TRMRF02004");
  1900. utlf_addLog("서식로더 마스터조회2 종료, fGetRecFormMast()");
  1901. return true;
  1902. }
  1903. /****************************************************************************************
  1904. * Argument : 01.sSvcId : 서비스 ID
  1905. * : 02.nErrorCode : 에러코드
  1906. * : 03.sErrorMsg : 에러메시지
  1907. * Description : cf_TRMRF02001의 콜백함수
  1908. ****************************************************************************************/
  1909. function cf_TRMRF02001(sSvcId, nErrorCode, sErrorMsg) {
  1910. arErrorCode.push(sSvcId, nErrorCode);
  1911. if(nErrorCode < 0) return;
  1912. utlf_addLog("***** cf_TRMRF02001 *****");
  1913. dsf_setDefaultVal(ds_data_readonlylist, "readonlystatdt:-,readonlyuserid:-");
  1914. var objDs = this.removeChild("ds_send_req");
  1915. delete objDs;
  1916. objDs = null;
  1917. }
  1918. /****************************************************************************************
  1919. * Function : fCheckForm
  1920. * Description : 로드할 기록의 종류를 반환한다.
  1921. * Argument : 01. dsNm : Dataset Name
  1922. * retrun type :
  1923. * Creator :
  1924. ****************************************************************************************/
  1925. function fCheckForm(dsNm) {
  1926. utlf_addLog("***** fCheckForm("+dsNm+") MMR01100 *****");
  1927. var refDs = this.objects[dsNm];
  1928. //로드불가 : 0, 공통서식(PGM) : 1, 공통서식(서식) : 2, 특수서식 : 3, CNST : 4, PROF : 5, OCR : 6
  1929. var formprogflag = refDs.getColumn(0, "formprogflag");
  1930. var formprognm = refDs.getColumn(0, "formprognm");
  1931. if(formprogflag == "PROG" && utlf_isNull(formprognm)) {
  1932. return "";
  1933. }
  1934. if(frmf_isPopup() && sysf_getObjType(this) == "Form" && formprogflag == "-") {
  1935. return "MAIN";
  1936. }
  1937. utlf_addLog("@@@@@ formprogflag : " + formprogflag + "*****");
  1938. return formprogflag;
  1939. }
  1940. function fGetFormPath()
  1941. {
  1942. var formdegnseq = model.getValue(gPageInfo.formmastRef + "/formdegnseq");
  1943. return getActionURL("TRMRF01201") + getUserSessionString() + "&formcd=&formdegnseq=" + formdegnseq + "&ivwid=" + ivw_base.attribute("id")
  1944. }
  1945. /****************************************************************************************
  1946. * Argument : 01.formcd : 서식코드
  1947. * : 02.bPopup : 특수서식로드 유형(true/flase)
  1948. * : 03.calledflag : 기록후 넘겨줘야하는 값
  1949. * : 04.bValid :
  1950. * Description : 새로운 서식을 Load <-- fLoadNewForm_old
  1951. * Histroty : (사용안함)
  1952. ****************************************************************************************/
  1953. var gSrcFormcd = "";
  1954. var gFormProgFlag = "";
  1955. var gFormProgNm = "";//2010.03.29 dhkim 추가
  1956. function fLoadNewForm(formcd, bPopup, calledflag, bValid)
  1957. {
  1958. utlf_addLog("서식로더 시작, fLoadNewForm()");
  1959. utlf_addLog("***** fLoadNewForm("+ formcd +", "+ bPopup +", "+ calledflag +", "+ bValid +") *****");
  1960. //2010.03.09 안치원 - 신규팝업서식 오류 수정
  1961. //진료기록메인에서 최초, 수정모드로 열린 기록이후에 팝업으로 열리는 신규서식이
  1962. //본래의 서식이 열리지 않고, 바탕의 수정모드로 열린 기록이 팝업으로 열리는 문제 해결.
  1963. frmf_clearParameter("openmode");
  1964. //2010.06.17, 주희경, 신규 작성시에만 디폴트값 셋팅 하도록 세션 값 설정, 이은영 과장 요청
  1965. frmf_setParameter("fLoadNewForm", "Y");
  1966. //2009.10.13 안치원 TASK-32640, 32794
  1967. //중복기록 검사
  1968. if (utlf_isNull(bValid)) {
  1969. bValid = true;
  1970. }
  1971. if (bValid && validateRec(formcd) == false)
  1972. return;
  1973. trace("fLoadNewForm start시간: " + utlf_getCurrentTime() + ", formcd:" + formcd);
  1974. var rtn = "N";
  1975. var rtnmsg = 0;
  1976. //현재 로딩된 서식의 formcd를 가져온다.
  1977. gSrcFormcd = fGetFormMast("formcd");
  1978. gFormProgFlag = fGetFormMast("formprogflag");
  1979. gFormProgNm = fGetFormMast("formprognm");//2010.03.29 dhkim 추가
  1980. //alert(gSrcFormcd +"@"+ gFormProgFlag + "@"+ gFormProgNm);
  1981. utlf_addLog("@@@@@ :"+gSrcFormcd +"@"+ gFormProgFlag + "@"+ gFormProgNm);
  1982. gOldUnitFormDgnSeq = "";
  1983. if( isValidObject("ds_data_unitformmast") ){
  1984. for (var i = 0; i < ds_data_unitformmast.rowcount; i++)
  1985. {
  1986. //var subNode = gOldUnitNodelist.item(i);
  1987. gOldUnitFormDgnSeq += ds_data_unitformmast.getColumn(i, "formdegnseq") + "▦";
  1988. }
  1989. }
  1990. var openmode = oOpener.frmf_getParameter("openmode");
  1991. if ( openmode != "extnunitform" && utlf_isNull(formcd))
  1992. return;
  1993. if (frmf_getParameter("loadstatus"))
  1994. {
  1995. if (frmf_getParameter("afterRecDelete") == "Y")
  1996. {
  1997. rtn = "N";
  1998. frmf_clearParameter("afterRecDelete");
  1999. }
  2000. else
  2001. {
  2002. //rtn = fCheckChangeDataForCosign();
  2003. rtn = lf_isModify();
  2004. }
  2005. }
  2006. if(utlf_isNull(bPopup))// == null
  2007. bPopup = true;
  2008. //1. 서식정보 조회
  2009. if(!fGetNewFormMast(formcd))
  2010. {
  2011. alert("서식정보를 조회하는데 실패하였습니다.");
  2012. return;
  2013. }
  2014. var recsavechk = oOpener.frmf_getParameter("SSMMR01100_recsavechk");
  2015. oOpener.frmf_clearParameter("SSMMR01100_recsavechk");
  2016. if (rtn != "N" && ds_data_formmast.getColumn(0, "mainyn") == "Y" && recsavechk != "Y") //수정데이터가 있는 경우
  2017. {
  2018. var srcformcd = ds_data_formmast.getColumn(0, "srcformcd");
  2019. if (srcformcd =! '0800003416')
  2020. {
  2021. var rtnmsg = sysf_messageBox("기록내용 중 저장되지 않은 내용이 있습니다.", "Q002");
  2022. }
  2023. //alert("rtnmsg:"+rtnmsg);
  2024. if (rtnmsg == 6)
  2025. {
  2026. var clkSvRtn = fClickSave("Y") ;
  2027. //alert(clkSvRtn);
  2028. if (clkSvRtn == false)
  2029. {
  2030. return;
  2031. }
  2032. }
  2033. }
  2034. fShowProgress(true, "서식정보");
  2035. var sGetTopYn = oOpener.frmf_getParameter("SSMMR01100_getTopYn"); //SSMMR01100_getTopYn => top정보 조회여부 정보(N일경우 넘어온 파라미터기준, 아닐결루 TOP정보 기준)
  2036. var node = sysf_getGlobalVariable("paminfo");
  2037. utlf_addLog("sGetTopYn : " + sGetTopYn );
  2038. if(!utlf_isNull(node) && sGetTopYn != "N")
  2039. {
  2040. ds_data_paminfo.clearData();
  2041. dsf_setCSVToDs("ds_data_paminfo", node);
  2042. }
  2043. if (openmode == "newform")
  2044. {
  2045. if (!fSetPamInfo(oOpener.frmf_getParameter("pid"),
  2046. oOpener.frmf_getParameter("orddd"),
  2047. oOpener.frmf_getParameter("cretno"),
  2048. oOpener.frmf_getParameter("ioflag"),
  2049. oOpener.frmf_getParameter("orddeptcd"),
  2050. oOpener.frmf_getParameter("orddrid") ))
  2051. {
  2052. grup_btn.enable = false;
  2053. return;
  2054. }
  2055. }
  2056. //동일 서식 로딩시 인스턴스만 바꿔주는 기능 관련 추가(2008-11-28 박종훈)
  2057. var sSrchsrcformcd = ds_data_formmast.getColumn(0, "formcd");
  2058. var sSrchformprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  2059. var sFormProgNm = ds_data_formmast.getColumn(0, "formprognm");
  2060. if ( openmode != "extnunitform" && !utlf_isNull(formcd)
  2061. && gSrcFormcd == sSrchsrcformcd && gFormProgFlag == sSrchformprogflag
  2062. && sFormProgNm != "-" && gFormProgNm == sFormProgNm //2010.03.29 dhkim 추가(formprognm이 다를 경우 서식 새로 로딩)
  2063. )
  2064. {
  2065. //2. 서식 체크
  2066. var formprogflag = fCheckForm("ds_data_formmast"); //gPageInfo.initformmastRef
  2067. if (fCheckformKind(formprogflag, bPopup))
  2068. {
  2069. //dsf_copyDsList(arrDsForminfo, arrDsTempFrominfo, "replace", this, this); //gPageInfo.forminfoRef, gPageInfo.initforminfoRef
  2070. //copyNodeset(gPageInfo.forminfoRef, gPageInfo.initforminfoRef, "replace", model, model);
  2071. //dsf_deleteDs(arrDsTempFrominfo, this);
  2072. }
  2073. //열려있는 기록지 부분서식의 formdegnseq가 일치하는지 여부를 검사하여 다를 경우 부분서식을 새로 로딩(2009-01-15 박종훈)
  2074. var gNewUnitNodelist = this.objects["ds_data_unitformmast"];
  2075. var arrOldUnitFormDgnSeq = gOldUnitFormDgnSeq.split("▦");
  2076. for (var i = 0; i < gNewUnitNodelist.rowcount; i++)
  2077. {
  2078. //var subNode = gNewUnitNodelist.item(i);
  2079. var newUnitFormDgnSeq = gNewUnitNodelist.getColumn(i, "formdegnseq");
  2080. var unitItemCd = gNewUnitNodelist.getColumn(i, "orgsupdegnitemcd");
  2081. utlf_addLog("@@@@@ unitItemCd : " + unitItemCd );
  2082. //var controls = "ivw_" + unitItemCd;
  2083. utlf_addLog("@@@@@ ComnFormObj : " + ComnFormObj );
  2084. //////////////////// 컨설트 부분 추가 /////////////////////
  2085. var ivwObj = null;
  2086. if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y")
  2087. {
  2088. var objGrp;
  2089. if(unitItemCd == "0000960001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011449001.grup_extn0011449001;
  2090. else if(unitItemCd == "0011449001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011449001;
  2091. else if(unitItemCd == "0001019001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011529001.grup_extn0011529001;
  2092. else if(unitItemCd == "0011529001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011529001;
  2093. ivwObj = objGrp.components["ivw_" + unitItemCd]; // 컨설트
  2094. }
  2095. else
  2096. ivwObj = ivw_base.grup_base.components["ivw_" + unitItemCd];
  2097. // var ivwObj = ivw_base.grup_base.components["ivw_" + unitItemCd]; //ivw_base.document.controls("ivw_" + unitItemCd);
  2098. //////////////////// 컨설트 부분 추가 /////////////////////
  2099. utlf_addLog("@@@@@ ivwObj : " + ivwObj);
  2100. if(utlf_isNull(ivwObj.url))
  2101. {
  2102. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  2103. ivwObj.supdegnitemcd = ""; //ivwObj.attribute("supdegnitemcd") = "";
  2104. ivwObj.unitformcd = ""; //ivwObj.attribute("unitformcd") = "";
  2105. var unitformmastDs = this.objects["ds_data_unitformmast"];
  2106. var unitformcd = unitformmastDs.lookup("orgsupdegnitemcd", unitItemCd, "formcd");
  2107. if (!utlf_isNull(unitformcd))
  2108. {
  2109. ivwObj.supdegnitemcd = unitItemCd; //ivwObj.attribute("supdegnitemcd") = unitItemCd;
  2110. ivwObj.unitformcd = unitformcd; //ivwObj.attribute("unitformcd") = unitformcd;
  2111. trace(unitformcd + " Loading 시작 : " + utlf_getCurrentTime());
  2112. loadUnitForm(ivwObj, unitItemCd);
  2113. if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq)
  2114. {
  2115. //setFstLevlItemCd(ivwObj, unitformcd);
  2116. var sIdx = unitformmastDs.findRowExpr("formcd == '" + unitformcd + "' && loaded != 'true'");
  2117. unitformmastDs.setColumn(sIdx, "loaded", "true");
  2118. //model.setValue(gPageInfo.forminfoRef + "/unitformmast[formcd='" + unitformcd + "' and loaded != 'true']/loaded", "true");
  2119. }
  2120. trace(unitformcd + " Loading 끝 : " + utlf_getCurrentTime());
  2121. }
  2122. }
  2123. else if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq)
  2124. {
  2125. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  2126. ivwObj.supdegnitemcd = ""; //ivwObj.attribute("supdegnitemcd") = "";
  2127. ivwObj.unitformcd = ""; //ivwObj.attribute("unitformcd") = "";
  2128. var unitformmastDs = this.objects["ds_data_unitformmast"];
  2129. var unitformcd = unitformmastDs.lookup("orgsupdegnitemcd", unitItemCd, "formcd");
  2130. if (!utlf_isNull(unitformcd))
  2131. {
  2132. ivwObj.supdegnitemcd = unitItemCd; //ivwObj.attribute("supdegnitemcd") = unitItemCd;
  2133. ivwObj.unitformcd = unitformcd; //ivwObj.attribute("unitformcd") = unitformcd;
  2134. loadUnitForm(ivwObj, unitItemCd);
  2135. //setFstLevlItemCd(ivwObj, unitformcd);
  2136. var sIdx = unitformmastDs.findRowExpr("formcd == '" + unitformcd + "' && loaded != 'true'");
  2137. unitformmastDs.setColumn(sIdx, "loaded", "true");
  2138. //model.setValue(gPageInfo.forminfoRef + "/unitformmast[formcd='" + unitformcd + "' and loaded != 'true']/loaded", "true");
  2139. }
  2140. }
  2141. }
  2142. fInitClearForm();
  2143. if (isProgForm())
  2144. {
  2145. ivw_base.fGetDefData();
  2146. }
  2147. else
  2148. {
  2149. ivw_base.dispOnLoadComplete(UNIT_FORM);
  2150. }
  2151. fShowProgress(false);
  2152. }
  2153. else
  2154. {
  2155. //2. 서식 체크
  2156. var formprogflag = fCheckForm("ds_data_formmast");
  2157. if (fCheckformKind(formprogflag, bPopup) && openmode != "extnunitform") //hkjoo, 2010.02.02
  2158. {
  2159. //dsf_copyDsList(arrDsForminfo, arrDsTempFrominfo, "replace", this, this);
  2160. //dsf_clearDsList(arrDsTempFrominfo, this);//ds_temp_forminfo
  2161. // copyNodeset(gPageInfo.forminfoRef, gPageInfo.initforminfoRef, "replace", model, model);
  2162. // model.removeNodeset(gPageInfo.initforminfoRef);
  2163. // cap_formnm.refresh();
  2164. //3. 기록정보 초기화
  2165. fSetNewFormRec();
  2166. }
  2167. if ( openmode == "extnunitform" ) //hkjoo, 2010.02.02
  2168. formprogflag = "EXTN";
  2169. //4. 서식 로드
  2170. fLoadForm("ds_data_formmast", formprogflag, bPopup, calledflag);
  2171. fShowProgress(false);
  2172. }
  2173. utlf_addLog("서식로더 종료, fLoadNewForm()");
  2174. }
  2175. /****************************************************************************************
  2176. * Function : fCheckformKind
  2177. * Description : 인스턴스 카피 여부 반환
  2178. * Argument : 01. formprogflag : 서식유형
  2179. 02. bPopup : 특수서식로드 유형 (true/false)
  2180. * retrun type : (true/false)
  2181. * Creator :
  2182. ****************************************************************************************/
  2183. function fCheckformKind(formprogflag, bPopup)
  2184. {
  2185. utlf_addLog("***** fCheckformKind("+formprogflag+", "+bPopup+") *****");
  2186. switch(formprogflag)
  2187. {
  2188. case "" :
  2189. return false;
  2190. case "PROG" : //공통서식(PGM) 로드
  2191. return true;
  2192. case "MAIN" : //공통서식(서식) 로드.
  2193. return true;
  2194. case "PROF" : //제증명서식 로드
  2195. case "-" : //특수서식 로드
  2196. if(bPopup)
  2197. return false;
  2198. else
  2199. {
  2200. return true;
  2201. }
  2202. break;
  2203. case "CNST" : //컨설트서식 로드
  2204. break;
  2205. case "OCR" : //OCR서식 로드
  2206. break;
  2207. }
  2208. }
  2209. /****************************************************************************************
  2210. * Function : fLoadRecForm
  2211. * Description : 기록된 서식을 Load <-- fLoadRecForm_old
  2212. * Argument : 01. formrecseq : 서식기록순번
  2213. 02. bPopup : 특수서식로드 유형(true/false)
  2214. 03. calledflag : 기록후 넘겨줘야 하는 값
  2215. * retrun type :
  2216. * Creator : (사용안함)
  2217. ****************************************************************************************/
  2218. var gOldUnitFormDgnSeq = "";
  2219. function fLoadRecForm(formrecseq, bPopup, calledflag)
  2220. {
  2221. utlf_addLog("서식로더 시작, fLoadRecForm()");
  2222. utlf_addLog("***** fLoadRecForm("+ formrecseq +", "+ bPopup +", "+ calledflag +") MMR01100 *****");
  2223. if(fGetFormMast("formprogflag") == "PROG")
  2224. this.ComnFormObj = ivw_base;
  2225. utlf_addLog("!!!!! fLoadRecForm ComnFormObj : " + ComnFormObj.name );
  2226. this.frmf_setParameter("openmode", "recform");
  2227. this.frmf_setParameter("formrecseq", formrecseq);
  2228. this.frmf_setParameter("calledflag", calledflag); //20130523 정창혁 테스트
  2229. gSrcFormcd = fGetFormMast("formcd");
  2230. gFormProgFlag = fGetFormMast("formprogflag");
  2231. gFormProgNm = fGetFormMast("formprognm");//2010.03.29 dhkim 추가
  2232. var gOldUnitNodelist = ds_data_unitformmast;
  2233. gOldUnitFormDgnSeq = "";
  2234. if( gOldUnitNodelist != null ) {
  2235. for (var i = 0; i < gOldUnitNodelist.rowcount; i++) {
  2236. //var subNode = gOldUnitNodelist.item(i);
  2237. gOldUnitFormDgnSeq += gOldUnitNodelist.getColumn(i, "formdegnseq") + "▦";
  2238. }
  2239. }
  2240. if (utlf_isNull(formrecseq)) {
  2241. return;
  2242. }
  2243. if(utlf_isNull(bPopup)) { //if(bPopup == null) {
  2244. bPopup = true;
  2245. }
  2246. //1. 서식정보 조회
  2247. if(!fGetRecFormMast(formrecseq)) {
  2248. alert("서식정보를 조회하는데 실패하였습니다.");
  2249. return;
  2250. }
  2251. //2. 서식 체크
  2252. var formprogflag = fCheckForm("ds_data_formmast");
  2253. if(formprogflag != "-") { // 팝업으로 기록창 로딩 할때 화면 포커스가 팝업 된 창으로 가도록 프로그래스바 표시 안함. 2014.08.18 엄영만
  2254. fShowProgress(true, "기록정보");
  2255. }
  2256. if (fCheckformKind(formprogflag, bPopup)) {
  2257. //1-1. 기록정보 조회
  2258. if(!fGetRecFormInfo(formrecseq)) {
  2259. sysf_messageBox("조회된 기록내역이", "I004");
  2260. }
  2261. //1-2. 기록상태 변경
  2262. fSetFormRec("status", "U");
  2263. utlf_addLog("jw.choe fClearComnFormData() 변경");
  2264. if (isProgForm() && !utlf_isNull(ivw_base.url)) {
  2265. lf_clearFormRec();
  2266. /*
  2267. var rtn = ivw_base.fClearComnFormData();
  2268. if(rtn == "oprfalse") { //수술기록지 버튼 disable
  2269. fDisalbeSave(true);
  2270. }
  2271. */
  2272. } else if (!isProgForm()) {
  2273. lf_clearFormRec();
  2274. //ivw_base.clearData();
  2275. }
  2276. //dsf_copyDsList(arrDsForminfo, arrDsTempFrominfo, "replace", this, this);
  2277. //copyNodeset(gPageInfo.forminfoRef, gPageInfo.initforminfoRef, "replace", model, model);
  2278. //cap_formnm.refresh();
  2279. }
  2280. //동일 서식 로딩시 인스턴스만 바꿔주는 기능 관련 추가(2008-11-28 박종훈)
  2281. var initformmastRefDs = this.objects["ds_data_formmast"];
  2282. var sSrchsrcformcd = initformmastRefDs.getColumn(0, "formcd");
  2283. var sSrchformprogflag = initformmastRefDs.getColumn(0, "formprogflag");
  2284. var sFormProgNm = initformmastRefDs.getColumn(0, "formprognm");
  2285. utlf_addLog("gSrcFormcd : " + gSrcFormcd + " || gFormProgFlag : " + gFormProgFlag + " || gFormProgNm : " + gFormProgNm );
  2286. utlf_addLog("sSrchsrcformcd : " + sSrchsrcformcd + " || sSrchformprogflag : " + sSrchformprogflag + " || sFormProgNm : " + sFormProgNm );
  2287. if (gSrcFormcd == sSrchsrcformcd && gFormProgFlag == sSrchformprogflag && sFormProgNm != "-" && gFormProgNm == sFormProgNm) { //2010.03.29 dhkim 추가(formprognm이 다를 경우 서식 새로 로딩)
  2288. if (frmf_getParameter("loadstatus") == "LOAD_COMPLETE") { //열려있는 기록지 부분서식의 formdegnseq가 일치하는지 여부를 검사하여 다를 경우 부분서식을 새로 로딩(2009-01-15 박종훈)
  2289. utlf_addLog("@@@@@ frmf_getParameter(\"loadstatus\") : LOAD_COMPLETE @@@@@");
  2290. var gNewUnitNodelist = ds_data_unitformmast;
  2291. var arrOldUnitFormDgnSeq = gOldUnitFormDgnSeq.split("▦");
  2292. for (var i = 0; i < gNewUnitNodelist.rowcount; i++) {
  2293. //var subNode = gNewUnitNodelist.item(i);
  2294. var newUnitFormDgnSeq = gNewUnitNodelist.getColumn(i, "formdegnseq");
  2295. var newUnitItemCd = gNewUnitNodelist.getColumn(i, "orgsupdegnitemcd");
  2296. if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq) {
  2297. //var controls = "ivw_" + newUnitItemCd;
  2298. var ivwObj = ivw_base.grup_base.components["ivw_" + newUnitItemCd];
  2299. utlf_addLog("@@@@@ ivwObj : " + ivwObj.name + " MMR01100 @@@@@" );
  2300. if(!utlf_isNull(ivwObj)) {
  2301. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  2302. ivwObj.supdegnitemcd = ""; //ivwObj.attribute("supdegnitemcd") = "";
  2303. ivwObj.unitformcd = ""; //ivwObj.attribute("unitformcd") = "";
  2304. var newunitformcd = ds_data_unitformmast.lookup("orgsupdegnitemcd", newUnitItemCd, "formcd");
  2305. if (!utlf_isNull(newunitformcd)) {
  2306. ivwObj.supdegnitemcd = newUnitItemCd;
  2307. ivwObj.unitformcd = newunitformcd;
  2308. loadUnitForm(ivwObj, newUnitItemCd);
  2309. //setFstLevlItemCd(ivwObj, newunitformcd);
  2310. var sIdx = ds_data_unitformmast.findRowExpr("formcd=='" + newunitformcd + "' && loaded != 'true'");
  2311. ds_data_unitformmast.setColumn(sIdx, "loaded", "true");
  2312. }
  2313. }
  2314. }
  2315. }
  2316. } else {
  2317. utlf_addLog("@@@@@ frmf_getParameter(\"loadstatus\") : else @@@@@");
  2318. var nodelist = ds_data_unitformmast;
  2319. var arrOldUnitFormDgnSeq = gOldUnitFormDgnSeq.split("▦");
  2320. for (var i = 0; i < nodelist.rowcount; i++)
  2321. {
  2322. //var subNode = nodelist.item(i);
  2323. var newUnitFormDgnSeq = nodelist.getColumn(i, "formdegnseq");
  2324. var unitItemCd = nodelist.getColumn(i, "orgsupdegnitemcd");
  2325. //var controls = "ivw_" + unitItemCd;
  2326. var ivwObj = ivw_base.grup_base.components["ivw_" + unitItemCd];
  2327. utlf_addLog("@@@@@ ivwObj : " + ivwObj.name + " MMR01100 @@@@@" );
  2328. //2010.01.06 안치원 - jci환자교육 미구현으로 한시적으로 막음.
  2329. if (utlf_isNull(ivwObj) && unitItemCd == "0006747001") {
  2330. continue;
  2331. }
  2332. utlf_addLog("@@@@@ utlf_isNull(ivwObj.url) : " + utlf_isNull(ivwObj.url));
  2333. if(utlf_isNull(ivwObj.url)) {
  2334. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  2335. ivwObj.supdegnitemcd = ""; //ivwObj.attribute("supdegnitemcd") = "";
  2336. ivwObj.unitformcd = ""; //ivwObj.attribute("unitformcd") = "";
  2337. var unitformcd = ds_data_unitformmast.lookup("orgsupdegnitemcd", unitItemCd, "formcd");
  2338. if (!utlf_isNull(unitformcd))
  2339. {
  2340. ivwObj.supdegnitemcd = unitItemCd; //ivwObj.attribute("supdegnitemcd") = unitItemCd;
  2341. ivwObj.unitformcd = unitformcd; //ivwObj.attribute("unitformcd") = unitformcd;
  2342. trace(unitformcd + " Loading 시작 : " + utlf_getCurrentTime());
  2343. loadUnitForm(ivwObj, unitItemCd);
  2344. if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq)
  2345. {
  2346. //setFstLevlItemCd(ivwObj, unitformcd);
  2347. var sIdx = ds_data_unitformmast.findRowExpr("formcd=='" + unitformcd + "' && loaded != 'true'");
  2348. ds_data_unitformmast.setColumn(sIdx, "loaded", "true");
  2349. }
  2350. trace(unitformcd + " Loading 끝 : " + utlf_getCurrentTime());
  2351. }
  2352. } else if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq) {
  2353. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  2354. ivwObj.supdegnitemcd = ""; //ivwObj.attribute("supdegnitemcd") = "";
  2355. ivwObj.unitformcd = ""; //ivwObj.attribute("unitformcd") = "";
  2356. var unitformcd = ds_data_unitformmast.lookup("orgsupdegnitemcd", unitItemCd, "formcd");
  2357. if (!utlf_isNull(unitformcd)) {
  2358. ivwObj.supdegnitemcd = unitItemCd; //ivwObj.attribute("supdegnitemcd") = unitItemCd;
  2359. ivwObj.unitformcd = unitformcd; //ivwObj.attribute("unitformcd") = unitformcd;
  2360. loadUnitForm(ivwObj, unitItemCd);
  2361. //setFstLevlItemCd(ivwObj, unitformcd);
  2362. var sIdx = ds_data_unitformmast.findRowExpr("formcd=='" + unitformcd + "' && loaded != 'true'");
  2363. ds_data_unitformmast.setColumn(sIdx, "loaded", "true");
  2364. }
  2365. }
  2366. }
  2367. }
  2368. sysf_trace( "isProgForm()"+ isProgForm() );
  2369. if (isProgForm()) {
  2370. ivw_base.fGetDefData();
  2371. } else {
  2372. ivw_base.dispOnLoadComplete(UNIT_FORM);
  2373. }
  2374. } else { //3. 서식 로드
  2375. utlf_addLog("***** 3. 서식로드 *****");
  2376. fLoadForm("ds_data_formrec", formprogflag, bPopup, calledflag);
  2377. }
  2378. if(formprogflag != "-") { // 팝업으로 기록창 로딩 할때 화면 포커스가 팝업 된 창으로 가도록 프로그래스바 표시 안함. 2014.08.18 엄영만
  2379. fShowProgress(false);
  2380. }
  2381. /**
  2382. * @desc : 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  2383. * @history : 2009.09.09 신규 안치원 ACW_090909A
  2384. */
  2385. if (isProgForm()) {
  2386. try {
  2387. // setButtonToggleAllByRecYn(ivw_base, ivw_base.gExtnBtnIds);
  2388. }
  2389. catch (e) {
  2390. sysf_catchTrace(e);
  2391. }
  2392. }
  2393. utlf_addLog("서식로더 종료, fLoadRecForm()");
  2394. }
  2395. /****************************************************************************************
  2396. * Function : fLoadForm
  2397. * Description : 서식 Load
  2398. * Argument : 01. formprogflag : 로드할 서식의 종류
  2399. * : 02. bPopup :
  2400. * : 03. calledflag : 기록후 넘겨줘야하는 값
  2401. * retrun type :
  2402. * Creator : (사용안함 lf_loadForm 으로 대체)
  2403. ****************************************************************************************/
  2404. function fLoadForm(forminfoRef, formprogflag, bPopup, calledflag)
  2405. {
  2406. utlf_addLog("서식로더 서식로드 시작, fLoadForm()");
  2407. utlf_addLog("***** fLoadForm( " + forminfoRef +", " + formprogflag +", " + bPopup + ", " + calledflag +") *****");
  2408. //2009.10.26 안치원 TASK-3088
  2409. //진료기록메인에서 팝업으로 뜨는 서식에 대해서 기록일자에 대한 검사를 한다.
  2410. frmf_clearParameter("MMR01100_chkRecDdYn");
  2411. switch(formprogflag)
  2412. {
  2413. case "" :
  2414. case undefined :
  2415. sysf_messageBox("사용 할 수 없는 서식", "E008");
  2416. fDisalbeSave(true);
  2417. return;
  2418. case "PROG" : //공통서식(PGM) 로드
  2419. var formprognm = ds_data_formmast.getColumn(0, "formprognm");
  2420. var obj = sysf_getScreenInfo(formprognm.split("_")[0]);
  2421. ivw_base.url = "";
  2422. ivw_base.url = obj.scrnurlxp;
  2423. if (!utlf_isNull(calledflag))//calledflag != null
  2424. {
  2425. fSetFormRec("calledflag", calledflag);
  2426. }
  2427. break;
  2428. case "MAIN" : //공통서식(서식) 로드.
  2429. //이윤주 추가 Post Op Note 를 수술탭에서만 작성토록(20110525)
  2430. fDisalbeSave(false);
  2431. var srcformcd = ds_data_formmast.getColumn(0, "srcformcd");
  2432. var formdegnseq = ds_data_formmast.getColumn(0, "formdegnseq");
  2433. //ivw_base.src = getFormUrl(formdegnseq, ivw_base.attribute("id"));
  2434. fGetFormDegn(formdegnseq, ivw_base.name);
  2435. if (!utlf_isNull(calledflag))
  2436. {
  2437. fSetFormRec("calledflag", calledflag);
  2438. }
  2439. if (srcformcd == '0800003416')
  2440. {
  2441. var operation = sysf_getGlobalVariable("operation").split("▩")[1];
  2442. if(utlf_isNull(operation))
  2443. {
  2444. alert("수술탭에서 작성하세요");
  2445. fDisalbeSave(true);
  2446. return;
  2447. }
  2448. }
  2449. break;
  2450. case "PROF" : //제증명서식 로드
  2451. case "-" : //특수서식 로드
  2452. if(bPopup)
  2453. {
  2454. fPopupForm(calledflag);
  2455. }
  2456. else
  2457. {
  2458. var formdegnseq = ds_data_formmast.getColumn(0, "formdegnseq");
  2459. //ivw_base.src = getFormUrl(formdegnseq, ivw_base.attribute("id"));
  2460. fGetFormDegn(formdegnseq, ivw_base.name);
  2461. if (!utlf_isNull(calledflag))//calledflag != null
  2462. {
  2463. fSetFormRec("calledflag", calledflag);
  2464. }
  2465. }
  2466. break;
  2467. case "CNST" : //컨설트서식 로드
  2468. break;
  2469. case "OCR" : //OCR서식 로드
  2470. break;
  2471. case "EXTN" :
  2472. ivw_base.url = "emr_formmngtxp::SSMRF01200.xfdl";
  2473. ivw_base.fInitForm_MRF1200();
  2474. break;
  2475. }
  2476. utlf_addLog("서식로더 서식로드 종료, fLoadForm()");
  2477. }
  2478. /****************************************************************************************
  2479. * Function : fGetFormDegn
  2480. * Description : 서식 디자인 정보 조회
  2481. * Argument : 01. formdegnseq : 서식디자인순번
  2482. * : 02. ivwid : 로드할 ivw item code
  2483. * : 02. ComnForm : 공통서식 Obj, 전역에 세팅 함.
  2484. div 화면 매핑 시 부분서식과 일반서식 구분 및 공통서식 div명 유동성을 위해 전역선언
  2485. 04. UnitFormXfdlUseYn : 2.0 서식생성기 여부
  2486. * retrun type :
  2487. * Creator :
  2488. ****************************************************************************************/
  2489. function fGetFormDegn(formdegnseq, ivwid, ComnForm:Div, UnitFormXfdlUseYn)
  2490. {
  2491. utlf_addLog("서식 디자인 정보 조회 시작, fGetFormDegn()");
  2492. // 디자인 정보가 존재 하지 않을경우 체크
  2493. if( utlf_isNull(formdegnseq) || formdegnseq == "0" ){
  2494. sysf_messageBox("서식 디자인 정보가 존재하지 않습니다. 전산실로 문의바랍니다.", "E");
  2495. // this.enable = false;
  2496. return;
  2497. }
  2498. // PROG 메인이 2.0으로 작성될 경우 부분서식은 개별 체크되어 처리되도록 예외처리
  2499. var formXfdlUseYn = (fGetFormMast("formxfdluseyn")=="Y" && fGetFormMast("formprogflag")!="PROG" )|| (!utlf_isNull(UnitFormXfdlUseYn)&& UnitFormXfdlUseYn == "Y") ? "Y" : "N";
  2500. if(ivw_base.isValidObject(ComnForm))
  2501. {
  2502. ComnFormObj = ComnForm;
  2503. }
  2504. dsf_createDsRow("ds_inds_TRMRF01201",
  2505. [{col:"formcd", type:"string", size:256, val:""}
  2506. ,{col:"formdegnseq", type:"BIGDECIMAL", size:256, val:formdegnseq}
  2507. ,{col:"ivwid", type:"string", size:256, val:ivwid}
  2508. ,{col:"formxfdluseyn", type:"string", size:256, val:formXfdlUseYn}]);
  2509. dsf_createDsRow("ds_outds_TRMRF01201",
  2510. [{col:"formxrw", type:"string", size:256, val:""}
  2511. ,{col:"formxp", type:"string", size:256, val:""}]);
  2512. utlf_addLog(" formXfdlUseYn : " + formXfdlUseYn);
  2513. if( formXfdlUseYn == "Y"){
  2514. cf_TRMRF01201();
  2515. }else{
  2516. var oParam = {};
  2517. oParam.id = "TRMRF01201";
  2518. oParam.service = "formmngtapp.FormDegnMngt";
  2519. oParam.method = "reqGetFormDegnXRWInfo";
  2520. oParam.inds = "req=ds_inds_TRMRF01201";
  2521. oParam.outds = "ds_outds_TRMRF01201=xrw";
  2522. oParam.async = false;
  2523. oParam.progress = false;
  2524. oParam.callback = "cf_TRMRF01201";
  2525. tranf_submit(oParam);
  2526. }
  2527. utlf_addLog("서식 디자인 정보 조회 종료, fGetFormDegn()");
  2528. }
  2529. /****************************************************************************************
  2530. * Argument :
  2531. * Description : 조회해온 디자인정보를 가진 파일을 생성하여 동적으로 div에 매핑한다.
  2532. ****************************************************************************************/
  2533. function cf_TRMRF01201(sSvcId, nErrorCode, sErrorMsg) {
  2534. var formdegnseq = ds_inds_TRMRF01201.getColumn(0, "formdegnseq");
  2535. var mainItemCd = ds_inds_TRMRF01201.getColumn(0, "ivwid");
  2536. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  2537. var formXfdlUseYn = ds_inds_TRMRF01201.getColumn(0, "formxfdluseyn");
  2538. var filepath = "";
  2539. if( !ivw_base.isValidObject("ComnFormObj") && (formprogflag != "PROG" && fGetFormMast("srcformcd") != "0000000677") )
  2540. {
  2541. ivwObj = ivw_base;
  2542. }
  2543. else if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y")
  2544. {
  2545. /// 컨설트 관련 수정
  2546. var objGrp;
  2547. if(mainItemCd == "0000960001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011449001.grup_extn0011449001;
  2548. else if(mainItemCd == "0011449001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011449001;
  2549. else if(mainItemCd == "0001019001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011529001.grup_extn0011529001;
  2550. else if(mainItemCd == "0011529001") objGrp = ivw_base.grup_base.grup_cnts.grup_0011529001;
  2551. ivwObj = objGrp.components["ivw_" + mainItemCd]; // 컨설트
  2552. }
  2553. else
  2554. ivwObj = ivw_base.grup_base.components["ivw_" + mainItemCd];
  2555. if( formXfdlUseYn == "Y" ){
  2556. var formLastUpdtDt = fGetFormMast("lastupdtdt");
  2557. filepath = sysf_getURLprefix() + "/webapps/hit/web/xrw/.live?business_id=emr&submit_id=DRMMR01102&instcd="
  2558. + sysf_getUserInfo("dutplceinstcd")
  2559. + "&formdegnseq=" + formdegnseq
  2560. + "&status=" + fGetFormRec("status")
  2561. + "&formlastupdtdt=" + formLastUpdtDt //xp caching 회피
  2562. + "&formloaddt=" + utlf_getCurrentTime() //xp caching 회피
  2563. + "&ex_interface=" + sysf_getUserInfo("dutplceinstcd") + "|" + sysf_getUserInfo("userid")
  2564. ;
  2565. trace("@@@@FSMMR01100 서식URL 로드시작\n" + filepath);
  2566. trace("@@@@FSMMR01100 서식URL 로드시작 formdegnseq : " + formdegnseq);
  2567. }else{
  2568. var nFileDir = new VirtualFile();
  2569. fExistFolder(lgv_Foldernm); // 폴더 생성
  2570. filepath = lgv_Foldernm + "tmpform_"+ formdegnseq +".xfdl";
  2571. var vFile = new VirtualFile(filepath, VirtualFile.openWrite | VirtualFile.openText);
  2572. sysf_trace("@@@@@ filepath : " + filepath + " @@@@@");
  2573. var url = "";
  2574. var formxp = ds_outds_TRMRF01201.getColumn(0, "formxp");
  2575. // utlf_addLog(formxp);
  2576. if(!utlf_isNull(formxp) && formxp == "nonedesign")
  2577. {
  2578. alert("미변환 서식이 있습니다");
  2579. return false;
  2580. }
  2581. else if(!utlf_isNull(formxp))
  2582. {
  2583. vFile.write(ds_outds_TRMRF01201.getColumn(0, "formxp"), "utf-8");
  2584. }
  2585. else if( utlf_isNull(formxp))
  2586. {
  2587. alert("미변환 서식이 있습니다. 전산실로 문의하시기 바랍니다.\n\n" + filepath);
  2588. }
  2589. }
  2590. if(formXfdlUseYn == "Y" || vFile.getFileSize() != 0)
  2591. {
  2592. if(ivwObj == ivw_base)
  2593. {
  2594. ivw_base.url = "";
  2595. ivw_base.url = filepath;
  2596. }
  2597. else if(!utlf_isNull(ivwObj))
  2598. {
  2599. ivwObj.url = "";
  2600. ivwObj.url = filepath;
  2601. }
  2602. var objDs = this.removeChild("ds_inds_TRMRF01201");
  2603. delete objDs;
  2604. objDs = null;
  2605. objDs = this.removeChild("ds_outds_TRMRF01201");
  2606. delete objDs;
  2607. objDs = null;
  2608. if(frmf_isPopup())
  2609. {
  2610. var objForm = this.getOwnerFrame().form;
  2611. var parentDS = objForm.objects["ds_cond_formdata"];
  2612. if(utlf_isNull(parentDS))
  2613. fAdjustWindowSize(); // 팝업 로더 사이즈 조절
  2614. }
  2615. }
  2616. }
  2617. /****************************************************************************************
  2618. * Function : fAdjustWindowSize
  2619. * Description : 팝업 서식창 사이즈 조절
  2620. * retrun type :
  2621. * Creator :
  2622. ****************************************************************************************/
  2623. function fAdjustWindowSize()
  2624. {
  2625. utlf_addLog("***** fAdjustWindowSize() *****");
  2626. var ivwTop = 1;
  2627. var ivwHei = 685;
  2628. // 화면 최소화 상태에서 ivw_base position 변경시 화면 설정 이상
  2629. if( parent.openstatus != "normal" ){
  2630. parent.openstatus = "normal";
  2631. }
  2632. if (grup_titl.visible)
  2633. {
  2634. ivwTop = parseInt(grup_titl.position.top + parseInt(grup_titl.position.height));
  2635. }
  2636. else
  2637. {
  2638. ivwHei = ivwHei + parseInt(grup_titl.position.height);
  2639. }
  2640. ivw_base.position.top = ivwTop;
  2641. //ivw_base.position.height = ivwHei;
  2642. ivw_fst.position.height = ivw_base.position.height;
  2643. ivw_fst.position.top = ivw_base.position.top;
  2644. ivw_base.border.style = "none";
  2645. ivw_fst.border.style = "none";
  2646. // [미비] StaffSign 미비 간편확인 기능 사용시 화면닫기
  2647. if( !lgv_SaveAfterClose )
  2648. gSaveAfterClose = true;
  2649. var widFlag = fGetFormMast("formprogflag");
  2650. if (widFlag == "OCR")
  2651. {
  2652. grup_btn.btn_print.visible = true;
  2653. grup_btn.btn_print.position.left = grup_btn.btn_del.position.left;
  2654. grup_btn.btn_preview.visible = false;
  2655. grup_btn.btn_tmpsave.visible = false;
  2656. grup_btn.btn_signsave.visible = false;
  2657. grup_btn.btn_signsaveasnew.visible = false;
  2658. grup_btn.btn_del.visible = false;
  2659. }
  2660. else
  2661. {
  2662. grup_btn.btn_print.visible = false;
  2663. grup_btn.btn_preview.visible = false;
  2664. }
  2665. var openmode = oOpener.frmf_getParameter("openmode");
  2666. if (openmode == "extnunitform")
  2667. widFlag = oOpener.frmf_getParameter("widflag");
  2668. if (fGetFormMast("formcd") == "0000000005")
  2669. {
  2670. parent.position.height = 370;
  2671. ivw_fst.position.height = 10;
  2672. ivw_base.position.height = 291;
  2673. grup_btn.position2.top = 292;
  2674. ivw_base.unitformcd = fGetFormMast("formcd");
  2675. SetMultiTextFull(ivw_base, 1);
  2676. var mtxNm = "MTX_1";
  2677. var mtx = this.components[mtxNm]
  2678. ivw_base.mtxNm.frmf_setFocus();// ivw_base.model.setFocus(mtxNm);
  2679. //mtx.dispatch("onkeyup");
  2680. }
  2681. else if (widFlag == "-" || widFlag == "PROF" || widFlag == "OCR")
  2682. {
  2683. //특수서식일때 창크기 변경
  2684. var STD_WIN_WID = 815;
  2685. // if(frmf_isPopup()){
  2686. // STD_WIN_WID = 850;
  2687. // }
  2688. var STD_WIN_HEI = 950;
  2689. var maxWid = STD_WIN_WID;
  2690. parent.position.width = maxWid + 20;
  2691. //grup_titl.line2.position.width = ivw_base.position.width;
  2692. //grup_btn.position.width = ivw_base.position.width;
  2693. //ivw_base.position.width = maxWid + 1;
  2694. utlf_addLog("jw.choe check!! 임시주석 ");
  2695. // var maxHei = parseInt(window.document.body.vscroll.attribute("max"));
  2696. // if (maxHei > parseInt(ivw_base.attribute("height")))
  2697. // {
  2698. // var diffHei = 0;
  2699. // if (maxHei > STD_WIN_HEI)
  2700. // diffHei = STD_WIN_HEI - parseInt(ivw_base.attribute("height"));
  2701. // else
  2702. // diffHei = maxHei - parseInt(ivw_base.attribute("height"));
  2703. //
  2704. // window.height = window.height + diffHei;
  2705. // ivw_base.attribute("height") = parseInt(ivw_base.attribute("height")) + diffHei;
  2706. // grup_btn.attribute("top") = parseInt(grup_btn.attribute("top")) + diffHei;
  2707. // }
  2708. }
  2709. }
  2710. /**
  2711. * @group :
  2712. * @ver : 2008.06.13
  2713. * @by : snoweye
  2714. * @---------------------------------------------------
  2715. * @type : event
  2716. * @access : private
  2717. * @desc : 특수서식을 Popup
  2718. * @param :
  2719. * @return :
  2720. * @---------------------------------------------------
  2721. */
  2722. function fPopupForm(calledflag) {
  2723. utlf_addLog("***** fPopupForm("+calledflag+") *****");
  2724. frmf_setParameter("openmadalformsave", "");
  2725. frmf_setParameter("formcd", ds_data_formmast.getColumn(0, "formcd"));//(this.objects[gPageInfo.initformmastRef]).getColumn(0, "formcd"));
  2726. //2009.10.26 안치원 TASK-3088
  2727. //진료기록메인에서 팝업으로 뜨는 서식에 대해서 기록일자에 대한 검사를 한다.
  2728. if (oOpener.frmf_getScreenID() == "SMMMR00100") {
  2729. frmf_setParameter("MMR01100_chkRecDdYn", "Y");
  2730. }
  2731. if(!utlf_isNull(calledflag)) {
  2732. frmf_setParameter("calledflag", calledflag);
  2733. }
  2734. var wndobj = frmf_findPopup("SSMMR01100");
  2735. if(!utlf_isNull(wndobj)) {
  2736. wndobj.fFormReady();
  2737. frmf_setFocusPop("SSMMR01100");
  2738. } else {
  2739. //openUrl("../../../emr/medirecweb/xrw/SSMMR01100_서식로더.xrw", 1, 0, 0, "SSMMR01100", "", ""); //20130131 정창혁
  2740. //frmf_openInternal("SSMMR01100", "SSMMR01100", null, null, 1, 0, 0, null, null, null, null, null, "M");
  2741. frmf_open("SSMMR01100", "SSMMR01100", null, null, 1, 0, 0, null, null, null, null, null, "M");
  2742. }
  2743. }
  2744. /**
  2745. * @group :
  2746. * @ver : 2008.06.13
  2747. * @by : snoweye
  2748. * @modify : 2008.07.30 (데이터 로딩 완료후 자식창에 데이터 로딩 완료 메시지 전달)
  2749. * @---------------------------------------------------
  2750. * @type : event
  2751. * @access : private
  2752. * @desc : 기록 데이터를 서식에 Set
  2753. * @param :
  2754. * @return :
  2755. * @---------------------------------------------------
  2756. */
  2757. function fSetRecData()
  2758. {
  2759. utlf_addLog("***** fSetRecData() MMR01100 기록데이터를 서식에 Set 삭제!!!!*****");
  2760. //loader에서 조회한 데이터를 서식으로 Copy
  2761. //dsf_copyDsList(["ds_data_recitem"], ["ds_data_recitem"], "replace", ivw_base, this);
  2762. //copyNodeset(gPageInfo.recItemRef2, gPageInfo.recItemRef, "replace", ivw_base.model, model);
  2763. if (isProgForm())
  2764. {
  2765. ivw_base.fLoadData();
  2766. }
  2767. else
  2768. {
  2769. lf_setSrchData(ivw_base);
  2770. ivw_base.fFormReload();
  2771. }
  2772. try{
  2773. ivw_base.lf_onloaddatacomplete();
  2774. }catch(e){
  2775. sysf_catchTrace(e);
  2776. }
  2777. }
  2778. /**
  2779. * @group :
  2780. * @ver : 2008.09.30
  2781. * @by : jonghun
  2782. * @modify :
  2783. * @---------------------------------------------------
  2784. * @type : event
  2785. * @access : private
  2786. * @desc : 누적기록 데이터를 서식에 Set
  2787. * @param :
  2788. * @return :
  2789. * @---------------------------------------------------
  2790. */
  2791. function fSetAcmlRecData()
  2792. {
  2793. copyNodeset(gPageInfo.recItemRef2, gPageInfo.acmlrecItemRef, "replace", ivw_base.model, model);
  2794. setSrchData(gPageInfo.acmlrecItemRef, ivw_base);
  2795. }
  2796. /**
  2797. * @group :
  2798. * @ver : 2008.06.13
  2799. * @by : snoweye
  2800. * @---------------------------------------------------
  2801. * @type : event
  2802. * @access : private
  2803. * @desc : 자식화면의 load가 완료되었을때 발생
  2804. * @param :
  2805. * @return :
  2806. * @---------------------------------------------------
  2807. */
  2808. function fOnLoadComplete()
  2809. {
  2810. utlf_addLog("자식 화면 load 완료 시작, fOnLoadComplete() MMR01100");
  2811. gSubmitID = TX_SUBMIT_COMN_FORM;
  2812. utlf_addLog("@@@@ gSumbitID : " + gSubmitID + " @@@@@");
  2813. //서식Load후 후처리
  2814. utlf_addLog("@@@@@ frmf_getParameter(loadstatus) : " + frmf_getParameter("loadstatus") + " *****");
  2815. if(frmf_getParameter("loadstatus") == COMN_FORM)
  2816. {
  2817. utlf_addLog("***** COMN_FORM *****");
  2818. //fDisalbeSave(false);
  2819. var formprognm = ds_data_formmast.getColumn(0, "formprognm");
  2820. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  2821. if(formprognm == "SMMMR04900_CONSULT" || formprognm == "SMMMR00600_수술기록" || formprognm == "SMMMR00900_DSC기록" || formprogflag == "PROF")
  2822. {
  2823. gSubmitID = TX_SUBMIT_EXTN_FORM; //확장서식 관련 서브밋 정의
  2824. utlf_addLog("@@@@ gSumbitID 확장서식 : " + gSubmitID + " @@@@@");
  2825. }
  2826. if(fGetFormMast("srcformcd") == "0000000677" || fGetFormMast("cnstformyn") == "Y")
  2827. {
  2828. grup_btn.btn_signsaveasnew.visible = false;
  2829. }
  2830. else
  2831. {
  2832. grup_btn.btn_signsaveasnew.visible = true;
  2833. }
  2834. var replcnts = oOpener.frmf_getParameter("replcnts"); //약제팀
  2835. var overwrite = oOpener.frmf_getParameter("overwrite"); //약제팀
  2836. var reqcnts = oOpener.frmf_getParameter("reqcnts"); //약제팀
  2837. var reqoverwrite = oOpener.frmf_getParameter("reqoverwrite"); //약제팀
  2838. if (!utlf_isNull(reqcnts) && !utlf_isNull(reqoverwrite))
  2839. {
  2840. ivw_base.frmf_setParameter("MMR04900_reqcnts", reqcnts);
  2841. ivw_base.frmf_setParameter("MMR04900_reqoverwrite", reqoverwrite);
  2842. }
  2843. if (!utlf_isNull(replcnts) && !utlf_isNull(overwrite))
  2844. {
  2845. ivw_base.frmf_setParameter("MMR04900_replcnts", replcnts);
  2846. ivw_base.frmf_setParameter("MMR04900_overwrite", overwrite);
  2847. }
  2848. //20140812 이윤주 수정
  2849. var paramreqcnt = frmf_getParameter("SMMMR04900_reqcnt");
  2850. if (!utlf_isNull(paramreqcnt))
  2851. {
  2852. ivw_base.frmf_setParameter("SMMMR04900_reqcnt", paramreqcnt);
  2853. }
  2854. //0. 부분서식 로드
  2855. ivw_base.fLoadUnitForm();
  2856. //2010.03.18 안치원 - 상단환자정보와 기록환자정보가 같은지 검사한다.
  2857. if (validPamInfo_MMR01100("open_base") == false) {
  2858. return false;
  2859. }
  2860. }
  2861. if(frmf_getParameter("loadstatus") == UNIT_FORM)
  2862. {
  2863. utlf_addLog("***** UNIT_FORM *****");
  2864. utlf_addLog("***** fGetFormRec(status) : " + fGetFormRec("status") + " *****");
  2865. if(fGetFormRec("status") == "U")
  2866. {
  2867. //1. 기록 Data Set
  2868. fSetRecData();
  2869. if (fGetFormRec("espiyn") == "Y" && gViewPrt)
  2870. {
  2871. grup_btn.btn_print.visible = true;
  2872. }
  2873. else
  2874. {
  2875. grup_btn.btn_print.visible = false;
  2876. }
  2877. fSetFormRec("formrecdeptnm" , sysf_getUserInfo("dutplcenm"));
  2878. fSetFormRec("formrecusernm" , sysf_getUserInfo("usernm"));
  2879. //코사인, 기록반려버튼 처리(2008-11-27 박종훈)
  2880. if(fGetFormMast("srcformcd") != "0000000676" && fGetFormMast("srcformcd") != "0000000680")
  2881. {
  2882. //인증저장버튼과 코사인버튼처리
  2883. grup_btn.btn_signsave.visible = true;
  2884. grup_btn.btn_cosign.visible = false;
  2885. //임시저장버튼과 기록반려버튼처리
  2886. grup_btn.btn_tmpsave.visible = true;
  2887. grup_btn.btn_resend.visible = false;
  2888. grup_btn.btn_signsaveasnew.enable = true;
  2889. //2010-03-26 오전 9:27:48 강지훈 수정 : [요청번호 10010] 입원수진에 외래[formchosflag = 'O'] 기록 작성을 막는다.
  2890. if(!validFormchos_MMR01100(false)){
  2891. grup_btn.btn_signsaveasnew.enable = false;
  2892. }
  2893. }
  2894. else
  2895. {
  2896. grup_btn.btn_signsaveasnew.enable = false;
  2897. }
  2898. }
  2899. else
  2900. {
  2901. //기본 자료 당겨오기(20121025 이윤주)
  2902. //if (getScreenID(ivw_base.src) == "") {
  2903. utlf_addLog("@@@@@ frmf_getScreenID() : " + ivw_base.frmf_getScreenID() + " MMR01100 @@@@@@");
  2904. if (utlf_isNull(ivw_base.frmf_getScreenID())) {
  2905. ivw_base.fSetInitData();
  2906. }
  2907. //프로그램 서식내의 부분서식인경우(20130725 이윤주)
  2908. else {
  2909. var ItemCds = new Array("0008224001" //S&O
  2910. , "0001129001"); //A
  2911. var loopcnt = ItemCds.length;
  2912. for (var i=0; i< loopcnt; i++) {
  2913. //var ivw1 = ivw_base.document.all("ivw_"+ItemCds[i]);
  2914. var ivw1 = ivw_base.grup_base.components["ivw_"+ItemCds[i]];
  2915. if (!utlf_isNull(ivw1)) {
  2916. if (!utlf_isNull(ivw1.url)) {
  2917. ivw1.fSetInitData();
  2918. }
  2919. }
  2920. }
  2921. }
  2922. //인증저장버튼과 코사인버튼처리
  2923. grup_btn.btn_signsave.visible = true;
  2924. grup_btn.btn_cosign.visible = false;
  2925. //임시저장버튼과 기록반려버튼처리
  2926. grup_btn.btn_tmpsave.visible = true;
  2927. grup_btn.btn_resend.visible = false;
  2928. dsf_makeValue(ds_acmlsend, "pid", "string", fGetFormRec("pid"));
  2929. dsf_makeValue(ds_acmlsend, "formcd", "string", fGetFormRec("formcd"));
  2930. // model.makeValue("/root/acmlsend/pid", fGetFormRec("pid"));
  2931. // model.makeValue("/root/acmlsend/formcd", fGetFormRec("formcd"));
  2932. var oParam = {};
  2933. oParam.id = "TRMMR01102";
  2934. oParam.service = "medirecapp.ComnMediRec";
  2935. oParam.method = "reqGetRecAcmlData";
  2936. oParam.inds = "req=ds_acmlsend";
  2937. oParam.outds = "ds_acmltmp_recinfo_recitem=recitem";
  2938. oParam.async = false;
  2939. oParam.progress = false;
  2940. oParam.callback = "cf_TRMMR01102";
  2941. tranf_submit(oParam);
  2942. if(arErrorCode.pop("TRMMR01102") > -1)
  2943. {
  2944. //var accRecList = instance1.selectNodes("/root/acmltmp/recinfo/recitem");
  2945. if (ds_acmltmp_recinfo_recitem.rowcount > 0)
  2946. {
  2947. fSetAcmlRecData();
  2948. }
  2949. }
  2950. grup_btn.btn_signsaveasnew.disabled = true;
  2951. var sFormchosflag = ds_data_formmast.getColumn(0, "formchosflag");
  2952. var sPatchosflag = ds_data_formrec.getColumn(0, "chosflag");
  2953. if (sPatchosflag == "I" && sFormchosflag == "O" && sysf_getUserInfo("jobkindcd").substring(0, 2) == "03")
  2954. {
  2955. grup_btn.btn_signsave.enable = false;
  2956. }
  2957. else
  2958. {
  2959. grup_btn.btn_signsave.enable = true;
  2960. }
  2961. //2010.03.08 안치원 - 디자인서식의 추가로직 구현
  2962. //MMRDegnForm.js 로 로직 이동
  2963. // if(fGetFormMast("srcformcd") == "0000000737") //술전평가서
  2964. }
  2965. //2010-02-21 오후 7:17:23 강지훈 추가 - 최종진단명 요약지 버튼설정
  2966. if(fGetFormMast("srcformcd") == "0000000680"){
  2967. lf_getHardCDList("N", 9926, 0 , ds_profdgn_formhardcd);
  2968. if(ds_profdgn_formhardcd.getColumn(0, "hardcd") == "Y"){
  2969. ivw_base.grup_base.btn_lastdiag_0001013001.visible = true;
  2970. }
  2971. else{
  2972. ivw_base.grup_base.btn_lastdiag_0001013001.visible = false;
  2973. }
  2974. }
  2975. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2976. //수술관련기록의 경우 기록일시 수정 불가(2009-01-12 박종훈 추가)
  2977. if (fGetFormMast("srcformcd") == "0000000676" || fGetFormMast("srcformcd") == "0000003325" || fGetFormMast("srcformcd") == "0000003169")
  2978. {
  2979. grup_titl.ipt_formrecdd.enable = false;
  2980. grup_titl.ipt_formrectm.enable = false;
  2981. }
  2982. else
  2983. {
  2984. grup_titl.ipt_formrecdd.enable = true;
  2985. grup_titl.ipt_formrectm.enable = true;
  2986. }
  2987. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2988. //2. 이미지 Display
  2989. //3. 권한체크(읽기/쓰기)
  2990. frmf_setParameter("loadstatus", LOAD_COMPLETE);
  2991. //부모창에 onloadcomplete dispatch
  2992. dispOnLoadComplete(LOAD_COMPLETE, ds_data_formmast.getColumn(0, "formcd"));
  2993. var formprognm = ds_data_formmast.getColumn(0, "formprognm");
  2994. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  2995. if(formprognm == "SMMMR04900_CONSULT" || formprognm == "SMMMR00600_수술기록" || formprognm == "SMMMR00900_DSC기록" || formprogflag == "PROF")
  2996. {
  2997. gSubmitID = TX_SUBMIT_EXTN_FORM; //확장서식 관련 서브밋 정의
  2998. }
  2999. //서식 로드 후 서식 수정여부 파악을 위한 데이터 셋팅(2008-12-02 박종훈)
  3000. if (isProgForm())
  3001. {
  3002. //ivw_base.getSaveComnFormData(null, "1");
  3003. var rtn = lf_getProgFormRecData("init", "1"); // 공통서식 기록데이터 취합
  3004. g_recitem_oldrec = ivw_base.fGetCSV("ds_hidden_recitem");
  3005. if( !isValidObject(["ds_hidden_recitem"]) ){
  3006. dsf_createDsRow("ds_hidden_recitem",
  3007. [{col:"instcd", val:""}]);
  3008. ds_hidden_recitem.assign(ds_data_recitem);
  3009. ds_hidden_recitem.clearData();
  3010. }
  3011. ds_hidden_recitem.copyData(ivw_base.ds_hidden_recitem);
  3012. var objDs = ivw_base.removeChild("ds_hidden_recitem");
  3013. delete objDs;
  3014. objDs = null;
  3015. }
  3016. else
  3017. {
  3018. // ivw_base.getSaveData(gPageInfo.sortItemRef, "replace", this, null, null);
  3019. // SortRecItem();
  3020. lf_getGenFormData("init", "1");
  3021. g_recitem_oldrec = fGetCSV("ds_hidden_recitem");
  3022. }
  3023. g_formrec_newimge_cosign = fGetCSV("formrec");
  3024. g_recitem_newimge_cosign = fGetCSV("ds_hidden_recitem");
  3025. var objDs = this.removeChild("ds_hidden_recitem");
  3026. delete objDs;
  3027. objDs = null;
  3028. trace("fLoadNewForm End시간: " + utlf_getCurrentTime() );
  3029. var btndisableyn = oOpener.frmf_getParameter("btndisableyn");
  3030. if (btndisableyn == "Y")
  3031. {
  3032. grup_btn.enable = false;
  3033. oOpener.frmf_clearParameter("btndisableyn");
  3034. }
  3035. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  3036. //병원별 제증명 진단명 프리텍스트 기능(2009-05-20추가)
  3037. if(fGetFormMast("formprogflag") == "PROF")
  3038. {
  3039. lf_getHardCDList("N", 1008, 0 , ds_profdgn_formhardcd);
  3040. var dgnfree = ds_profdgn_formhardcd.getColumn(0, "hardcd");
  3041. ivw_base.fSetGridFreetext(dgnfree);
  3042. //2009-06-20 오전 10:58:20 강지훈 추가 : 기관별로 진단찾기 팝업여부를 설정한다.
  3043. lf_getHardCDList("N", 9903, 0 , ds_profdgn_formhardcd);
  3044. var diagfree = ds_profdgn_formhardcd.getColumn(0, "hardcd");
  3045. if(diagfree == "Y"){
  3046. ivw_base.fSetGridAddRow(diagfree);
  3047. }
  3048. }
  3049. //2009.12.18 안치원 - 서식Loading완료후에 child의 추가작업을 수행한다.
  3050. if (isProgForm()) {
  3051. try {
  3052. ivw_base.initFormAtLast_MMR01100I();
  3053. } catch (e) {
  3054. sysf_catchTrace(e);
  3055. }
  3056. }
  3057. else {
  3058. //2010.03.08 안치원 - 디자인서식의 추가로직 구현
  3059. //-Post OP Note 연동(from Brief OP Note)
  3060. initFormAtLast_MMRDegnForm();
  3061. }
  3062. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  3063. }
  3064. frmf_clearParameter("SSMMR01100_formrecdd");
  3065. frmf_clearParameter("espisavesuccess");
  3066. /**
  3067. * @desc : 공통서식내의 확장버튼(이미지,가계도,추가기록)을 기록여부에 따라 표시한다.
  3068. * @history : 2009.09.09 신규 안치원 ACW_090909A
  3069. */
  3070. if (isProgForm()) {
  3071. try {
  3072. setButtonToggleAllByRecYn(ivw_base, ivw_base.gExtnBtnIds);
  3073. }
  3074. catch (e) {
  3075. sysf_catchTrace(e);
  3076. }
  3077. }
  3078. utlf_addLog("자식 화면 load 완료 종료, fOnLoadComplete()");
  3079. }
  3080. /****************************************************************************************
  3081. * Argument : 01.sSvcId : 서비스 ID
  3082. * : 02.nErrorCode : 에러코드
  3083. * : 03.sErrorMsg : 에러메시지
  3084. * Description : cf_TRMMR01102의 콜백함수
  3085. ****************************************************************************************/
  3086. function cf_TRMMR01102(sSvcId, nErrorCode, sErrorMsg) {
  3087. arErrorCode.push(sSvcId, nErrorCode);
  3088. if(nErrorCode < 0) return;
  3089. utlf_addLog("***** cf_TRMMR01102 *****");
  3090. }
  3091. /**
  3092. * @group :
  3093. * @ver : 2008.06.13
  3094. * @by : snoweye
  3095. * @---------------------------------------------------
  3096. * @type : event
  3097. * @access : public
  3098. * @desc : 서식 아이템에 값세팅 <-- fSetRecItemCnts_MMR01100_old
  3099. * @param :
  3100. * @return :
  3101. * @---------------------------------------------------
  3102. */
  3103. function fSetRecItemCnts_MMR01100(degnitemno, cnts)
  3104. {
  3105. if (fGetFormMast("formprogflag") == "-")
  3106. {
  3107. var path = gPageInfo.recItemRef + "[degnitemno='"+degnitemno+"' and (degnitemkind='MTX' or degnitemkind='STX')]";
  3108. var cnt = getNodesetCnt(ivw_base.model, path);
  3109. if (cnt == 1)
  3110. {
  3111. ivw_base.model.setValue(gPageInfo.recItemRef + "[degnitemno='"+degnitemno+"']/reccnts", cnts);
  3112. ivw_base.model.refresh();
  3113. }
  3114. }
  3115. }
  3116. /**
  3117. * @group :
  3118. * @ver : 2008.06.13
  3119. * @by : snoweye
  3120. * @---------------------------------------------------
  3121. * @type : event
  3122. * @access : public
  3123. * @desc : 서식 아이템의 값 반환 <-- fGetRecItemCnts_MMR01100_old
  3124. * @param :
  3125. * @return :
  3126. * @---------------------------------------------------
  3127. */
  3128. function fGetRecItemCnts_MMR01100(degnitemno)
  3129. {
  3130. if (fGetFormMast("formprogflag") == "-")
  3131. {
  3132. return getItemDataByDegnItemNo(degnitemno, ivw_base.model);
  3133. }
  3134. return null;
  3135. }
  3136. /**
  3137. * @group :
  3138. * @ver : 2008.06.13
  3139. * @by : jonghun
  3140. * @---------------------------------------------------
  3141. * @type : event
  3142. * @access : public
  3143. * @desc : 팝업으로 호출되었을때 처리
  3144. * @param :
  3145. * @return :
  3146. * @---------------------------------------------------
  3147. */
  3148. function fModalProcess()
  3149. {
  3150. utlf_addLog("***** fModalProcess() *****");
  3151. var formcd = oOpener.frmf_getParameter("formcd");
  3152. var openmode = oOpener.frmf_getParameter("openmode");
  3153. var calledflag = oOpener.frmf_getParameter("calledflag");
  3154. var formrecdd = oOpener.frmf_getParameter("SSMMR01100_formrecdd");
  3155. var oprsrvno = oOpener.frmf_getParameter("oprsrvno"); // 수술예약번호(수술전 평가서)
  3156. utlf_addLog("***** fModalProcess() openmode : "+ openmode +" *****");
  3157. //2010.02.25 안치원 - 입퇴원요약기록 - 퇴원처방 입력방법 변경(팝업)
  3158. // doDschOrdCntsOfDCSN_MMRCom("GET_PARAM");
  3159. var formrechm = "0000";
  3160. var recddyn = false;
  3161. fGetFormSubTitle(); // 서식부제목리스트
  3162. if (!utlf_isNull(formrecdd))
  3163. {
  3164. recddyn = true;
  3165. }
  3166. if (openmode == "recform")
  3167. {
  3168. var formrecseq = oOpener.frmf_getParameter("formrecseq");
  3169. fLoadRecForm(formrecseq);
  3170. if (!utlf_isNull(calledflag))
  3171. {
  3172. fSetFormRec("calledflag", calledflag);
  3173. oOpener.frmf_clearParameter("calledflag");
  3174. }
  3175. }
  3176. else if (openmode == "reccnstform") // 기록된 컨설트 서식 열기
  3177. {
  3178. grup_btn.btn_del.visible = false;
  3179. var formrecseq = oOpener.frmf_getParameter("formrecseq");
  3180. var userdeptcd = oOpener.frmf_getParameter("userdeptcd");
  3181. var replcnts = oOpener.frmf_getParameter("replcnts"); //약제팀
  3182. var overwrite = oOpener.frmf_getParameter("overwrite"); //약제팀
  3183. if (utlf_isNull(userdeptcd))
  3184. {
  3185. sysf_messageBox("컨설트 수신부서 코드가", "I004");
  3186. return;
  3187. }
  3188. frmf_setParameter("userdeptcd", userdeptcd);
  3189. fLoadRecForm(formrecseq);
  3190. if (!utlf_isNull(replcnts))
  3191. {
  3192. //ivw_base.window.javascript.fSetReplCnts(replcnts, eval(overwrite));
  3193. ivw_base.frmf_setParameter("MMR04900_replcnts", replcnts);
  3194. ivw_base.frmf_setParameter("MMR04900_overwrite", overwrite);
  3195. }
  3196. fCheckWriteUser();
  3197. }
  3198. else if (openmode == "newcnstform") // 컨설트 새서식 열기
  3199. {
  3200. grup_btn.btn_del.visible = false;
  3201. var node = sysf_getGlobalVariable("paminfo");
  3202. if(utlf_isNull(node))
  3203. {
  3204. fSetPamInfo(oOpener.frmf_getParameter("pid"),
  3205. oOpener.frmf_getParameter("orddd"),
  3206. oOpener.frmf_getParameter("cretno"),
  3207. oOpener.frmf_getParameter("ioflag"),
  3208. oOpener.frmf_getParameter("orddeptcd"),
  3209. oOpener.frmf_getParameter("orddrid") );
  3210. }
  3211. frmf_setParameter("SMMMR04900_cnstflag", oOpener.frmf_getParameter("SMMMR04900_cnstflag"));
  3212. frmf_setParameter("SMMMR04900_replflag", oOpener.frmf_getParameter("SMMMR04900_replflag"));
  3213. frmf_setParameter("SMMMR04900_cnstdeptcd", oOpener.frmf_getParameter("SMMMR04900_cnstdeptcd"));
  3214. frmf_setParameter("SMMMR04900_cnstdeptnm", oOpener.frmf_getParameter("SMMMR04900_cnstdeptnm"));
  3215. frmf_setParameter("SMMMR04900_drid", oOpener.frmf_getParameter("SMMMR04900_drid"));
  3216. frmf_setParameter("SMMMR04900_drnm", oOpener.frmf_getParameter("SMMMR04900_drnm"));
  3217. frmf_setParameter("SMMMR04900_reqdpcd", oOpener.frmf_getParameter("SMMMR04900_reqdpcd"));
  3218. frmf_setParameter("SMMMR04900_reqdpnm", oOpener.frmf_getParameter("SMMMR04900_reqdpnm"));
  3219. frmf_setParameter("SMMMR04900_reqdrid", oOpener.frmf_getParameter("SMMMR04900_reqdrid"));
  3220. frmf_setParameter("SMMMR04900_reqdrnm", oOpener.frmf_getParameter("SMMMR04900_reqdrnm"));
  3221. frmf_setParameter("SMMMR04900_formnm", oOpener.frmf_getParameter("SMMMR04900_formnm"));
  3222. frmf_setParameter("SMMMR04900_formcd", formcd);
  3223. var formcd = oOpener.frmf_getParameter("formcd");
  3224. fLoadNewForm(formcd);
  3225. fCheckWriteUser();
  3226. }
  3227. else
  3228. {
  3229. fLoadNewForm(formcd);
  3230. if (!utlf_isNull(calledflag))
  3231. {
  3232. fSetFormRec("calledflag", calledflag);
  3233. oOpener.frmf_clearParameter("calledflag");
  3234. }
  3235. if(recddyn)
  3236. {
  3237. fSetFormRec("formrecdd" , formrecdd);
  3238. fSetFormRec("formrechm" , formrechm);
  3239. }
  3240. //2010.04.05 박종훈 수정(수술예약번호가 파리미터로 넘어올 경우 기록마스터테이블에 넣어준다)
  3241. //요청번호 : 13250, TaskNo : 49479, 우선순위 : SY
  3242. if(!utlf_isNull(oprsrvno))
  3243. {
  3244. fSetFormRec("oprsrvno", oprsrvno);
  3245. }
  3246. }
  3247. if (!utlf_isNull(fGetFormMast("formcd")))
  3248. {
  3249. var disppatinfo = oOpener.frmf_getParameter("disppatinfo");
  3250. //2010.06.01 김달현 - disppatinfo가 없을경우 상단정보가져옴
  3251. if(utlf_isNull(disppatinfo)){
  3252. var pid = fGetPamInfo("pid");
  3253. var hngnm = fGetPamInfo("hngnm");
  3254. var sexage = fGetPamInfo("sex") + "/" + fGetPamInfo("age");
  3255. var orddeptnm = fGetPamInfo("orddeptnm");
  3256. var roomcd = fGetPamInfo("roomcd");
  3257. disppatinfo = pid + "▦" + hngnm + "▦" + sexage + "▦" + orddeptnm + "▦" + roomcd;
  3258. }
  3259. disppatinfo = disppatinfo.split("▦"); //[0]등록번호, [1]환자명, [2]성별/나이, [3]진료과, [4]병실
  3260. this.titletext= fGetFormMast("formnminfo") + " 환자정보 : " + disppatinfo[0] + " " + disppatinfo[1] + "(" + disppatinfo[2] + ") 진료과 : " + disppatinfo[3] + ", 병실 : "+ disppatinfo[4];
  3261. //window.document.title = fGetFormMast("formnminfo") + " 환자정보 : " + disppatinfo[0] + " " + disppatinfo[1] + "(" + disppatinfo[2] + ") 진료과 : " + disppatinfo[3] + ", 병실 : "+ disppatinfo[4];
  3262. }
  3263. var openmode = oOpener.frmf_getParameter("openmode");
  3264. if (openmode == "extnunitform")
  3265. {
  3266. grup_titl.visible = false;
  3267. }
  3268. else
  3269. {
  3270. grup_titl.visible = true;
  3271. if (fGetFormMast("formprogflag") == "OCR")
  3272. {
  3273. grup_btn.btn_print.visible = true;
  3274. grup_btn.btn_print.position2.left = grup_btn.btn_del.position2.left;
  3275. grup_btn.btn_preview.visible = false;
  3276. grup_btn.btn_tmpsave.visible = false;
  3277. grup_btn.btn_signsave.visible = false;
  3278. grup_btn.btn_signsaveasnew.visible = false;
  3279. grup_btn.btn_del.visible = false;
  3280. }
  3281. else
  3282. {
  3283. grup_btn.btn_print.visible = false;
  3284. grup_btn.btn_preview.visible = false;
  3285. }
  3286. }
  3287. //확장 서식 팝업의 경우
  3288. if (openmode == "extnunitform")
  3289. {
  3290. gFstLevlItemCd = oOpener.frmf_getParameter("fstlevlitemcd");
  3291. grup_btn.btn_preview.visible = false;
  3292. grup_btn.btn_tmpsave.visible = false;
  3293. grup_btn.btn_signsave.visible = false;
  3294. grup_btn.btn_signsaveasnew.visible = false;
  3295. grup_btn.btn_del.visible = false;
  3296. grup_btn.btn_cnfm.position2.left = grup_btn.btn_signsave.position2.left;
  3297. grup_btn.btn_cncl.position2.left = grup_btn.btn_del.position2.left;
  3298. grup_btn.btn_cnfm.visible = true;
  3299. grup_btn.btn_cncl.visible = true;
  3300. fSetFormInfoByCSV(oOpener.frmf_getParameter("forminfo"));
  3301. //fInitForm();
  3302. //fSetNewFormRec();
  3303. ///////////////////
  3304. //2010.01.26, hkjoo
  3305. ivw_base.model.removeNodeSet("/root/main");
  3306. copyNodeset("/root/main", "/root/main", "replace" ,ivw_base.model, model); //아이템별 서식보기 뷰어에 data copy
  3307. document.title = model.getValue("/root/main/forminfo/formmast/formnminfo"); //해당 확장서식 명 타이틀에 셋팅
  3308. ivw_base.fCreateDegnBySelfInfo(gPageInfo, null, "record");//확장서식 화면 셋팅, hkjoo
  3309. //////////////////////
  3310. setCtrlDisabled(gFstLevlItemCd); //확장서식 팝업에서 기본서식과 겹치는 아이템은 disable 처리
  3311. ivw_base.frmf_setParameter("openmode", "extnunitform");
  3312. //ivw_base.model.refresh();
  3313. fSetUniqData( gPageInfo.recItemRef, ivw_base.model ); //기본 서식의 키값으로 값셋팅, fstlevlitemcd, degnitemlevlcd, degnitemlevlno
  3314. var recinfo = opener.frmf_getParameter("recinfo");
  3315. if (!utlf_isNull(recinfo))
  3316. {
  3317. var path = "/root/hidden/recinfo";
  3318. model.makeNode(path);
  3319. setCSVToNode(path, recinfo, "recitem");
  3320. setSrchData(path+"/recitem", ivw_base);
  3321. ivw_base.fLoadOcxImage(); //이미지 로드
  3322. //ivw_base.model.refresh();
  3323. }
  3324. }
  3325. // 팝업 서식창 사이즈 조절
  3326. fAdjustWindowSize();
  3327. try {
  3328. oOpener.fEndFormReady_MMR01100();
  3329. }catch (e) {
  3330. sysf_catchTrace(e);
  3331. };
  3332. oOpener.frmf_setParameter("openmode", "");
  3333. oOpener.frmf_setParameter("formrecseq", "");
  3334. }
  3335. /****************************************************************************************
  3336. * Function : fGetPamInfo
  3337. * Description : key값에 해당되는 원무정보 가져오기
  3338. * Argument : 01. key : 컬럼명
  3339. * retrun type : ds_data_paminfo DS의 key 이름 컬럼 값
  3340. * Creator :
  3341. ****************************************************************************************/
  3342. function fGetPamInfo(key)
  3343. {
  3344. if( utlf_isNull(key))
  3345. return "";
  3346. if(utlf_isNull(ds_data_paminfo.getColumnInfo(key)))
  3347. return "";
  3348. else
  3349. return ds_data_paminfo.getColumn(0, key);
  3350. }
  3351. /**
  3352. * @desc : 확인버튼 클릭
  3353. * @id :
  3354. * @event :
  3355. * @return :
  3356. * @authur : 박종훈, 2010.01.26 hkjoo 수정
  3357. */
  3358. function fConfirm()
  3359. {
  3360. ivw_base.window.javascript.getSaveData(gPageInfo.recItemRef2, "replace", model, NewPageInfo(gPrestIvw, gFstLevlItemCd));
  3361. var path = gPageInfo.extnrecItemRef + "[fstlevlitemcd='" +gFstLevlItemCd+ "' and formcd='" + model.getValue(gPageInfo.formmastRef + "/formcd") + "']";
  3362. if (opener.window.javascript.fGetRecNodeCount(path) != "0")
  3363. {
  3364. opener.window.javascript.fRemoveRecNodeset(path);
  3365. }
  3366. copyNodeset( gPageInfo.extnrecRef, gPageInfo.recRef2, "append" ,opener.model, model );
  3367. window.close();
  3368. }
  3369. /**
  3370. * @desc : 기본 서식의 키값으로 값셋팅, fstlevlitemcd, degnitemlevlcd, degnitemlevlno
  3371. * @id :
  3372. * @event :
  3373. * @return :
  3374. * @authur : 주희경, 2010.01.29
  3375. */
  3376. function fSetUniqData( recItemRef, tModel )
  3377. {
  3378. var fstlevlitemcdNodes = tModel.instance1.selectNodes(recItemRef+"[formcd='" + model.getValue(gPageInfo.formmastRef + "/formcd") + "']/fstlevlitemcd");
  3379. var degnitemlevlcdNodes = tModel.instance1.selectNodes(recItemRef+"[formcd='" + model.getValue(gPageInfo.formmastRef + "/formcd") + "']/degnitemlevlcd");
  3380. var degnitemlevlnoNodes = tModel.instance1.selectNodes(recItemRef+"[formcd='" + model.getValue(gPageInfo.formmastRef + "/formcd") + "']/degnitemlevlno");
  3381. for( i=0; i<fstlevlitemcdNodes.length; i++ )
  3382. {
  3383. fstlevlitemcdNodes.item(i).value = gFstLevlItemCd; //fstlevlitemcd 일괄변경
  3384. degnitemlevlcdNodes.item(i).value = gFstLevlItemCd.substr(0,7) + "." + degnitemlevlcdNodes.item(i).value; //degnitemlevlcd에 fstlevlitemcd의 앞 7자리 숫자 add(통합기록조회에서 조회되려고 xslt의 규칙대로 맞춰줌)
  3385. degnitemlevlnoNodes.item(i).value = parseInt(degnitemlevlnoNodes.item(i).value)+1; //부분서식일 때 레벨 수정
  3386. }
  3387. //기존에 N-S(BOL) 아이템이 기록조회에서 (N-S : N-S)로 표시되는것을 막기위해 정보관리팀에서 N-S아이템 모두 rectermcd에 블랭크 두개(" ")를 설정 하였다고 함. -> 빈데이터로 일괄변경
  3388. var rectermcdNodes = tModel.instance1.selectNodes(recItemRef+"[degnitemnm='N-S' and rectermcd=' ' ]/rectermcd");
  3389. for( i=0; i<rectermcdNodes.length; i++ )
  3390. {
  3391. rectermcdNodes.item(i).value = "";
  3392. }
  3393. }
  3394. /****************************************************************************************
  3395. * Function : fCheckSaveDept
  3396. * Description : 기록작성부서와 수정사용자의 부서를 비교
  3397. * retrun type : true : 기록부서와 수정부서가 동일, false : 기록부서와 수정부서가 다름
  3398. * Creator :
  3399. ****************************************************************************************/
  3400. function fCheckSaveDept()
  3401. {
  3402. sysf_trace("***** fCheckSaveDept() MMR01100 기록작성부서와 수정사용자의 부서를 비교*****");
  3403. var sChkDept = oOpener.frmf_getParameter("chkdeptpresave");
  3404. oOpener.frmf_clearParameter("chkdeptpresave");
  3405. sysf_trace("***** fCheckSaveDept() sChkDept : " + sChkDept + " *****");
  3406. //20121217 정창혁 같은 부서내 임시저장 활성화 //진정회복기록 (내시경, 건진) :1000007334 포함. 모든 기록지
  3407. if (fGetEditableDept()) {
  3408. sChkDept = "N";
  3409. }
  3410. //20130524 정창혁 cpg관련 저장일때 최초 빈서식일때 pid를 emr로 설정해주므로 부서체크나 동일 사용자 체크를 피하기 위해 추가 fGetFormRec... 추가
  3411. if (sChkDept == "N" || fGetFormRec("srcformcd") == "0000000677" || fGetFormRec("calledflag").indexOf("cpg") != -1)
  3412. {
  3413. return true;
  3414. }
  3415. else
  3416. {
  3417. var sessUdeptcd = sysf_getUserInfo("dutplcecd");
  3418. var sessUserid = sysf_getUserId();
  3419. var recUdeptcd = fGetFormRec("formrecdeptcd");
  3420. var recUserid = fGetFormRec("formrecuserid");
  3421. var recLastUpUserid = fGetFormRec("lastupdtrid");
  3422. // [요청번호:20161121013] 기록수정 제한
  3423. if(!utlf_isNull(recUserid)
  3424. && ds_init_recsaveyn.rowcount > 0
  3425. && ds_init_recsaveyn.getCaseCount("hardcd=="+ recUserid) > 0
  3426. && sessUserid != recUserid){
  3427. return false;
  3428. }
  3429. if (sessUserid == recUserid || sessUserid == recLastUpUserid)
  3430. {
  3431. return true;
  3432. }
  3433. else
  3434. {
  3435. if (sessUdeptcd == recUdeptcd)
  3436. {
  3437. return true;
  3438. }
  3439. else
  3440. {
  3441. return false;
  3442. }
  3443. }
  3444. }
  3445. }
  3446. /****************************************************************************************
  3447. * Argument : N/A
  3448. * Description : 기록일 변경시 유효 기록일자 체크
  3449. * return type : true : 기록부서와 수정부서가 동일, false : 기록부서와 수정부서가 다름
  3450. ****************************************************************************************/
  3451. function fChkRecdd()
  3452. {
  3453. //2009.10.26 안치원 TASK-3088
  3454. //진료기록메인에서 팝업으로 뜨는 서식에 대해서 기록일자에 대한 검사를 한다.
  3455. if (oOpener.frmf_getParameter("MMR01100_chkRecDdYn") == "Y") {
  3456. //
  3457. } else if (fGetFormMast("mainyn") != "Y") {
  3458. return;
  3459. }
  3460. //end of TASK-3088
  3461. var sIoflag = fGetPamInfo("ioflag");
  3462. var sOrddd = "";
  3463. var sDschdd = "";
  3464. var sIndschacptstat = ""; //D일경우 퇴원
  3465. var sChDD = ds_data_formrec.getColumn(0, "formrecdd");
  3466. if(sIoflag == "I" || sIoflag == "E" || sIoflag == "D")
  3467. {
  3468. sIndschacptstat = fGetPamInfo("indschacptstat");
  3469. sOrddd = fGetPamInfo("indd");
  3470. sDschdd = fGetPamInfo("dschdd");
  3471. if (sIndschacptstat == "D" || sIndschacptstat == "T")//2010.02.17 dhkim - 가퇴원상태일 경우도 blocking 포함
  3472. {
  3473. if (sChDD >= sOrddd && sChDD <= sDschdd)
  3474. {
  3475. }
  3476. else
  3477. {
  3478. sysf_messageBox("기록일이 재원기간내에 있지 않습니다. 기록일을 확인", "I008");
  3479. if (gRecdd >= sDschdd)
  3480. {
  3481. gRecdd = sDschdd;
  3482. }
  3483. ds_data_formrec.setColumn(0, "formrecdd", gRecdd);
  3484. }
  3485. }
  3486. else
  3487. {
  3488. if (sChDD < sOrddd)
  3489. {
  3490. sysf_messageBox("선택하신 일자는 입원일 이전입니다. 기록일을 확인", "I008");
  3491. ds_data_formrec.setColumn(0, "formrecdd", sOrddd);
  3492. }
  3493. }
  3494. }
  3495. else if(sIoflag == "O" || sIoflag == "S")
  3496. {
  3497. sOrddd = fGetPamInfo("orddd");
  3498. /* 이윤주 막음:여수진 요청(20150225)
  3499. if (sChDD != sOrddd)
  3500. {
  3501. sysf_messageBox("기록일과 진료일이 일치하지 않습니다. 기록일을 확인", "I008");
  3502. ds_data_formrec.setColumn(0, "formrecdd", sOrddd);
  3503. }
  3504. */
  3505. }
  3506. // 2018.12 기준일자 변경시 작성미비 체크하여 정정프로세스 진입여부 설정
  3507. lf_getChkRecCorrect("Y", "Y");
  3508. }
  3509. /**
  3510. * @desc : 코사인 버튼 클릭시 이벤트
  3511. * @id :
  3512. * @event :
  3513. * @return :
  3514. * @authur : 박종훈
  3515. */
  3516. function fClickSaveCosign()
  3517. {
  3518. sysf_trace(" >>>>>>>>>>>>>>>> fClickSaveCosign Staff Sign Start ");
  3519. //2010.03.18 안치원 - 상단환자정보와 기록환자정보가 같은지 검사한다.
  3520. if (validPamInfo_MMR01100("btn_sign") == false) {
  3521. return false;
  3522. }
  3523. frmf_setParameter("cosignrec", "-");
  3524. //var rtn = fCheckChangeDataForCosign();
  3525. var rtn = lf_isModify();
  3526. sysf_trace(" 수정여부 체크 lf_isModify rtn : " + rtn);
  3527. if (rtn == "N") //수정데이터가 없는 경우
  3528. {
  3529. fSetFormRec("cosignyn", "Y");
  3530. var savedInfo = fSaveFormRecCosign("Y");
  3531. //2007.12.13 박종훈 수정
  3532. if (!utlf_isNull(savedInfo.formrecseq) && savedInfo.formrecseq != 0)
  3533. {
  3534. if (oOpener.frmf_getParameter("openmode") == "openform")
  3535. {
  3536. oOpener.frmf_setParameter("openmadalformsave", "Y");
  3537. }
  3538. if (!utlf_isNull(fGetFormRec("calledflag")) && fGetFormRec("calledflag").indexOf("cpgmain") == 0)
  3539. {
  3540. try
  3541. {
  3542. var ordpatlistObj = frmf_findPopup("SMMMP00800");
  3543. if(!utlf_isNull(ordpatlistObj))
  3544. {
  3545. addEmrLog("calledflag : " + fGetFormRec("calledflag"));
  3546. ordpatlistObj.fSnedValToCpWnd(fGetFormRec("formcd"), savedInfo.formrecseq, fGetFormRec("calledflag"));
  3547. }
  3548. }
  3549. catch(e)
  3550. {
  3551. }
  3552. }
  3553. frmf_setParameter("espisavesuccess", "Y");
  3554. fAfterSaveExtnDoing();
  3555. //20081209 오지훈SW 요청
  3556. var wndobj = frmf_findPopup("SMMRI01800");
  3557. if(!utlf_isNull(wndobj)){
  3558. var status = fGetFormRec("status");
  3559. var pid = fGetFormRec("pid");
  3560. var orddd = fGetFormRec("orddd");
  3561. var cretno = fGetFormRec("cretno");
  3562. var formcd = fGetFormRec("srcformcd");
  3563. var formrecdd = fGetFormRec("formrecdd");
  3564. var formrecseq = fGetFormRec("formrecseq");
  3565. //2010.02.27 안치원 - 미비항목화면연계 수정 formrecdeptcd추가(이은영 요청)
  3566. var formrecdeptcd = fGetFormRec("formrecdeptcd");
  3567. //2010.02.09 안치원 - 미비항목화면연계 수정(이은영 요청)
  3568. var unprepFlag = "uss";
  3569. var param = status + "^" + pid + "^" + orddd + "^" + cretno + "^" + formcd + "^" + formrecdd + "^" + formrecseq + "^" + unprepFlag + "^" + formrecdeptcd;
  3570. //oOpener.frmf_setParameter("SMMRI01800_medirecinfo", param);
  3571. wndobj.fDispUnPrepDrCnfm(param);
  3572. frmf_setFocusPop("SMMRI01800");
  3573. wndobj.grd_unpreplist.setFocus();
  3574. }
  3575. }
  3576. }
  3577. else
  3578. {
  3579. fSetFormRec("cosignyn", "Y");
  3580. fClickSave("Y");
  3581. }
  3582. // [미비] StaffSign 미비 간편확인 기능 사용시 화면닫기
  3583. if( lgv_SaveAfterClose ){
  3584. this.close();
  3585. }
  3586. }
  3587. /**
  3588. * @desc : 기록반려버튼 클릭 이벤트
  3589. * @id :
  3590. * @event :
  3591. * @return :
  3592. * @authur : 박종훈
  3593. */
  3594. function fClickReSend()
  3595. {
  3596. var objArg = new Object();
  3597. objArg.arg_ds_data_formrec = ds_data_formrec;
  3598. frmf_modal("SPMMR06300", "SPMMR06300", objArg, 1, 100, 100, null, null, null, null, null, null, "M");
  3599. var cnclyn = frmf_getParameter("cosignclclyn");
  3600. frmf_clearParameter("cosignclclyn");
  3601. sysf_trace("@@@@@ 기록반려 cnclyn : " + cnclyn + " @@@@@");
  3602. if ( cnclyn == "Y")
  3603. {
  3604. grup_btn.btn_cosign.enable = true;
  3605. ivw_base.grup_base.enable = true;
  3606. fAfterSaveExtnDoing();
  3607. //2010-02-22 오후 1:34:16 강지훈 추가
  3608. fSetFormRec("cosign", "N");
  3609. // 기록반려 사유 입력 후 즉시 수정가능하도록 화면 활성화. (20191105 금정화 추가)
  3610. lf_resetForm();
  3611. }
  3612. }
  3613. /**
  3614. * @desc : 수정되지 않은 기록지 코사인 저장(미비 업데이트, 인증데이터 처리)
  3615. * @id :
  3616. * @event :
  3617. * @return :
  3618. * @authur : 박종훈
  3619. */
  3620. function fSaveFormRecCosign(signedYn, mode)
  3621. {
  3622. if (utlf_isNull(fGetFormMast("formcd"))) return;
  3623. if (isProgForm())
  3624. {
  3625. // ivw_base.window.javascript.getSaveComnFormData(mode, "1");
  3626. lf_getProgFormRecData(mode, "1");
  3627. ds_data_recitem.copyData(ivw_base.ds_data_recitem);
  3628. }
  3629. else
  3630. {
  3631. // ivw_base.window.javascript.getSaveData(gPageInfo.sortItemRef, "replace", model, null, mode);
  3632. // SortRecItem();
  3633. lf_getGenFormData(null, "1");
  3634. }
  3635. if (signedYn != null)
  3636. {
  3637. return fSaveComnFormRecInfoForCosign(signedYn);
  3638. }
  3639. }
  3640. /****************************************************************************************
  3641. * Argument : N/A
  3642. * Description : 서식 저장 후 실행함수 후 동작 - 서식로더 popup 일경우
  3643. ****************************************************************************************/
  3644. function fGetRecMainlist()
  3645. {
  3646. if ( !utlf_isNull(opener) && opener.frmf_getScreenID() == "SMMMR00100")
  3647. {
  3648. opener.fRefMediRecList();
  3649. }
  3650. }
  3651. /**
  3652. * @desc : 서식이 활성화 될때 서식에 기본 설정되는 Data를 가져온다.
  3653. * @id :
  3654. * @event :
  3655. * @return :
  3656. * @authur : 안치원
  3657. */
  3658. function getRecIntefaceData(recIfID)
  3659. {
  3660. if (fGetFormRec("status") != "C") return;
  3661. setReqOfGetRecIntefaceData("pid", fGetPamInfo("pid"));
  3662. setReqOfGetRecIntefaceData("cretno", fGetPamInfo("cretno"));
  3663. setReqOfGetRecIntefaceData("recIfID", recIfID);
  3664. setReqOfGetRecIntefaceData("dest_formcd", fGetFormMast("formcd"));
  3665. setReqOfGetRecIntefaceData("dest_formdegnseq", fGetFormMast("formdegnseq"));
  3666. var compioflag = fGetPamInfo("ioflag");
  3667. if (compioflag == "O" || compioflag == "S")
  3668. setReqOfGetRecIntefaceData("orddd", fGetPamInfo("orddd"));
  3669. else
  3670. setReqOfGetRecIntefaceData("orddd", fGetPamInfo("indd"));
  3671. if (submit("TRMMR01104")) {
  3672. ivw_base.window.javascript.setInterfaceData();
  3673. }
  3674. }
  3675. function setReqOfGetRecIntefaceData(key, value)
  3676. {
  3677. model.makeValue("/root/send/reqif/"+key, value);
  3678. }
  3679. /**
  3680. * @desc : 기록권한 검사
  3681. * @id : 2009.10.19 안치원 TASK-32640, 32794
  3682. * @event :
  3683. * @return :
  3684. * @authur : 안치원
  3685. */
  3686. function validateRec(formcd)
  3687. {
  3688. utlf_addLog("***** validateRec("+formcd+") *****")
  3689. if (utlf_isNull(formcd))
  3690. return;
  3691. //oOpener = frmf_getoOpener();
  3692. var sGetTopYn = oOpener.frmf_getParameter("SSMMR01100_getTopYn");
  3693. var node = sysf_getGlobalVariable("paminfo");
  3694. var pid = "";
  3695. var orddd = "";
  3696. var cretno = "";
  3697. var ioflag = "";
  3698. var orddeptcd = "";
  3699. if(!utlf_isNull(node) && sGetTopYn != "N")
  3700. {
  3701. dsf_createDs("ds_main_vpaminfo");
  3702. dsf_setCSVToDs("ds_main_vpaminfo", node);
  3703. pid = ds_main_vpaminfo.getColumn(0, "pid");
  3704. cretno = ds_main_vpaminfo.getColumn(0, "cretno");
  3705. ioflag = ds_main_vpaminfo.getColumn(0, "ioflag");
  3706. orddeptcd = ds_main_vpaminfo.getColumn(0, "orddeptcd");
  3707. if (ioflag == "O" || ioflag == "S") {
  3708. orddd = ds_main_vpaminfo.getColumn(0, "orddd");
  3709. } else {
  3710. orddd = ds_main_vpaminfo.getColumn(0, "indd");
  3711. }
  3712. } else {
  3713. pid = ds_data_paminfo.getColumn(0, "pid");
  3714. cretno = ds_data_paminfo.getColumn(0, "cretno");
  3715. ioflag = ds_data_paminfo.getColumn(0, "ioflag");
  3716. orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  3717. if (ioflag == "O" || ioflag == "S") {
  3718. orddd = ds_data_paminfo.getColumn(0, "orddd");
  3719. } else {
  3720. orddd = ds_data_paminfo.getColumn(0, "indd");
  3721. }
  3722. }
  3723. var openmode = oOpener.frmf_getParameter("openmode");
  3724. if (openmode == "newform")
  3725. {
  3726. pid = oOpener.frmf_getParameter("pid");
  3727. orddd = oOpener.frmf_getParameter("orddd");
  3728. cretno = oOpener.frmf_getParameter("cretno");
  3729. }
  3730. dsf_createDsRow("ds_send_reqvalid",
  3731. [{col: "valiflag", type:"string", size:256, val: "new"}
  3732. ,{col: "pid", type:"string", size:256, val: pid}
  3733. ,{col: "orddd", type:"string", size:256, val: orddd}
  3734. ,{col: "cretno", type:"INT", size:256, val: cretno}
  3735. ,{col: "chosflag", type:"string", size:256, val: ioflag}
  3736. ,{col: "formcd", type:"string", size:256, val: formcd}
  3737. ,{col: "orddeptcd", type:"string", size:256, val: orddeptcd}]);
  3738. dsf_createDs("ds_data_validinfo",
  3739. [{col: "formrecseq", type:"BIGDECIMAL", size:256}
  3740. ,{col: "formcd", type:"string", size:256}
  3741. ,{col: "resultCode", type:"string", size:256}
  3742. ,{col: "resultMsg", type:"INT", size:256}
  3743. ,{col: "valiflag", type:"string", size:256}]);
  3744. var oParam = {};
  3745. oParam.id = "TRMMR01105";
  3746. oParam.service = "medirecapp.ComnMediRec";
  3747. oParam.method = "reqGetRecValidation";
  3748. oParam.inds = "req=ds_send_reqvalid";
  3749. oParam.outds = "ds_data_validinfo=validinfo";
  3750. oParam.async = false;
  3751. oParam.progress = false;
  3752. oParam.callback = "cf_TRMMR01105";
  3753. tranf_submit(oParam);
  3754. if (arErrorCode.pop("TRMMR01105") > -1) {
  3755. if (ds_data_validinfo.getColumn(0, "resultCode") != "0") {
  3756. if (!utlf_isNull(ds_data_validinfo.getColumn(0, "resultMsg"))) {
  3757. alert(ds_data_validinfo.getColumn(0, "resultMsg"));
  3758. }
  3759. if (!utlf_isNull(ds_data_validinfo.getColumn(0, "formrecseq"))) {
  3760. fLoadRecForm(ds_data_validinfo.getColumn(0, "formrecseq"), null, null);
  3761. }
  3762. else if (!utlf_isNull(ds_data_validinfo.getColumn(0, "formcd"))) {
  3763. fLoadNewForm(ds_data_validinfo.getColumn(0, "formcd"), null, null, false);
  3764. }
  3765. return false;
  3766. }
  3767. return true;
  3768. } else {
  3769. return false;
  3770. }
  3771. }
  3772. /****************************************************************************************
  3773. * Argument : 01.sSvcId : 서비스 ID
  3774. * : 02.nErrorCode : 에러코드
  3775. * : 03.sErrorMsg : 에러메시지
  3776. * Description : cf_TRMMR01105의 콜백함수
  3777. ****************************************************************************************/
  3778. function cf_TRMMR01105(sSvcId, nErrorCode, sErrorMsg) {
  3779. arErrorCode.push(sSvcId, nErrorCode);
  3780. if(nErrorCode < 0) return;
  3781. utlf_addLog("***** cf_TRMMR01105 *****");
  3782. dsf_deleteDs("ds_send_reqvalid");
  3783. dsf_setDefaultVal(ds_data_validinfo, "resultCode:0");
  3784. }
  3785. /**
  3786. * @group :
  3787. * @ver : 2009.10.23
  3788. * @by : 이경희
  3789. * @---------------------------------------------------
  3790. * @type : event
  3791. * @access : public
  3792. * @desc : 서식SET화면에서 서식미리보기 시에 사용함.
  3793. * @param : formcd - 서식 코드
  3794. * @param : bPopup - 특수서식로드 유형 (true/false)
  3795. * @return :
  3796. * @---------------------------------------------------
  3797. */
  3798. function fPreviewForm(formcd, bPopup, calledflag)
  3799. {
  3800. model.addLog("fPreviewForm start시간: " + getCurrentTime() + ", formcd:" + formcd);
  3801. var rtn = "N";
  3802. var rtnmsg = 0;
  3803. //현재 로딩된 서식의 formcd를 가져온다.
  3804. gSrcFormcd = fGetFormMast("formcd");
  3805. gFormProgFlag = fGetFormMast("formprogflag");
  3806. gFormProgNm = fGetFormMast("formprognm");//2010.03.29 dhkim 추가
  3807. var gOldUnitNodelist = model.instances(0).selectNodes(gPageInfo.forminfoRef + "/unitformmast");
  3808. gOldUnitFormDgnSeq = "";
  3809. for (var i = 0; i < gOldUnitNodelist.length; i++)
  3810. {
  3811. var subNode = gOldUnitNodelist.item(i);
  3812. gOldUnitFormDgnSeq += subNode.selectSingleNode("formdegnseq").text + "▦";
  3813. }
  3814. if (formcd == "")
  3815. return;
  3816. if (getParameter("loadstatus"))
  3817. {
  3818. if (getParameter("afterRecDelete") == "Y")
  3819. {
  3820. rtn = "N";
  3821. clearParameter("afterRecDelete");
  3822. }
  3823. else
  3824. {
  3825. rtn = fCheckChangeDataForCosign();
  3826. }
  3827. }
  3828. if(bPopup == null)
  3829. bPopup = true;
  3830. //1. 서식정보 조회
  3831. if(!fGetNewFormMast(formcd))
  3832. {
  3833. alert("서식정보를 조회하는데 실패하였습니다.");
  3834. return;
  3835. }
  3836. /*
  3837. var recsavechk = opener.window.javascript.getParameter("SSMMR01100_recsavechk");
  3838. opener.window.javascript.clearParameter("SSMMR01100_recsavechk");
  3839. if (rtn != "N" && model.getValue(gPageInfo.initformmastRef + "/mainyn") == "Y" && recsavechk != "Y") //수정데이터가 있는 경우
  3840. {
  3841. var rtnmsg = messageBox("기록내용 중 저장되지 않은 내용이 있습니다.", "Q002");
  3842. if (rtnmsg == 6)
  3843. {
  3844. if (fClickSave("Y") == "N")
  3845. {
  3846. return;
  3847. }
  3848. }
  3849. }
  3850. */
  3851. fShowProgress(true, "서식정보");
  3852. //서식 오픈전 환자정보 셋팅
  3853. //copyNodeset("/root/main/paminfo", "/root/main/paminfo", "replace", model, opener.model);
  3854. /*
  3855. var sGetTopYn = opener.window.javascript.getParameter("SSMMR01100_getTopYn"); //SSMMR01100_getTopYn => top정보 조회여부 정보(N일경우 넘어온 파라미터기준, 아닐결루 TOP정보 기준)
  3856. var node = getGlobalVariable("paminfo");
  3857. if(node != "" && sGetTopYn != "N")
  3858. {
  3859. model.removeNodeset("/root/main/paminfo");
  3860. setCSVToNode("/root/main", node, "paminfo");
  3861. }
  3862. */
  3863. var openmode = opener.window.javascript.getParameter("openmode");
  3864. if (openmode == "newform")
  3865. {
  3866. if (!fSetPamInfo(opener.window.javascript.getParameter("pid"),
  3867. opener.window.javascript.getParameter("orddd"),
  3868. opener.window.javascript.getParameter("cretno"),
  3869. opener.window.javascript.getParameter("ioflag"),
  3870. opener.window.javascript.getParameter("orddeptcd"),
  3871. opener.window.javascript.getParameter("orddrid") ))
  3872. {
  3873. grup_btn.disabled = true;
  3874. return;
  3875. }
  3876. }
  3877. //동일 서식 로딩시 인스턴스만 바꿔주는 기능 관련 추가(2008-11-28 박종훈)
  3878. var sSrchsrcformcd = model.getValue(gPageInfo.initformmastRef + "/formcd");
  3879. var sSrchformprogflag = model.getValue(gPageInfo.initformmastRef + "/formprogflag");
  3880. var sFormProgNm = model.getValue(gPageInfo.initformmastRef + "/formprognm");
  3881. if (gSrcFormcd == sSrchsrcformcd && gFormProgFlag == sSrchformprogflag && sFormProgNm != "-"
  3882. && gFormProgNm == sFormProgNm//2010.03.29 dhkim 추가(formprognm이 다를 경우 서식 새로 로딩)
  3883. )
  3884. {
  3885. //2. 서식 체크
  3886. var formprogflag = fCheckForm(gPageInfo.initformmastRef);
  3887. if (fCheckformKind(formprogflag, bPopup))
  3888. {
  3889. copyNodeset(gPageInfo.forminfoRef, gPageInfo.initforminfoRef, "replace", model, model);
  3890. model.removeNodeset(gPageInfo.initforminfoRef);
  3891. }
  3892. //열려있는 기록지 부분서식의 formdegnseq가 일치하는지 여부를 검사하여 다를 경우 부분서식을 새로 로딩(2009-01-15 박종훈)
  3893. var gNewUnitNodelist = model.instances(0).selectNodes(gPageInfo.forminfoRef + "/unitformmast");
  3894. var arrOldUnitFormDgnSeq = gOldUnitFormDgnSeq.split("▦");
  3895. for (var i = 0; i < gNewUnitNodelist.length; i++)
  3896. {
  3897. var subNode = gNewUnitNodelist.item(i);
  3898. var newUnitFormDgnSeq = subNode.selectSingleNode("formdegnseq").text;
  3899. var unitItemCd = subNode.selectSingleNode("orgsupdegnitemcd").text;
  3900. var ivwObj = ivw_base.document.controls("ivw_" + unitItemCd);
  3901. //2010.03.09 안치원 - 기록내용에서 부분서식의 Copy가 안되는 오류 수정
  3902. ivwObj.attribute("supdegnitemcd") = "";
  3903. ivwObj.attribute("unitformcd") = "";
  3904. if(ivwObj.src == "")
  3905. {
  3906. var unitformcd = model.getValue(gPageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+unitItemCd+"']/formcd");
  3907. if (unitformcd != "")
  3908. {
  3909. ivwObj.attribute("supdegnitemcd") = unitItemCd;
  3910. ivwObj.attribute("unitformcd") = unitformcd;
  3911. model.addLog(unitformcd + " Loading 시작 : " + getCurrentTime());
  3912. loadUnitForm(ivwObj, unitItemCd);
  3913. if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq)
  3914. {
  3915. setFstLevlItemCd(ivwObj, unitformcd);
  3916. model.setValue(gPageInfo.forminfoRef + "/unitformmast[formcd='" + unitformcd + "' and loaded != 'true']/loaded", "true");
  3917. }
  3918. model.addLog(unitformcd + " Loading 끝 : " + getCurrentTime());
  3919. //2008-12-18박종훈(기록데이터 가져오기-보완필요)
  3920. //parent.window.javascript.InitUnitFormDataBySupdegnitemcd(unitItemCds);
  3921. }
  3922. }
  3923. else if (arrOldUnitFormDgnSeq[i] != newUnitFormDgnSeq)
  3924. {
  3925. var unitformcd = model.getValue(gPageInfo.forminfoRef + "/unitformmast[orgsupdegnitemcd='"+unitItemCd+"']/formcd");
  3926. if (unitformcd != "")
  3927. {
  3928. ivwObj.attribute("supdegnitemcd") = unitItemCd;
  3929. ivwObj.attribute("unitformcd") = unitformcd;
  3930. loadUnitForm(ivwObj, unitItemCd);
  3931. setFstLevlItemCd(ivwObj, unitformcd);
  3932. model.setValue(gPageInfo.forminfoRef + "/unitformmast[formcd='" + unitformcd + "' and loaded != 'true']/loaded", "true");
  3933. }
  3934. }
  3935. }
  3936. fInitClearForm();
  3937. if (isProgForm())
  3938. {
  3939. ivw_base.window.javascript.fGetDefData();
  3940. }
  3941. else
  3942. {
  3943. ivw_base.window.javascript.dispOnLoadComplete(UNIT_FORM);
  3944. }
  3945. fShowProgress(false);
  3946. }
  3947. else
  3948. {
  3949. //2. 서식 체크
  3950. var formprogflag = fCheckForm(gPageInfo.initformmastRef);
  3951. if (fCheckformKind(formprogflag, bPopup))
  3952. {
  3953. copyNodeset(gPageInfo.forminfoRef, gPageInfo.initforminfoRef, "replace", model, model);
  3954. model.removeNodeset(gPageInfo.initforminfoRef);
  3955. cap_formnm.refresh();
  3956. //3. 기록정보 초기화
  3957. //fSetNewFormRec();
  3958. }
  3959. //4. 서식 로드
  3960. fLoadForm(gPageInfo.formmastRef, formprogflag, bPopup, calledflag);
  3961. fShowProgress(false);
  3962. }
  3963. }
  3964. function initButtonLayer_MMR01100(mode) {
  3965. utlf_addLog("***** initButtonLayer_MMR01100::"+mode+ " *****");
  3966. if (mode == "default") {
  3967. grup_btn.enable = true;
  3968. //인증저장버튼과 코사인버튼처리
  3969. grup_btn.btn_signsave.visible = true;
  3970. grup_btn.btn_cosign.visible = false;
  3971. //임시저장버튼과 기록반려버튼처리
  3972. grup_btn.btn_tmpsave.visible = true;
  3973. grup_btn.btn_resend.visible = false;
  3974. //기타버튼 disable처리
  3975. grup_btn.btn_init.visible = true;
  3976. grup_btn.btn_init.enable = true;
  3977. grup_btn.btn_signsaveasnew.visible = true;
  3978. grup_btn.btn_signsaveasnew.enable = true;
  3979. grup_btn.btn_del.visible = true;
  3980. grup_btn.btn_del.enable = true;
  3981. } else if (mode == "staff_auth_y") {
  3982. grup_btn.enable = true;
  3983. //인증저장버튼과 코사인버튼처리
  3984. grup_btn.btn_cosign.position.x = grup_btn.btn_signsave.position.x;
  3985. grup_btn.btn_signsave.visible = false;
  3986. grup_btn.btn_cosign.visible = true;
  3987. //2010.02.26 dhkim - cosign여부에 관계 없이 기록반려는 활성화상태로 변경
  3988. grup_btn.btn_resend.enable = true;
  3989. //staff-sign이후는 기록반려를 disabled한다.
  3990. if (fGetFormRec("cosign") == "Y") {
  3991. grup_btn.btn_cosign.enable = false;
  3992. } else {
  3993. grup_btn.btn_cosign.enable = true;
  3994. }
  3995. //임시저장버튼과 기록반려버튼처리
  3996. grup_btn.btn_resend.position.x = grup_btn.btn_tmpsave.position.x;
  3997. grup_btn.btn_tmpsave.visible = false;
  3998. grup_btn.btn_resend.visible = true;
  3999. //기타버튼 disable처리
  4000. grup_btn.btn_init.enable = false;
  4001. grup_btn.btn_signsaveasnew.enable = false;
  4002. grup_btn.btn_del.enable = false;
  4003. } else if (mode == "staff_auth_n") {
  4004. grup_btn.enable = true;
  4005. //인증저장버튼과 코사인버튼처리
  4006. grup_btn.btn_signsave.visible = true;
  4007. grup_btn.btn_cosign.visible = false;
  4008. //임시저장버튼과 기록반려버튼처리
  4009. grup_btn.btn_tmpsave.visible = true;
  4010. grup_btn.btn_resend.visible = false;
  4011. //기타버튼 disable처리
  4012. grup_btn.btn_init.enable = true;
  4013. grup_btn.btn_signsaveasnew.enable = true;
  4014. grup_btn.btn_del.enbale = true;
  4015. } else if (mode == "no_auth") {
  4016. grup_btn.enable = false;
  4017. } else if (mode == "only_signsave") {
  4018. utlf_addLog("grup_btn.components.length::"+grup_btn.components.length);
  4019. var children = grup_btn.components;
  4020. for (var i=0; i<children.length; i++) {
  4021. if (children[i] instanceof Button) {
  4022. children[i].visible = false;
  4023. }
  4024. }
  4025. grup_btn.btn_tmpsave.visible = true;
  4026. grup_btn.btn_signsave.visible = true;
  4027. grup_btn.btn_signsave.enable = true;
  4028. grup_btn.enable = true;
  4029. } else if (mode == "RecCorrect") {
  4030. grup_btn.enable = true;
  4031. // var children = grup_btn.components;
  4032. // for (var i=0; i<children.length; i++) {
  4033. // if (children[i] instanceof Button) {
  4034. // //children[i].visible = false;
  4035. // children[i].bringToPrev();
  4036. // }
  4037. // }
  4038. grup_btn.btn_signsave.visible = true;
  4039. grup_btn.btn_signsave.enable = true;
  4040. grup_btn.btn_del.visible = true;
  4041. grup_btn.btn_del.enable = true;
  4042. } else if (mode == "RecCorrectApp") {
  4043. grup_btn.enable = true;
  4044. grup_btn.btn_app.position.x = grup_btn.btn_del.position.x;
  4045. grup_btn.btn_app.position.right = grup_btn.btn_del.position.right;
  4046. grup_btn.btn_app.visible = true;
  4047. grup_btn.btn_app.enable = true;
  4048. grup_btn.btn_app.bringToFront();
  4049. } else if (mode == "RecCorrectAppTemp") {
  4050. grup_btn.enable = true;
  4051. grup_btn.btn_app.position.x = grup_btn.btn_signsave.position.x;
  4052. grup_btn.btn_app.position.right = grup_btn.btn_signsave.position.right;
  4053. grup_btn.btn_app.visible = true;
  4054. grup_btn.btn_app.enable = true;
  4055. grup_btn.btn_app.bringToFront();
  4056. }
  4057. }
  4058. /****************************************************************************************
  4059. * Argument : 01.showMsg : ture - 알림 사용
  4060. * Description : 서식유효기한이 지나면 초기화버튼과 새이름으로저장 버튼을 비활성화처리
  4061. ****************************************************************************************/
  4062. function fIsValidForm_MMR01100(showMsg) {
  4063. utlf_addLog("***** fIsValidForm_MMR01100("+showMsg+") *****");
  4064. //2010.01.20 dhkim - 서식유효기한이 지나면 초기화버튼과 새이름으로저장 버튼을 비활성화처리한다.
  4065. var formfromdt = fGetFormMast("formfromdt");
  4066. var formtodt = fGetFormMast("formtodt");
  4067. var curntdt = utlf_getCurrentDate() + utlf_getCurrentTime();
  4068. var valid = false;
  4069. if (formfromdt <= curntdt && formtodt >= curntdt)
  4070. valid = true;
  4071. if (valid == false && !utlf_isNull(showMsg) && showMsg == true) {
  4072. alert("사용이 종료된 서식입니다.\n신규작성 할 수 없으니, 서식목록에서 유효서식을 조회하여 작성해주시기 바랍니다.");
  4073. }
  4074. return valid;
  4075. }
  4076. /****************************************************************************************
  4077. * Function : fChkPreSave_MMR01100
  4078. * Description : 인증저장후에 임시저장 차단 TASK(39128)요청번호(9402)
  4079. * : call visit되지 않은 환자의 인증저장 제한(서소영선생님요청)
  4080. * Argument : 01. signedYn - 인증저장 유무
  4081. * retrun type :
  4082. * Creator :
  4083. ****************************************************************************************/
  4084. function fChkPreSave_MMR01100(signedYn)
  4085. {
  4086. sysf_trace("***** fChkPreSave_MMR01100("+signedYn+") MMR01100 인증저장후에 임시저장 차단, call visit되지 않은 환자 차단 및 컨설트 제한사항 *****");
  4087. //이윤주 수정(20150312)
  4088. fSetFormRec("signsaveyn", signedYn);
  4089. //2010.02.23 안치원 - 인증저장후에 임시저장 차단 TASK(39128)요청번호(9402) - Consult는 기존로직이 우선한다.
  4090. if (fGetFormRec("srcformcd") != "0000000677") {
  4091. if (fGetFormRec("status") == "U" && signedYn == "N" && fGetFormRec("espiyn") == "Y") {
  4092. sysf_messageBox("인증저장후에 임시저장을", "E001");
  4093. return false;
  4094. }
  4095. }
  4096. try
  4097. {
  4098. //2010-02-18 오전 9:19:50 강지훈 수정 : fClickSave를 최종진단명요약에서도 호출하기때문에 조건에따라 분기하도록 변경.
  4099. //opener의 'SSMMR01100_fChkPreSaveUseFlag' parameter로 fChkPreSave 호출여부를 판단할수 있도록 수정.
  4100. if(oOpener.frmf_getParameter("SSMMR01100_fChkPreSaveUseFlag") != "N"){
  4101. if (ivw_base.fChkPreSave(signedYn) == false){
  4102. oOpener.frmf_clearParameter("SSMMR01100_fChkPreSaveUseFlag");
  4103. return false;
  4104. }
  4105. oOpener.frmf_clearParameter("SSMMR01100_fChkPreSaveUseFlag");
  4106. }
  4107. else{
  4108. oOpener.frmf_clearParameter("SSMMR01100_fChkPreSaveUseFlag");
  4109. }
  4110. }
  4111. catch (e)
  4112. {
  4113. sysf_catchTrace(e);
  4114. }
  4115. //2010.05.26 김달현 - call visit되지 않은 응급실 환자의 인증저장 제한(서소영선생님요청)
  4116. var callvisityn = fGetPamInfo("callvisityn");
  4117. var ioflag = fGetPamInfo("ioflag");
  4118. if(signedYn == "Y" && callvisityn == "N" && ioflag == "E"){
  4119. sysf_messageBox("응급실 Visit Time을 등록 하지 않으면 기록과 처방은 임시저장만 가능 합니다.", "E");
  4120. return false;
  4121. }
  4122. //2010.06.24 김달현 - (서울성모만적용) 입원초진JCI에 대해서 입원환자의 경우 간호입실저장되어있지 않으면 인증저장 제한
  4123. //2010.07.19 김달현 - (전병원적용으로 변경) 입원초진에 대해 입원환자의 경우 간호입실저장되어있지 않으면 인증저장 제한
  4124. var srcformcd = fGetFormRec("srcformcd");
  4125. var careinrmdd = fGetPamInfo("careinrmdd");
  4126. //alert("srcformcd:"+srcformcd + ",careinrmdd:" + careinrmdd + ",dutplceinstcd:" + getUserInfo("dutplceinstcd") + ",ioflag:" + ioflag);
  4127. //if(signedYn == "Y" && getUserInfo("dutplceinstcd") == "012" && srcformcd == "0000000003" && ioflag == "I" && careinrmdd == "-"){
  4128. if(signedYn == "Y" && srcformcd == "0000000003" && ioflag == "I" && careinrmdd == "-"){
  4129. sysf_messageBox("해당환자는 간호입실확인되지 않았으므로 입원초진기록 임시저장만 가능 합니다.", "E");
  4130. return false;
  4131. }
  4132. var cnstformcd = fGetFormRec("formcd");
  4133. var cnstdoctid = utlf_isNull(ivw_base.objects["ds_init_cond"]) ? "" : ivw_base.ds_init_cond.getColumn(0, "rscdoctid");
  4134. var cnstdeptcd = fGetFormRec("formrecdeptcd");;
  4135. //20121220 정창혁 영상의학과 판독협진의뢰서 수신의 필수체크
  4136. if (cnstformcd == "1000009108"){// && cnstdeptcd == "2160000000") { //20121221 판독협진의뢰서인 경우 수신의 필수체크
  4137. if (utlf_isNull(cnstdoctid)) {
  4138. sysf_messageBox("[영상의학과 판독 협진의뢰서]인 경우 수신의는 필수입력사항입니다.", "E");
  4139. return false;
  4140. }
  4141. }
  4142. var anstflag = utlf_isNull(ivw_base.objects["ds_init_cond"]) ? "" : ivw_base.ds_init_cond.getColumn(0, "anstflag");
  4143. var rscdeptcd = utlf_isNull(ivw_base.objects["ds_init_cond"]) ? "" : ivw_base.ds_init_cond.getColumn(0, "rscdeptcd");
  4144. var oprnerId = oOpener.frmf_getScreenID();
  4145. if(oprnerId=="SMMMR05000" && rscdeptcd=="2090000000" && utlf_isNull(anstflag) && sysf_getUserInfo("dutplcecd")!="2090000000"){
  4146. sysf_messageBox("[마취통증의학과]로 컨설트 의뢰시 의뢰 구분은 필수 입력입니다.\nPCA 추가/수정 의뢰는 [마취] 선택 후 의뢰부탁드립니다.", "E");
  4147. ivw_base.grup_base.rdo_anstflag.setFocus();
  4148. return false;
  4149. }
  4150. //이윤주(20190707)
  4151. var gubunflag = utlf_isNull(ivw_base.objects["ds_init_cond"]) ? "" : ivw_base.ds_init_cond.getColumn(0, "gubunflag");
  4152. var reqdd = fGetFormRec("formrecdd");
  4153. if(oprnerId=="SMMMR05000" && rscdeptcd=="2160000000" && utlf_isNull(gubunflag) && cnstformcd=="0000000677" && reqdd > "20190722"){
  4154. sysf_messageBox("[영상의학과]로 컨설트 의뢰시 영상구분은 필수 입력입니다. 문의:영상의학과", "E");
  4155. return false;
  4156. }
  4157. return true;
  4158. }
  4159. /**
  4160. * 2010.02.25 안치원 - 입퇴원요약기록 - 퇴원처방 입력방법 변경(팝업)
  4161. * @param openFlag
  4162. * @return
  4163. */
  4164. function setInitInfo_MMR01100(key, value)
  4165. {
  4166. dsf_makeValue(ds_hidden_loader_ini, key, "string", value, null);
  4167. }
  4168. function getInitInfo_MMR01100(key)
  4169. {
  4170. var value = ds_hidden_loader_ini.getColumn(0, key);
  4171. return utlf_transNullToEmpty(value);
  4172. }
  4173. /****************************************************************************************
  4174. * Function : validPamInfo_MMR01100
  4175. * Description : 상단환자정보와 기록환자정보가 같은지 검사한다.
  4176. * Argument : 01.formFlag - 이벤트 실행구분
  4177. * retrun type : true / flase
  4178. * Creator :
  4179. ****************************************************************************************/
  4180. function validPamInfo_MMR01100(fromFlag)
  4181. {
  4182. sysf_trace("***** validPamInfo_MMR01100::"+fromFlag+" 상단환자정보와 기록환자정보가 동일한지 체크*****");
  4183. // alert("validPamInfo_MMR01100::"+fromFlag);
  4184. var oprnerId = oOpener.frmf_getScreenID();
  4185. if(oprnerId == "SMMMR00100")
  4186. {
  4187. var node = sysf_getGlobalVariable("paminfo");
  4188. var sGetTopYn = oOpener.frmf_getParameter("SSMMR01100_getTopYn"); //SSMMR01100_getTopYn => top정보 조회여부 정보(N일경우 넘어온 파라미터기준, 아닐결루 TOP정보 기준)
  4189. oOpener.frmf_clearParameter("chkdeptpresave");
  4190. if(!utlf_isNull(node) && sGetTopYn != "N")
  4191. {
  4192. dsf_createDs("ds_pamtmp_paminfo");
  4193. dsf_setCSVToDs("ds_pamtmp_paminfo", node);
  4194. var top_ioflag = ds_pamtmp_paminfo.getColumn(0, "ioflag");
  4195. var top_pid = ds_pamtmp_paminfo.getColumn(0, "pid");
  4196. var top_orddd = "";
  4197. var top_cretno = ds_pamtmp_paminfo.getColumn(0, "cretno");
  4198. var rec_pid = fGetFormRec("pid");
  4199. var rec_orddd = fGetFormRec("orddd");
  4200. var rec_cretno = fGetFormRec("cretno");
  4201. if (top_ioflag == "O" || top_ioflag == "S") {
  4202. top_orddd = ds_pamtmp_paminfo.getColumn(0, "orddd");
  4203. }
  4204. else {
  4205. top_orddd = ds_pamtmp_paminfo.getColumn(0, "indd");
  4206. }
  4207. sysf_trace("@@@@@ top_pid : " + top_pid + " || rec_pid : " + rec_pid +" || frmf_getParameter(calledflag) : " + frmf_getParameter("calledflag") + "*****");
  4208. dsf_deleteDs("ds_pamtmp_paminfo");
  4209. //20130524 정창혁 cpg인 경우 최초 저장시 EMR로 설정함. CPG인 경우 최초사용자 안타게 추가
  4210. if (top_pid != rec_pid && (utlf_isNull(frmf_getParameter("calledflag")) || frmf_getParameter("calledflag").indexOf("cpg") == -1))
  4211. {
  4212. sysf_messageBox("상단의 환자정보("+top_pid+")와 기록지의 환자정보("+rec_pid+")가 다르므로, \n다음 진행을 할 수 없습니다.", "E");
  4213. return false;
  4214. }
  4215. }
  4216. }
  4217. return true;
  4218. }
  4219. /****************************************************************************************
  4220. * Argument : 01.msgFlag : true - 알림사용
  4221. * Description : 2010-03-26 오전 9:27:48 강지훈 수정 : [요청번호 10010] 입원수진에 외래[formchosflag = 'O'] 기록 작성을 막는다.
  4222. * return type : true / false 유효여부
  4223. ****************************************************************************************/
  4224. function validFormchos_MMR01100(msgFlag){
  4225. utlf_addLog("***** validFormchos_MMR01100("+msgFlag+") MMR01100 *****");
  4226. var formchosflag = ds_data_formmast.getColumn(0, "formchosflag");
  4227. var patchosflag = ds_data_formrec.getColumn(0, "chosflag");
  4228. var ioflag = fGetPamInfo("ioflag");
  4229. //alert("formchosflag : "+ formchosflag + ", patchosflag : " + patchosflag + ", ioflag : " + ioflag );
  4230. if(ioflag != "O" && formchosflag == "O"){
  4231. if(msgFlag == true){
  4232. sysf_messageBox("입원환자이므로 외래서식을 작성하실 수", "I004");
  4233. }
  4234. return false;
  4235. }
  4236. return true;
  4237. }
  4238. /****************************************************************************************
  4239. * Argument : 01.msgFlag : true - 알림사용
  4240. * Description : 외래수진에 입원서식 사용불가토록 제어
  4241. * return type : true / false 유효여부
  4242. ****************************************************************************************/
  4243. function validFormchos_MMR01100_OUT(msgFlag){
  4244. utlf_addLog("***** validFormchos_MMR01100_OUT("+msgFlag+") MMR01100 *****");
  4245. var formchosflag = ds_data_formmast.getColumn(0, "formchosflag");
  4246. var patchosflag = ds_data_formrec.getColumn(0, "chosflag");
  4247. var ioflag = fGetPamInfo("ioflag");
  4248. if(ioflag == "O" && formchosflag == "I"){
  4249. if(msgFlag == true){
  4250. sysf_messageBox("외래 수진이므로 입원서식을 작성하실 수", "I004");
  4251. }
  4252. return false;
  4253. }
  4254. return true;
  4255. }
  4256. /****************************************************************************************
  4257. * Function : fGetEditableDept
  4258. * Description : 최초작성자와 동일한 부서 사용자인지 체크
  4259. * retrun type : true / false
  4260. * Creator :
  4261. ****************************************************************************************/
  4262. function fGetEditableDept() {
  4263. sysf_trace("***** fGetEditableDept() MMR01100 최초작성자와 동일한 부서 사용자인지 체크 ****");
  4264. dsf_createDsRow("ds_send_editable", [{col: "formcd", type:"string", size:256, val:fGetFormRec("srcformcd")}//"1000007334"
  4265. , {col: "formrecseq", type:"string", size:256, val:fGetFormRec("formrecseq")}
  4266. , {col: "pid", type:"string", size:256, val:fGetFormRec("pid")}
  4267. , {col: "dutplcecd", type:"string", size:256, val:sysf_getUserInfo("dutplcecd")}]);
  4268. dsf_createDs("ds_rtneditable_editableInfo", [{col: "editableyn", type:"string", size:256}]);
  4269. var bFlag = false;
  4270. var oParam = {};
  4271. oParam.id = "TRMMR01304";
  4272. oParam.service = "medirecapp.RecIf";
  4273. oParam.method = "reqGetEditableUserYn";
  4274. oParam.inds = "req=ds_send_editable";
  4275. oParam.outds = "ds_rtneditable_editableInfo=editableInfo";
  4276. oParam.async = false;
  4277. oParam.progress = false;
  4278. oParam.callback = "cf_TRMMR01304";
  4279. tranf_submit(oParam);
  4280. if (arErrorCode.pop("TRMMR01304") > -1 ) {
  4281. if (ds_rtneditable_editableInfo.getColumn(0, "editableyn") == "Y") {
  4282. bFlag = true
  4283. }
  4284. }
  4285. //Temp DS Del
  4286. dsf_deleteDs("ds_send_editable");
  4287. dsf_deleteDs("ds_rtneditable_editableInfo");
  4288. sysf_trace( "***** fGetEditableDept() Return bFlag : " + bFlag + " ****");
  4289. return bFlag;
  4290. }
  4291. /****************************************************************************************
  4292. * Argument : 01.sSvcId : 서비스 ID
  4293. * : 02.nErrorCode : 에러코드
  4294. * : 03.sErrorMsg : 에러메시지
  4295. * Description : cf_TRMMR01304의 콜백함수
  4296. ****************************************************************************************/
  4297. function cf_TRMMR01304(sSvcId, nErrorCode, sErrorMsg) {
  4298. arErrorCode.push(sSvcId, nErrorCode);
  4299. }
  4300. /**
  4301. * 서식로더가 Consult관리(SMMMR05000)에서 임포트시 MMR05000.js의 fSendRecInfoToSMMMO00100()를 사용하기 위한 함수
  4302. */
  4303. function fSendRecInfoSMMMR05000ToSMMMO00100(scrnid){
  4304. if(scrnid == "SMMMR05000"){
  4305. oOpener.fSendRecInfoToSMMMO00100();
  4306. }
  4307. }
  4308. /****************************************************************************************
  4309. * Argument : N/A
  4310. * Description : 현재 서식이 검사 기록지 일경우 블로킹 처리
  4311. * retrun type : true / false
  4312. ****************************************************************************************/
  4313. function fCheckedTestRecYN(){
  4314. utlf_addLog("***** fCheckedTestRecYN() SSMMR01100 *****");
  4315. var flag = false;
  4316. if(frmf_isPopup() && sysf_getObjType(this) == "Form"){
  4317. var mainobj = frmf_getMainViewer();
  4318. var mainScreenid = mainobj.frmf_getScreenID();
  4319. if( mainScreenid == "SMMMR00100"){
  4320. if( this.getOwnerFrame().form.name == "SSMMR01100"){ //opener.frmf_getScreenID()
  4321. dsf_createDs("ds_temp_existentformcd", [{col: "formrecseqyn", type:"string", size:256}]);
  4322. var oParam = {};
  4323. oParam.id = "TRMMR01106";
  4324. oParam.service = "medirecapp.ComnMediRec";
  4325. oParam.method = "reqGetCheckedExistentInspectionFormcd";
  4326. oParam.inds = "req=ds_data_formrec";
  4327. oParam.outds = "ds_temp_existentformcd=formcdyninfo";
  4328. oParam.async = false;
  4329. oParam.progress = false;
  4330. oParam.callback = "cf_TRMMR01106";
  4331. tranf_submit(oParam);
  4332. if(arErrorCode.pop("TRMMR01106") > -1){
  4333. if(ds_temp_existentformcd.getColumn(0, "formrecseqyn") == "Y"){
  4334. sysf_messageBox("검사결과 관리화면에서 삭제하시기 바랍니다!", "E999");
  4335. flag = true;
  4336. }
  4337. }
  4338. dsf_deleteDs("ds_temp_existentformcd");
  4339. }
  4340. }
  4341. }
  4342. return flag;
  4343. }
  4344. /****************************************************************************************
  4345. * Argument : 01.sSvcId : 서비스 ID
  4346. * : 02.nErrorCode : 에러코드
  4347. * : 03.sErrorMsg : 에러메시지
  4348. * Description : cf_TRMMR01106의 콜백함수
  4349. ****************************************************************************************/
  4350. function cf_TRMMR01106(sSvcId, nErrorCode, sErrorMsg) {
  4351. arErrorCode.push(sSvcId, nErrorCode);
  4352. if(nErrorCode < 0) return;
  4353. utlf_addLog("***** cf_TRMMR01106 *****");
  4354. }
  4355. function fSendSMS(){
  4356. var cnststat = fGetFormRec("cnststat");
  4357. var formrecseq = fGetFormRec("formrecseq");
  4358. var chosflag = fGetFormRec("chosflag");
  4359. var msg = "";
  4360. var sSendDsNm = dsf_createDsRow("ds_send_TRMMR01305", [{col:"formrecseq", type:"string", size:256, val:formrecseq}
  4361. ,{col:"chosflag", type:"string", size:256, val:chosflag}]);
  4362. var sRtnDsNm = dsf_createDs("ds_hidden_TRMMR01305", [{col:"smsmsg" , type:"string", size:256}
  4363. ,{col:"mpphonno" , type:"string", size:256}
  4364. ,{col:"usernm" , type:"string", size:256}
  4365. ,{col:"sendhp" , type:"string", size:256}
  4366. ,{col:"cnststat" , type:"string", size:256}
  4367. ,{col:"userid" , type:"string", size:256}]);
  4368. utlf_addLog(ds_send_TRMMR01305.saveXML());
  4369. utlf_addLog("gSMS_Async : " + gSMS_Async );
  4370. var oParam = {};
  4371. oParam.id = "TRMMR01305";
  4372. oParam.service = "medirecapp.ExtnMediRec";
  4373. oParam.method = "reqGetSmsStatus";
  4374. oParam.inds = "req="+sSendDsNm;
  4375. oParam.outds = sRtnDsNm+"=msglist";
  4376. oParam.async = gSMS_Async;
  4377. //oParam.callback = "cf_TRMMR01305"; //reqGetSmsStatus 에서 모두 처리하도록 변경(201
  4378. oParam.callback = "";
  4379. tranf_submit(oParam);
  4380. }
  4381. /****************************************************************************************
  4382. * Argument : 01.sSvcId : 서비스 ID
  4383. * : 02.nErrorCode : 에러코드
  4384. * : 03.sErrorMsg : 에러메시지
  4385. * Description : cf_TRMMR01305의 콜백함수
  4386. ****************************************************************************************/
  4387. function cf_TRMMR01305(sSvcId, nErrorCode, sErrorMsg) {
  4388. if(nErrorCode < 0) return;
  4389. var objRtnDS:Dataset = new Dataset;
  4390. objRtnDS = this.objects["ds_hidden_TRMMR01305"];
  4391. var smsmsg = objRtnDS.getColumn(0, "smsmsg");
  4392. var mpphonno = objRtnDS.getColumn(0, "mpphonno");
  4393. var usernm = objRtnDS.getColumn(0, "usernm");
  4394. var cnststat = objRtnDS.getColumn(0, "cnststat");
  4395. var sendhp = objRtnDS.getColumn(0, "sendhp");
  4396. var userid = objRtnDS.getColumn(0, "userid");
  4397. var formrecseq = fGetFormRec("formrecseq");
  4398. var flag = "";
  4399. //var recvuserid = ds_data_formrec.getColumn(0, "recvuserid");
  4400. utlf_addLog(objRtnDS.saveXML());
  4401. //tempDs Delete
  4402. dsf_deleteDs("ds_send_TRMMR01305");
  4403. dsf_deleteDs("ds_hidden_TRMMR01305");
  4404. var curtime = utlf_getCurrentTime().substr(0,4);
  4405. //dsf_createDs("ds_SMS_CommTime");
  4406. //lf_getHardCDList("N", 9962, null , ds_SMS_CommTime);
  4407. /*
  4408. var CommTimefst = lf_getHardCDList("Y", 9962, 3 , null);
  4409. var CommTimelst = CommTimefst-1000; //하드코드 시간 1730임
  4410. */
  4411. var CommTime = lf_getHardCDList("Y", 9962, 3 , null);//하드코드 시간 07301730임 from-to
  4412. var CommTimefst = CommTime.substr(0, 4); //from time
  4413. var CommTimelst = CommTime.substr(4, 8); //to time
  4414. //20160613 칠곡 본원 분리
  4415. var dutplceinstcd = sysf_getUserInfo("dutplceinstcd");
  4416. if(dutplceinstcd =='032'){
  4417. //if (curtime > CommTimefst && curtime < CommTimelst) {
  4418. if (curtime < CommTimefst || curtime > CommTimelst) {
  4419. return;
  4420. }
  4421. }
  4422. //전화번호가 없거나 이미 보낸 이력이 있으면 보내지 않는다!
  4423. if (utlf_isNull(mpphonno)) {
  4424. return;
  4425. }
  4426. //사용자 환경설정
  4427. //var answcntConsult = lf_mmbfGetUserEnvQuestValue("076");
  4428. //var answcntRecv = lf_mmbfGetUserEnvQuestValue("077");
  4429. if(dutplceinstcd == "031"){
  4430. if (cnststat >= 12 ) {
  4431. flag = "B";
  4432. fSendSMSCallBack(formrecseq,cnststat,smsmsg,mpphonno,sendhp,usernm,flag, userid);
  4433. }
  4434. }else if(dutplceinstcd =='032'){
  4435. //if(answcntConsult == "001" || answcntRecv == "001"){
  4436. if (cnststat >= 12 ) {
  4437. flag = "A";
  4438. if(cnststat == 30){
  4439. flag = "B";
  4440. }
  4441. fSendSMSCallBack(formrecseq,cnststat,smsmsg,mpphonno,sendhp,usernm,flag,userid);
  4442. }
  4443. //}
  4444. }
  4445. }
  4446. /****************************************************************************************
  4447. * Function : fSendSMSCallBAck
  4448. * Description : SMS대상자에 대한 SMS전송
  4449. * retrun type : Value
  4450. * Creator :
  4451. ****************************************************************************************/
  4452. function fSendSMSCallBack(formrecseq,cnststat,smsmsg,mpphonno,sendhp,usernm,flag,userid)
  4453. {
  4454. var sSendDsNm = dsf_createDsRow("ds_send_TXMMR01306", [{col:"formrecseq" , type:"string", size:256, val:formrecseq}
  4455. ,{col:"cnststat" , type:"string", size:256, val:cnststat}
  4456. ,{col:"smsmsg" , type:"string", size:256, val:smsmsg}
  4457. ,{col:"mpphonno" , type:"string", size:256, val:mpphonno}
  4458. ,{col:"sendhp" , type:"string", size:256, val:sendhp}
  4459. ,{col:"usernm" , type:"string", size:256, val:usernm}
  4460. ,{col:"flag" , type:"string", size:256, val:flag}
  4461. ,{col:"userid" , type:"string", size:256, val:userid}
  4462. //,{col:"recvuserid", type:"string", size:256, val:recvuserid}
  4463. ]);
  4464. var oParam = {};
  4465. oParam.id = "TXMMR01306";
  4466. oParam.service = "medirecapp.ExtnMediRec";
  4467. oParam.method = "reqExeSmsInfo";
  4468. oParam.inds = "req="+sSendDsNm;
  4469. //oParam.outds = "ds_=msglist";
  4470. oParam.async = gSMS_Async;
  4471. //oParam.callback = "cf_TXMMR01305";
  4472. tranf_submit(oParam);
  4473. }
  4474. /****************************************************************************************
  4475. * Function : fGetFormMast
  4476. * Description : key값에 해당되는 서식 마스터정보 가져오기
  4477. * retrun type : Value
  4478. * Creator : MRF02000에서 서식관련 으로 이동
  4479. ****************************************************************************************/
  4480. function fGetFormMast(key)
  4481. {
  4482. if(this.name == "div_work") // 기록보기 그리드에서 선택시 필요
  4483. {
  4484. ivw_loader.ds_data_formmast.getColumn(0, key);
  4485. }
  4486. else
  4487. {
  4488. //return ds_data_formmast.getColumn(0, key);
  4489. return dsf_getColumnNullToEmpty(ds_data_formmast, 0, key);
  4490. }
  4491. }
  4492. /****************************************************************************************
  4493. * Function : fSetFormRec
  4494. * Description : 해당 값을 인스턴스에 추가
  4495. * retrun type :
  4496. * Creator : MMR01300에서 서식관련으로 이동
  4497. ****************************************************************************************/
  4498. function fSetFormRec(key, val)
  4499. {
  4500. if(ds_data_formrec.getColumnInfo(key) == null)
  4501. {
  4502. ds_data_formrec.addColumn(key, "string");
  4503. }
  4504. if(ds_data_formrec.rowcount == 0)
  4505. ds_data_formrec.addRow();
  4506. ds_data_formrec.setColumn(0, key, val);
  4507. }
  4508. /****************************************************************************************
  4509. * Function : fGetFormRec
  4510. * Description : key값에 해당되는 서식 기록정보 가져오기
  4511. * retrun type :
  4512. * Creator : MMR01300에서 서식관련으로 이동
  4513. ****************************************************************************************/
  4514. function fGetFormRec(key)
  4515. {
  4516. if(!utlf_isNull(key))
  4517. {
  4518. if(ds_data_formrec.getColumnInfo(key) != null)
  4519. return ds_data_formrec.getColumn(0, key);
  4520. else
  4521. return "";
  4522. }
  4523. }
  4524. /****************************************************************************************
  4525. * Function : fExistFolder
  4526. * Description : 폴더 존재여부 파악
  4527. * retrun type : 폴더 생성
  4528. * Creator :
  4529. ****************************************************************************************/
  4530. function fExistFolder(foldernm)
  4531. {
  4532. var fso, folder, s;
  4533. var usernm = objExt.getUserName();
  4534. if(utlf_isNull(foldernm))
  4535. {
  4536. return;
  4537. }
  4538. var folderDept = foldernm.split("\\");
  4539. var currentPos = folderDept[0];
  4540. for(var i =1; i<folderDept.length ; i++)
  4541. {
  4542. if(utlf_isNull(folderDept[i]))
  4543. {
  4544. break;
  4545. }
  4546. currentPos += ("\\" + folderDept[i]);
  4547. objExt.checkDirectory(currentPos, 1); // option : 1 ? 없으면 create
  4548. }
  4549. }
  4550. /****************************************************************************************
  4551. * Description : 기록내용 삭제
  4552. * retrun type :
  4553. * History : ClearComnFormData sync !!!!
  4554. ****************************************************************************************/
  4555. function lf_clearFormRec()
  4556. {
  4557. utlf_addLog("***** lf_clearFormRec() 기록 내용 삭제 *****");
  4558. var formprogflag = fGetFormMast("formprogflag");
  4559. utlf_addLog("@@@@@ formprogflag : " + formprogflag + " @@@@@");
  4560. if(formprogflag == "PROG")
  4561. {
  4562. if (!utlf_isNull(ivw_base.gMaxSectionID))
  4563. {
  4564. //var MaxObj = ivw_base.grup_base.components["lbl_" + ivw_base.gMaxSectionID];
  4565. frmf_inputEnterKey( "ivw_base.grup_base.lbl_"+ivw_base.gMaxSectionID, "onclick", new ClickEventInfo);
  4566. }
  4567. if (fGetFormMast("srcformcd") == "0000000677") {
  4568. ivw_base.lf_clearFormRec_CS();
  4569. ivw_base.lf_extnInitFormRec();
  4570. return;
  4571. }
  4572. for(var i = 0; i < ivw_base.ds_data_recitem.rowcount; i++) // 기록아이템 초기화
  4573. {
  4574. if(ivw_base.ds_data_recitem.getColumnInfo("reccnts") != null)
  4575. ivw_base.ds_data_recitem.setColumn(i, "reccnts", "");
  4576. if(ivw_base.ds_data_recitem.getColumnInfo("rectermcd") != null)
  4577. ivw_base.ds_data_recitem.setColumn(i, "rectermcd", "");
  4578. if(ivw_base.ds_data_recitem.getColumnInfo("rectermnm") != null)
  4579. ivw_base.ds_data_recitem.setColumn(i, "rectermnm", "");
  4580. if(ivw_base.ds_data_recitem.getColumnInfo("recimge") != null)
  4581. ivw_base.ds_data_recitem.setColumn(i, "recimge", "");
  4582. if(ivw_base.ds_data_recitem.getColumnInfo("srcimge") != null)
  4583. ivw_base.ds_data_recitem.setColumn(i, "srcimge", "");
  4584. }
  4585. for(var i = 0; i < ivw_base.gItemCds.length; i++)
  4586. {
  4587. var divComp = ivw_base.grup_base.components["ivw_" + ivw_base.gItemCds[i]];
  4588. var mtxComp = ivw_base.grup_base.components["tar_" + ivw_base.gItemCds[i]];
  4589. if(!utlf_isNull(divComp))
  4590. {
  4591. var sFormprogflag = ds_data_unitformmast.lookup("orgsupdegnitemcd", ivw_base.gItemCds[i], "formprogflag");
  4592. if(sFormprogflag == "PROG")
  4593. {
  4594. var oDs = divComp.objects[divComp.grd_diaglist.binddataset];
  4595. if(divComp.isValidObject(oDs))
  4596. {
  4597. oDs.clearData();
  4598. oDs.addRow();
  4599. }
  4600. }
  4601. else if(!utlf_isNull(divComp) && !utlf_isNull(divComp.url))
  4602. {
  4603. divComp.ds_data_itemvalue.clearData();
  4604. divComp.ds_data_itemvalue.addRow();
  4605. for(var j = 0; j < divComp.ds_data_itemvalue.colcount; j++)
  4606. {
  4607. var ColId = divComp.ds_data_itemvalue.getColID(j);
  4608. if(ColId.indexOf("RDO_") > -1 || ColId.indexOf("CHK_") > -1)
  4609. {
  4610. divComp.lf_setSelCtrl(ColId, ""); // 컴포짓 초기화
  4611. }
  4612. }
  4613. for(var k = 0; k < divComp.all.length; k++)
  4614. {
  4615. if(divComp.all[k] instanceof ActiveX) // 이미지 정보 취합
  4616. {
  4617. var obj_Image = divComp.all[k];
  4618. obj_Image.Clear();
  4619. }
  4620. }
  4621. for(var m = 0; m < divComp.ds_data_recitem.rowcount; m++)
  4622. {
  4623. divComp.ds_data_recitem.setColumn( m, "reccnts", "");
  4624. divComp.ds_data_recitem.setColumn( m, "rectermcd", "");
  4625. divComp.ds_data_recitem.setColumn( m, "rectermnm", "");
  4626. divComp.ds_data_recitem.setColumn( m, "recimge", "");
  4627. divComp.ds_data_recitem.setColumn( m, "srcimge", "");
  4628. }
  4629. divComp.lf_setSrchData();
  4630. }
  4631. else
  4632. {
  4633. mtxComp.value = "";
  4634. }
  4635. }
  4636. else
  4637. {
  4638. mtxComp.value = "";
  4639. }
  4640. }
  4641. var bGroup = false;
  4642. for(var i = 0; i < ivw_base.grup_base.components.length; i++)
  4643. {
  4644. var ctrlObj = ivw_base.grup_base.components[i];
  4645. var degnitemlevlcd = ctrlObj.degnitemlevlcd;
  4646. if( !utlf_isNull(degnitemlevlcd) )
  4647. ctrlObj.value = "";
  4648. if( ctrlObj.name == "group1")
  4649. bGroup = true;
  4650. }
  4651. if( bGroup == true ){
  4652. for(var i = 0; i < ivw_base.grup_base.group1.components.length; i++)
  4653. {
  4654. var ctrlObj = ivw_base.grup_base.group1.components[i];
  4655. //var degnitemno = ctrlObj.degnitemno;
  4656. var degnitemlevlcd = ctrlObj.degnitemlevlcd;
  4657. if(!utlf_isNull(degnitemlevlcd))
  4658. ctrlObj.value = "";
  4659. }
  4660. }
  4661. }
  4662. else // 일반서식
  4663. {
  4664. if( ivw_base.isValidObject("ds_data_itemvalue") ){
  4665. var itemvalueDS = ivw_base.ds_data_itemvalue;
  4666. var recDS = ivw_base.ds_data_recitem;
  4667. itemvalueDS.clearData();
  4668. itemvalueDS.addRow();
  4669. for(var i = 0; i < itemvalueDS.colcount; i++)
  4670. {
  4671. var ColId = itemvalueDS.getColID(i);
  4672. if(ColId.indexOf("RDO_") > -1 || ColId.indexOf("CHK_") > -1)
  4673. {
  4674. ivw_base.lf_setSelCtrl(ColId, ""); // 컴포짓 초기화
  4675. }
  4676. }
  4677. for(var k = 0; k < ivw_base.all.length; k++)
  4678. {
  4679. if(ivw_base.all[k] instanceof ActiveX) // 이미지 정보 취합
  4680. {
  4681. var obj_Image = ivw_base.all[k];
  4682. obj_Image.Clear();
  4683. }
  4684. if(ivw_base.all[k] instanceof Grid) //Object를 비교하는 구문
  4685. {
  4686. var vGridType = ivw_base.all[k].gridtype;
  4687. var nDegnitemno;
  4688. var dsNm = ivw_base.all[k].binddataset;
  4689. if(!utlf_isNull(dsNm) && dsNm.indexOf("ds_data_grd_") != -1)
  4690. {
  4691. nDegnitemno = dsNm.replace("ds_data_grd_", "");
  4692. }
  4693. if( !utlf_isNull(nDegnitemno) ){
  4694. if(!utlf_isNull(vGridType) && (vGridType == "T" || vGridType == "X")){//누적 그리드
  4695. var obj_GrdDs = ivw_base.objects[dsNm];
  4696. var nRowCnt = obj_GrdDs.rowcount;
  4697. var nColCnt = obj_GrdDs.getColCount();
  4698. for(var i=0; i<nRowCnt; i++){
  4699. for(var j=1; j<nColCnt; j++){
  4700. obj_GrdDs.setColumn(i, j, "");
  4701. }
  4702. }
  4703. }else{
  4704. var obj_GrdDs = ivw_base.objects[dsNm];
  4705. if( !utlf_isNull(obj_GrdDs) ){
  4706. obj_GrdDs.clearData();
  4707. obj_GrdDs.addRow();
  4708. var sFstlevlcd = recDS.lookupExpr("degnitemkind == 'GRD' && degnitemno == '"+nDegnitemno+"' && rowno == '0' && colno == '-1'", "fstlevlitemcd");
  4709. if( !utlf_isNull(sFstlevlcd) ){
  4710. recDS.filter("rowno!='0' && fstlevlitemcd == '"+sFstlevlcd+"'");
  4711. var nRowCnt = recDS.getRowCount();
  4712. for(var i=(nRowCnt-1);i>=0; i--)
  4713. {
  4714. recDS.deleteRow(i);
  4715. }
  4716. recDS.filter("");
  4717. }else{
  4718. sysf_trace("::::: Degnitemno(" + nDegnitemno + ") 에 대한 그리드의 fstlevlitemcd 값이 존재하지 않습니다. :::::");
  4719. }
  4720. }
  4721. }
  4722. }else{
  4723. sysf_trace("::::: 그리드 데이터 삭제 시 nDegnitemno 값이 존재하지 않습니다. :::::");
  4724. }
  4725. }
  4726. }
  4727. for(var i = 0; i < recDS.rowcount; i++)
  4728. {
  4729. if(recDS.getColumnInfo("reccnts") != null)
  4730. recDS.setColumn(i, "reccnts", "");
  4731. if(recDS.getColumnInfo("rectermcd") != null)
  4732. recDS.setColumn(i, "rectermcd", "");
  4733. if(recDS.getColumnInfo("rectermnm") != null)
  4734. recDS.setColumn(i, "rectermnm", "");
  4735. if(recDS.getColumnInfo("recimge") != null)
  4736. recDS.setColumn(i, "recimge", "");
  4737. if(recDS.getColumnInfo("srcimge") != null)
  4738. recDS.setColumn(i, "srcimge", "");
  4739. }
  4740. //ivw_base.lf_setSrchData();
  4741. }
  4742. }
  4743. }
  4744. /****************************************************************************************
  4745. * Function : lf_getProgFormRecData
  4746. * Description : 공통서식 화면별로 기록정보 조합
  4747. * : lf_getRecDs 호출
  4748. * retrun type :
  4749. * Creator :
  4750. ****************************************************************************************/
  4751. function lf_getProgFormRecData(mode, tmp)
  4752. {
  4753. // 공통서식 화면별로 기록정보 조합
  4754. var rtn = ivw_base.lf_getUnitFormRecData(mode, tmp); //lf_getRecDS
  4755. return rtn;
  4756. }
  4757. /****************************************************************************************
  4758. * Function : lf_isModify
  4759. * Description : 현재 열려진 서식의 데이터 수정여부를 반환
  4760. * retrun type : Y, N
  4761. * Creator :
  4762. ****************************************************************************************/
  4763. function lf_isModify()
  4764. {
  4765. utlf_addLog("***** lf_isModify() *****");
  4766. if(utlf_isNull(ivw_base.url))
  4767. {
  4768. rtn = "N";
  4769. return rtn;
  4770. }
  4771. var rtn;
  4772. var ischg_formrec = false;
  4773. var ischg_recitem = false;
  4774. var objRecDS:Dataset = new Dataset;
  4775. var nRecRow;
  4776. if(isProgForm()) // 공통서식 기록데이터 취합
  4777. {
  4778. ivw_base.lf_getUnitFormRecData(null, "1"); //lf_getRecDS
  4779. objRecDS = ivw_base.ds_data_recitem;
  4780. g_recitem_newrec = ivw_base.fGetCSV("ds_data_recitem"); // 다른 서식 로드시점의 기록 데이터
  4781. nRecRow = objRecDS.rowcount;
  4782. }
  4783. else // 공통 이외서식 기록데이터 취합
  4784. {
  4785. lf_getGenFormData(null, "1");
  4786. g_recitem_newrec = fGetCSV("ds_data_recitem"); // 다른 서식 로드시점의 기록 데이터
  4787. nRecRow = ds_data_recitem.rowcount;
  4788. }
  4789. g_formrec_newimge = fGetCSV("formrec");
  4790. g_recitem_newimge = fGetCSV("ds_data_recitem");
  4791. utlf_addLog(" g_recitem_oldrec : " + g_recitem_oldrec );
  4792. utlf_addLog("\r\n g_recitem_newrec : " + g_recitem_newrec );
  4793. if( (g_recitem_oldrec == g_recitem_newrec) || nRecRow == 0 ) // 기록 내용변동이 없거나 저장할 기록이 없으면 저장여부 jump
  4794. rtn = "N";
  4795. else
  4796. rtn = "Y";
  4797. //이윤주 수정
  4798. var srcformcd = fGetFormRec("srcformcd");
  4799. if (srcformcd == "0800003416")
  4800. {
  4801. rtn = "N";
  4802. }
  4803. return rtn;
  4804. }
  4805. /****************************************************************************************
  4806. * Function : lf_getGenFormData
  4807. * Description : 공통서식을 제외한 서식 기록데이터 취합
  4808. * Argument : 01. mode - 필수체크 및 취합 목적에 따른 구분
  4809. * retrun type : true / false
  4810. * Creator :
  4811. ****************************************************************************************/
  4812. function lf_getGenFormData(mode, tmp)
  4813. {
  4814. utlf_addLog("***** lf_getGenFormData("+mode+") 공통서식을 제외한 서식 기록데이터 취합 *****");
  4815. var dsNm = "";
  4816. var imgNm = "";
  4817. var dsDegnNo = "";
  4818. var formdengnseq = ds_data_formrec.getColumn(0, "formdegnseq");
  4819. if( utlf_isNull( tmp ))
  4820. {
  4821. var rtn = lf_chkEssential(); // 필수입력 체크 함수 mmrcommon.xjs
  4822. if(rtn == false)
  4823. {
  4824. return rtn;
  4825. }
  4826. }
  4827. //20170619 x009 추가 - x축그리드 정보 clear
  4828. if( !utlf_isNull(fGetFormRec("xgridtempnodeinfo")) ){
  4829. fSetFormRec("xgridtempnodeinfo", "");
  4830. }
  4831. var recitemDs:Dataset = new Dataset;
  4832. var ivw_recitemDs:Dataset = new Dataset;
  4833. if( !utlf_isNull( mode ) ){
  4834. if( !ivw_base.isValidObject("ds_hidden_recitem") ){
  4835. dsf_copyDsList(["ds_hidden_recitem"], ["ds_data_recitem"], "replace", ivw_base, ivw_base);
  4836. }
  4837. if( !isValidObject("ds_hidden_recitem") ){
  4838. dsf_copyDsList(["ds_hidden_recitem"], ["ds_data_recitem"], "replace", this, this);
  4839. }
  4840. ivw_recitemDs = ivw_base.objects["ds_hidden_recitem"];
  4841. recitemDs = this.objects["ds_hidden_recitem"];
  4842. }else{
  4843. ivw_recitemDs = ivw_base.objects["ds_data_recitem"];
  4844. recitemDs = this.objects["ds_data_recitem"];
  4845. }
  4846. for(var i = 0; i < ivw_base.all.length; i++)
  4847. {
  4848. if(ivw_base.all[i] instanceof Dataset) //Object를 비교하는 구문
  4849. {
  4850. dsNm = ivw_base.all[i].name;
  4851. if(dsNm.indexOf("ds_data_grd_") != -1)
  4852. {
  4853. dsDegnNo = dsNm.replace("ds_data_grd_", "");
  4854. ivw_base.fGetFormGridRec(dsNm, dsDegnNo, mode); // 그리드 내용을 recitem에 세팅 MMRCommon.xjs
  4855. }
  4856. }
  4857. ivw_base.ds_data_recitem.filter("");
  4858. if(ivw_base.all[i] instanceof ActiveX) // 이미지 정보 취합
  4859. {
  4860. var imgDegnNo;
  4861. var obj_Image = ivw_base.all[i];
  4862. var obj_ImageNm = ivw_base.all[i].name;
  4863. if(obj_ImageNm.indexOf("IMG_") > -1)
  4864. {
  4865. imgDegnNo = obj_ImageNm.replace("IMG_", "");
  4866. var nRow = ivw_recitemDs.findRow("degnitemno", imgDegnNo);
  4867. ivw_recitemDs.setColumn(nRow, "reccnts", obj_Image.GetShapeString());
  4868. var objColumnInfo = ivw_recitemDs.getColumnInfo("recimge");
  4869. var objBlob = objExt.decodeBase64(obj_Image.SaveJpegBase64(), "BIN");
  4870. ivw_recitemDs.setColumn(nRow, "recimge", objBlob);
  4871. }
  4872. }
  4873. // CAL userMask include, MaskEdit
  4874. if(ivw_base.all[i] instanceof Calendar || ivwObj.all[i] instanceof MaskEdit)
  4875. {
  4876. var calDegnNo;
  4877. var obj_Cal = ivw_base.all[i];
  4878. var obj_CalNm = ivw_base.all[i].name;
  4879. //if(obj_CalNm.indexOf("CAL_") > -1){
  4880. if( !utlf_isNull(obj_Cal.userMask) && obj_Cal.userMask == "include" && !utlf_isNull(obj_Cal.text) ){
  4881. utlf_addLog( obj_CalNm + " 의 현재 Text는 " + obj_Cal.text );
  4882. //calDegnNo = obj_CalNm.replace("CAL_", "");
  4883. calDegnNo = obj_CalNm.split("_")[1];
  4884. var nRow = ivw_recitemDs.findRow("degnitemno", calDegnNo);
  4885. var nReccnts = ivw_recitemDs.getColumn(nRow, "reccnts");
  4886. if( !utlf_isNull(nReccnts) ){
  4887. utlf_addLog( obj_CalNm + " 의 recitem의 reccnts 값은 " + nReccnts );
  4888. ivw_recitemDs.setColumn(nRow, "reccnts", obj_Cal.text);
  4889. }
  4890. }
  4891. //}
  4892. }
  4893. }
  4894. recitemDs.copyData(ivw_recitemDs);
  4895. // 저장할 항목의 상위정보를 가지고 오기위함
  4896. dsf_createDs("ds_temp_recitem");
  4897. ds_temp_recitem.assign(recitemDs);
  4898. if( !utlf_isNull( mode ) ){
  4899. var objDs = ivw_base.removeChild("ds_hidden_recitem");
  4900. delete objDs;
  4901. objDs = null;
  4902. }
  4903. // 공통서식 이외 서식 기록데이터 취합 후 데이터없는 row 삭제
  4904. var recCol = "";
  4905. var recVal = "";
  4906. for(var i = 0; i < recitemDs.rowcount; i++)
  4907. {
  4908. var recFormdegnseq = recitemDs.getColumn(i, "formdegnseq");
  4909. if(utlf_isNull(recFormdegnseq))
  4910. recitemDs.setColumn(i, "formdegnseq", formdengnseq);
  4911. degnitemkind = recitemDs.getColumn(i, "degnitemkind");
  4912. if(degnitemkind == "MTX" || degnitemkind == "STX" || degnitemkind == "CAL" || degnitemkind == "MSK" || degnitemkind == "IMG" || degnitemkind == "FDG")
  4913. {
  4914. recCol = "reccnts";
  4915. }
  4916. else if(degnitemkind == "CMB" || degnitemkind == "CHK" || degnitemkind == "RDO" || degnitemkind == "MSL" || degnitemkind == "BOL" || degnitemkind == "SSL")
  4917. {
  4918. recCol = "rectermcd";
  4919. }
  4920. else if(degnitemkind == "GRD" || degnitemkind == "GSU" || degnitemkind == "GSL" || degnitemkind == "GXB")
  4921. {
  4922. continue;
  4923. }
  4924. if(!utlf_isNull(recCol))
  4925. {
  4926. recVal = recitemDs.getColumn(i, recCol);
  4927. }else{
  4928. recitemDs.deleteRow(i);
  4929. i = i-1;
  4930. continue;
  4931. }
  4932. if(utlf_isNull(recVal))
  4933. {
  4934. var bDel = true;
  4935. // 2017.07.18 CHK EXTN Check!!
  4936. // 2018.11.26 BOL EXTN Check!!
  4937. if( degnitemkind == "CHK" || degnitemkind == "BOL" ){
  4938. recCol = "reccnts";
  4939. recVal = recitemDs.getColumn(i, recCol);
  4940. if( !utlf_isNull(recVal) ){
  4941. bDel = false;
  4942. }
  4943. }
  4944. if( bDel ){
  4945. recitemDs.deleteRow(i);
  4946. i = i-1;
  4947. }
  4948. }
  4949. }
  4950. //특수서식만 테스트
  4951. //저장할 항목의 상위정보를 가지고 오기위함
  4952. /*
  4953. 1. 수정일시 : 2019-08-29
  4954. 2. 발생현상 : 화면을 갱신하지 않는 화면의 기록 최초저장 후 수정할때 발생
  4955. 계층레벨이 2이상 단독으로 저장데이터가 존재할때 상위정보를 설정못하는 현상
  4956. 3. 수정사항 : lf_getParent 함수에서 filterStr 정보를 정상적으로 설정하도록 처리
  4957. filterStrAll 초기화 로직 추가
  4958. */
  4959. if( fGetFormMast("formprogflag") == "-" ){
  4960. filterStrAll = "";
  4961. for( var i = 0; i < recitemDs.rowcount; i++)
  4962. {
  4963. var nDegnitemkind = recitemDs.getColumn(i, "degnitemkind");
  4964. var nDegnitemno = recitemDs.getColumn(i, "degnitemno");
  4965. if(degnitemkind == "GRD" || degnitemkind == "GSU" || degnitemkind == "GSL")
  4966. {
  4967. continue;
  4968. }
  4969. var filterStr = "";
  4970. var nFindRow = ds_data_formdegn.findRow("degnitemno", nDegnitemno);
  4971. var supdegnitemno = ds_data_formdegn.getColumn(nFindRow, "supdegnitemno");
  4972. if( !utlf_isNull(supdegnitemno) && supdegnitemno != "0" ){
  4973. filterStr = lf_getParent(supdegnitemno, filterStr);
  4974. }
  4975. if( !utlf_isNull(filterStr) ){
  4976. ds_temp_recitem.filter(filterStr);
  4977. var nTempCnt = ds_temp_recitem.rowcount;
  4978. for( var j = ds_temp_recitem.rowcount-1; j >= 0; j--){
  4979. nDegnitemno = ds_temp_recitem.getColumn(j, "degnitemno");
  4980. if( recitemDs.findRow("degnitemno",nDegnitemno) > -1 ){
  4981. continue;
  4982. }
  4983. if( ds_temp_recitem.getColumn(j, "degnitemkind") == "MSL" ){
  4984. if( utlf_isNull(ds_temp_recitem.getColumn(j, "rectermcd"))
  4985. && utlf_isNull(ds_temp_recitem.getColumn(j, "reccnts")) ){
  4986. continue;
  4987. }
  4988. }
  4989. var nRow = recitemDs.insertRow(i);
  4990. recitemDs.copyRow(nRow, ds_temp_recitem, j);
  4991. }
  4992. ds_temp_recitem.filter("");
  4993. }
  4994. }
  4995. }
  4996. //temp dataset delete
  4997. dsf_deleteDs("ds_temp_recitem");
  4998. utlf_addLog("***** lf_getGenFormData fGetFormMast(\"formprogflag\") == \"main\" : " + fGetFormMast("formprogflag"));
  4999. if(fGetFormMast("formprogflag") == "MAIN" || fGetFormMast("formprogflag") == "-" )
  5000. lf_sortGenForm(mode); // 일반 서식 디자인 정보순 정렬 함수 MMMRcommon.xjs
  5001. }
  5002. var filterStrAll = "";
  5003. /****************************************************************************************
  5004. * Description : 저장할 항목의 상위정보를 가지고 오기위함
  5005. * Argument : 01. degnitemno
  5006. * : 02. filterStr
  5007. * retrun type : string
  5008. * Creator :
  5009. ****************************************************************************************/
  5010. function lf_getParent(degnitemno, filterStr){
  5011. var srchno = "'" + degnitemno + "'";
  5012. if(!utlf_isSearchString(filterStr, srchno) && !utlf_isSearchString(filterStrAll, srchno))
  5013. {
  5014. if(utlf_isNull(filterStr))
  5015. filterStr = "degnitemno == '" + degnitemno + "'";
  5016. else
  5017. filterStr += " || degnitemno == '" + degnitemno + "'";
  5018. }
  5019. var nFindRow = ds_data_formdegn.findRow("degnitemno", degnitemno);
  5020. var supdegnitemno = ds_data_formdegn.getColumn(nFindRow, "supdegnitemno");
  5021. if(!utlf_isNull(supdegnitemno) && supdegnitemno != "0")
  5022. {
  5023. filterStr = lf_getParent(supdegnitemno, filterStr);
  5024. if(utlf_isNull(filterStrAll))
  5025. filterStrAll = filterStr;
  5026. else
  5027. filterStrAll += " || " + filterStr;
  5028. }
  5029. return filterStr;
  5030. }
  5031. /****************************************************************************************
  5032. * Function : lf_loadSMMMR01100
  5033. * Description : 서식을 로드한다.
  5034. * Argument : 01. bPopup : 팝업 여부
  5035. * : 02. objArg = ds_cond_formdata
  5036. * : 03. ds_cond_formdata.formcd : 서식 코드 또는 서식기록 코드
  5037. * : 04. ds_cond_formdata.formkind : 서식유형(new: 신규, rec: 기록)
  5038. * : 05. ds_cond_formdata.pid : 환자 등록번호(상단에 환자정보 없을 시
  5039. * : 06. ds_cond_formdata.orddd : 진료일(상단에 환자정보 없을 시
  5040. * : 07. ds_cond_formdata.cretno : 생성번호(상단에 환자정보 없을 시
  5041. * : 08. ds_cond_formdata.unpreprec: 미비기록 여부
  5042. * : 08. ds_cond_formdata.modalyn : 모달팝업 여부(default : open)
  5043. * : 08. path : 로더 경로
  5044. * retrun type :
  5045. * Creator :
  5046. ****************************************************************************************/
  5047. function lf_loadSMMMR01100(bPopup, objArg, path)
  5048. {
  5049. utlf_addLog("***** lf_loadSMMMR01100("+bPopup+", "+objArg+", "+path+") 서식 화면을 로드 및 lf_resetForm 호출 *****");
  5050. var formkind = objArg.ds_cond_formdata.getColumn(0, "formkind");
  5051. var formcd = objArg.ds_cond_formdata.getColumn(0, "formcd");
  5052. var modalYn;
  5053. if(!utlf_isNull(objArg.ds_cond_formdata.getColumnInfo("modalyn")))
  5054. modalYn = objArg.ds_cond_formdata.getColumn(0, "modalyn");
  5055. var scrnId = "SSMMR01100";
  5056. if( !utlf_isNull(objArg.ds_cond_formdata.getColumnInfo("scrnidx")) && !utlf_isNull(objArg.ds_cond_formdata.getColumn(0, "scrnidx")) ){
  5057. scrnId = scrnId + "_" + objArg.ds_cond_formdata.getColumn(0, "scrnidx");
  5058. }
  5059. var bPrevPos = null;
  5060. var nMonitor = null;
  5061. var nLeft = null;
  5062. var nTop = null;
  5063. if(!utlf_isNull(objArg.ds_cond_formdata.getColumnInfo("monitor")))
  5064. nMonitor = objArg.ds_cond_formdata.getColumn(0, "monitor");
  5065. if(!utlf_isNull(objArg.ds_cond_formdata.getColumnInfo("left")))
  5066. nLeft = objArg.ds_cond_formdata.getColumn(0, "left");
  5067. if(!utlf_isNull(objArg.ds_cond_formdata.getColumnInfo("top")))
  5068. nTop = objArg.ds_cond_formdata.getColumn(0, "top");
  5069. if( !utlf_isNull(nMonitor) || !utlf_isNull(nLeft) || !utlf_isNull(nTop) )
  5070. bPrevPos = false;
  5071. if(utlf_isNull(path))
  5072. {
  5073. if(this.name == "ivw_loader")
  5074. path = this;
  5075. else
  5076. path = this.components["ivw_loader"];
  5077. }
  5078. else
  5079. path = path.components["ivw_loader"];
  5080. /*
  5081. return 위치 변경하여 서식로더 초기화
  5082. 진료대상자 리스트(외래 외)와 처방진료대상자 리스트(외래)의 구분값이 다를경우
  5083. 진료대상자 리스트의 구분을 우선적으로 적용하므로 로드할 서식의 formcd 가 존재하지 않음.
  5084. */
  5085. if (utlf_isNull(formkind) || utlf_isNull(formcd)){
  5086. if(bPopup == false)
  5087. {
  5088. if(!utlf_isNull(path.url))
  5089. {
  5090. path.ivw_base.url = "";
  5091. }
  5092. }
  5093. return;
  5094. }
  5095. if(bPopup == false)
  5096. {
  5097. if(!utlf_isNull(path.url))
  5098. {
  5099. path.lf_resetForm();
  5100. }
  5101. else
  5102. {
  5103. path.url = "";
  5104. path.url = "emr_medirecxp::SSMMR01100_서식로더.xfdl";
  5105. }
  5106. }
  5107. else
  5108. {
  5109. if(!utlf_isNull(modalYn) && modalYn == "Y")
  5110. {
  5111. frmf_modal(scrnId, "SSMMR01100", objArg, bPrevPos, nMonitor, nLeft, nTop, "", "", "", "", "", "M");
  5112. }
  5113. else
  5114. {
  5115. var objForm = frmf_findPopup(scrnId);
  5116. if(utlf_isNull(objForm))
  5117. {
  5118. frmf_open(scrnId, "SSMMR01100", objArg, bPrevPos, nMonitor, nLeft, nTop, "", "", "", "", "", "M");
  5119. }
  5120. else
  5121. {
  5122. objForm.lf_resetForm();
  5123. frmf_setFocusPop(scrnId);
  5124. }
  5125. }
  5126. }
  5127. }
  5128. /****************************************************************************************
  5129. * Function : lf_srchNewFormInfo
  5130. * Description : 기록 유효성 권한 검사-validateRec()와 로드할 기록 서식의 기본정보 조회-fGetNewFormMast() 통합 => 속도 개선 및 소스 정리
  5131. * Argument : 01. formcd : 서식 코드
  5132. * retrun type :
  5133. * Creator :
  5134. ****************************************************************************************/
  5135. function lf_srchNewFormInfo(formcd)
  5136. {
  5137. utlf_addLog("***** lf_srchNewFormInfo(formcd) 기록유효성권한검사 및 서식 기본정보 조회 *****");
  5138. if(gChkModiRecFlag)
  5139. {
  5140. var recsavechk = oOpener.frmf_getParameter("SSMMR01100_recsavechk");
  5141. oOpener.frmf_clearParameter("SSMMR01100_recsavechk");
  5142. if( (grup_btn.visible && grup_btn.btn_signsave.visible && grup_btn.btn_signsave.enable) && recsavechk != "Y" && lf_isModify() == "Y" )
  5143. {
  5144. if (formcd != "0800003416" && sysf_messageBox("기록내용 중 저장되지 않은 내용이 있습니다.", "Q002") == 6)
  5145. {
  5146. fClickSave("Y");
  5147. }
  5148. }
  5149. }
  5150. // 2016.04.22 기록확정저장시 기준일자 제어 제거
  5151. // 2016.04.08 순환기내과 채성철교수님 요청 기록확정저장시 기준일자 제어
  5152. // 변수 초기화
  5153. // gChkFormrecdt = true;
  5154. var pid = "";
  5155. var pidindx = "";
  5156. var orddd = "";
  5157. var cretno = "";
  5158. var ioflag = "";
  5159. var orddeptcd = "";
  5160. var paminfo = sysf_getGlobalVariable("paminfo");
  5161. var sGetTopYn = oOpener.frmf_getParameter("SSMMR01100_getTopYn");
  5162. if(!utlf_isNull(paminfo) && gTopYn == true)//&& sGetTopYn != "N"
  5163. {
  5164. //ds_data_paminfo.loadCSV(paminfo); // 환자정보 row 정렬
  5165. dsf_setCSVToDs("ds_data_paminfo", paminfo);
  5166. pid = ds_data_paminfo.getColumn(0, "pid");
  5167. cretno = ds_data_paminfo.getColumn(0, "cretno");
  5168. ioflag = ds_data_paminfo.getColumn(0, "ioflag");
  5169. orddeptcd = ds_data_paminfo.getColumn(0, "orddeptcd");
  5170. if (ioflag == "O" || ioflag == "S") {
  5171. orddd = ds_data_paminfo.getColumn(0, "orddd");
  5172. }
  5173. else
  5174. {
  5175. orddd = ds_data_paminfo.getColumn(0, "indd");
  5176. }
  5177. }
  5178. else if(ds_cond_formdata.rowcount > 0 && !utlf_isNull(ds_cond_formdata.getColumn(0, "pid")))
  5179. {
  5180. // 로더 호출 시 objArg에 담겨있는 ds_cond_formdata로 환자정보 세팅.
  5181. pid = ds_cond_formdata.getColumn(0, "pid");
  5182. orddd = ds_cond_formdata.getColumn(0, "orddd");
  5183. cretno = ds_cond_formdata.getColumn(0, "cretno");
  5184. orddeptcd = utlf_transNullToEmpty(ds_cond_formdata.getColumn(0, "orddeptcd"));
  5185. ioflag = utlf_transNullToEmpty(ds_cond_formdata.getColumn(0, "ioflag"));
  5186. }
  5187. // 기록 유효성 권한 검사와 로드할 기록 서식의 기본정보 조회를 위한 비동기 트랜잭션
  5188. dsf_createDsRow("ds_cond_forminforeq",
  5189. [{col:"valiflag", val:"new"}
  5190. ,{col:"pid", val:pid}
  5191. ,{col:"orddd", val:orddd}
  5192. ,{col:"cretno", val:cretno}
  5193. ,{col:"formcd", val:formcd}
  5194. ,{col:"chosflag", val:ioflag}
  5195. ,{col:"orddeptcd", val:orddeptcd}
  5196. ,{col:"formfromdt", val:""}
  5197. ,{col:"formdegnseq", val:"0"}
  5198. ,{col:"extnunitformlistyn", val:"Y"}
  5199. ,{col:"cashedformdegnseq", val:""}
  5200. ,{col:"sysformrecdt", val:""}
  5201. ,{col:"mode", val:""}]);
  5202. ds_data_validinfo.clearData();
  5203. ds_data_formmast.clearData();
  5204. ds_data_formdegn.clearData();
  5205. ds_data_unitformmast.clearData();
  5206. ds_data_vallist.clearData();
  5207. ds_script.clearData();
  5208. ds_script_map.clearData();
  5209. var objParam = new Object();
  5210. objParam.id = "TRMMR01110";
  5211. objParam.service = "medirecapp.ComnMediRec";
  5212. objParam.method = "reqGetValidateNGetFormMast";
  5213. objParam.inds = "req=ds_cond_forminforeq";
  5214. objParam.outds ="ds_data_validinfo=validinfo ds_data_formmast=formmast ds_data_formdegn=formdegn ds_data_unitformmast=unitformmast ds_data_vallist=vallist ds_data_imgelist=imgelist "
  5215. + "ds_data_unitformdegn=unitformdegn ds_data_extnformlist=extnformlist ds_data_readonlylist=readonlylist ds_data_programdesignformlist=programdesignformlist ds_script=script ds_script_map=script_map";
  5216. objParam.callback = "cbf_TRMMR01110";
  5217. objParam.async = true;
  5218. objParam.progress = false;
  5219. objParam.error = false;
  5220. tranf_submit(objParam);
  5221. }
  5222. /****************************************************************************************
  5223. * Argument :
  5224. * Description : 유효성 권한 검사와 로드할 기록 서식 정보 조회를 위한 트emr랜잭션 호출 후 이벤트 후처리
  5225. ****************************************************************************************/
  5226. function cbf_TRMMR01110(strSvcID, nErrorCode, strErrorMsg)
  5227. {
  5228. //에러 처리
  5229. if(nErrorCode == 0)
  5230. {
  5231. // 서식 기본정보조회 파라미터 삭제
  5232. var objDs = this.removeChild("ds_cond_forminforeq");
  5233. delete objDs;
  5234. objDs = null;
  5235. if (ds_data_validinfo.getColumn(0, "resultCode") != "0") {
  5236. if (!utlf_isNull(ds_data_validinfo.getColumn(0, "resultMsg"))) {
  5237. alert(ds_data_validinfo.getColumn(0, "resultMsg"));
  5238. }
  5239. if(!utlf_isNull(ds_data_validinfo.getColumn(0, "formrecseq"))) {
  5240. lf_loadRecForm(ds_data_validinfo.getColumn(0, "formrecseq")); // 기록 서식 로딩
  5241. }
  5242. return;
  5243. }
  5244. /*
  5245. var resultCode = ds_data_validinfo.getColumn(0, "resultCode");
  5246. var resultMsg = "";
  5247. if(!utlf_isNull(ds_data_validinfo.getColumnInfo("resultMsg")))
  5248. resultMsg = ds_data_validinfo.getColumn(0, "resultMsg");
  5249. frmf_setParameter("MMR01100_resultCode", resultCode);
  5250. frmf_setParameter("MMR01100_resultMsg", resultMsg);
  5251. */
  5252. //기록 유효성 검사.
  5253. if(!lf_validateForm("new")){
  5254. return;
  5255. }
  5256. var formcd = ds_data_formmast.getColumn(0, "formcd");
  5257. lf_loadNewFormAftSubmit(formcd); // 서식로드 함수
  5258. }
  5259. else
  5260. {
  5261. sysf_trace("strErrorMsg : " + strErrorMsg);
  5262. ivw_base.url = "";
  5263. // astErrorMsg(strErrorMsg);
  5264. }
  5265. }
  5266. /****************************************************************************************
  5267. * Function : lf_validateForm
  5268. * Description : 상태에 따른 서식 Open 유효성 검사
  5269. * Argument : 01. mode : new 신규서식, rec 기록
  5270. * retrun type : true/false
  5271. * Creator :
  5272. ****************************************************************************************/
  5273. function lf_validateForm(mode)
  5274. {
  5275. if(mode == "new"){
  5276. //응급실기록은 응급의학과, 소아청소년과만 작성가능
  5277. //debugger;
  5278. if(ds_data_formmast.getColumn(0, "srcformcd") == "0000000679")
  5279. {
  5280. if(sysf_getUserInfo("dutplcecd") != "EM" && sysf_getUserInfo("dutplcecd") != "PD")
  5281. {
  5282. // sysf_messageBox("응급의학과, 소아과 이외 타 부서는 \n 응급실기록을 작성", "E001");
  5283. // return false;
  5284. }
  5285. }
  5286. if(utlf_isNull(ds_data_formmast.getColumn(0, "formdegnseq")))
  5287. {
  5288. sysf_messageBox("디자인정보가 존재하지 않습니다. 기록을 작성", "E001");
  5289. return false;
  5290. }
  5291. }
  5292. return true;
  5293. }
  5294. /****************************************************************************************
  5295. * Function : lf_loadNewFormAftSubmit
  5296. * Description : 비동기 호출 후 서식로드
  5297. * Argument : 01. formcd : 서식 코드
  5298. * : 02. bPopup : 특수서식로드 유형 (true/false)
  5299. * : 03. calledflag : 기록후 넘겨줘야하는 값
  5300. * retrun type :
  5301. * Creator :
  5302. ****************************************************************************************/
  5303. function lf_loadNewFormAftSubmit(formcd)
  5304. {
  5305. // 현재 로딩돼있는 서식 정보. 동일 서식 여부 판별을 위해 formrec 정보 신규 세팅전 변수 저장
  5306. var cursrcformcd = fGetFormMast("srcformcd");
  5307. var curformProgNm = fGetFormMast("formprognm");
  5308. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  5309. //formrec 정보 신규 세팅.
  5310. fSetNewFormRec();
  5311. if( frmf_isPopup() && sysf_getObjType(this) == "Form"){
  5312. var openmode = oOpener.frmf_getParameter("openmode");
  5313. if (openmode == "newcnstform") // 컨설트 새서식 열기
  5314. {
  5315. grup_btn.btn_del.visible = false;
  5316. var node = sysf_getGlobalVariable("paminfo");
  5317. if(utlf_isNull(node))
  5318. {
  5319. fSetPamInfo(oOpener.frmf_getParameter("pid"),
  5320. oOpener.frmf_getParameter("orddd"),
  5321. oOpener.frmf_getParameter("cretno"),
  5322. oOpener.frmf_getParameter("ioflag"),
  5323. oOpener.frmf_getParameter("orddeptcd"),
  5324. oOpener.frmf_getParameter("orddrid") );
  5325. }
  5326. frmf_setParameter("SMMMR04900_cnstflag", oOpener.frmf_getParameter("SMMMR04900_cnstflag"));
  5327. frmf_setParameter("SMMMR04900_replflag", oOpener.frmf_getParameter("SMMMR04900_replflag"));
  5328. frmf_setParameter("SMMMR04900_cnstdeptcd", oOpener.frmf_getParameter("SMMMR04900_cnstdeptcd"));
  5329. frmf_setParameter("SMMMR04900_cnstdeptnm", oOpener.frmf_getParameter("SMMMR04900_cnstdeptnm"));
  5330. frmf_setParameter("SMMMR04900_drid", oOpener.frmf_getParameter("SMMMR04900_drid"));
  5331. frmf_setParameter("SMMMR04900_drnm", oOpener.frmf_getParameter("SMMMR04900_drnm"));
  5332. frmf_setParameter("SMMMR04900_reqdpcd", oOpener.frmf_getParameter("SMMMR04900_reqdpcd"));
  5333. frmf_setParameter("SMMMR04900_reqdpnm", oOpener.frmf_getParameter("SMMMR04900_reqdpnm"));
  5334. frmf_setParameter("SMMMR04900_reqdrid", oOpener.frmf_getParameter("SMMMR04900_reqdrid"));
  5335. frmf_setParameter("SMMMR04900_reqdrnm", oOpener.frmf_getParameter("SMMMR04900_reqdrnm"));
  5336. frmf_setParameter("SMMMR04900_formnm", oOpener.frmf_getParameter("SMMMR04900_formnm"));
  5337. frmf_setParameter("SMMMR04900_formcd", formcd);
  5338. //fCheckWriteUser();
  5339. }
  5340. }
  5341. lf_loadForm(formprogflag);
  5342. // 서식명 세팅
  5343. grup_titl.cap_formnm.text = "[신규]" + ds_data_formmast.getColumn(0, "formnminfo");
  5344. // orgRecDD = ds_data_formrec.getColumn(0, "formrecdd");
  5345. // grup_titl.ipt_formrectm.value = ds_data_formrec.getColumn(0, "formrechm");
  5346. grup_titl.cbo_formrecextnnm.usertext = ds_data_formrec.getColumn(0, "formrecextnnm");
  5347. lf_checkFormrecextnnm();
  5348. grup_titl.cbo_formrecextnnm.value = ds_data_formrec.getColumn(0, "formrecextnnm");
  5349. //fOnLoadComplete
  5350. lf_onLoadCompleteAfter("new");
  5351. }
  5352. /****************************************************************************************
  5353. * Function : lf_btnVislbe
  5354. * Description : 서식로더 하단 버튼 전체 enable/disable
  5355. * Argument : 01. flag : true/false
  5356. * retrun type :
  5357. * Creator :
  5358. ****************************************************************************************/
  5359. function lf_btnEnable(flag)
  5360. {
  5361. utlf_addLog("***** lf_btnEnable 서식로더 하단 버튼 전체 enable/disable : " + flag + " *****");
  5362. var screenid;
  5363. var callvisityn;
  5364. var objForm = this.getOwnerFrame().form.components["div_work"];
  5365. if(!utlf_isNull(objForm))
  5366. {
  5367. screenid = objForm.frmf_getScreenID();
  5368. }
  5369. if( utlf_isNull(flag) ) flag = "true";
  5370. grup_btn.btn_del.enable = flag;
  5371. grup_btn.btn_signsave.enable = flag;
  5372. grup_btn.btn_tmpsave.enable = flag;
  5373. grup_btn.btn_signsaveasnew.enable = flag;
  5374. grup_btn.btn_preview.enable = flag;
  5375. grup_btn.btn_init.enable = flag;
  5376. grup_btn.btn_cosign.enable = flag;
  5377. grup_btn.btn_resend.enable = flag;
  5378. grup_btn.btn_reload.enable = flag;
  5379. if( flag == "true" && grup_btn.enable == false){
  5380. grup_btn.enable = true;
  5381. }
  5382. }
  5383. /****************************************************************************************
  5384. * Function : lf_btnVislbe
  5385. * Description : 서식로더 하단 버튼 전체 보이기/숨기기
  5386. * Argument : 01. flag : true/false
  5387. * retrun type :
  5388. * Creator :
  5389. ****************************************************************************************/
  5390. function lf_btnVisible(flag)
  5391. {
  5392. utlf_addLog("***** lf_btnVisible("+ flag +") 하단 버튼 전체 보이기/숨기기 *****");
  5393. if(!utlf_isNull(flag) && (flag == "true" || flag == "false"))
  5394. {
  5395. grup_btn.visible = flag;
  5396. /*
  5397. btn_init.visible = flag;
  5398. // btn_preview.visible = flag;
  5399. btn_signsaveasnew.visible = flag;
  5400. btn_tmpsave.visible = flag;
  5401. btn_signsave.visible = flag;
  5402. btn_del.visible = flag;
  5403. // btn_resend.visible = flag;
  5404. // btn_cosign.visible = flag;
  5405. */
  5406. }
  5407. else
  5408. {
  5409. flag = false;
  5410. grup_btn.visible = flag;
  5411. /*
  5412. btn_init.visible = flag;
  5413. // btn_preview.visible = flag;
  5414. btn_signsaveasnew.visible = flag;
  5415. btn_tmpsave.visible = flag;
  5416. btn_signsave.visible = flag;
  5417. btn_del.visible = flag;
  5418. // btn_resend.visible = flag;
  5419. // btn_cosign.visible = flag;
  5420. */
  5421. }
  5422. }
  5423. /****************************************************************************************
  5424. * Function : lf_loadForm
  5425. * Description : 서식 Load
  5426. * Argument : 01. formprogflag : 로드할 서식의 종류
  5427. * : 02. calledflag : 기록후 넘겨줘야하는 값
  5428. * retrun type :
  5429. * Creator :
  5430. ****************************************************************************************/
  5431. function lf_loadForm(formprogflag, calledflag)
  5432. {
  5433. utlf_addLog("***** 서식로더 서식로드(FORMPROGFLAG 구분에 따른 화면) 시작 lf_loadForm() *****");
  5434. var formdegnseq = "";
  5435. switch(formprogflag)
  5436. {
  5437. case "" :
  5438. case undefined :
  5439. sysf_messageBox("사용 할 수 없는 서식", "E008");
  5440. return;
  5441. case "PROG" : //공통서식(PGM) 로드
  5442. var formprognm = ds_data_formmast.getColumn(0, "formprognm");
  5443. var obj = sysf_getScreenInfo(formprognm.split("_")[0]);
  5444. if( utlf_isNull(obj.scrnurlxp_real) ){
  5445. sysf_messageBox("사용 할 수 없는 서식", "E008");
  5446. ivw_base.url = "";
  5447. return;
  5448. }
  5449. ivw_base.url = "";
  5450. ivw_base.url = obj.scrnurlxp_real;
  5451. sysf_trace("@@@@@ ivw_base.url : " + obj.scrnurlxp_real + " mmr01100 *****");
  5452. if (!utlf_isNull(calledflag))
  5453. {
  5454. fSetFormRec("calledflag", calledflag);
  5455. }
  5456. break;
  5457. case "MAIN" : //공통서식(서식) 로드.
  5458. //이윤주 추가 Post Op Note 를 수술탭에서만 작성토록(20110525)
  5459. var srcformcd = ds_data_formmast.getColumn(0, "srcformcd");
  5460. var formdegnseq = ds_data_formmast.getColumn(0, "formdegnseq");
  5461. fGetFormDegn(formdegnseq, ivw_base.name);
  5462. if (!utlf_isNull(calledflag))
  5463. {
  5464. fSetFormRec("calledflag", calledflag);
  5465. }
  5466. if (srcformcd == '0800003416')
  5467. {
  5468. var operation = sysf_getGlobalVariable("operation").split("▩")[1];
  5469. if(utlf_isNull(operation))
  5470. {
  5471. alert("수술탭에서 작성하세요");
  5472. return;
  5473. }
  5474. }
  5475. break;
  5476. case "PROF" : //제증명서식 로드
  5477. case "-" : //특수서식 로드
  5478. // if(bPopup)
  5479. // {
  5480. // fPopupForm(calledflag);
  5481. // }
  5482. // else
  5483. // {
  5484. var formdegnseq = ds_data_formmast.getColumn(0, "formdegnseq");
  5485. fGetFormDegn(formdegnseq, ivw_base.name);
  5486. if (!utlf_isNull(calledflag))
  5487. {
  5488. fSetFormRec("calledflag", calledflag);
  5489. }
  5490. // }
  5491. break;
  5492. case "CNST" : //컨설트서식 로드
  5493. break;
  5494. case "OCR" : //OCR서식 로드
  5495. break;
  5496. case "EXTN" :
  5497. ivw_base.url = "emr_formmngtxp::SSMRF01200.xfdl";
  5498. ivw_base.fInitForm_MRF1200();
  5499. break;
  5500. }
  5501. utlf_addLog("***** 서식로더 서식로드(FORMPROGFLAG 구분에 따른 화면) 종료 lf_loadForm() *****");
  5502. }
  5503. /****************************************************************************************
  5504. * Function : lf_loadRecForm
  5505. * Description : 기록된 서식을 로드한다.
  5506. * Argument : 01. formrecseq : 서식기록순번
  5507. * retrun type :
  5508. * Creator :
  5509. ****************************************************************************************/
  5510. function lf_loadRecForm(formrecseq)
  5511. {
  5512. utlf_addLog("***** lf_loadRecForm("+formrecseq+") 기록된 서식을 로드 *****");
  5513. if(utlf_isNull(formrecseq))
  5514. return;
  5515. /*
  5516. if(gChkModiRecFlag)
  5517. {
  5518. if( (grup_btn.btn_signsave.visible && grup_btn.btn_signsave.enable) && lf_isModify() == "Y" )
  5519. {
  5520. if (sysf_messageBox("기록내용 중 저장되지 않은 내용이 있습니다.", "Q002") == 6)
  5521. {
  5522. fClickSave("Y");
  5523. }
  5524. }
  5525. }
  5526. */
  5527. // 2016.04.22 기록확정저장시 기준일자 제어 제거
  5528. // 2016.04.08 순환기내과 채성철교수님 요청 기록확정저장시 기준일자 제어
  5529. // 변수 초기화
  5530. // gChkFormrecdt = true;
  5531. var paminfo = sysf_getGlobalVariable("paminfo");
  5532. if(!utlf_isNull(paminfo) && gTopYn == true)
  5533. {
  5534. //ds_data_paminfo.loadCSV(paminfo); // 환자정보 row 정렬
  5535. dsf_setCSVToDs("ds_data_paminfo", paminfo);
  5536. }
  5537. if( frmf_isPopup() && sysf_getObjType(this) == "Form"){
  5538. var openmode = oOpener.frmf_getParameter("openmode");
  5539. if (openmode == "reccnstform") // 기록된 컨설트 서식 열기
  5540. {
  5541. grup_btn.btn_del.visible = false;
  5542. var formrecseq = oOpener.frmf_getParameter("formrecseq");
  5543. var userdeptcd = oOpener.frmf_getParameter("userdeptcd");
  5544. var replcnts = oOpener.frmf_getParameter("replcnts"); //약제팀
  5545. var overwrite = oOpener.frmf_getParameter("overwrite"); //약제팀
  5546. if (utlf_isNull(userdeptcd))
  5547. {
  5548. sysf_messageBox("컨설트 수신부서 코드가", "I004");
  5549. return;
  5550. }
  5551. frmf_setParameter("userdeptcd", userdeptcd);
  5552. if (!utlf_isNull(replcnts))
  5553. {
  5554. frmf_setParameter("MMR04900_replcnts", replcnts);
  5555. frmf_setParameter("MMR04900_overwrite", overwrite);
  5556. }
  5557. //fCheckWriteUser();
  5558. }
  5559. }
  5560. // 기록 서식 기본정보 조회 트랜잭션
  5561. //1. 서식정보 조회
  5562. if(!fGetRecFormMast(formrecseq)) {
  5563. alert("서식정보를 조회하는데 실패하였습니다.");
  5564. return;
  5565. }
  5566. //sysf_messageBox("1", "I");
  5567. var formprogflag = fGetFormMast("formprogflag");
  5568. dsf_createDsRow("ds_cond_recdatareq",
  5569. [{col:"formrecseq", val:formrecseq}]);
  5570. var objParam = new Object();
  5571. objParam.id = "TRMMR01301";
  5572. objParam.service = "medirecapp.ComnMediRec";
  5573. objParam.method = "reqGetFormRecInfo";
  5574. objParam.inds = "req=ds_cond_recdatareq";
  5575. objParam.outds ="ds_data_formrec=formrec ds_data_recitem=recitem";
  5576. objParam.async = false;
  5577. objParam.progress = false;
  5578. objParam.callback = "cbf_TRMMR01301";
  5579. tranf_submit(objParam);
  5580. //sysf_messageBox("2", "I");
  5581. // 서식명 세팅
  5582. grup_titl.cap_formnm.text = "[수정]" + ds_data_formmast.getColumn(0, "formnminfo");
  5583. // grup_titl.ipt_formrecdd.value = ds_data_formrec.getColumn(0, "formrecdd");
  5584. // orgRecDD = ds_data_formrec.getColumn(0, "formrecdd");
  5585. grup_titl.cbo_formrecextnnm.usertext = ds_data_formrec.getColumn(0, "formrecextnnm");
  5586. lf_checkFormrecextnnm();
  5587. grup_titl.cbo_formrecextnnm.text = ds_data_formrec.getColumn(0, "formrecextnnm");
  5588. g_recitem_oldrec = fGetCSV("ds_data_recitem"); // 로딩 시점의 기록데이터 xml형태로 저장. 다른 서식 로드시 저장여부 체크를 위함.
  5589. //fOnLoadComplete
  5590. lf_onLoadCompleteAfter("rec");
  5591. }
  5592. function cbf_TRMMR01301(strSvcID, nErrorCode, strErrorMsg)
  5593. {
  5594. var objDs = this.removeChild("ds_cond_recdatareq");
  5595. delete objDs;
  5596. objDs = null;
  5597. if( !ds_data_formrec.getColumnInfo("rechistseq") )
  5598. ds_data_formrec.addColumn("rechistseq", "BIGDECIMAL");
  5599. var unpreprec = frmf_getParameter("unpreprec");
  5600. fSetFormRec("unpreprec", unpreprec);
  5601. var formprogflag = fGetFormMast("formprogflag");
  5602. fSetFormRec("status", "U");
  5603. lf_loadForm(formprogflag);
  5604. }
  5605. /****************************************************************************************
  5606. * Argument : 01.sFlag : new / rec
  5607. * Description : 신규, 수정에 따른 버튼 및 submitid 설정
  5608. ****************************************************************************************/
  5609. function lf_onLoadCompleteAfter(sFlag){
  5610. if( sFlag == "new" ){
  5611. //인증저장버튼과 코사인버튼처리
  5612. grup_btn.btn_signsave.visible = true;
  5613. grup_btn.btn_cosign.visible = false;
  5614. //임시저장버튼과 기록반려버튼처리
  5615. grup_btn.btn_tmpsave.visible = true;
  5616. grup_btn.btn_resend.visible = false;
  5617. grup_btn.btn_signsaveasnew.enable = false;
  5618. var sFormchosflag = ds_data_formmast.getColumn(0, "formchosflag");
  5619. var sPatchosflag = ds_data_formrec.getColumn(0, "chosflag");
  5620. if (sPatchosflag == "I" && sFormchosflag == "O" && sysf_getUserInfo("jobkindcd").substring(0, 2) == "03")
  5621. {
  5622. grup_btn.btn_signsave.enable = false;
  5623. }
  5624. else
  5625. {
  5626. grup_btn.btn_signsave.enable = true;
  5627. }
  5628. this.killTimer( 1100 );
  5629. var nSetTime = 500 * (ds_data_formmast.rowcount + ds_data_unitformmast.rowcount);
  5630. this.setTimer( 1100, nSetTime );
  5631. }else if( sFlag == "rec" ){
  5632. if (fGetFormRec("espiyn") == "Y" && gViewPrt){
  5633. grup_btn.btn_print.visible = true;
  5634. }
  5635. else
  5636. {
  5637. grup_btn.btn_print.visible = false;
  5638. }
  5639. fSetFormRec("formrecdeptnm" , sysf_getUserInfo("dutplcenm"));
  5640. fSetFormRec("formrecusernm" , sysf_getUserInfo("usernm"));
  5641. //코사인, 기록반려버튼 처리(2008-11-27 박종훈)
  5642. if(fGetFormMast("srcformcd") != "0000000676" && fGetFormMast("srcformcd") != "0000000680")
  5643. {
  5644. //인증저장버튼과 코사인버튼처리
  5645. grup_btn.btn_signsave.visible = true;
  5646. grup_btn.btn_cosign.visible = false;
  5647. //임시저장버튼과 기록반려버튼처리
  5648. grup_btn.btn_tmpsave.visible = true;
  5649. grup_btn.btn_resend.visible = false;
  5650. grup_btn.btn_signsaveasnew.enable = true;
  5651. //2010-03-26 오전 9:27:48 강지훈 수정 : [요청번호 10010] 입원수진에 외래[formchosflag = 'O'] 기록 작성을 막는다.
  5652. if(!validFormchos_MMR01100(false)){
  5653. grup_btn.btn_signsaveasnew.enable = false;
  5654. }
  5655. }
  5656. else
  5657. {
  5658. grup_btn.btn_signsaveasnew.enable = false;
  5659. }
  5660. /*
  5661. if (fGetFormMast("srcformcd") == "0000000677"){
  5662. this.killTimer( 1100 );
  5663. var nSetTime = 500 * (ds_data_formmast.rowcount + ds_data_unitformmast.rowcount);
  5664. this.setTimer( 1100, nSetTime );
  5665. }
  5666. */
  5667. }
  5668. // [요청번호:20171026045] 의무기록 접근권한 관리 및 정정관리 프로그램개발 요청
  5669. if( lgv_MdfRecNo != null ){
  5670. fSetFormRec("mdfrecno" , lgv_MdfRecNo);
  5671. initButtonLayer_MMR01100("RecCorrect");
  5672. if( frmf_isPopup() && sysf_getObjType(this) == "Form"){
  5673. gSaveAfterClose = true;
  5674. }
  5675. }
  5676. lf_getChkRecCorrect("Y", "Y");
  5677. if (fGetFormMast("srcformcd") == "0000000676" || fGetFormMast("srcformcd") == "0000003325" || fGetFormMast("srcformcd") == "0000003169")
  5678. {
  5679. grup_titl.ipt_formrecdd.enable = false;
  5680. grup_titl.ipt_formrectm.enable = false;
  5681. }
  5682. else
  5683. {
  5684. grup_titl.ipt_formrecdd.enable = true;
  5685. grup_titl.ipt_formrectm.enable = true;
  5686. }
  5687. // 2016.12.21 SMMNW30001_간병간호KPCS formrecddenable, formrecdd 설정
  5688. if( !utlf_isNull(lgv_formrecdd) && lgv_formrecdd.length == 8 ){
  5689. fSetFormRec("formrecdd", lgv_formrecdd);
  5690. }
  5691. if( lgv_formrecddenable == false || fGetFormMast("srcformcd") == "1300014169"){
  5692. grup_titl.ipt_formrecdd.enable = false;
  5693. }
  5694. gSubmitID = TX_SUBMIT_COMN_FORM;
  5695. var formprognm = ds_data_formmast.getColumn(0, "formprognm");
  5696. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  5697. if(formprognm == "SMMMR04900_CONSULT" || formprognm == "SMMMR00600_수술기록" || formprognm == "SMMMR00900_DSC기록" || formprogflag == "PROF")
  5698. {
  5699. gSubmitID = TX_SUBMIT_EXTN_FORM; //확장서식 관련 서브밋 정의
  5700. }
  5701. utlf_addLog("lf_onLoadCompleteAfter gSubmitID : " + gSubmitID + " || formprognm : " + formprognm );
  5702. // TF fModalProcess 내 titletext 변경 로직
  5703. // XP 로 변환 시 fModalProcess 로직은 대부분 fAdjustWindowSize 내에 존재
  5704. if( frmf_isPopup() && sysf_getObjType(this) == "Form"){
  5705. if (!utlf_isNull(fGetFormMast("formcd")))
  5706. {
  5707. var disppatinfo = oOpener.frmf_getParameter("disppatinfo");
  5708. utlf_addLog(" lf_onLoadCompleteAfter disppatinfo getParameter : " + disppatinfo );
  5709. //2010.06.01 김달현 - disppatinfo가 없을경우 상단정보가져옴
  5710. if(utlf_isNull(disppatinfo)){
  5711. var pid = fGetPamInfo("pid");
  5712. var hngnm = fGetPamInfo("hngnm");
  5713. var sexage = fGetPamInfo("sex") + "/" + fGetPamInfo("age");
  5714. var orddeptnm = fGetPamInfo("orddeptnm");
  5715. var roomcd = fGetPamInfo("roomcd");
  5716. disppatinfo = pid + "▦" + hngnm + "▦" + sexage + "▦" + orddeptnm + "▦" + roomcd;
  5717. }
  5718. utlf_addLog(" lf_onLoadCompleteAfter disppatinfo : " + disppatinfo );
  5719. disppatinfo = disppatinfo.split("▦"); //[0]등록번호, [1]환자명, [2]성별/나이, [3]진료과, [4]병실
  5720. this.titletext= fGetFormMast("formnminfo") + " 환자정보 : " + disppatinfo[0] + " " + disppatinfo[1] + "(" + disppatinfo[2] + ") 진료과 : " + disppatinfo[3] + ", 병실 : "+ disppatinfo[4];
  5721. }
  5722. var oprsrvno = oOpener.frmf_getParameter("oprsrvno");
  5723. //2010.04.05 박종훈 수정(수술예약번호가 파리미터로 넘어올 경우 기록마스터테이블에 넣어준다)
  5724. //요청번호 : 13250, TaskNo : 49479, 우선순위 : SY
  5725. if(!utlf_isNull(oprsrvno))
  5726. {
  5727. trace(" Parameter oprsrvno : " + oprsrvno);
  5728. fSetFormRec("oprsrvno", oprsrvno);
  5729. }
  5730. grup_btn.btn_reload.visible = true;
  5731. }
  5732. // 서식로더 scrollbars = "autovert"
  5733. var sFormcd = fGetFormMast("formcd");
  5734. var nFindRow = ds_init_scrollbars.findRow("hardcd", sFormcd);
  5735. if( nFindRow > -1 ){
  5736. ivw_base.scrollbars = "autoboth";
  5737. }else{
  5738. if( ivw_base.scrollbars != "autovert" )
  5739. ivw_base.scrollbars = "autovert";
  5740. }
  5741. // 부서별 기록관리에서 미리보기버튼 hidden
  5742. var objForm = this.getOwnerFrame().form;
  5743. if(!utlf_isNull(objForm) && objForm.frmf_getScreenID() == "SPMMR05400")
  5744. grup_btn.btn_preview.visible = false
  5745. // 2017.09.07 formrecdd Init
  5746. frmf_clearParameter("SSMMR01100_formrecdd");
  5747. }
  5748. /// 컨설트 관련 추가
  5749. function fLoadSMMMR01100_CS(bPopup, objArg, path)
  5750. {
  5751. //sysf_trace("fLoadSMMMR01100_CS 시작 _ 서식로더를 불러온다");
  5752. // bPopup = false;
  5753. // objArg = null; 컨설트에선 의미 없지만 서식로더 형식에 맞추기 위해 만들어 던져준듯하다.
  5754. // 불러오기전에 컨설트관리 화면에서 ds_cond_formdata 데이터를 넣어줬다. 그걸 읽어옴
  5755. var formkind = ds_cond_formdata.getColumn(0, "formkind");
  5756. var formcd = ds_cond_formdata.getColumn(0, "formcd");
  5757. var modalYn;
  5758. // if(!utlf_isNull(ds_cond_formdata.getColumnInfo("modalyn")))
  5759. // modalYn = ds_cond_formdata.getColumn(0, "modalyn");
  5760. if (formkind == "" || formcd == "")
  5761. return;
  5762. if(utlf_isNull(path))
  5763. {
  5764. if(this.name == "ivw_loader") {
  5765. path = this;
  5766. } else {
  5767. // 컨설트관리 화면에서 호출된것이므로 path = this.components["ivw_loader"]; 가 실행. 서식로더는 컴포넌트[DIV]로 인식
  5768. path = this.components["ivw_loader"];
  5769. }
  5770. }
  5771. else {
  5772. path = path.components["ivw_loader"];
  5773. }
  5774. if(bPopup == false)
  5775. {
  5776. if(!utlf_isNull(path.url))
  5777. {
  5778. // 컨설트 관리 화면에서 이미 url 밖혀있음. 초기화 실행.
  5779. path.lf_resetForm();
  5780. }
  5781. else
  5782. {
  5783. path.url = "";
  5784. path.url = "emr_medirecxp::SSMMR01100_서식로더.xfdl";
  5785. }
  5786. }
  5787. // else
  5788. // {
  5789. // if(!utlf_isNull(modalYn) && modalYn == "Y")
  5790. // {
  5791. // frmf_modal("SSMMR01100", "SSMMR01100", objArg, "", "", "", "", "", "", "", "", "", "M");
  5792. // }
  5793. // else
  5794. // {
  5795. // var objForm = frmf_findPopup("SSMMR01100");
  5796. //
  5797. // if(utlf_isNull(objForm))
  5798. // {
  5799. // frmf_open("SSMMR01100", "SSMMR01100", objArg, "", "", "", "", "", "", "", "", "", "M");
  5800. // }
  5801. // else
  5802. // {
  5803. // objForm.lf_resetForm();
  5804. // frmf_setFocusPop("SSMMR01100");
  5805. // }
  5806. // }
  5807. // }
  5808. }
  5809. function lf_isPopForm()
  5810. {
  5811. if(frmf_isPopup())
  5812. {
  5813. // 팝업화면에서 로더 오픈 시
  5814. if(!utlf_isNull(opener)){
  5815. parentDS = opener.objects["ds_cond_formdata"];
  5816. // 의사별 미비리스트 간편저장 로직
  5817. if( utlf_isNull(parentDS) && !utlf_isNull(opener) && opener.name == "SMMRI01800"){
  5818. try{
  5819. parentDS = ds_cond_formdata;
  5820. }catch(e){}
  5821. }
  5822. }else
  5823. {
  5824. objForm = this.getOwnerFrame().form;
  5825. parentDS = objForm.objects["ds_cond_formdata"];
  5826. }
  5827. if(utlf_isNull(parentDS))
  5828. return true;
  5829. }
  5830. else
  5831. {
  5832. // 메인화면에서 로더 오픈 시
  5833. objForm = this.getOwnerFrame().form.components["div_work"];
  5834. if(!utlf_isNull(objForm))
  5835. parentDS = objForm.objects["ds_cond_formdata"];
  5836. if(utlf_isNull(parentDS))
  5837. return false;
  5838. }
  5839. }
  5840. /****************************************************************************************
  5841. * Argument : setdd : 기준일자
  5842. * Description : 기록 기준일자를 설정
  5843. * (미사용 : lf_onLoadCompleteAfter 에서 설정)
  5844. ****************************************************************************************/
  5845. function lf_Setformrecdd(setdd) {
  5846. ds_data_formrec.setColumn(0, "formrecdd", setdd);
  5847. }
  5848. /****************************************************************************************
  5849. * Argument : 01.nFlag : 삭제(D), 인증저장(Y), 임시저장(N : return), 새이름으로작성(NEW) 구분
  5850. * 02.nSerchFlag : Y 정정관리 여부 조회
  5851. * Description : 기록 정정관리대상 조회 및 정정프로세스 처리
  5852. * History : [요청번호:20171026045] 의무기록 접근권한 관리 및 정정관리 프로그램개발 요청
  5853. [요청번호:20181010032] 의무기록 정정 프로그램 개발 요청
  5854. ****************************************************************************************/
  5855. function lf_getChkRecCorrect(nFlag, nSerchFlag){
  5856. // 00. 삭제 및 인증저장(수정) 시만 동작
  5857. if( nFlag != "D" && nFlag != "Y" && nFlag != "NEW") return true;
  5858. // 01. 정정관리 여부 조회
  5859. if( !utlf_isNull(nSerchFlag) && nSerchFlag == "Y" ){
  5860. dsf_createDs("ds_save_mdfrecinfo");
  5861. dsf_createDs("ds_save_unprepinfo");
  5862. var pid = fGetFormRec("pid");
  5863. var orddd = fGetFormRec("orddd");
  5864. var cretno = fGetFormRec("cretno");
  5865. var ioflag = fGetFormRec("chosioflag");
  5866. if( utlf_isNull(ioflag) ){
  5867. ioflag = fGetFormRec("chosflag");
  5868. }
  5869. var formcd = fGetFormRec("formcd");
  5870. var srcformcd = fGetFormRec("srcformcd");
  5871. var formrecseq = fGetFormRec("formrecseq");
  5872. if( nFlag == "NEW" )
  5873. formrecseq = "";
  5874. var status = fGetFormRec("status");
  5875. var formrecdd = fGetFormRec("formrecdd");
  5876. dsf_createDsRow("ds_cond_TRMMR01306", [{col:"pid", type:"string", size:256, val:pid}
  5877. , {col:"orddd", type:"string", size:256, val:orddd}
  5878. , {col:"cretno", type:"bigdecimal", size:256, val:cretno}
  5879. , {col:"ioflag", type:"string", size:256, val:ioflag}
  5880. , {col:"formcd", type:"string", size:256, val:formcd}
  5881. , {col:"srcformcd", type:"string", size:256, val:srcformcd}
  5882. , {col:"formrecseq", type:"string", size:256, val:formrecseq}
  5883. , {col:"instcd", type:"string", size:256, val:sysf_getUserInfo("dutplceinstcd")}
  5884. , {col:"cbflag", type:"string", size:256, val:nFlag}
  5885. , {col:"formrecdd", type:"string", size:256, val:formrecdd}
  5886. ]);
  5887. dsf_createDs("ds_data_reccorrent_info");
  5888. dsf_createDs("ds_data_reccorrent_chartinfo", [{col:"issyn", type:"string", size:256}]);
  5889. utlf_addLog(">>> TRMMR01306 S >>>");
  5890. var nAsync = true;
  5891. if( nFlag == "NEW" ){
  5892. nAsync = false;
  5893. }
  5894. var oParam = {};
  5895. oParam.id = "TRMMR01306";
  5896. oParam.service = "medirecapp.ComnMediRec";
  5897. oParam.method = "reqGetChkRecCorrect";
  5898. oParam.inds = "req=ds_cond_TRMMR01306";
  5899. oParam.outds = "ds_data_reccorrent_info=info ds_data_reccorrent_chartinfo=chartinfo";
  5900. oParam.async = nAsync;
  5901. oParam.progress = false;
  5902. oParam.callback = "cbf_TRMMR01306";
  5903. tranf_submit(oParam);
  5904. if( nFlag == "NEW" && ds_data_reccorrent_info.getColumn(0, "activeyn") == "M"){
  5905. grup_btn.btn_app.click();
  5906. return false;
  5907. }
  5908. // 02. 정정프로세스 처리
  5909. }else{
  5910. //(Y:프로세스(사유) 진입,M:프로세스(신청서) 진입,N:프로세스 예외)
  5911. if( this.objects["ds_data_reccorrent_info"] != null
  5912. && ( ds_data_reccorrent_info.getColumn(0, "activeyn") == "Y" || ds_data_reccorrent_info.getColumn(0, "activeyn") == "M" )
  5913. && lgv_MdfRecNo == null){
  5914. var objArg = new Object();
  5915. objArg.arg_ds_data_chartinfo = ds_data_reccorrent_chartinfo;
  5916. objArg.arg_ds_data_formmast = ds_data_formmast;
  5917. objArg.arg_ds_data_formrec = ds_data_formrec;
  5918. objArg.arg_nFlag = nFlag;
  5919. objArg.arg_pid = pid;
  5920. objArg.arg_activeyn = ds_data_reccorrent_info.getColumn(0, "activeyn");
  5921. var rtnArg = frmf_modal("SPMRI06100", "SPMRI06100", objArg, null, null, null, null, null, null, null, null, null, "P");
  5922. if(!utlf_isNull(rtnArg)) {
  5923. // 새이름으로, 정정신청 저장 후 retun;
  5924. if( rtnArg.arg_nSaveyn == "Y"
  5925. && ds_data_reccorrent_info.getColumn(0, "activeyn") == "M"
  5926. && ds_cond_TRMMR01306.getColumn(0, "cbflag") == "NEW"){
  5927. return false;
  5928. }
  5929. // 정정신청화면 닫기버튼 또는 취소
  5930. if( rtnArg.arg_nSaveyn == "N" ) {
  5931. sysf_messageBox("처리되지 않았습니다. ", "E");
  5932. return false;
  5933. }
  5934. // var cosignYn = fGetFormRec("cosign");
  5935. // if( cosignYn == "Y" ){
  5936. // fSetFormRec("cosign", "N");
  5937. // }
  5938. // ds_data_mdfrecinfo -> ds_save_mdfrecinfo
  5939. // ds_data_unprepinfo -> ds_save_unprepinfo
  5940. dsf_createDs("ds_save_mdfrecinfo");
  5941. dsf_createDs("ds_save_unprepinfo");
  5942. // 사유일경우 인증저장 프로세스에서 처리
  5943. if( rtnArg.arg_nSaveyn == "Y"
  5944. && ds_data_reccorrent_info.getColumn(0, "activeyn") == "Y"
  5945. ){
  5946. ds_save_mdfrecinfo.copyData(rtnArg.arg_ds_data_mdfrecinfo);
  5947. ds_save_unprepinfo.copyData(rtnArg.arg_ds_data_unprepinfo);
  5948. }
  5949. return true;
  5950. }
  5951. return false;
  5952. }else if(lgv_MdfRecNo != null ){ // 정정기록관리 화면에서 호출, Staff Sign 기록일 경우
  5953. var nAcptstatus = "";
  5954. if(!utlf_isNull(opener) && opener.name == "SPMRI06000"){
  5955. nAcptstatus = opener.ds_data_mdfrecinfo.getColumn(0, "acptstatus");
  5956. }
  5957. //if( nFlag == "D" && lgv_MdfRecApptype != null && lgv_MdfRecApptype.split("|")[0] != "D" ){
  5958. if( nFlag == "D" && lgv_MdfRecApptype != null && lgv_MdfRecApptype.split("|")[0] != "D"
  5959. && !(lf_ContainsHardCD("100017", "Y") && lgv_MdfRecApptype.split("|")[0] == "R" && nAcptstatus == "M") ){
  5960. // 20191022 금정화 : 정정신청 후 의무기록팀에서 승인한 경우 사용자가 삭제 가능하도록 수정.
  5961. sysf_messageBox("삭제 ", "E001");
  5962. return false;
  5963. }
  5964. var cosignYn = fGetFormRec("cosign");
  5965. if( cosignYn == "Y" ){
  5966. // 미비 데이터 생성
  5967. if( lf_SetUnPrepInfo(cosignYn) == false ){
  5968. return false;
  5969. }else{
  5970. ds_save_unprepinfo.copyData(ds_data_unprepinfo);
  5971. }
  5972. }
  5973. }else if( nFlag == "D"){
  5974. // 미비 데이터 생성
  5975. if( lf_SetUnPrepInfo(nFlag) == false ){
  5976. //return false;
  5977. }else{
  5978. ds_save_unprepinfo.copyData(ds_data_unprepinfo);
  5979. }
  5980. }
  5981. return true;
  5982. }
  5983. }
  5984. var gActiveyn = "Y";
  5985. function cbf_TRMMR01306(strSvcID, nErrorCode, strErrorMsg)
  5986. {
  5987. utlf_addLog(">>> TRMMR01306 E activeyn : " + ds_data_reccorrent_info.getColumn(0, "activeyn") + ", issyn : " + ds_data_reccorrent_chartinfo.getColumn(0, "issyn") + " >>>");
  5988. /* //TEST code
  5989. if( ds_data_reccorrent_info.getColumn(0, "activeyn") == "N"){
  5990. if( gActiveyn == "Y" ){
  5991. gActiveyn = "M";
  5992. ds_data_reccorrent_info.setColumn(0, "activeyn", "M");
  5993. }else if( gActiveyn == "M" ){
  5994. gActiveyn = "Y";
  5995. ds_data_reccorrent_info.setColumn(0, "activeyn", "Y");
  5996. }
  5997. }
  5998. if( ds_cond_TRMMR01306.getColumn(0, "cbflag") == "NEW" ){
  5999. ds_data_reccorrent_info.setColumn(0, "activeyn", "M");
  6000. }
  6001. */
  6002. // 새이름으로 작성 시 버튼 처리 안함.
  6003. if( ds_cond_TRMMR01306.getColumn(0, "cbflag") == "NEW" ){
  6004. return;
  6005. }
  6006. var activeyn = ds_data_reccorrent_info.getColumn(0, "activeyn");
  6007. // 서식로더 하단 안내문구 처리(activeyn 조건에 따른 동작 수행)
  6008. lf_DisplayBottomNotice();
  6009. // Activeyn Y : 사유만 작성 후 진행 , M 정정신청 프로세스 진입
  6010. if( activeyn == "Y" || activeyn == "M" ){
  6011. if( lgv_MdfRecNo == null ){
  6012. if( activeyn == "M" ){
  6013. // 임시저장된 기록 수정 시
  6014. if( fGetFormRec("status") == "U" && fGetFormRec("espiyn") == "N" ){
  6015. lf_MdfDispEnable(true);
  6016. }else{
  6017. lf_MdfDispEnable(false);
  6018. }
  6019. }else{
  6020. lf_MdfDispEnable(true);
  6021. }
  6022. // 정정신청, 사유에 대한 버튼 처리
  6023. var nNm = "";
  6024. if( activeyn == "Y" ){
  6025. nNm = "RecCorrect";
  6026. }else if( (fGetFormRec("status") == "U" && fGetFormRec("espiyn") == "N") ){
  6027. nNm = "RecCorrectAppTemp";
  6028. }else{
  6029. nNm = "RecCorrectApp";
  6030. }
  6031. initButtonLayer_MMR01100(nNm);
  6032. }else{
  6033. lf_CosignCheck();
  6034. }
  6035. }
  6036. }
  6037. /****************************************************************************************
  6038. * Argument : 01.bFlag : true / false
  6039. * Description : 정정프로세스 여부에 따른 PROG 기록 사용여부 처리
  6040. ****************************************************************************************/
  6041. function lf_MdfDispEnable(bFlag){
  6042. try{
  6043. // 정정신청일 경우 작성 불가 처리
  6044. var childrenObj = ivw_base.grup_base.components;
  6045. for(i=0; i< childrenObj.length; i++)
  6046. {
  6047. var childObj = childrenObj[i];
  6048. if((!utlf_isNull(childObj.name) &&
  6049. ((childObj.name).indexOf("ivw_") > -1 || (childObj.name).indexOf("tar_") > -1)
  6050. || childObj instanceof Button || childObj instanceof Static
  6051. || childObj instanceof Edit || childObj instanceof Radio
  6052. )
  6053. ){
  6054. if( bFlag == true && !utlf_isNull(childObj.orgMdfEnable) ){
  6055. childObj.enable = childObj.orgMdfEnable;
  6056. }else if( bFlag == false ){
  6057. childObj.orgMdfEnable = childObj.enable;
  6058. childObj.enable = bFlag;
  6059. }
  6060. }
  6061. }
  6062. }catch(e){}
  6063. }
  6064. /****************************************************************************************
  6065. * Argument : 01.nFlag : 삭제(D), 인증저장(Y) 구분
  6066. * 02.nSerchFlag : Y 정정관리 여부 조회
  6067. * Description : [요청번호:20171026045] 의무기록 접근권한 관리 및 정정관리 프로그램개발 요청
  6068. -> 처리시 전공의 스텝사인 기록 수정 가능하도록 처리한 로직
  6069. [요청번호:20181010032] 의무기록 정정 프로그램 개발 요청
  6070. ****************************************************************************************/
  6071. function lf_CosignCheck(){
  6072. if( fGetFormMast("formprogflag") != "PROG" ) return;
  6073. if (fGetFormRec("formrecdeptcd") == sysf_getUserInfo("dutplcecd")) {
  6074. if (fGetFormRec("espiyn") == "Y") {
  6075. var oDs = ivw_base.objects["ds_main_extninfo_staffauthinfo"];
  6076. if( oDs == null ) return;
  6077. if( oDs.rowcount == 0 ) return;
  6078. var nRow = oDs.rowposition;
  6079. var authyn = oDs.getColumn(nRow, "authyn");
  6080. var cosign = fGetFormRec("cosign");
  6081. if (cosign == "Y") {
  6082. try{
  6083. var childrenObj = ivw_base.grup_base.components;
  6084. for(i=0; i< childrenObj.length; i++)
  6085. {
  6086. var childObj = childrenObj[i];
  6087. if(childObj.orgEnable == "Y" || (!utlf_isNull(childObj.name) && (childObj.name).indexOf("ivw_") > -1)){
  6088. childObj.enable = true;
  6089. }
  6090. }
  6091. }catch(e){}
  6092. initButtonLayer_MMR01100("RecCorrect");
  6093. }
  6094. }
  6095. }
  6096. }
  6097. /****************************************************************************************
  6098. * Argument : nFlag : Y - StaffSign Y/N, D - 삭제
  6099. * Description : [요청번호:20181010032] 의무기록 정정 프로그램 개발 요청
  6100. * - 정정기록관리 화면에서 기록작성 시 Staff Sign 반려 미비 데이터 생성
  6101. ****************************************************************************************/
  6102. function lf_SetUnPrepInfo(nFlag){
  6103. // Step 1 대상환자의 진료정보를 조회한다.
  6104. var sPid = fGetFormRec("pid");
  6105. var sOrddd = fGetFormRec("orddd");
  6106. var sCretno = fGetFormRec("cretno");
  6107. var sIoflag = fGetFormRec("chosioflag");
  6108. if( utlf_isNull(sIoflag) ){
  6109. sIoflag = fGetFormRec("chosflag");
  6110. }
  6111. if(sIoflag == "D"){
  6112. sIoflag = "I";
  6113. }
  6114. var nSrcFormcd = fGetFormRec("srcformcd");
  6115. if( nFlag == "D" ){
  6116. if( lf_ContainsHardCD(6155, nSrcFormcd) == false || (sIoflag != "I" && sIoflag != "E")){
  6117. if( this.objects["ds_data_unprepinfo"] != null ) ds_data_unprepinfo.clearData();
  6118. return false;
  6119. }
  6120. }
  6121. dsf_createDsRow("ds_cond_reqdata", [{col:"pid", type:"STRING", size:256, val:sPid}
  6122. , {col:"ioflag", type:"STRING", size:256, val:sIoflag}
  6123. , {col:"dschflag", type:"STRING", size:256, val:"A"}]);
  6124. dsf_createDs("ds_temp_pathistlist");
  6125. var oParam = {};
  6126. oParam.id = "TRMRI02605";
  6127. oParam.service = "unprepmngtapp.ChrtUnprepMngt";
  6128. oParam.method = "reqGetUnPrepPatChosInfo";
  6129. oParam.inds = "req=ds_cond_reqdata";
  6130. oParam.outds = "ds_temp_pathistlist=pathistlist";
  6131. oParam.async = false;
  6132. //oParam.callback = "cf_TRMRI02605";
  6133. tranf_submit(oParam);
  6134. var nFindRow = ds_temp_pathistlist.findRowExpr("pid == '"+ sPid +"' && orddd == '"+ sOrddd +"' && cretno == '"+ sCretno +"'");
  6135. if( nFindRow > -1 ){
  6136. var sDschdd = ds_temp_pathistlist.getColumn(nFindRow, "dschdd");
  6137. if(sDschdd == "재원중"){
  6138. sDchdd = utlf_getCurrentDate();
  6139. }
  6140. dsf_createDsRow("ds_cond_reqdata", [
  6141. {col:"srchflag", type:"STRING", size:256, val:"id"}
  6142. , {col:"unprepdeptcd", type:"STRING", size:256, val:sysf_getUserInfo("dutplcecd")}
  6143. , {col:"unprepdr", type:"STRING", size:256, val:sysf_getUserInfo("userid")}
  6144. , {col:"stnddd", type:"STRING", size:256, val:utlf_getCurrentDate()}
  6145. , {col:"deptengabbr", type:"STRING", size:256, val:""}
  6146. , {col:"grupflag", type:"STRING", size:256, val:""}
  6147. ]);
  6148. dsf_createDs("ds_temp_unprepdrlist");
  6149. var oParam = {};
  6150. oParam.id = "TRMRI02604";
  6151. oParam.service = "unprepmngtapp.ChrtUnprepMngt";
  6152. oParam.method = "reqGetUnPrepDrList";
  6153. oParam.inds = "req=ds_cond_reqdata";
  6154. oParam.outds = "ds_temp_unprepdrlist=unprepdrlist";
  6155. oParam.async = false;
  6156. //oParam.callback = "cf_TRMRI02604";
  6157. tranf_submit(oParam);
  6158. if( ds_temp_unprepdrlist.rowcount == 0 ){
  6159. sysf_messageBox("[미비기록 생성정보] 진료의 정보가 올바르지 않습니다.", "E");
  6160. if( this.objects["ds_data_unprepinfo"] != null ) ds_data_unprepinfo.clearData();
  6161. return false;
  6162. }
  6163. var pid = ds_temp_pathistlist.getColumn(nFindRow, "pid");
  6164. var hngnm = ds_temp_pathistlist.getColumn(nFindRow, "hngnm");
  6165. var orddd = ds_temp_pathistlist.getColumn(nFindRow, "orddd");
  6166. var cretno = ds_temp_pathistlist.getColumn(nFindRow, "cretno");
  6167. var dschdd = ds_temp_pathistlist.getColumn(nFindRow, "dschdd");
  6168. var dschdeptcd = "-";
  6169. var dschdeptnm = "-";
  6170. var orddeptcd = "-";
  6171. var orddeptnm = "-";
  6172. var formrecdeptcd = "";
  6173. var formrecseq = fGetFormRec("formrecseq");
  6174. var formcd = fGetFormRec("formcd");
  6175. var formnm = fGetFormRec("formnm");
  6176. var formrecdd = fGetFormRec("formrecdd");
  6177. var oprsrvno = fGetFormRec("oprsrvno");
  6178. if( utlf_isNull(formrecseq) || formrecseq == 0){
  6179. formrecseq = -1;
  6180. }
  6181. orddeptcd = ds_temp_unprepdrlist.getColumn(0, "orddeptcd");
  6182. orddeptnm = ds_temp_unprepdrlist.getColumn(0, "orddeptnm");
  6183. dschdeptcd = ds_temp_pathistlist.getColumn(nFindRow, "orddeptcd");
  6184. dschdeptnm = ds_temp_pathistlist.getColumn(nFindRow, "orddeptnm");
  6185. formrecdeptcd = dschdeptcd;
  6186. var orddrid = ds_temp_unprepdrlist.getColumn(0, "orddrid");
  6187. var orddrnm = ds_temp_unprepdrlist.getColumn(0, "orddrnm");
  6188. var jobposnm= ds_temp_unprepdrlist.getColumn(0, "jobposnm");
  6189. var sUnprepitemnm = "기록반려(StaffSign)";
  6190. var nUnprepitemcd = "000002000";
  6191. var nDralertcnts = lgv_MdfRecApptype != null ? lgv_MdfRecApptype.split("|")[1] : "";
  6192. if( nFlag == "D" ){
  6193. sUnprepitemnm = "기록삭제";
  6194. nUnprepitemcd = "000000137";
  6195. nDralertcnts = "기록삭제";
  6196. }
  6197. dsf_createDsRow("ds_data_unprepinfo", [
  6198. {col:"status" , type:"STRING", size:256, val:"i"}
  6199. , {col:"indschflag" , type:"STRING", size:256, val:"D"}
  6200. , {col:"pid" , type:"STRING", size:256, val:pid}
  6201. , {col:"cretno" , type:"STRING", size:256, val:cretno}
  6202. , {col:"hngnm" , type:"STRING", size:256, val:hngnm}
  6203. , {col:"formrecseq" , type:"STRING", size:256, val:formrecseq}
  6204. , {col:"dschdeptcd" , type:"STRING", size:256, val:dschdeptcd}
  6205. , {col:"dschdeptnm" , type:"STRING", size:256, val:dschdeptnm}
  6206. , {col:"unprepno" , type:"STRING", size:256, val:"1"}
  6207. , {col:"dschdd" , type:"STRING", size:256, val:dschdd}
  6208. , {col:"indd" , type:"STRING", size:256, val:orddd}
  6209. , {col:"orgunprepstat" , type:"STRING", size:256, val:""}
  6210. , {col:"unprepstat" , type:"STRING", size:256, val:2} // 의사확인
  6211. , {col:"doctkindflag" , type:"STRING", size:256, val:jobposnm}
  6212. , {col:"orgdoctkindflag" , type:"STRING", size:256, val:""}
  6213. , {col:"drstate" , type:"STRING", size:256, val:""}
  6214. , {col:"unprepdrnm" , type:"STRING", size:256, val:orddrnm}
  6215. , {col:"orgunprepdrnm" , type:"STRING", size:256, val:""}
  6216. , {col:"unprepdeptnm" , type:"STRING", size:256, val:""}
  6217. , {col:"orgunprepdeptnm" , type:"STRING", size:256, val:""}
  6218. , {col:"orddeptcd" , type:"STRING", size:256, val:orddeptcd}
  6219. , {col:"orgorddeptcd" , type:"STRING", size:256, val:""}
  6220. , {col:"detldeptcd" , type:"STRING", size:256, val:""}
  6221. , {col:"orgdetldeptcd" , type:"STRING", size:256, val:""}
  6222. , {col:"unprepdrid" , type:"STRING", size:256, val:orddrid}
  6223. , {col:"orgunprepdrid" , type:"STRING", size:256, val:""}
  6224. , {col:"formcd" , type:"STRING", size:256, val:formcd}
  6225. , {col:"formnm" , type:"STRING", size:256, val:formnm}
  6226. , {col:"oprsrvno" , type:"STRING", size:256, val:oprsrvno}
  6227. , {col:"unprepitemnm" , type:"STRING", size:256, val:sUnprepitemnm}
  6228. , {col:"formrecdd" , type:"STRING", size:256, val:formrecdd}
  6229. , {col:"unprepitemcd" , type:"STRING", size:256, val:nUnprepitemcd}
  6230. , {col:"medirecalertcnts" , type:"STRING", size:256, val:""}
  6231. , {col:"drcnfmdt" , type:"STRING", size:256, val:""}
  6232. , {col:"drcnfmrid" , type:"STRING", size:256, val:""}
  6233. , {col:"dralertcnts" , type:"STRING", size:256, val:nDralertcnts}
  6234. , {col:"fstrgstrnm" , type:"STRING", size:256, val:""}
  6235. , {col:"fstrgstdt" , type:"STRING", size:256, val:""}
  6236. , {col:"lastupdtrnm" , type:"STRING", size:256, val:""}
  6237. , {col:"lastupdtdt" , type:"STRING", size:256, val:""}
  6238. , {col:"mprocessyn" , type:"STRING", size:256, val:"Y"}]);
  6239. }else{
  6240. sysf_messageBox("환자의 진료정보가 정상적이지 않습니다.", "E");
  6241. return false;
  6242. }
  6243. return true;
  6244. }
  6245. /****************************************************************************************
  6246. * Function : lf_loadPreviewForm
  6247. * Description : 미리보기 서식을 로드한다.
  6248. * Argument : 01. formrecseq : 서식기록순번
  6249. * retrun type :
  6250. * Creator :
  6251. ****************************************************************************************/
  6252. function lf_loadPreviewForm(formcd, formdegnseq)
  6253. {
  6254. trace("***** lf_loadPreviewForm("+formcd+","+formdegnseq+") 미리보기 서식을 로드 *****");
  6255. if(utlf_isNull(formcd) || utlf_isNull(formdegnseq))
  6256. return;
  6257. ds_data_validinfo.clearData();
  6258. ds_data_formmast.clearData();
  6259. ds_data_formdegn.clearData();
  6260. ds_data_unitformmast.clearData();
  6261. ds_data_vallist.clearData();
  6262. ds_script.clearData();
  6263. ds_script_map.clearData();
  6264. dsf_createDsRow("ds_send_req",
  6265. [{col:"formrecseq", type:"string", size:256, val:""}
  6266. ,{col:"formdegnseq", type:"bigdecidal", size:256, val:formdegnseq}
  6267. ,{col:"extnunitformlistyn", type:"string", size:256, val:""}
  6268. ,{col:"cashedformdegnseq", type:"string", size:256, val:gCashedFormDegnSeq}
  6269. ,{col:"sysformrecdt", type:"string", size:256, val:""}
  6270. ,{col:"formfromdt", type:"string", size:256, val:""}
  6271. ,{col:"mode", type:"string", size:256, val: ""}
  6272. ,{col:"drive_table", type:"string", size:256, val: "1"}
  6273. ]);
  6274. var oParam = {};
  6275. oParam.id = "TRMRF02004_1";
  6276. oParam.service = "formmngtapp.FormDegnMngt";
  6277. oParam.method = "reqGetFormDegnInfo";
  6278. oParam.inds = "req=ds_send_req";
  6279. oParam.outds = "ds_data_formmast=formmast ds_data_formdegn=formdegn ds_data_unitformmast=unitformmast ds_data_vallist=vallist ds_data_imgelist=imgelist ds_data_extnformlist=extnformlist ds_script=script ds_script_map=script_map";
  6280. oParam.async = false;
  6281. oParam.progress = false;
  6282. oParam.callback = "cbf_TRMRF02004_1"; //cbf_TRMMR01110 과 동일하여 같이 처리
  6283. tranf_submit(oParam);
  6284. }
  6285. /****************************************************************************************
  6286. * Argument :
  6287. * Description : 유효성 권한 검사와 로드할 기록 서식 정보 조회를 위한 트emr랜잭션 호출 후 이벤트 후처리
  6288. ****************************************************************************************/
  6289. function cbf_TRMRF02004_1(strSvcID, nErrorCode, strErrorMsg)
  6290. {
  6291. //에러 처리
  6292. if(nErrorCode == 0)
  6293. {
  6294. // 서식 기본정보조회 파라미터 삭제
  6295. var objDs = this.removeChild("ds_cond_forminforeq");
  6296. delete objDs;
  6297. objDs = null;
  6298. //기록 유효성 검사.
  6299. if(!lf_validateForm("new")){
  6300. return;
  6301. }
  6302. var formcd = ds_data_formmast.getColumn(0, "formcd");
  6303. lf_loadNewFormAftSubmit(formcd); // 서식로드 함수
  6304. }
  6305. else
  6306. {
  6307. sysf_trace("strErrorMsg : " + strErrorMsg);
  6308. ivw_base.url = "";
  6309. var rtn = sysf_messageBox("미리보기 기록 로딩에 실패하였습니다. 다시 로딩하시겠습니까?", "Q");
  6310. if( rtn == 6 ){
  6311. var tmpParent = this.getOwnerFrame().form;
  6312. tmpParent.setTimer(1000, 2000);
  6313. }
  6314. }
  6315. // FPMRZ01000_FOMPREVIEW 버튼 설정
  6316. var objParent = frmf_getoOpener();
  6317. if( objParent != null ){
  6318. if( objParent.lf_SetFormDegn != null && objParent.lf_SetFormDegn instanceof Function){
  6319. var formprogflag = ds_data_formmast.getColumn(0, "formprogflag");
  6320. objParent.lf_SetFormDegn(formprogflag);
  6321. }else{
  6322. trace( "lf_SetButton 함수가 정의되지 않았습니다." );
  6323. }
  6324. }
  6325. }
  6326. /**********************************************************************************
  6327. * Method Name : SAVED_INFO
  6328. * Description : 기록정보 변수 초기화
  6329. * argument :
  6330. * return Type :
  6331. * Creator :
  6332. **********************************************************************************/
  6333. function PRE_SAVED_INFO()
  6334. {
  6335. this.formrecseq = 0;
  6336. this.rechistseq = 0;
  6337. this.espiseq = 0;
  6338. }
  6339. function lf_preview(espiyn, isSubmit) {
  6340. if (utlf_isNull(fGetFormMast("formcd"))) return;
  6341. var savedInfo = new PRE_SAVED_INFO();
  6342. if (isProgForm())
  6343. {
  6344. var rtn = false;
  6345. if( espiyn == "N" && ds_init_notchkessn.findRow("hardcd", fGetFormMast("srcformcd")) > -1 ){
  6346. rtn = lf_getProgFormRecData(null, "1");
  6347. }else{
  6348. rtn = lf_getProgFormRecData(); // 공통서식 기록데이터 취합
  6349. }
  6350. if(rtn == false){
  6351. var tmpsavedInfo = new PRE_SAVED_INFO();
  6352. return tmpsavedInfo;
  6353. //return;
  6354. }
  6355. ds_data_recitem.copyData(ivw_base.ds_data_recitem);
  6356. }
  6357. else
  6358. {
  6359. var rtn = false;
  6360. if( espiyn == "N" && ds_init_notchkessn.findRow("hardcd", fGetFormMast("srcformcd")) > -1 ){
  6361. rtn = lf_getGenFormData(null, "1");
  6362. }else{
  6363. rtn = lf_getGenFormData();
  6364. }
  6365. if( rtn == false ){
  6366. var savedInfo = new PRE_SAVED_INFO();
  6367. return savedInfo;
  6368. }
  6369. }
  6370. ds_preview_recitem.clear();
  6371. ds_preview_recitem.assign(ds_data_recitem);
  6372. if (ds_preview_recitem.rowcount == 0) {
  6373. sysf_messageBox("미리보기 할 내용이 없습니다.", "I");
  6374. return false;
  6375. }
  6376. ds_preview_formrec.clear();
  6377. ds_preview_formrec.assign(ds_data_formrec);
  6378. // if (! isSubmit) {
  6379. // ds_recitem.assign(ds_preview_recitem);
  6380. // }
  6381. isSubmit = utlf_isNull(isSubmit) ? false : isSubmit;
  6382. ds_preview_formrec.setColumn(0, "status", "P"); //미리보기용 저장 후 롤백
  6383. ds_preview_formrec.setColumn(0, "espiyn", espiyn);
  6384. ds_preview_formrec.setColumn(0, "pid", "PREVIEWFRM"); //사고방지
  6385. ds_preview_formrec.setColumn(0, "orddd", utlf_getCurrentDate()); //서버에러 회피
  6386. ds_preview_formrec.setColumn(0, "cretno", "0"); //서버에러 회피
  6387. ds_preview_formrec.setColumn(0, "orddeptcd", sysf_getUserInfo("dutplcecd")); //서버에러 회피
  6388. ds_preview_formrec.setColumn(0, "formrecdeptcd", sysf_getUserInfo("dutplcecd")); //서버에러 회피
  6389. ds_preview_formrec.setColumn(0, "chosflag", "O"); //서버에러 회피
  6390. // var tmp_val = null;
  6391. // for(var i=0; i<ds_preview_formrec.getColCount(); i++) {
  6392. // tmp_val = ds_preview_formrec.getColumn(0, ds_preview_formrec.getColID(i));
  6393. // if (isNull(tmp_val)) {
  6394. // ds_preview_formrec.setColumn(0, ds_preview_formrec.getColID(i), "0");
  6395. // }
  6396. // }
  6397. var rslt_dslist = "ds_main_savedinfo_rsltmsg=rsltmsg ds_preview_xp=preview_xp";
  6398. if (espiyn == "Y") {
  6399. var signrecinfo = lf_makeSignData();
  6400. ds_preview_formrec.addColumn("bfcertcnts", "string");
  6401. ds_preview_formrec.addColumn("certcnts", "string");
  6402. ds_preview_formrec.setColumn(0, "bfcertcnts", signrecinfo);
  6403. ds_preview_formrec.setColumn(0, "certcnts", "-");
  6404. rslt_dslist = "ds_main_savedinfo_rsltmsg=rsltmsg ds_preview_xp=preview_xp ds_preview_lc=preview_lc ds_preview_uc=preview_uc";
  6405. }else{
  6406. ds_preview_formrec.setColumn(0, "certcnts", "");
  6407. }
  6408. var submit = false;
  6409. if (isSubmit){
  6410. dsf_createDs("ds_main_savedinfo_rsltmsg");
  6411. dsf_setDefaultVal(ds_preview_formrec, "cosignyn:N");
  6412. dsf_setTypeFormat(ds_preview_formrec, "cretno:INT^oprsrvno:BIGDECIMAL");
  6413. dsf_deleteColumn(ds_preview_formrec, "formrecdrid");
  6414. if( ds_preview_recitem.rowcount != 0 ){
  6415. dsf_setDefaultVal(ds_preview_recitem, "formdegnseq:0,degnitemlevlno:1,supdegnitemno:0");
  6416. dsf_setTypeFormat(ds_preview_recitem, "recitemno:BIGDECIMAL^degnitemno:BIGDECIMAL^degnitemlevlno:BIGDECIMAL^supdegnitemno:BIGDECIMAL^recimge:BLOB^srcimge:BLOB");
  6417. }
  6418. var oParam = {};
  6419. oParam.id = "TXMMR01301";
  6420. oParam.service = "medirecapp.ComnMediRec";
  6421. oParam.method = "reqExeComnFormRec";
  6422. oParam.inds = "formrec=ds_preview_formrec recitem=ds_preview_recitem";
  6423. oParam.outds = rslt_dslist;
  6424. oParam.async = false;
  6425. //oParam.progress = false;
  6426. oParam.callback = "cf_TXMMR01301";
  6427. tranf_submit(oParam);
  6428. if( arErrorCode.pop("TXMMR01301") > -1 ){
  6429. submit = true;
  6430. }
  6431. var mess = utlf_transNullToEmpty(ds_main_savedinfo_rsltmsg.getColumn(0, "msg"));
  6432. if (ds_main_savedinfo_rsltmsg.getColumn(0, "msg") == "1")
  6433. {
  6434. //2010.01.03 안치원 - formrecseq 지수로 표현되는 오류수정
  6435. savedInfo.formrecseq = ds_main_savedinfo_rsltmsg.getColumn(0, "formrecseq");
  6436. savedInfo.rechistseq = ds_main_savedinfo_rsltmsg.getColumn(0, "rechistseq");
  6437. savedInfo.espiseq = ds_main_savedinfo_rsltmsg.getColumn(0, "espiseq");
  6438. }
  6439. trace("mess : " + mess);
  6440. trace("formrecseq : " + savedInfo.formrecseq);
  6441. trace("espiseq : " + savedInfo.espiseq);
  6442. /*
  6443. if (fGetFormRec("status") != "D" && savedInfo.formrecseq != 0)
  6444. {
  6445. fSetFormRec("status", "U");
  6446. fSetFormRec("formrecseq", savedInfo.formrecseq);
  6447. fSetFormRec("lastrechistseq", savedInfo.rechistseq);
  6448. fSetFormRec("espiseq", ds_main_savedinfo_rsltmsg.getColumn(0, "espiseq"));
  6449. grup_titl.cap_formnm.text = ds_data_formmast.getColumn(0, "formnminfo") + " - 수정 중";
  6450. }
  6451. */
  6452. if(mess == "1" || !utlf_isNull(savedInfo.formrecseq))
  6453. {
  6454. return savedInfo;
  6455. }
  6456. else
  6457. {
  6458. savedInfo.rechistseq = -100
  6459. return savedInfo;
  6460. }
  6461. }else{
  6462. savedInfo.rechistseq = -100
  6463. return savedInfo;
  6464. }
  6465. }
  6466. ]]></Script>