SMPIJ00700.js 271 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960
  1. /**
  2. * @(#) SMPIJ00700.js
  3. * 외래일일심사관리
  4. * 수정이력
  5. * - 2008. 07. 15 / 최초작성자 / 박지욱 (xrw 화면단에서 분리)
  6. */
  7. /*
  8. 화면 초기화 : fInitialize
  9. 등록번호 + 엔터 시 대상자 조회 : fGetOutDayJudgTrgtManPidSrch
  10. 종료 : fClear
  11. 심사버튼 초기화 : fSetJudgStatBtnAuth
  12. 화면권한 초기화 : fCheckAuth
  13. 등록번호, 접수일자 변경시 화면 초기화 : fInitSrchData
  14. 등록번호 + 엔터 시 화면 초기화 : fInitSrchData2
  15. 진료달력 초기화 : initCalendar
  16. 심사대상자 정보 조회 : fGetOutDayJudgMngt
  17. 상병위로이동 : fDiagSeqUp
  18. 상병아래로이동 : fDiagSeqDown
  19. 상병 소트 : fSortDiagNo
  20. 상병 행추가 : fDiagGridInsertRow
  21. 특정 소트 : fSortSpclNo
  22. 특정 행추가 : fSpclGridInsertRow
  23. 사용자 환경저장 조회 : setOrderInfoOfCol
  24. 처방 필터링 : fGetSelectedOrderData
  25. 처방 항별 색상구분 : fSetOrderColorByEdiitem
  26. 2009.07.16 JHP
  27. 심사화면 환자 메세지 여부확인: fGetPatMsgYn
  28. 환자기준 전송메세지작성 : fPatJudgPatMsgTrsm
  29. 처방기준 전송메세지작성 : fOrderJudgPatMsgTrsm
  30. 해당건 환자 전체 메세지 보기 : fJudgPatMsgTrsmRef
  31. */
  32. /* 화면 초기화 */
  33. function fInitialize() {
  34. // 1. 데이터 초기화
  35. model.removeNodeset("/root/main/list1/diag");
  36. model.removeNodeset("/root/main/list2/oscl");
  37. model.removeNodeset("/root/main/list3/clcj");
  38. model.removeNodeset("/root/main/list4/otpt");
  39. model.removeNodeset("/root/main/list5/oscl");
  40. model.removeNodeset("/root/main/list6/delclod");
  41. model.removeNodeset("/root/main/list7/clop");
  42. model.removeNodeset("/root/hidden/list4/otpt");
  43. model.setValue("/root/hidden/list2/osclsrch/selectedRdoPay", "-");
  44. model.setValue("/root/hidden/list2/osclsrch/selectedRdoItem", "-");
  45. model.setValue("/root/hidden/list7/clop/selectedRdoPay", "-");
  46. model.setValue("/root/send/unitflag", "-");
  47. /*
  48. // 2. 컨트롤 초기화
  49. // 처방, 원외처방 그리드
  50. grd_clodhist.frozenCols = grd_clodhist.colRef("basecd");
  51. grd_clsphist.frozenCols = grd_clsphist.colRef("edicd");
  52. grd_oprcphist.mergecol(grd_oprcphist.colRef("snglcalcscorcd")) = false;
  53. grd_oprcphist.mergecol(grd_oprcphist.colRef("edicd")) = false;
  54. grd_oprcphist.mergecol(grd_oprcphist.colRef("hngnm")) = false;
  55. grd_oprcphist.mergecol(grd_oprcphist.colRef("calcpayflag")) = false;
  56. grd_oprcphist.mergecol(grd_oprcphist.colRef("drugqty")) = false;
  57. grd_oprcphist.mergecol(grd_oprcphist.colRef("drugtims")) = false;
  58. grd_oprcphist.mergecol(grd_oprcphist.colRef("drugdayno")) = false;
  59. grd_oprcphist.mergecol(grd_oprcphist.colRef("spclspecyn")) = false;
  60. grd_oprcphist.mergecol(grd_oprcphist.colRef("efcyclscd")) = false;
  61. grd_oprcphist.mergecol(grd_oprcphist.colRef("efcyclsnm")) = false;
  62. grd_oprcphist.mergecol(grd_oprcphist.colRef("ordnm")) = false;
  63. grd_oprcphist.mergecol(grd_oprcphist.colRef("edicdflag")) = false;
  64. grd_oprcphist.mergecells = "bycol";
  65. */
  66. // 트리뷰
  67. trv_histref.expandDepth = 3;
  68. trv_patinfo.expandDepth = 3;
  69. trv_qualinfo.expandDepth = 3;
  70. trv_prcpref.expandDepth = 3;
  71. trv_mediinfo.expandDepth = 3;
  72. trv_ordamt.expandDepth = 3;
  73. trv_etcref.expandDepth = 3;
  74. trv_emr.expandDepth = 3;
  75. trv_erroomref.expandDepth = 3;
  76. trv_trnptinforef.expandDepth = 3;
  77. // 히든 컨트롤
  78. cap_grptemp.visible = false;
  79. grp_predoculist.visible = false;
  80. grp_delclodlist.visible = false;
  81. grp_delorderlist.visible = false;
  82. case_spclspec.selected = false;
  83. case_judgrmemo.selected = false;
  84. case_ediclammemo.selected = false;
  85. // 완료 ~ 삭제 Btn
  86. btn_end.attribute("color") = "#cc3333";
  87. btn_unjudg.attribute("color") = "#cc3333";
  88. btn_rete.attribute("color") = "#cc3333";
  89. btn_save.attribute("font-weight") = "bold";
  90. btn_end.attribute("font-weight") = "bold";
  91. btn_unjudg.attribute("font-weight") = "bold";
  92. btn_rete.attribute("font-weight") = "bold";
  93. // 특정내역 탭
  94. btn_spclspec.selected = true;
  95. model.toggle("case_spclspec");
  96. //3. 사용자 환경설정 로딩
  97. /* 불완전한 동작으로 인하여 주석처리
  98. model.setValue("/root/send/listval/uuee/scrnid","SMPIJ00700");
  99. if ( submit("TRPIJ00407") ) {
  100. var grd_name = model.getValue("/root/hidden/listval/uuee/compsnm");
  101. var refdata = model.getValue("/root/hidden/listval/uuee/compscnts");
  102. var sizedata = model.getValue("/root/hidden/listval/uuee/compssizecnts");
  103. if (grd_name != "") {
  104. setOrderInfoOfCol("grd_clodhist",refdata,sizedata);
  105. }
  106. }
  107. */
  108. }
  109. /* 등록번호, 접수일자 변경시 화면 초기화 */
  110. function fInitSrchData() {
  111. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  112. var rslt = fCheckChangeSave();
  113. if (rslt == false) { // 저장이 완료되지 않아 초기화할 수 없는 경우
  114. return false;
  115. }
  116. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  117. fInitUIControlSize();
  118. // 대상자 화면과 이전명세서 화면을 제외한 자식창을 닫는다.
  119. var judgWindow1 = getChildWindow("SMPIJ00600"); // SMPIJ00600_외래일일심사대상자조회.xrw
  120. var judgWindow2 = getChildWindow("SMPIJ00700"); // SMPIJ00700_외래일일심사관리.xrw
  121. if (judgWindow1 == null && judgWindow2 == null) {
  122. var childCnt = window.children.length;
  123. for( var i = childCnt; i > 0; i-- ) {
  124. var child = window.children.item(i-1);
  125. if (window.children.item(i-1).window.type != "modal") {
  126. window.children.item(i-1).close();
  127. }
  128. }
  129. } else {
  130. var childCnt = window.children.length;
  131. for( var i = childCnt; i > 0; i-- ) {
  132. var isClose = "true";
  133. var child = window.children.item(i-1);
  134. var curWinID = child.model.getValue("/root/properties/uid/myself");
  135. if (judgWindow1 != null) {
  136. var judgWinID = judgWindow1.model.getValue("/root/properties/uid/myself");
  137. if (curWinID == judgWinID) {
  138. isClose = "false";
  139. }
  140. }
  141. if (judgWindow2 != null) {
  142. var judgWinID = judgWindow2.model.getValue("/root/properties/uid/myself");
  143. if (curWinID == judgWinID) {
  144. isClose = "false";
  145. }
  146. }
  147. if (isClose != "false") {
  148. if (window.children.item(i-1).window.type != "modal") {
  149. window.children.item(i-1).close();
  150. }
  151. }
  152. }
  153. }
  154. model.resetInstanceNode("/root/main/item1/otpt");
  155. model.resetInstanceNode("/root/main/item1/memo");
  156. model.resetInstanceNode("/root/main/item2/incd");
  157. model.removeNodeset("/root/main/item3/supp");
  158. model.removeNodeset("/root/main/list1/diag");
  159. model.removeNodeset("/root/main/list2/oscl");
  160. model.removeNodeset("/root/main/list3/clcj");
  161. model.resetInstanceNode("/root/main/item5/mech");
  162. model.removeNodeset("/root/main/list4/otpt");
  163. model.removeNodeset("/root/main/list5/oscl");
  164. model.removeNodeset("/root/main/list6/delclod");
  165. model.removeNodeset("/root/main/list7/clop");
  166. model.removeNodeset("/root/main/ordddlist/list");
  167. fSetJudgStatBtnAuth(); // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  168. // 수술(유) Btn
  169. btn_opyn.attribute("class") = "btn2_letter4";
  170. btn_opyn.visible = true;
  171. model.resetInstanceNode("/root/send");
  172. model.resetInstanceNode("/root/hidden/item1/otpt"); // hidden을 모두 초기화하면 children의 wid 삭제됨
  173. model.resetInstanceNode("/root/hidden/item1/initotpt/otpt");
  174. model.resetInstanceNode("/root/hidden/item1/initmemo/memo");
  175. model.resetInstanceNode("/root/hidden/list1");
  176. model.resetInstanceNode("/root/hidden/list2/osclsrch");
  177. model.resetInstanceNode("/root/hidden/list2/osclitem1");
  178. model.resetInstanceNode("/root/hidden/list2/osclcond");
  179. model.resetInstanceNode("/root/hidden/list3");
  180. model.resetInstanceNode("/root/hidden/item5/oscl");
  181. model.removeNodeset("/root/hidden/list4/otpt");
  182. model.resetInstanceNode("/root/hidden/list7/clop");
  183. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회
  184. model.resetInstanceNode("/root/hidden/smpic00200/rslt");
  185. model.resetInstanceNode("/root/hidden/smpij00600/cond"); // SMPIJ00600_외래일일심사대상자조회
  186. model.resetInstanceNode("/root/hidden/smpij00600/rslt");
  187. model.resetInstanceNode("/root/hidden/smpij00700/cond"); // SMPIJ00700_외래일일심사관리
  188. model.resetInstanceNode("/root/hidden/sppid21300/cond"); // SPPID21300_심사전후차액조회
  189. model.resetInstanceNode("/root/hidden/sppid21400/cond"); // SPPID21400_외래미시행처방조회
  190. model.resetInstanceNode("/root/hidden/sppid21600/cond"); // SPPID21600_세부계산내역조회
  191. model.resetInstanceNode("/root/hidden/smpiz00100/cond"); // SMPIZ00100_외래입원상병이력조회
  192. model.resetInstanceNode("/root/hidden/smpiz00100/rslt");
  193. model.resetInstanceNode("/root/hidden/sppiz00200/cond/clsp"); // SPPIZ00200_첨부물자료관리
  194. model.resetInstanceNode("/root/hidden/sppiz00200/rslt/clsp");
  195. model.resetInstanceNode("/root/hidden/sppiz00300/rslt"); // SPPIZ00300_메모이력조회
  196. model.resetInstanceNode("/root/hidden/sppiz00400/cond"); // SPPIZ00400_상병코드조회
  197. model.resetInstanceNode("/root/hidden/sppiz00400/rslt");
  198. model.resetInstanceNode("/root/hidden/sppiz00500/cond"); // SPPIZ00500_특정내역상세관리
  199. model.resetInstanceNode("/root/hidden/sppiz00500/rslt");
  200. model.resetInstanceNode("/root/hidden/sppiz00600/cond"); // SPPIZ00600_상병및처방별치식
  201. model.resetInstanceNode("/root/hidden/sppiz00600/rslt");
  202. model.resetInstanceNode("/root/hidden/sppiz00700/cond"); // SPPIZ00700_심사Comment조회
  203. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  204. model.resetInstanceNode("/root/hidden/sppiz00800/cond"); // SPPIZ00800_산정코드조회
  205. model.resetInstanceNode("/root/hidden/sppiz00800/rslt");
  206. model.resetInstanceNode("/root/hidden/sppiz01000/cond"); // SPPIZ01000_심사수정사유관리
  207. model.resetInstanceNode("/root/hidden/sppiz01000/rslt");
  208. model.resetInstanceNode("/root/hidden/sppmc02500/cond"); // SPPMC02500_환자조회
  209. // 조회 조건의 초기값을 설정한다.
  210. model.setValue("/root/hidden/list2/osclsrch/selectedRdoPay", "-"); // 급여구분
  211. model.setValue("/root/hidden/list2/osclsrch/selectedRdoItem", "-"); // 항목구분
  212. // 처방 조회부 항목구분 Radio item의 굵은 표시를 취소한다.
  213. var itemRadioList = instance1.selectSingleNode("/root/hidden/list2/osclitem1");
  214. var itemNode = itemRadioList.childNodes;
  215. for (var i = 0; i < itemNode.length; i++) {
  216. rdo_item1.item(i).attribute("font-weight") = "normal";
  217. }
  218. // 원외처방 - 항목구분 (기본값 : 급여)
  219. model.setValue("/root/hidden/list7/clop/selectedRdoPay", "-"); // 전체
  220. // 진료달력 배경색과 굵은 표시를 취소한다.
  221. grd_calendar.rebuildStyle();
  222. return true;
  223. }
  224. /* 등록번호 입력후 엔터 처리시에만 동작 (fInitSrchData + 이전심사되돌리기) 기능 */
  225. function fInitSrchData2() {
  226. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  227. var rslt = fCheckChangeSave();
  228. if (rslt == false) { // 저장이 완료되지 않아 초기화할 수 없는 경우
  229. return false;
  230. }
  231. // 1. 심사상태를 이전으로 되돌린다. (2008.03.11 박지욱 추가)
  232. // 심사해제 시작(심사중일 경우 미심사상태로)
  233. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  234. var dschjudgprcsstat = model.getValue( "/root/main/item1/otpt/dschjudgprcsstat");
  235. if (cretno != "" && dschjudgprcsstat == "B") {
  236. // 이전 row 의 심사상태 되돌리기 시작
  237. var oldpid = model.getValue("/root/hidden/list8/pid");
  238. var oldorddd = model.getValue("/root/hidden/list8/orddd");
  239. var oldcretno = model.getValue("/root/hidden/list8/cretno");
  240. var oldacptseqno = model.getValue("/root/hidden/list8/acptseqno");
  241. var olddschjudgprcsstat = model.getValue("/root/hidden/list8/dschjudgprcsstat");
  242. var oldjudgmdlid = model.getValue("/root/hidden/list8/judgmdlid");
  243. var oldlastjudgdt = model.getValue("/root/hidden/list8/lastjudgdt");
  244. if (olddschjudgprcsstat == "A" || olddschjudgprcsstat == "" || olddschjudgprcsstat == "D" || olddschjudgprcsstat == "E") {
  245. model.removeNodeset("/root/send/list8");
  246. model.makeValue("/root/send/list8/pid", oldpid);
  247. model.makeValue("/root/send/list8/orddd", oldorddd);
  248. model.makeValue("/root/send/list8/cretno", oldcretno);
  249. model.makeValue("/root/send/list8/acptseqno", oldacptseqno);
  250. model.makeValue("/root/send/list8/dschjudgprcsstat", olddschjudgprcsstat);
  251. model.makeValue("/root/send/list8/judgmdlid", oldjudgmdlid);
  252. model.makeValue("/root/send/list8/lastjudgdt", oldlastjudgdt);
  253. submit("TXPIJ00604", false);
  254. }
  255. // 이전 row 의 심사상태 되돌리기 끝
  256. }
  257. // 심사해제 끝
  258. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  259. fInitUIControlSize();
  260. // 대상자 화면과 이전명세서 화면을 제외한 자식창을 닫는다.
  261. var judgWindow1 = getChildWindow("SMPIJ00600"); // SMPIJ00600_외래일일심사대상자조회.xrw
  262. var judgWindow2 = getChildWindow("SMPIJ00700"); // SMPIJ00700_외래일일심사관리.xrw
  263. if (judgWindow1 == null && judgWindow2 == null) {
  264. var childCnt = window.children.length;
  265. for( var i = childCnt; i > 0; i-- ) {
  266. var child = window.children.item(i-1);
  267. if (window.children.item(i-1).window.type != "modal") {
  268. window.children.item(i-1).close();
  269. }
  270. }
  271. } else {
  272. var childCnt = window.children.length;
  273. for( var i = childCnt; i > 0; i-- ) {
  274. var isClose = "true";
  275. var child = window.children.item(i-1);
  276. var curWinID = child.model.getValue("/root/properties/uid/myself");
  277. if (judgWindow1 != null) {
  278. var judgWinID = judgWindow1.model.getValue("/root/properties/uid/myself");
  279. if (curWinID == judgWinID) {
  280. isClose = "false";
  281. }
  282. }
  283. if (judgWindow2 != null) {
  284. var judgWinID = judgWindow2.model.getValue("/root/properties/uid/myself");
  285. if (curWinID == judgWinID) {
  286. isClose = "false";
  287. }
  288. }
  289. if (isClose != "false") {
  290. if (window.children.item(i-1).window.type != "modal") {
  291. window.children.item(i-1).close();
  292. }
  293. }
  294. }
  295. }
  296. model.resetInstanceNode("/root/main/item1/otpt");
  297. model.resetInstanceNode("/root/main/item1/memo");
  298. model.resetInstanceNode("/root/main/item2/incd");
  299. model.removeNodeset("/root/main/item3/supp");
  300. model.removeNodeset("/root/main/list1/diag");
  301. model.removeNodeset("/root/main/list2/oscl");
  302. model.removeNodeset("/root/main/list3/clcj");
  303. model.resetInstanceNode("/root/main/item5/mech");
  304. model.removeNodeset("/root/main/list4/otpt");
  305. model.removeNodeset("/root/main/list5/oscl");
  306. model.removeNodeset("/root/main/list6/delclod");
  307. model.removeNodeset("/root/main/list7/clop");
  308. model.removeNodeset("/root/main/ordddlist/list");
  309. fSetJudgStatBtnAuth(); // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  310. // 수술(유) Btn
  311. btn_opyn.attribute("class") = "btn2_letter4";
  312. btn_opyn.visible = true;
  313. model.resetInstanceNode("/root/send");
  314. model.resetInstanceNode("/root/hidden/item1/otpt"); // hidden을 모두 초기화하면 children의 wid 삭제됨
  315. model.resetInstanceNode("/root/hidden/item1/initotpt/otpt");
  316. model.resetInstanceNode("/root/hidden/item1/initmemo/memo");
  317. model.resetInstanceNode("/root/hidden/list1");
  318. model.resetInstanceNode("/root/hidden/list2/osclsrch");
  319. model.resetInstanceNode("/root/hidden/list2/osclitem1");
  320. model.resetInstanceNode("/root/hidden/list2/osclcond");
  321. model.resetInstanceNode("/root/hidden/list3");
  322. model.resetInstanceNode("/root/hidden/item5/oscl");
  323. model.removeNodeset("/root/hidden/list4/otpt");
  324. model.resetInstanceNode("/root/hidden/list7/clop");
  325. model.resetInstanceNode("/root/hidden/smpic00200/judgsrch"); // SMPIC00200_수가조회
  326. model.resetInstanceNode("/root/hidden/smpic00200/rslt");
  327. model.resetInstanceNode("/root/hidden/smpij00600/cond"); // SMPIJ00600_외래일일심사대상자조회
  328. model.resetInstanceNode("/root/hidden/smpij00600/rslt");
  329. model.resetInstanceNode("/root/hidden/smpij00700/cond"); // SMPIJ00700_외래일일심사관리
  330. model.resetInstanceNode("/root/hidden/sppid21300/cond"); // SPPID21300_심사전후차액조회
  331. model.resetInstanceNode("/root/hidden/sppid21400/cond"); // SPPID21400_외래미시행처방조회
  332. model.resetInstanceNode("/root/hidden/sppid21600/cond"); // SPPID21600_세부계산내역조회
  333. model.resetInstanceNode("/root/hidden/smpiz00100/cond"); // SMPIZ00100_외래입원상병이력조회
  334. model.resetInstanceNode("/root/hidden/smpiz00100/rslt");
  335. model.resetInstanceNode("/root/hidden/sppiz00200/cond/clsp"); // SPPIZ00200_첨부물자료관리
  336. model.resetInstanceNode("/root/hidden/sppiz00200/rslt/clsp");
  337. model.resetInstanceNode("/root/hidden/sppiz00300/rslt"); // SPPIZ00300_메모이력조회
  338. model.resetInstanceNode("/root/hidden/sppiz00400/cond"); // SPPIZ00400_상병코드조회
  339. model.resetInstanceNode("/root/hidden/sppiz00400/rslt");
  340. model.resetInstanceNode("/root/hidden/sppiz00500/cond"); // SPPIZ00500_특정내역상세관리
  341. model.resetInstanceNode("/root/hidden/sppiz00500/rslt");
  342. model.resetInstanceNode("/root/hidden/sppiz00600/cond"); // SPPIZ00600_상병및처방별치식
  343. model.resetInstanceNode("/root/hidden/sppiz00600/rslt");
  344. model.resetInstanceNode("/root/hidden/sppiz00700/cond"); // SPPIZ00700_심사Comment조회
  345. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  346. model.resetInstanceNode("/root/hidden/sppiz00800/cond"); // SPPIZ00800_산정코드조회
  347. model.resetInstanceNode("/root/hidden/sppiz00800/rslt");
  348. model.resetInstanceNode("/root/hidden/sppiz01000/cond"); // SPPIZ01000_심사수정사유관리
  349. model.resetInstanceNode("/root/hidden/sppiz01000/rslt");
  350. model.resetInstanceNode("/root/hidden/sppmc02500/cond"); // SPPMC02500_환자조회
  351. // 조회 조건의 초기값을 설정한다.
  352. model.setValue("/root/hidden/list2/osclsrch/selectedRdoPay", "-"); // 급여구분
  353. model.setValue("/root/hidden/list2/osclsrch/selectedRdoItem", "-"); // 항목구분
  354. // 처방 조회부 항목구분 Radio item의 굵은 표시를 취소한다.
  355. var itemRadioList = instance1.selectSingleNode("/root/hidden/list2/osclitem1");
  356. var itemNode = itemRadioList.childNodes;
  357. for (var i = 0; i < itemNode.length; i++) {
  358. rdo_item1.item(i).attribute("font-weight") = "normal";
  359. }
  360. // 원외처방 - 항목구분 (기본값 : 급여)
  361. model.setValue("/root/hidden/list7/clop/selectedRdoPay", "-"); // 전체
  362. // 진료달력 배경색과 굵은 표시를 취소한다.
  363. grd_calendar.rebuildStyle();
  364. return true;
  365. }
  366. /* 종료 */
  367. function fClear() {
  368. // 1. 심사상태 변경
  369. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  370. var dschjudgprcsstat = model.getValue( "/root/main/item1/otpt/dschjudgprcsstat");
  371. // 이전 row 의 심사상태 되돌리기 시작
  372. var oldpid = model.getValue("/root/hidden/list8/pid");
  373. var oldorddd = model.getValue("/root/hidden/list8/orddd");
  374. var oldcretno = model.getValue("/root/hidden/list8/cretno");
  375. var oldacptseqno = model.getValue("/root/hidden/list8/acptseqno");
  376. var olddschjudgprcsstat = model.getValue("/root/hidden/list8/dschjudgprcsstat");
  377. var oldjudgmdlid = model.getValue("/root/hidden/list8/judgmdlid");
  378. var oldlastjudgdt = model.getValue("/root/hidden/list8/lastjudgdt");
  379. if (cretno != "" && dschjudgprcsstat == "B") {
  380. if (olddschjudgprcsstat == "A" || olddschjudgprcsstat == "" || olddschjudgprcsstat == "D" || olddschjudgprcsstat == "E") {
  381. model.removeNodeset("/root/send/list8");
  382. model.makeValue("/root/send/list8/pid", oldpid);
  383. model.makeValue("/root/send/list8/orddd", oldorddd);
  384. model.makeValue("/root/send/list8/cretno", oldcretno);
  385. model.makeValue("/root/send/list8/acptseqno", oldacptseqno);
  386. model.makeValue("/root/send/list8/dschjudgprcsstat", olddschjudgprcsstat);
  387. model.makeValue("/root/send/list8/judgmdlid", oldjudgmdlid);
  388. model.makeValue("/root/send/list8/lastjudgdt", oldlastjudgdt);
  389. submit("TXPIJ00604", false);
  390. }
  391. // 이전 row 의 심사상태 되돌리기 끝
  392. }
  393. // 2. 대상자 조회화면에서 심사상태 이전값으로 보여주도록 함
  394. var trgtManWindow = getChildWindow("SMPIJ00600");
  395. if (trgtManWindow != null) {
  396. var selectedRow = model.getValue("/root/hidden/smpij00600/rslt/selectedRow");
  397. if (selectedRow) {
  398. // 대상자조회 화면에 심사상태 변경
  399. var prevRow = parseInt(selectedRow, 10);
  400. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/dschjudgprcsstat", olddschjudgprcsstat);
  401. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/judgnm", trgtManWindow.model.getValue("/root/hidden/oldotpt/oldjudgnm"));
  402. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/lastupdtdt", oldlastjudgdt);
  403. }
  404. // 대상자조회화면에서 갖고 있는 이전row 정보를 삭제해 준다. (같은행 더블클릭시 이미 조회된 심사대상자임이 아니어야 하므로)
  405. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldrow", "");
  406. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldpid", "");
  407. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldorddd", "");
  408. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldcretno", "");
  409. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldacptseqno", "");
  410. trgtManWindow.model.setValue("/root/hidden/oldotpt/olddschjudgprcsstat", "");
  411. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldjudgmdlid", "");
  412. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldjudgnm", "");
  413. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldlastjudgdt", "");
  414. }
  415. // 3. 화면 초기화
  416. fInitialize();
  417. model.resetInstanceNode("/root/main/item1/otpt");
  418. model.resetInstanceNode("/root/main/item1/memo");
  419. model.resetInstanceNode("/root/main/item2/incd");
  420. model.resetInstanceNode("/root/main/item3/supp");
  421. model.resetInstanceNode("/root/hidden/item1/initotpt/otpt");
  422. model.resetInstanceNode("/root/hidden/item1/otpt");
  423. // 그리드 확대 축소에 따른
  424. cap_message.attribute("left") = "5";
  425. opt_msgspclformat.attribute("left") = "95";
  426. opt_msgspclformat.attribute("width") = "1099";
  427. grp_cldihist.attribute("height") = "170";
  428. grd_cldihist.attribute("height") = "145";
  429. grp_clop.attribute("top") = "541";
  430. grp_clop.attribute("height") = "96";
  431. grd_oprcphist.attribute("top") = "25";
  432. grd_oprcphist.attribute("height") = "71";
  433. // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 초기화한다.
  434. var otherGrp = true;
  435. cap_clod.attribute("top") = "266";
  436. // 상병 Grid 크기를 초기화한다.
  437. grp_cldihist.attribute("height") = "170";
  438. grd_cldihist.attribute("height") = "145";
  439. grd_clodhist.attribute("height") = "255";
  440. grp_clop.attribute("top") = 541;
  441. grp_clop.attribute("height") = 96;
  442. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  443. grp_cldihist.visible = otherGrp;
  444. grp_clsphist.visible = otherGrp;
  445. grp_calendar.visible = otherGrp; // 외래의 경우, 그리드달력 그룹이 추가됨
  446. var icap_top = parseInt(cap_clod.attribute("top"));
  447. ln_clodhist.attribute("y1") = icap_top + 15;
  448. ln_clodhist.attribute("y2") = icap_top + 15;
  449. grd_clodhist.attribute("top") = icap_top + 20;
  450. btn_delordlist.attribute("top") = icap_top - 5;
  451. btn_delordsrch.attribute("top") = icap_top - 5;
  452. grp_ordsrch.attribute("top") = icap_top - 45; // 조회부 그룹
  453. cap_message.attribute("top") = icap_top + 45;
  454. opt_msgspclformat.attribute("top") = icap_top + 39;
  455. // 이전명세서, 처방휴지통, 삭제처방 Group의 컨트롤 크기를 설정한다.
  456. fSetDelOrdPreDocuSize();
  457. // 4. 버튼 초기화
  458. fSetJudgStatBtnAuth();
  459. // 5. 진료달력 초기화
  460. for (var i = 1; i <= 42; i++) {
  461. grd_calendar.cellStyle("background-color", 1, i) = "white";
  462. }
  463. //grd_calendar.rebuildStyle();
  464. // 상단에 환자정보 초기화하고 기입하기
  465. delPatientInfos();
  466. }
  467. /* 진료달력 초기화 */
  468. function initCalendar() {
  469. var curDate = getCurrentDate().toDate();
  470. model.setValue("/root/hidden/calendar/year", curDate.getDateFormat("YYYY"));
  471. model.setValue("/root/hidden/calendar/month", curDate.getDateFormat("MM"));
  472. setCalendar(curDate);
  473. }
  474. // 이전월/년, 다음월/년에 해당하는 일자를 표시한다.
  475. function setCalendar(dateObj) {
  476. var firstDay = dateObj.getDateFormat("YYYY") + dateObj.getDateFormat("MM") +"01";
  477. dateObj = firstDay.toDate();
  478. // 그리드 초기화
  479. /*
  480. model.removeNodeset("/root/hidden/calendar/weeklist/list");
  481. grd_calendar.addRow(false);
  482. grd_calendar.rebuild();
  483. */
  484. model.resetInstanceNode("/root/hidden/calendar/weeklist/list");
  485. grd_calendar.rowhidden(0) = true;
  486. var startDay = dateObj.getDay(); // 요일
  487. var days = dateObj.getMonthDay(); // 마지막 일
  488. var colIndex = startDay;
  489. for( var i = 1; i <= days; i++ ) {
  490. grd_calendar.valueMatrix(1, colIndex) = i;
  491. colIndex++;
  492. }
  493. for (var j = 0; j <42; j++) {
  494. grd_calendar.colHidden(j) = false;
  495. if (grd_calendar.valueMatrix(1, j) == "") {
  496. grd_calendar.colHidden(j) = true;
  497. }
  498. }
  499. }
  500. /* 대상자에 대한 진료기록을 달력에 표기 */
  501. function fSetOrdCalendar() {
  502. var isDate = model.getValue("/root/main/item1/otpt/orddd").toDate();
  503. var YYYY = isDate.getDateFormat("YYYY");
  504. var MM = isDate.getDateFormat("MM");
  505. model.setValue("/root/hidden/calendar/year", YYYY);
  506. model.setValue("/root/hidden/calendar/month", MM);
  507. // 이전 명세서 팝업의 경우, 바뀐 날짜의 시작일자가 적용되지 않으므로 설정함
  508. model.setValue("/root/hidden/calendar/ordddlist/fromdd", YYYY + MM +"01");
  509. model.setValue("/root/hidden/calendar/ordddlist/todd", YYYY + MM + isDate.getMonthDay());
  510. fSetOrdSrchCalendar();
  511. }
  512. /* 이전월/년, 다음월/년에 해당하는 일자와 해당년월에 진료한 일자를 표시 */
  513. function fSetOrdSrchCalendar() {
  514. // 진료달력을 표시한다.
  515. var isDate = model.getValue("/root/main/item1/otpt/orddd").toDate();
  516. var isDay = isDate.getDateFormat("DD");
  517. // 이전명세서 팝업의 경우 fromdd 로 계산시 바뀐 날짜가 아님
  518. var dateObj = model.getValue("/root/hidden/calendar/ordddlist/fromdd").toDate();
  519. // 그리드 초기화
  520. model.removeNodeset("/root/hidden/calendar/weeklist/list");
  521. grd_calendar.addRow(false);
  522. grd_calendar.rebuild();
  523. //model.resetInstanceNode("/root/hidden/calendar/weeklist/list");
  524. //grd_calendar.rebuild();
  525. grd_calendar.rowhidden(0) = true;
  526. var startDay = dateObj.getDay(); // 요일
  527. var days = dateObj.getMonthDay(); // 마지막 일
  528. var colIndex = startDay;
  529. for( var i = 1; i <= days; i++ ) {
  530. grd_calendar.valueMatrix(1, colIndex) = i;
  531. colIndex++;
  532. }
  533. //grd_calendar.gridToInstance();
  534. //grd_calendar.rebuildStyle();
  535. var ordddList = instance1.selectSingleNode("/root/main/ordddlist/list");
  536. if (ordddList != null) {
  537. ordddList = instance1.selectSingleNode("/root/main/ordddlist");
  538. var ordddNode = ordddList.childNodes;
  539. for (var i = 1; i <= ordddNode.length; i++) {
  540. var dd = parseInt(model.getValue("/root/main/ordddlist/list["+ i +"]/orddd").substr(6, 2), 10);
  541. colIndex = dd+startDay-1;
  542. if (grd_calendar.cellStyle("background-color", 1, colIndex) == "white") {
  543. grd_calendar.cellStyle("background-color", 1, colIndex) = "#fcd2c1";
  544. }
  545. /*
  546. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#fcd2c1") {
  547. grd_calendar.cellStyle("background-color", 1, colIndex) = "#ffe79d";
  548. }
  549. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#ffe79d") {
  550. grd_calendar.cellStyle("background-color", 1, colIndex) = "#7be6b7";
  551. }
  552. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#7be6b7") {
  553. grd_calendar.cellStyle("background-color", 1, colIndex) = "#b9e5fb";
  554. }
  555. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#b9e5fb") {
  556. grd_calendar.cellStyle("background-color", 1, colIndex) = "#c8e67b";
  557. }
  558. else if (grd_calendar.cellStyle("background-color", 1, colIndex) == "#c8e67b") {
  559. grd_calendar.cellStyle("background-color", 1, colIndex) = "#43c8f5";
  560. }
  561. */
  562. grd_calendar.cellStyle("border-color", 1, colIndex) = "#b0b0b0"; // "#8ebcff";
  563. }
  564. }
  565. var YYYY = model.getValue("/root/hidden/calendar/year");
  566. var MM = model.getValue("/root/hidden/calendar/month");
  567. var isCurMon = false;
  568. if (isDate.getDateFormat("YYYYMM") == (YYYY+MM)) {
  569. isCurMon = true; // 이전,이후 년월로 이동한 경우에는 일자에 굵은색 표시를 없애기 위해 체크함
  570. }
  571. for (var j = 0; j <42; j++) {
  572. grd_calendar.colHidden(j) = false;
  573. grd_calendar.cellStyle("font-weight", 1, j) = "normal";
  574. if (grd_calendar.valueMatrix(1, j) == "") {
  575. grd_calendar.colHidden(j) = true;
  576. }
  577. var dd = grd_calendar.valueMatrix(1, j);
  578. if (isCurMon && dd) { // 현재 명세서와 동일한 년월인 경우에만 해당 일자에 굵은색으로 표시하도록 함
  579. if (parseInt(dd, 10) == parseInt(isDay, 10)) { // indd (실제 진료일 표시)
  580. grd_calendar.cellStyle("font-weight", 1, j) = "bold";
  581. }
  582. }
  583. }
  584. }
  585. /* 상병 행 추가 */
  586. function fDiagGridInsertRow() {
  587. var clsprow = grd_cldihist.rows - 1;
  588. grd_cldihist.insertRow(clsprow++, true);
  589. model.setValue("/root/main/list1/diag["+ clsprow +"]/diagkindcd", "C");
  590. var seq = 0;
  591. for (var i = 1; i < grd_cldihist.rows; i++) {
  592. if (model.getValue("/root/main/list1/diag["+ i +"]/rowstat") == "D") seq++;
  593. }
  594. var diagseq = clsprow - seq;
  595. model.setValue("/root/main/list1/diag["+ clsprow +"]/diagseq", diagseq);
  596. // 청구과, 진료개시일은 주상병을 기준으로 부여한다.
  597. var diagorddeptcd = model.getValue("/root/main/list1/diag/diagorddeptcd");
  598. if (diagorddeptcd == "") { // 주상병의 진료과가 입력되지 않은 경우 인적사항의 진료과를 입력한다.
  599. diagorddeptcd = model.getValue("/root/main/item1/otpt/orddeptcd");
  600. }
  601. model.setValue("/root/main/list1/diag["+ clsprow +"]/diagorddeptcd", diagorddeptcd);
  602. model.setValue("/root/main/list1/diag["+ clsprow +"]/ordfromdd", model.getValue("/root/main/list1/diag/ordfromdd"));
  603. model.setValue("/root/main/list1/diag["+ clsprow +"]/toot", "-");
  604. model.setValue("/root/main/list1/diag["+ clsprow +"]/toot1", "-");
  605. // 추가구분, 의사입력여부
  606. model.setValue("/root/main/list1/diag["+ clsprow +"]/addflag", "Y");
  607. model.setValue("/root/main/list1/diag["+ clsprow +"]/drinptyn", "N");
  608. model.setValue("/root/main/list1/diag["+ clsprow +"]/pid", model.getValue("/root/main/item1/otpt/pid"));
  609. model.setValue("/root/main/list1/diag["+ clsprow +"]/orddd", model.getValue("/root/main/item1/otpt/orddd"));
  610. model.setValue("/root/main/list1/diag["+ clsprow +"]/cretno", model.getValue("/root/main/item1/otpt/cretno"));
  611. }
  612. /* 상병 행 삭제 */
  613. function fDiagGridDeleteRow() {
  614. // 1. 선택된 행의 rowstat = 'D' 로 만든다.
  615. var rtnval = false;
  616. for (var i = 0; i < grd_cldihist.selectedRows; i++) {
  617. var row = grd_cldihist.selectedrow(i);
  618. var rowstatus = grd_cldihist.rowstatus(row);
  619. var diagcd = model.getValue("/root/main/list1/diag["+ row +"]/diagcd");
  620. var diagnm = model.getValue("/root/main/list1/diag["+ row +"]/diagnm");
  621. var diagseq = model.getValue("/root/main/list1/diag["+ row +"]/diagseq");
  622. if (rowstatus != 4 && diagcd == "" && diagnm == "") {
  623. } else {
  624. if (rowstatus == 1 || rowstatus == 3) {
  625. grd_cldihist.valueMatrix(row, grd_cldihist.colRef("rowstat")) = "D";
  626. model.setValue("/root/main/list1/diag["+ row +"]/rowstat", "D");
  627. } else {
  628. grd_cldihist.rowstatus(row) = 4;
  629. grd_cldihist.valueMatrix(row, grd_cldihist.colRef("rowstat")) = "D";
  630. model.setValue("/root/main/list1/diag["+ row +"]/rowstat", "D");
  631. grd_cldihist.valueMatrix(row, grd_cldihist.colRef("diagseq")) = "D" + diagseq;
  632. model.setValue("/root/main/list1/diag["+ row +"]/diagseq", "D" + diagseq);
  633. }
  634. rtnval = true;
  635. }
  636. }
  637. if (rtnval == true) {
  638. // 2. 그리드의 row가 'I' 모드이고, rowstat가 'D'이면 그리드에서 삭제시켜버린다.
  639. for (var s = grd_cldihist.rows-1; s >= 1 ; s--) {
  640. var rowstatus = grd_cldihist.rowstatus(s);
  641. var rowtext = model.getValue("/root/main/list1/diag["+ s +"]/rowstat");
  642. if (rowstatus == 1 || rowstatus == 3) {
  643. if (rowtext == "D") grd_cldihist.deleteRow(s, false);
  644. }
  645. }
  646. model.refreshpart("/root/main/list1");
  647. // 3. 정렬한다. (삭제된 row는 맨 밑으로)
  648. fSortDiagNo();
  649. // 4 seq를 다시 매긴다.
  650. var seq = 1;
  651. for (var j = 1; j < grd_cldihist.rows; j++) {
  652. var diagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  653. if (diagseq > "D0") {
  654. } else {
  655. if (diagseq != seq) {
  656. model.setValue("/root/main/list1/diag[" + j + "]/diagseq", seq);
  657. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq")) = seq;
  658. grd_cldihist.rowstatus(j) = 2;
  659. model.setValue("/root/main/list1/diag["+ j +"]/rowstat", "U");
  660. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("rowstat")) = "U";
  661. }
  662. seq++;
  663. }
  664. }
  665. // 5. 빈줄을 추가한다.
  666. fDiagGridInsertRow();
  667. }
  668. }
  669. /* 상병 삭제 취소 */
  670. function fDiagGridDeleteCancel() {
  671. for (var i = 0; i < grd_cldihist.selectedRows; i++) {
  672. var row = grd_cldihist.selectedrow(i);
  673. var rowstatus = grd_cldihist.rowstatus(row);
  674. if (rowstatus == 4) {
  675. grd_cldihist.rowstatus(row) = 2;
  676. var no = model.getValue("/root/main/list1/diag["+ row +"]/diagseq");
  677. no = no.replace("D", "");
  678. model.setValue("/root/main/list1/diag["+ row +"]/diagseq", no);
  679. model.setValue("/root/main/list1/diag["+ row +"]/rowstat", "U");
  680. grd_cldihist.valueMatrix(row, grd_cldihist.colRef("rowstat")) = "U";
  681. }
  682. }
  683. // 3. 정렬한다. (삭제된 row는 맨 밑으로)
  684. fSortDiagNo();
  685. // 4 seq를 다시 매긴다.
  686. var seq = 1;
  687. for (var j = 1; j < grd_cldihist.rows; j++) {
  688. var diagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  689. if (diagseq > "D0") {
  690. } else {
  691. model.setValue("/root/main/list1/diag[" + j + "]/diagseq", seq);
  692. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq")) = seq;
  693. seq++;
  694. }
  695. }
  696. // 5. 빈줄을 추가한다.
  697. fDiagGridInsertRow();
  698. }
  699. /* 상병코드 입력 후, 해당 상병코드에 해당되는 정보 조회 */
  700. function fSearchDiageCode() {
  701. var row = grd_cldihist.row;
  702. var diagcd = model.getValue("/root/main/list1/diag["+ row +"]/diagcd");
  703. if (diagcd) {
  704. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  705. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  706. model.makeValue("/root/hidden/sppiz00400/cond/basedd", model.getValue("/root/main/item1/otpt/orddd"));
  707. model.makeValue("/root/hidden/sppiz00400/cond/diagcd", diagcd);
  708. model.makeNode("/root/hidden/sppiz00400/cond/diagnm");
  709. model.makeValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind","1");
  710. // 1. 입력된 상병코드로 emr.mrtmicd10 테이블을 조회한다.
  711. submit("TRPIJ00706", false);
  712. var rsltList = instance1.selectSingleNode("/root/hidden/sppiz00400");
  713. if (rsltList != null && rsltList.childNodes.length == 1) {
  714. // 1-1. 조회된 결과가 1건이면
  715. fSetDiagCdNm();
  716. //fSortDiagNo();
  717. } else {
  718. // 1-2. 조회된 결과가 없거나 여러 건이면 상병코드 조회를 위해 SPPIZ00400_상병코드조회.xrw 를 호출한다.
  719. fSearchSPPIZ00400();
  720. if (model.getValue("/root/main/list1/diag["+ row +"]/diagnm") == "" && model.getValue("/root/main/list1/diag["+ row +"]/diagengnm") == "") {
  721. model.setValue("/root/main/list1/diag["+ row +"]/diagcd", model.getValue("/root/hidden/list1/diag/olddiagcd"));
  722. model.setValue("/root/main/list1/diag["+ row +"]/diagnm", model.getValue("/root/hidden/list1/diag/olddiagnm"));
  723. model.setValue("/root/main/list1/diag["+ row +"]/diagengnm", model.getValue("/root/hidden/list1/diag/oldengnm"));
  724. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/diag/oldrowstat");
  725. // 원복시키기
  726. grd_cldihist.refresh();
  727. fSetDiagRowStatus();
  728. return;
  729. }
  730. //fSortDiagNo();
  731. }
  732. }
  733. }
  734. /* 상병코드 조회 팝업 호출 */
  735. function fSearchSPPIZ00400() {
  736. model.removeNodeset("/root/hidden/sppiz00400/rslt");
  737. model.makeNode("/root/hidden/sppiz00400/rslt/diagcd");
  738. model.makeNode("/root/hidden/sppiz00400/rslt/diaghngnm");
  739. model.makeNode("/root/hidden/sppiz00400/rslt/diagengnm");
  740. model.resetInstanceNode("/root/hidden/sppiz00400/cond");
  741. model.makeValue("/root/hidden/sppiz00400/cond/basedd", model.getValue("/root/main/item1/otpt/orddd"));
  742. model.makeValue("/root/hidden/sppiz00400/cond/diagcd", model.getValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagcd"));
  743. model.makeNode("/root/hidden/sppiz00400/cond/diagnm");
  744. model.makeValue("/root/hidden/sppiz00400/cond/selectedrdodiagkind","3");
  745. modal("SPPIZ00400" ,"", "10", "10", "SPPIZ00400", "/root/hidden/sppiz00400/cond", "/root/init", "", "");
  746. }
  747. /* 상병코드 조회에서 넘어온 상병을 입력 */
  748. function fSetDiagCdNm() {
  749. var row = grd_cldihist.row;
  750. if (row > 0) {
  751. // 1. 상병코드, 상병명(한글), 상병명(영문)을 입력한다.
  752. var diagcd = model.getValue("/root/hidden/sppiz00400/rslt/diagcd");
  753. var diaghngnm = model.getValue("/root/hidden/sppiz00400/rslt/diaghngnm");
  754. var diagengnm = model.getValue("/root/hidden/sppiz00400/rslt/diagengnm");
  755. model.setValue("/root/main/list1/diag["+ row +"]/diagcd", diagcd);
  756. model.setValue("/root/main/list1/diag["+ row +"]/diagnm", diaghngnm);
  757. model.setValue("/root/main/list1/diag["+ row +"]/diagengnm", diagengnm);
  758. // 2. 해당 상병의 한글상병명과 영문상병명이 Message 용 output 컨트롤에 표시된다.
  759. model.setValue("/root/hidden/list3/msgspclformat", "상병코드 - "+ diagcd +" / "+ diaghngnm +" / "+ diagengnm);
  760. opt_msgspclformat.refresh();
  761. var addval1 = model.getValue("/root/main/list1/diag["+ row +"]/rowstat");
  762. var addval2 = grd_cldihist.rowstatus(row);
  763. // 3. 그리드 row 상태를 준다.
  764. var rowstatus = grd_cldihist.rowstatus(row);
  765. if (rowstatus != 4) {
  766. if (rowstatus == 1 || rowstatus == 3) {
  767. model.setValue("/root/main/list1/diag["+ row +"]/rowstat", "I");
  768. } else {
  769. model.setValue("/root/main/list1/diag["+ row +"]/rowstat", "U");
  770. grd_cldihist.rowstatus(row) = 2;
  771. }
  772. }
  773. grd_cldihist.refresh();
  774. fSetDiagRowStatus();
  775. // 4. 빈 row에 대한 입력은 행 추가를 발생시킨다. (그외에는 행추가가 일어나지 않는다.)
  776. if (addval1 == "" && (addval2 == 1 || addval2 == 3)) fDiagGridInsertRow();
  777. }
  778. }
  779. /* 상병순서 부여 */
  780. function fChangeDiagNo() {
  781. var row = grd_cldihist.row;
  782. var newseq = model.getValue("/root/main/list1/diag["+ row +"]/diagseq");
  783. var oldseq = model.getValue("/root/hidden/list1/diag/oldseq");
  784. if (newseq) {
  785. // 1. seq번호를 매긴다.
  786. if (grd_cldihist.rowstatus(row) != 1 && grd_cldihist.rowstatus(row) != 3) {
  787. grd_cldihist.rowstatus(row) = 2;
  788. grd_cldihist.valueMatrix(row, grd_cldihist.colRef("rowstat")) = "U";
  789. model.setValue("/root/main/list1/diag["+ row +"]/rowstat", "U");
  790. }
  791. // 2. '09' 와 같은 형식으로 입력한 경우 -> 9로 처리
  792. newseq = parseInt(model.getValue("/root/main/list1/diag["+ row +"]/diagseq"), 10);
  793. // 3. 삭제상태가 아닌 중복된 번호가 있는지 체크한다.
  794. var sameRow = 0;
  795. for (var i = 1; i < grd_cldihist.rows; i++) {
  796. var diagseq = model.getValue("/root/main/list1/diag["+ i +"]/diagseq");
  797. if (row != i && diagseq == newseq) {
  798. sameRow = i;
  799. i = grd_cldihist.rows;
  800. }
  801. }
  802. // 3-1. seq번호 중복
  803. if (sameRow > 0) {
  804. // 이전보다 앞번호를 입력한 경우
  805. if (newseq < oldseq) {
  806. for (var j = sameRow; j < row; j++) {
  807. var rowstatus = grd_cldihist.rowstatus(j);
  808. if (rowstatus != 4) {
  809. var curseq = parseInt(model.getValue("/root/main/list1/diag["+ j +"]/diagseq"), 10);
  810. if (rowstatus != 1 && rowstatus != 3) {
  811. if (model.getValue("/root/main/list1/diag["+ j +"]/diagseq") != (curseq+1)) {
  812. grd_cldihist.rowstatus(j) = 2;
  813. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("rowstat")) = "U";
  814. model.setValue("/root/main/list1/diag["+ j +"]/rowstat", "U");
  815. }
  816. }
  817. model.setValue("/root/main/list1/diag["+ j +"]/diagseq", curseq+1);
  818. }
  819. }
  820. }
  821. // 이전보다 뒷번호를 입력한 경우
  822. else {
  823. for (var j = row+1; j <= sameRow; j++) {
  824. var rowstatus = grd_cldihist.rowstatus(j);
  825. if (rowstatus != 4) {
  826. var curseq = parseInt(model.getValue("/root/main/list1/diag["+ j +"]/diagseq"), 10);
  827. if (rowstatus != 1 && rowstatus != 3) {
  828. if (model.getValue("/root/main/list1/diag["+ j +"]/diagseq") != (curseq-1)) {
  829. grd_cldihist.rowstatus(j) = 2;
  830. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("rowstat")) = "U";
  831. model.setValue("/root/main/list1/diag["+ j +"]/rowstat", "U");
  832. }
  833. }
  834. model.setValue("/root/main/list1/diag["+ j +"]/diagseq", curseq-1);
  835. }
  836. }
  837. }
  838. // 정렬한다. (삭제된 row는 맨 밑으로)
  839. fSortDiagNo();
  840. // seq를 다시 매긴다.
  841. var seq = 1;
  842. for (var j = 1; j < grd_cldihist.rows; j++) {
  843. var diagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  844. if (diagseq > "D0") {
  845. } else {
  846. model.setValue("/root/main/list1/diag[" + j + "]/diagseq", seq);
  847. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq")) = seq;
  848. seq++;
  849. }
  850. }
  851. // 빈줄을 추가한다.
  852. fDiagGridInsertRow();
  853. // 3-2. seq번호 중복안됨
  854. } else {
  855. // 정렬한다. (삭제된 row는 맨 밑으로)
  856. fSortDiagNo();
  857. // seq를 다시 매긴다.
  858. var seq = 1;
  859. for (var j = 1; j < grd_cldihist.rows; j++) {
  860. var diagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  861. if (diagseq > "D0") {
  862. } else {
  863. model.setValue("/root/main/list1/diag[" + j + "]/diagseq", seq);
  864. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq")) = seq;
  865. seq++;
  866. }
  867. }
  868. // 빈줄을 추가한다.
  869. fDiagGridInsertRow();
  870. }
  871. } else {
  872. model.setValue("/root/main/list1/diag["+ row +"]/diagseq", oldseq);
  873. grd_cldihist.rowstatus(row) = model.getValue("/root/hidden/list1/diag/oldrowstat");
  874. }
  875. }
  876. function fRepeatSpclSpec() {
  877. alert("[특정내역 반복] 구현 예정입니다.");
  878. }
  879. /* 특정내역 행추가 */
  880. function fSpclGridInsertRow() {
  881. var clsprow = grd_clsphist.rows - 1;
  882. grd_clsphist.insertRow(clsprow++, true);
  883. model.setValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "M");
  884. model.setValue("/root/main/list3/clcj["+ clsprow +"]/edicd", "-");
  885. model.setValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "1");
  886. grd_clsphist.row = clsprow;
  887. /*
  888. clsprow++;
  889. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "");
  890. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "M");
  891. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", "-");
  892. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", "");
  893. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "");
  894. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", "");
  895. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "");
  896. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "");
  897. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", "");
  898. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", "");
  899. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  900. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", "");
  901. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", "");
  902. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", "");
  903. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", "");
  904. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "1");
  905. grd_clsphist.refresh();
  906. fSetClcjRowStatus();
  907. */
  908. }
  909. /* 특정내역 행삭제 */
  910. function fSpclGridDeleteRow() {
  911. // 여러 row를 동시에 선택하고 삭제하는 기능을 부여한다.
  912. for (var r = 0; r < grd_clsphist.selectedRows; r++) {
  913. var row = grd_clsphist.selectedRow(r);
  914. // 빈줄일 경우는 삭제하지 않는다.
  915. var rowstatus = grd_clsphist.rowstatus(row);
  916. var spclcd = model.getValue("/root/main/list3/clcj["+ row +"]/spclcd");
  917. var spclspec = model.getValue("/root/main/list3/clcj["+ row +"]/spclspec");
  918. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  919. } else {
  920. // 줄번호가 부여된 줄단위 특정내역이 삭제된 경우, 처방Grid의 'T' 컬럼의 "*" 를 삭제한다.
  921. var unitflag = model.getValue("/root/main/list3/clcj["+ row +"]/unitflag");
  922. if (unitflag == "J") {
  923. var basecd = model.getValue("/root/main/list3/clcj["+ row +"]/edicd");
  924. var spclcd = model.getValue("/root/main/list3/clcj["+ row +"]/spclcd");
  925. if (spclcd == "JT001") { // 확인코드를 삭제한 경우
  926. for (var j = 1; j < grd_clodhist.rows; j++) {
  927. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  928. if (basecd == osclEdicd) {
  929. model.setValue("/root/main/list2/oscl["+ j +"]/cnfmcd", "");
  930. }
  931. }
  932. } else {
  933. var cnt = 0;
  934. for (var j = 1; j < grd_clsphist.rows; j++) {
  935. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  936. if (basecd == spclEdicd && model.getValue("/root/main/list3/clcj["+ j +"]/unitflag") == "J") {
  937. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") != "JT001" && grd_clsphist.rowstatus(j) != 4) {
  938. cnt++;
  939. }
  940. }
  941. }
  942. if (cnt > 1) {
  943. } else { // 특정내역이 한건도 없게 된 경우
  944. for (var k = 1; k < grd_clodhist.rows; k++) {
  945. var osclEdicd = model.getValue("/root/main/list2/oscl["+ k +"]/basecd");
  946. if (basecd == osclEdicd) {
  947. model.setValue("/root/main/list2/oscl["+ k +"]/lnunitspclspecyn", "");
  948. }
  949. }
  950. }
  951. }
  952. } else if (unitflag == "O") {
  953. var basecd = model.getValue("/root/main/list3/clcj["+ row +"]/edicd");
  954. var spclcd = model.getValue("/root/main/list3/clcj["+ row +"]/spclcd");
  955. var cnt = 0;
  956. for (var j = 1; j < grd_clsphist.rows; j++) {
  957. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  958. if (basecd == spclEdicd && model.getValue("/root/main/list3/clcj["+ j +"]/unitflag") == "O") {
  959. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") != "JT001" && grd_clsphist.rowstatus(j) != 4) {
  960. cnt++;
  961. }
  962. }
  963. }
  964. if (cnt > 1) {
  965. } else { // 특정내역이 한건도 없게 된 경우
  966. for (var k = 1; k < grd_oprcphist.rows; k++) {
  967. var clopEdicd = model.getValue("/root/main/list7/clop["+ k +"]/edicd");
  968. if (basecd == clopEdicd) {
  969. model.setValue("/root/main/list7/clop["+ k +"]/spclspecyn", "");
  970. }
  971. }
  972. }
  973. }
  974. // 줄을 삭제한다.
  975. var rowstatus = grd_clsphist.rowstatus(row);
  976. if (rowstatus == 1 || rowstatus == 3) {
  977. grd_clsphist.valueMatrix(row, grd_clsphist.colRef("rowstat")) = "D";
  978. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "D");
  979. } else {
  980. grd_clsphist.rowstatus(row) = 4;
  981. grd_clsphist.valueMatrix(row, grd_clsphist.colRef("rowstat")) = "D";
  982. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "D");
  983. }
  984. model.setValue("/root/hidden/list3/msgspclformat", "");
  985. opt_msgspclformat.refresh();
  986. }
  987. }
  988. for (var s = grd_clsphist.rows-1; s >= 1 ; s--) {
  989. var rowstatus = grd_clsphist.rowstatus(s);
  990. var rowtext = grd_clsphist.valueMatrix(s, grd_clsphist.colRef("rowstat"));
  991. if (rowstatus == 1 || rowstatus == 3) {
  992. if (rowtext == "D") grd_clsphist.deleteRow(s, false);
  993. }
  994. }
  995. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  996. fCheckSpclSpecData();
  997. model.refresh();
  998. }
  999. /* 처방주석입력 */
  1000. function fOrderGridInsertCmt() {
  1001. model.removeNodeset("/root/hidden/sppiz00500/rslt");
  1002. model.removeNodeset("/root/hidden/sppiz00500/cond");
  1003. // 1. 특정내역 입력을 위한 팝업을 띄운다.
  1004. var row = grd_clodhist.row;
  1005. var basecd = model.getValue("/root/main/list2/oscl["+ row +"]/basecd");
  1006. var edicdflag = model.getValue("/root/main/list2/oscl["+ row +"]/edicdflag");
  1007. if (basecd) {
  1008. var lnunitspclspecyn = model.getValue("/root/main/list2/oscl["+ row +"]/lnunitspclspecyn");
  1009. // 1-1. 신규 특정내역 입력
  1010. if (lnunitspclspecyn == "") {
  1011. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  1012. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", basecd);
  1013. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", "-");
  1014. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  1015. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1016. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  1017. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  1018. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  1019. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  1020. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  1021. // 1-2. 기존 특정내역 수정
  1022. } else {
  1023. var rowcnt = 1;
  1024. var setrow = 0;
  1025. for (var i = 1; i < grd_clsphist.rows; i++) {
  1026. var spclEdicd = model.getValue("/root/main/list3/clcj["+ i +"]/edicd");
  1027. if (basecd == spclEdicd && model.getValue("/root/main/list3/clcj["+ i +"]/unitflag") == "J") {
  1028. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  1029. // 확인코드가 아닌 경우
  1030. if (spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) {
  1031. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "");
  1032. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  1033. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", spclEdicd);
  1034. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", "-");
  1035. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  1036. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  1037. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clcj["+ i +"]/spclformat"));
  1038. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clcj["+ i +"]/cdnm"));
  1039. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clcj["+ i +"]/detldesc"));
  1040. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  1041. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  1042. setrow = i;
  1043. rowcnt = rowcnt+1;
  1044. }
  1045. }
  1046. }
  1047. // 특정내역 상세관리에 띄워줄 특정내역 담기
  1048. if (model.getValue("/root/main/list3/clcj["+ setrow +"]/spclcd") == "JX999") {
  1049. model.makevalue("/root/hidden/sppiz00500/cond/flag", "");
  1050. model.makevalue("/root/hidden/sppiz00500/cond/snglcalcscorcd", basecd);
  1051. model.makevalue("/root/hidden/sppiz00500/cond/edilnno", "-");
  1052. model.makevalue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclcd"));
  1053. model.makevalue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clcj["+ setrow +"]/detldesc"));
  1054. model.makevalue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclspec"));
  1055. model.makevalue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclformat"));
  1056. model.makevalue("/root/hidden/sppiz00500/cond/rownum", setrow);
  1057. model.makevalue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clcj["+ setrow +"]/cdnm"));
  1058. model.makevalue("/root/hidden/sppiz00500/cond/unitflag", "J");
  1059. } else {
  1060. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  1061. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", basecd);
  1062. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", "-");
  1063. model.makeValue("/root/hidden/sppiz00500/cond/spclcd", "JX999");
  1064. model.makeValue("/root/hidden/sppiz00500/cond/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  1065. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  1066. model.makeValue("/root/hidden/sppiz00500/cond/spclformat", "X(700)");
  1067. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  1068. model.makeValue("/root/hidden/sppiz00500/cond/cdnm", "기타내역");
  1069. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  1070. }
  1071. }
  1072. modal("SPPIZ00500" ,"", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  1073. // 2. 특정내역 결과를 화면에 보여준다.
  1074. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  1075. if (rsltcnt > 0) {
  1076. var clsprow = grd_clsphist.rows - 1;
  1077. var addcnt = 0;
  1078. for (var i = rsltcnt; i > 0; i--) {
  1079. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  1080. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  1081. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  1082. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  1083. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclspec");
  1084. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  1085. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  1086. // 2-1. 특정내역 추가
  1087. if (flag == "I") {
  1088. clsprow++;
  1089. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  1090. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "J");
  1091. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  1092. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", newspclcd);
  1093. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", newcdnm);
  1094. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", newspclspec);
  1095. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", newspclformat);
  1096. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", newdetldesc);
  1097. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  1098. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", newspclcd);
  1099. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  1100. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ row +"]/prcpdd"));
  1101. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ row +"]/prcpno"));
  1102. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ row +"]/prcphistno"));
  1103. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ row +"]/execprcpseqno"));
  1104. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  1105. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", model.getValue("/root/main/list2/oscl["+ row +"]/edicdflag"));
  1106. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  1107. opt_msgspclformat.refresh();
  1108. addcnt++;
  1109. // 2-2. 특정내역 수정
  1110. } else if (flag == "U") {
  1111. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  1112. model.setValue("/root/main/list3/clcj["+ rownum +"]/edicd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  1113. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclcd", newspclcd);
  1114. model.setValue("/root/main/list3/clcj["+ rownum +"]/cdnm", newcdnm);
  1115. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclspec", newspclspec);
  1116. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclformat", newspclformat);
  1117. model.setValue("/root/main/list3/clcj["+ rownum +"]/detldesc", newdetldesc);
  1118. model.setValue("/root/main/list3/clcj["+ rownum +"]/oldspclcd", newspclcd);
  1119. var rowstatus = grd_clsphist.rowstatus(rownum);
  1120. if (rowstatus == 1 || rowstatus == 3) {
  1121. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "I");
  1122. } else {
  1123. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  1124. }
  1125. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  1126. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  1127. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  1128. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  1129. opt_msgspclformat.refresh();
  1130. // 2-3. 특정내역 삭제
  1131. } else if (flag == "D" && rownum != "" ) {
  1132. var rowstatus = grd_clsphist.rowstatus(rownum);
  1133. if (rowstatus == 1 || rowstatus == 3) {
  1134. grd_clsphist.deleteRow(rownum, false);
  1135. } else {
  1136. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "D");
  1137. }
  1138. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  1139. opt_msgspclformat.refresh();
  1140. }
  1141. }
  1142. grd_clsphist.refresh();
  1143. fSetClcjRowStatus();
  1144. var cnt = 0;
  1145. for (var j = 1; j < grd_clsphist.rows; j++) {
  1146. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  1147. if (basecd == spclEdicd && model.getValue("/root/main/list3/clcj["+ j +"]/unitflag") == "J") {
  1148. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") != "JT001" && grd_clsphist.rowstatus(j) != 4) {
  1149. cnt++;
  1150. }
  1151. }
  1152. }
  1153. if (cnt > 0) {
  1154. if (lnunitspclspecyn == "") { // 기존에는 입력된 내역이 없다가 추가된 경우임
  1155. for (var j = 1; j < grd_clodhist.rows; j++) {
  1156. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  1157. if (basecd == osclEdicd) {
  1158. model.setValue("/root/main/list2/oscl["+ j +"]/lnunitspclspecyn", "*");
  1159. }
  1160. }
  1161. }
  1162. } else { // 특정내역이 한건도 없게 된 경우
  1163. if (lnunitspclspecyn) { // 기존에는 입력된 내역이 있다가 삭제된 경우임
  1164. for (var j = 1; j < grd_clodhist.rows; j++) {
  1165. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  1166. if (basecd == osclEdicd) {
  1167. model.resetInstanceNode("/root/main/list2/oscl["+ j +"]/lnunitspclspecyn");
  1168. }
  1169. }
  1170. }
  1171. }
  1172. } // 처리 건수 if end
  1173. // 3. 특정내역을 소팅한다. - 특정내역을 소트해야 하는 시기는 특정내역이 추가된 경우 뿐이다.
  1174. if (addcnt > 0) {
  1175. fSortSpclNo();
  1176. fSpclGridInsertRow();
  1177. }
  1178. } else {
  1179. messageBox("EDI코드가 입력되지 않았으며 해당 줄단위 특정내역이", "I004"); ///EDI코드가 입력되지 않았으며 해당 줄단위 특정내역이 없습니다.
  1180. }
  1181. }
  1182. /* 사용안함 */
  1183. function fSetLnUnitMemoRefresh(){
  1184. }
  1185. /* 확인코드 입력 */
  1186. function fOrderGridInsertCnfmCd() {
  1187. var row = grd_clodhist.row;
  1188. var basecd = model.getValue("/root/main/list2/oscl["+ row +"]/basecd");
  1189. if (basecd) {
  1190. // 1. 확인코드 조회 팝업을 호출한다.
  1191. model.removeNodeset("root/hidden/sppiz01100/rslt");
  1192. model.makeValue("/root/hidden/sppiz01100/cond/code", model.getValue("/root/main/list2/oscl["+ row +"]/cnfmcd"));
  1193. modal("SPPIZ01100" ,"", "10", "10", "SPPIZ01100", "/root/hidden/sppiz01100", "/root/init/sppiz01100", "", "");
  1194. // 2. 확인코드 조회 결과를 처리한다.
  1195. if (instance1.selectSingleNode("root/hidden/sppiz01100/rslt")) {
  1196. var cnfmcd = model.getValue("root/hidden/sppiz01100/rslt/code");
  1197. if (cnfmcd) {
  1198. // 2-1. 처방그리드 확인코드 값을 넣는다.
  1199. for (var j = 1; j < grd_clodhist.rows; j++) {
  1200. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  1201. if (basecd == osclEdicd) {
  1202. model.setValue("/root/main/list2/oscl["+ j +"]/cnfmcd", cnfmcd);
  1203. }
  1204. }
  1205. // 2-2. 기존에 특정내역에 존재하는 확인코드일 경우, 확인코드를 수정한다.
  1206. var isFind = false;
  1207. for (var j = 1; j < grd_clsphist.rows && isFind != true; j++) {
  1208. var unitflag = model.getValue("/root/main/list3/clcj["+ j +"]/unitflag");
  1209. if (unitflag == "J") {
  1210. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  1211. var spclSpclcd = model.getValue("/root/main/list3/clcj["+ j +"]/spclcd");
  1212. if (spclEdicd == basecd && spclSpclcd == "JT001") {
  1213. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "U");
  1214. model.setValue("/root/main/list3/clcj["+ j +"]/edicd", basecd);
  1215. model.setValue("/root/main/list3/clcj["+ j +"]/spclcd", "JT001");
  1216. model.setValue("/root/main/list3/clcj["+ j +"]/cdnm", "확인코드");
  1217. model.setValue("/root/main/list3/clcj["+ j +"]/spclspec", cnfmcd);
  1218. model.setValue("/root/main/list3/clcj["+ j +"]/spclformat", "X(5)");
  1219. model.setValue("/root/main/list3/clcj["+ j +"]/detldesc", "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재");
  1220. model.setValue("/root/main/list3/clcj["+ j +"]/oldspclcd", "JT001");
  1221. model.setValue("/root/main/list3/clcj["+ j +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ row +"]/prcpdd"));
  1222. model.setValue("/root/main/list3/clcj["+ j +"]/prcpno", model.getValue("/root/main/list2/oscl["+ row +"]/prcpno"));
  1223. model.setValue("/root/main/list3/clcj["+ j +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ row +"]/prcphistno"));
  1224. model.setValue("/root/main/list3/clcj["+ j +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ row +"]/execprcpseqno"));
  1225. var rowstatus = grd_clsphist.rowstatus(j);
  1226. if (rowstatus == 1 || rowstatus == 3) {
  1227. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "I");
  1228. } else {
  1229. grd_clsphist.rowstatus(j) = 2;
  1230. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "U");
  1231. }
  1232. isFind = true;
  1233. }
  1234. }
  1235. }
  1236. // 2-3. 신규 입력 확인코드일 경우, 확인코드를 추가한다.
  1237. if (isFind == false) {
  1238. var clsprow = grd_clsphist.rows;
  1239. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  1240. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "J");
  1241. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", basecd);
  1242. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", "JT001");
  1243. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "확인코드");
  1244. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", cnfmcd);
  1245. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(5)");
  1246. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "진료행위에 대한 추가기술 사항을 구분하는 코드로서 확인코드가 여러개 발생할 경우 '/'로 구분하여 기재");
  1247. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", basecd);
  1248. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", "JT001");
  1249. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  1250. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ row +"]/prcpdd"));
  1251. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ row +"]/prcpno"));
  1252. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ row +"]/prcphistno"));
  1253. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ row +"]/execprcpseqno"));
  1254. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  1255. grd_clsphist.refresh();
  1256. // refresh로 인한 rowstatus 초기화 되므로 원상태로 만들어줌
  1257. fSetClcjRowStatus();
  1258. fSortSpclNo();
  1259. fSpclGridInsertRow();
  1260. }
  1261. model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : "+ cnfmcd +" / 기재형식 : X(5)");
  1262. opt_msgspclformat.refresh();
  1263. } else {
  1264. }
  1265. }
  1266. }
  1267. }
  1268. /* 특정내역 rowstatus 세팅 */
  1269. function fSetClcjRowStatus() {
  1270. for (var k = grd_clsphist.rows - 1; k >= 1; k--) {
  1271. var rowstatus = model.getValue("/root/main/list3/clcj["+ k +"]/rowstat");
  1272. if (rowstatus == "I") grd_clsphist.rowstatus(k) = 1;
  1273. else if (rowstatus == "U") grd_clsphist.rowstatus(k) = 2;
  1274. else if (rowstatus == "D") grd_clsphist.rowstatus(k) = 4;
  1275. else if (rowstatus == "R") grd_clsphist.deleteRow(k, true);
  1276. }
  1277. }
  1278. /* 상병내역 rowstatus 세팅 */
  1279. function fSetDiagRowStatus() {
  1280. for (var k = grd_cldihist.rows - 1; k >= 1; k--) {
  1281. var rowstatus = model.getValue("/root/main/list1/diag["+ k +"]/rowstat");
  1282. if (rowstatus == "I") grd_cldihist.rowstatus(k) = 1;
  1283. else if (rowstatus == "U") grd_cldihist.rowstatus(k) = 2;
  1284. else if (rowstatus == "D") grd_cldihist.rowstatus(k) = 4;
  1285. else if (rowstatus == "R") grd_cldihist.deleteRow(k, true);
  1286. }
  1287. }
  1288. /* 특정내역상세관리화면에서 '결과조회' 팝업 띄움 */
  1289. function fOrderRsltSrch() {
  1290. var pid = model.getValue("/root/main/item1/otpt/pid");
  1291. var orddd = model.getValue("/root/main/item1/otpt/orddd");
  1292. if (pid != "") {
  1293. model.makevalue("/root/hidden/smaer00800/cond/srchdate1", orddd);
  1294. model.makevalue("/root/hidden/smaer00800/cond/srchdate2", getCurrentDate());
  1295. model.makevalue("/root/hidden/smaer00800/cond/srchpid", pid);
  1296. model.makevalue("/root/hidden/smaer00800/cond/wardcd", "");
  1297. model.makevalue("/root/hidden/smaer00800/cond/roomcd", "");
  1298. model.makevalue("/root/hidden/smaer00800/cond/listflag", "P");
  1299. model.makevalue("/root/hidden/smaer00800/cond/deptcd", "");
  1300. model.makevalue("/root/hidden/smaer00800/cond/drid", "");
  1301. model.makevalue("/root/hidden/smaer00800/cond/chkcheck", "");
  1302. model.makevalue("/root/hidden/smaer00800/cond/chkcheck1", "A");
  1303. model.makevalue("/root/hidden/smaer00800/cond/chkcheck2", "B");
  1304. model.makevalue("/root/hidden/smaer00800/cond/chkcheck3", "C");
  1305. model.makevalue("/root/hidden/smaer00800/cond/chkcheck4", "D");
  1306. model.makevalue("/root/hidden/smaer00800/cond/chkcheck5", "E");
  1307. model.makevalue("/root/hidden/smaer00800/cond/chkcheck6", "F");
  1308. model.makevalue("/root/hidden/smaer00800/cond/chkcheck7", "G");
  1309. model.makevalue("/root/hidden/smaer00800/cond/chkcheck8", "");
  1310. model.makevalue("/root/hidden/smaer00800/cond/tabflag", "");
  1311. model.makevalue("/root/hidden/smaer00800/cond/mdlcd", "");
  1312. model.makevalue("/root/hidden/smaer00800/cond/examgubun", "");
  1313. open("SMAER00800" ,"", "10", "10", "SMAER00800", "/root/hidden/smaer00800/cond", "/root/send/data/singdata", "", "");
  1314. }
  1315. }
  1316. /* 보험인정기준조회 */
  1317. function fOrderInsuRcogBase() {
  1318. var calcscorcd = grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd"));
  1319. model.setValue("root/hidden/sppiz01600/cond/calcscorcd", calcscorcd);
  1320. // SPPIZ01600_보험인정기준조회 팝업 연결 (선택된 row의 처방코드를 넘겨준다.)
  1321. modal("SPPIZ01600", 1,150, 150, "SPPIZ01600", "root/hidden/sppiz01600/cond/calcscorcd", "/root/send/item3/calcscorcd", "", "");
  1322. }
  1323. /* 수가조회 */
  1324. function fOrderCalcScorSrch(isAll) {
  1325. // 수가조회창이 아닌 수가관리창으로 교체 2008.01.29 박지욱 수정 (calcscorcd : 수가코드, judgflag : 수가관리에서 자보,일반,국제를 보여주도록 하기 위함)
  1326. model.setValue("/root/hidden/smpic00100/cond/calcscorcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd")));
  1327. model.setValue("/root/hidden/smpic00100/cond/judgflag", "Y");
  1328. modal("SMPIC00100", 1,150, 150, "SMPIC00100", "/root/hidden/smpic00100/cond", "/root/temp/item6", "", "");
  1329. }
  1330. /* 약품편람 */
  1331. function fOrderDrugHBook() {
  1332. model.setValue("/root/hidden/smadb01900/cond/calcscorcd", grd_clodhist.valueMatrix(grd_clodhist.row, grd_clodhist.colRef("snglcalcscorcd")));
  1333. modal("SMADB01900", 1,150, 150, "SMADB01900", "/root/hidden/smadb01900/cond/calcscorcd", "/root/hidden/receivedata/srchdrugcd", "", "");
  1334. }
  1335. /* 상세계산내역 - 사용안함 */
  1336. function fOrderCalcDetail(isAll) {
  1337. model.resetInstanceNode("/root/hidden/sppid21600/cond");
  1338. model.setValue("/root/hidden/sppid21600/cond/pid", model.getValue("/root/main/item1/otpt/pid"));
  1339. model.setValue("/root/hidden/sppid21600/cond/indd", model.getValue("/root/main/item1/otpt/orddd"));
  1340. model.setValue("/root/hidden/sppid21600/cond/fromdd", model.getValue("/root/main/item1/otpt/ordfromdd"));
  1341. model.setValue("/root/hidden/sppid21600/cond/todd", model.getValue("/root/main/item1/otpt/dschdd"));
  1342. if (isAll == false) { // 처방Grid 더블클릭 시
  1343. model.setValue("/root/hidden/sppid21600/cond/calcscorcd", model.getValue("/root/main/list2/oscl["+ grd_clodhist.row +"]/snglcalcscorcd"));
  1344. }
  1345. model.setValue("/root/hidden/sppid21600/cond/insukindcd", model.getValue("/root/main/item1/otpt/insukindcd"));
  1346. model.setValue("/root/hidden/sppid21600/cond/insukind", model.getValue("/root/main/item1/otpt/insukindnm"));
  1347. model.setValue("/root/hidden/sppid21600/cond/suppkindcd", model.getValue("/root/main/item1/otpt/suppkindcd"));
  1348. model.setValue("/root/hidden/sppid21600/cond/suppkind", cmb_supprate.label);
  1349. model.setValue("/root/hidden/sppid21600/cond/ownbrate", model.getValue("/root/main/item1/otpt/payownbrate"));
  1350. var calcDetailWindow = getChildWindow("SPPID21600"); // SPPID21600_세부계산내역.xrw
  1351. if (calcDetailWindow == null) {
  1352. open("SPPID21600" ,"", "10", "10", "SPPID21600", "", "", "", "");
  1353. } else {
  1354. calcDetailWindow.javascript.fGetMainInfo();
  1355. activateChild("SPPID21600");
  1356. }
  1357. }
  1358. /* 환자단위 메시지 전송 */
  1359. function fSendMsgPat() {
  1360. model.makeValue("/root/temp/opentab", "receivemsg");
  1361. zmifOpenMessagePopup("/root/temp"); // root/temp/opentab 에 receivemsg (받은메세지함) 값을 주고 오픈한다.
  1362. }
  1363. /* 처방단위 메시지 전송 */
  1364. function fSendMsgOrder() {
  1365. model.makeValue("/root/temp/opentab", "pmsg");
  1366. zmifOpenMessagePopup("/root/temp"); // root/temp/opentab 에 pmsg (환자메세지작성창) 값을 주고 오픈한다.
  1367. }
  1368. /* 대상자조회에서 대상자 선택하여 넘어올때 메세지 여부 확인, JHP. 2009.07.23 */
  1369. function fGetPatMsgYn(pid, orddd, cretno){
  1370. //var pid = model.getValue("/root/hidden/smpij00600/rslt/pid");
  1371. //var orddd = model.getValue("/root/hidden/smpij00600/rslt/orddd");
  1372. //var cretno = model.getValue("/root/hidden/smpij00600/rslt/cretno");
  1373. //var selectedRow = model.getValue("/root/hidden/smpij00600/rslt/selectedRow");
  1374. // 1. 환자의 작성된 메세지를 조회한다.
  1375. if (pid && orddd && cretno) {
  1376. model.removeNodeset("/root/send/msg01");
  1377. model.makeValue("/root/send/msg01/pid" , pid);
  1378. model.makeValue("/root/send/msg01/orddd" , orddd);
  1379. model.makeValue("/root/send/msg01/cretno" , cretno);
  1380. model.makeValue("/root/send/msg01/mskind" , "M");
  1381. model.makeValue("/root/send/msg01/ordtype" , "O");
  1382. model.makeNode("/root/main/msglist/list");
  1383. if(submit("TRPIZ01903")){
  1384. var cnt = getNodesetCount("/root/main/msglist/list");
  1385. if(cnt > 0){
  1386. img_msg.visible = true;
  1387. }else{
  1388. img_msg.visible = false;
  1389. }
  1390. }else{
  1391. messageBox("환자 메세지 조회건수가 ","I011");
  1392. }
  1393. }
  1394. }
  1395. /* 환자기준 전송메세지작성, JHP. 2009.07.16 */
  1396. function fPatJudgPatMsgTrsm() {
  1397. if (!isNull(model.getvalue("/root/main/item1/otpt/pid"))) {
  1398. // 인스턴스생성
  1399. model.makeNode("/root/tmp/msgtrsm/info/instcd");
  1400. model.makeNode("/root/tmp/msgtrsm/info/msgwrtedd");
  1401. model.makeNode("/root/tmp/msgtrsm/info/msgwrteno");
  1402. model.makeNode("/root/tmp/msgtrsm/info/msgwrtehistno");
  1403. model.makeNode("/root/tmp/msgtrsm/info/histstat");
  1404. model.makeNode("/root/tmp/msgtrsm/info/pid");
  1405. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  1406. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  1407. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  1408. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  1409. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  1410. model.makeNode("/root/tmp/msgtrsm/info/orddrnm");
  1411. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  1412. model.makeNode("/root/tmp/msgtrsm/info/kindflag");
  1413. model.makeNode("/root/tmp/msgtrsm/info/grupcalcscorcd");
  1414. model.makeNode("/root/tmp/msgtrsm/info/snglcalcscorcd");
  1415. model.makeNode("/root/tmp/msgtrsm/info/ordqty");
  1416. model.makeNode("/root/tmp/msgtrsm/info/ordtims");
  1417. model.makeNode("/root/tmp/msgtrsm/info/orddays");
  1418. model.makeNode("/root/tmp/msgtrsm/info/prcpdd");
  1419. model.makeNode("/root/tmp/msgtrsm/info/prcpno");
  1420. model.makeNode("/root/tmp/msgtrsm/info/prcppayflag");
  1421. model.makeNode("/root/tmp/msgtrsm/info/rgstrid");
  1422. model.makeNode("/root/tmp/msgtrsm/info/rgstdd");
  1423. model.makeNode("/root/tmp/msgtrsm/info/rgsttm");
  1424. model.makeNode("/root/tmp/msgtrsm/info/sendphone");
  1425. model.makeNode("/root/tmp/msgtrsm/info/anybodyyn");
  1426. model.makeNode("/root/tmp/msgtrsm/info/sendflag");
  1427. model.makeNode("/root/tmp/msgtrsm/info/senddate");
  1428. model.makeNode("/root/tmp/msgtrsm/info/sendid");
  1429. model.makeNode("/root/tmp/msgtrsm/info/deliveid");
  1430. model.makeNode("/root/tmp/msgtrsm/info/recvdate");
  1431. model.makeNode("/root/tmp/msgtrsm/info/recvid");
  1432. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmyn");
  1433. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmid");
  1434. model.makeNode("/root/tmp/msgtrsm/info/sendmsg");
  1435. model.makeNode("/root/tmp/msgtrsm/info/recvmsg");
  1436. model.makeNode("/root/tmp/msgtrsm/info/fstrgstrid");
  1437. model.makeNode("/root/tmp/msgtrsm/info/fstrgstdt");
  1438. model.makeNode("/root/tmp/msgtrsm/info/lastupdtrid");
  1439. model.makeNode("/root/tmp/msgtrsm/info/lastupdtdt");
  1440. // 값셋팅
  1441. // 세션값 받기
  1442. var sUserInfosS = getUserInfos();
  1443. sUserInfosS = sUserInfosS + "|";
  1444. var UserInfosS_Array = sUserInfosS.split("|");
  1445. var userid = UserInfosS_Array[0]; //사용자번호
  1446. var usernm = UserInfosS_Array[1]; //사용자이름
  1447. var posinstcd = UserInfosS_Array[6]; //근무지기관코드 2009.04.15
  1448. var posinstnm = UserInfosS_Array[7]; //근무지기관명 2009.04.15
  1449. var posdeptcd = UserInfosS_Array[4]; //소속부서코드
  1450. var posdeptnm = UserInfosS_Array[5]; //소속부서명
  1451. if (userid == null || userid == "" || userid == " " || userid == "-") userid = "pam";
  1452. model.setValue("/root/tmp/msgtrsm/info/instcd", ""); // chk
  1453. model.setValue("/root/tmp/msgtrsm/info/msgwrtedd", getCurrentDate()); // chk
  1454. model.setValue("/root/tmp/msgtrsm/info/msgwrteno", ""); // chk
  1455. model.setValue("/root/tmp/msgtrsm/info/msgwrtehistno", ""); // chk
  1456. model.setValue("/root/tmp/msgtrsm/info/histstat", "Y"); // chk
  1457. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/otpt/pid")); // chk
  1458. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/otpt/orddd")); // chk
  1459. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/otpt/cretno")); // chk
  1460. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  1461. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd")); // chk
  1462. var drid = model.getValue("/root/main/item1/otpt/orddrid")
  1463. var drnm = model.getValue("/root/init/orddrid/orddridlist[cd = '" + drid + "']/nm");
  1464. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/otpt/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  1465. model.setValue("/root/tmp/msgtrsm/info/orddrnm", drnm); // chk, TABLE에 적용안함.(값만확인)
  1466. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  1467. model.setValue("/root/tmp/msgtrsm/info/kindflag", "P"); // 환자기준 'P', chk
  1468. model.setValue("/root/tmp/msgtrsm/info/grupcalcscorcd", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/grupcalcscorcd")); chk
  1469. model.setValue("/root/tmp/msgtrsm/info/snglcalcscorcd", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd")); chk
  1470. model.setValue("/root/tmp/msgtrsm/info/ordqty", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/ordqty")); chk
  1471. model.setValue("/root/tmp/msgtrsm/info/ordtims", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/ordtims")); chk
  1472. model.setValue("/root/tmp/msgtrsm/info/orddays", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/orddays")); chk
  1473. model.setValue("/root/tmp/msgtrsm/info/prcpdd", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcpdd")); chk
  1474. model.setValue("/root/tmp/msgtrsm/info/prcpno", 0); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcpno")); chk
  1475. model.setValue("/root/tmp/msgtrsm/info/prcppayflag", "-"); //model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcppayflag")); chk
  1476. model.setValue("/root/tmp/msgtrsm/info/rgstrid", "-"); // 서버단에서 조회하여 가져와야함. chk
  1477. model.setValue("/root/tmp/msgtrsm/info/rgstdd", "-"); // 서버단에서 조회하여 가져와야함. chk
  1478. model.setValue("/root/tmp/msgtrsm/info/rgsttm", "-"); // 서버단에서 조회하여 가져와야함. chk
  1479. model.setValue("/root/tmp/msgtrsm/info/sendphone", ""); // 서버단에서 조회하여 가져와야함. chk
  1480. model.setValue("/root/tmp/msgtrsm/info/anybodyyn", "N"); // 누구나 기본 'N', chk
  1481. model.setValue("/root/tmp/msgtrsm/info/sendflag", "O"); // 진료기본 'O', chk
  1482. model.setValue("/root/tmp/msgtrsm/info/senddate", ""); //쿼리에서 timestamp chk
  1483. model.setValue("/root/tmp/msgtrsm/info/sendid", userid); //chk
  1484. model.setValue("/root/tmp/msgtrsm/info/deliveid", "-"); // 화면에서선택. chk
  1485. model.setValue("/root/tmp/msgtrsm/info/recvdate", ""); // chk
  1486. model.setValue("/root/tmp/msgtrsm/info/recvid", ""); // chk
  1487. model.setValue("/root/tmp/msgtrsm/info/recvcnfmyn", "N"); // 기본 비연속 'N', chk
  1488. model.setValue("/root/tmp/msgtrsm/info/recvcnfmid", userid); //chk
  1489. //var sendmsgvalue1 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd");
  1490. //var sendmsgvalue2 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/hngnm");
  1491. //var sendmsgvalue = sendmsgvalue1 + ', ' + sendmsgvalue2;
  1492. model.setValue("/root/tmp/msgtrsm/info/sendmsg", ""); //sendmsgvalue); // 기본 처방코드, 처방명값가지고 시작. chk
  1493. model.setValue("/root/tmp/msgtrsm/info/recvmsg", ""); // chk
  1494. model.setValue("/root/tmp/msgtrsm/info/fstrgstrid", ""); // chk
  1495. model.setValue("/root/tmp/msgtrsm/info/fstrgstdt", ""); // chk
  1496. model.setValue("/root/tmp/msgtrsm/info/lastupdtrid", ""); // chk
  1497. model.setValue("/root/tmp/msgtrsm/info/lastupdtdt", ""); // chk
  1498. } else {
  1499. messageBox("기본정보가 ", "I004");
  1500. }
  1501. model.refresh();
  1502. modal("SPPIZ01900_심사환자메세지작성", "", "400", "300", "", "/root/tmp/msgtrsm/info", "/root/main/patinfo");
  1503. model.removenode("/root/tmp/msgtrsm");
  1504. }
  1505. /* 처방기준 전송메세지작성, JHP. 2009.07.16 */
  1506. function fOrderJudgPatMsgTrsm() {
  1507. if (!isNull(model.getvalue("/root/main/item1/otpt/pid"))) {
  1508. // 인스턴스생성
  1509. model.makeNode("/root/tmp/msgtrsm/info/instcd");
  1510. model.makeNode("/root/tmp/msgtrsm/info/msgwrtedd");
  1511. model.makeNode("/root/tmp/msgtrsm/info/msgwrteno");
  1512. model.makeNode("/root/tmp/msgtrsm/info/msgwrtehistno");
  1513. model.makeNode("/root/tmp/msgtrsm/info/histstat");
  1514. model.makeNode("/root/tmp/msgtrsm/info/pid");
  1515. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  1516. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  1517. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  1518. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  1519. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  1520. model.makeNode("/root/tmp/msgtrsm/info/orddrnm");
  1521. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  1522. model.makeNode("/root/tmp/msgtrsm/info/kindflag");
  1523. model.makeNode("/root/tmp/msgtrsm/info/grupcalcscorcd");
  1524. model.makeNode("/root/tmp/msgtrsm/info/snglcalcscorcd");
  1525. model.makeNode("/root/tmp/msgtrsm/info/ordqty");
  1526. model.makeNode("/root/tmp/msgtrsm/info/ordtims");
  1527. model.makeNode("/root/tmp/msgtrsm/info/orddays");
  1528. model.makeNode("/root/tmp/msgtrsm/info/prcpdd");
  1529. model.makeNode("/root/tmp/msgtrsm/info/prcpno");
  1530. model.makeNode("/root/tmp/msgtrsm/info/prcppayflag");
  1531. model.makeNode("/root/tmp/msgtrsm/info/rgstrid");
  1532. model.makeNode("/root/tmp/msgtrsm/info/rgstdd");
  1533. model.makeNode("/root/tmp/msgtrsm/info/rgsttm");
  1534. model.makeNode("/root/tmp/msgtrsm/info/sendphone");
  1535. model.makeNode("/root/tmp/msgtrsm/info/anybodyyn");
  1536. model.makeNode("/root/tmp/msgtrsm/info/sendflag");
  1537. model.makeNode("/root/tmp/msgtrsm/info/senddate");
  1538. model.makeNode("/root/tmp/msgtrsm/info/sendid");
  1539. model.makeNode("/root/tmp/msgtrsm/info/deliveid");
  1540. model.makeNode("/root/tmp/msgtrsm/info/recvdate");
  1541. model.makeNode("/root/tmp/msgtrsm/info/recvid");
  1542. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmyn");
  1543. model.makeNode("/root/tmp/msgtrsm/info/recvcnfmid");
  1544. model.makeNode("/root/tmp/msgtrsm/info/sendmsg");
  1545. model.makeNode("/root/tmp/msgtrsm/info/recvmsg");
  1546. model.makeNode("/root/tmp/msgtrsm/info/fstrgstrid");
  1547. model.makeNode("/root/tmp/msgtrsm/info/fstrgstdt");
  1548. model.makeNode("/root/tmp/msgtrsm/info/lastupdtrid");
  1549. model.makeNode("/root/tmp/msgtrsm/info/lastupdtdt");
  1550. // 값셋팅
  1551. // 처방이므로 처방row선택여부 확인
  1552. if(grd_clodhist.row <= 0){
  1553. return;
  1554. }
  1555. // 세션값 받기
  1556. var sUserInfosS = getUserInfos();
  1557. sUserInfosS = sUserInfosS + "|";
  1558. var UserInfosS_Array = sUserInfosS.split("|");
  1559. var userid = UserInfosS_Array[0]; //사용자번호
  1560. var usernm = UserInfosS_Array[1]; //사용자이름
  1561. var posinstcd = UserInfosS_Array[6]; //근무지기관코드 2009.04.15
  1562. var posinstnm = UserInfosS_Array[7]; //근무지기관명 2009.04.15
  1563. var posdeptcd = UserInfosS_Array[4]; //소속부서코드
  1564. var posdeptnm = UserInfosS_Array[5]; //소속부서명
  1565. if (userid == null || userid == "" || userid == " " || userid == "-") userid = "pam";
  1566. model.setValue("/root/tmp/msgtrsm/info/instcd", ""); // chk
  1567. model.setValue("/root/tmp/msgtrsm/info/msgwrtedd", getCurrentDate()); // chk
  1568. model.setValue("/root/tmp/msgtrsm/info/msgwrteno", ""); // chk
  1569. model.setValue("/root/tmp/msgtrsm/info/msgwrtehistno", ""); // chk
  1570. model.setValue("/root/tmp/msgtrsm/info/histstat", "Y"); // chk
  1571. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/otpt/pid")); // chk
  1572. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/otpt/orddd")); // chk
  1573. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/otpt/cretno")); // chk
  1574. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  1575. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd")); // chk
  1576. var drid = model.getValue("/root/main/item1/otpt/orddrid")
  1577. var drnm = model.getValue("/root/init/orddrid/orddridlist[cd = '" + drid + "']/nm");
  1578. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/otpt/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  1579. model.setValue("/root/tmp/msgtrsm/info/orddrnm", drnm); // chk, TABLE에 적용안함.(값만확인)
  1580. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  1581. model.setValue("/root/tmp/msgtrsm/info/kindflag", "O"); // 처방기준 'O', chk
  1582. model.setValue("/root/tmp/msgtrsm/info/grupcalcscorcd", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/grupcalcscorcd")); //chk
  1583. model.setValue("/root/tmp/msgtrsm/info/snglcalcscorcd", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd")); //chk
  1584. model.setValue("/root/tmp/msgtrsm/info/ordqty", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/ordqty")); //chk
  1585. model.setValue("/root/tmp/msgtrsm/info/ordtims", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/ordtims")); //chk
  1586. model.setValue("/root/tmp/msgtrsm/info/orddays", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/orddays")); //chk
  1587. model.setValue("/root/tmp/msgtrsm/info/prcpdd", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcpdd")); //chk
  1588. model.setValue("/root/tmp/msgtrsm/info/prcpno", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcpno")); //chk
  1589. model.setValue("/root/tmp/msgtrsm/info/prcppayflag", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/prcppayflag")); //chk
  1590. model.setValue("/root/tmp/msgtrsm/info/rgstrid", "-"); // 서버단에서 조회하여 가져와야함. chk
  1591. model.setValue("/root/tmp/msgtrsm/info/rgstdd", "-"); // 서버단에서 조회하여 가져와야함. chk
  1592. model.setValue("/root/tmp/msgtrsm/info/rgsttm", "-"); // 서버단에서 조회하여 가져와야함. chk
  1593. model.setValue("/root/tmp/msgtrsm/info/sendphone", ""); // 서버단에서 조회하여 가져와야함. chk
  1594. model.setValue("/root/tmp/msgtrsm/info/anybodyyn", "N"); // 누구나 기본 'N', chk
  1595. model.setValue("/root/tmp/msgtrsm/info/sendflag", "O"); // 진료기본 'O', chk
  1596. model.setValue("/root/tmp/msgtrsm/info/senddate", ""); //쿼리에서 timestamp chk
  1597. model.setValue("/root/tmp/msgtrsm/info/sendid", userid); //chk
  1598. model.setValue("/root/tmp/msgtrsm/info/deliveid", "-"); // 화면에서선택. chk
  1599. model.setValue("/root/tmp/msgtrsm/info/recvdate", ""); // chk
  1600. model.setValue("/root/tmp/msgtrsm/info/recvid", ""); // chk
  1601. model.setValue("/root/tmp/msgtrsm/info/recvcnfmyn", "N"); // 기본 비연속 'N', chk
  1602. model.setValue("/root/tmp/msgtrsm/info/recvcnfmid", userid); //chk
  1603. //var sendmsgvalue1 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/snglcalcscorcd");
  1604. //var sendmsgvalue2 = model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/hngnm");
  1605. //var sendmsgvalue = sendmsgvalue1 + ', ' + sendmsgvalue2;
  1606. model.setValue("/root/tmp/msgtrsm/info/sendmsg", ""); // 기본 처방코드, 처방명값가지고 시작. chk -> 변경 화면에서 그룹코드 명 조회하여 넣어줌. chk
  1607. model.setValue("/root/tmp/msgtrsm/info/recvmsg", ""); // chk
  1608. model.setValue("/root/tmp/msgtrsm/info/fstrgstrid", ""); // chk
  1609. model.setValue("/root/tmp/msgtrsm/info/fstrgstdt", ""); // chk
  1610. model.setValue("/root/tmp/msgtrsm/info/lastupdtrid", ""); // chk
  1611. model.setValue("/root/tmp/msgtrsm/info/lastupdtdt", ""); // chk
  1612. } else {
  1613. messageBox("기본정보가 ", "I004");
  1614. }
  1615. model.refresh();
  1616. modal("SPPIZ01900_심사환자메세지작성", "", "400", "300", "", "/root/tmp/msgtrsm/info", "/root/main/patinfo");
  1617. model.removenode("/root/tmp/msgtrsm");
  1618. }
  1619. // 환자 전체 메세지 내용 조회하여 하나씩 보기.
  1620. function fJudgPatMsgTrsmRef(){
  1621. model.makeNode("/root/tmp/msgtrsm/info/refyn");
  1622. model.makeNode("/root/tmp/msgtrsm/info/pid");
  1623. model.makeNode("/root/tmp/msgtrsm/info/orddd");
  1624. model.makeNode("/root/tmp/msgtrsm/info/cretno");
  1625. model.makeNode("/root/tmp/msgtrsm/info/mskind");
  1626. model.makeNode("/root/tmp/msgtrsm/info/orddeptcd");
  1627. model.makeNode("/root/tmp/msgtrsm/info/orddrid");
  1628. model.makeNode("/root/tmp/msgtrsm/info/ordtype");
  1629. model.setValue("/root/tmp/msgtrsm/info/refyn","Y");
  1630. model.setValue("/root/tmp/msgtrsm/info/pid", model.getValue("/root/main/item1/otpt/pid")); // chk
  1631. model.setValue("/root/tmp/msgtrsm/info/orddd", model.getValue("/root/main/item1/otpt/orddd")); // chk
  1632. model.setValue("/root/tmp/msgtrsm/info/cretno", model.getValue("/root/main/item1/otpt/cretno")); // chk
  1633. model.setValue("/root/tmp/msgtrsm/info/mskind", "M"); // 외래기본 주유형, chk
  1634. model.setValue("/root/tmp/msgtrsm/info/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd")); // chk
  1635. model.setValue("/root/tmp/msgtrsm/info/orddrid", model.getValue("/root/main/item1/otpt/orddrid")); // chk, TABLE에 적용안함.(값만확인)
  1636. model.setValue("/root/tmp/msgtrsm/info/ordtype", "O"); // 외래기본 'O', chk
  1637. modal("SMPIJ02600_메세지현황", "", "100", "100", "", "/root/tmp/msgtrsm/info", "/root/init/openchk");
  1638. model.removeNode("/root/tmp/msgtrsm");
  1639. }
  1640. /* 산정코드조회 */
  1641. function fSrchEstmCd() {
  1642. model.removeNodeset("/root/hidden/sppiz00800/rslt");
  1643. model.makeNode("/root/hidden/sppiz00800/rslt/clcd");
  1644. model.resetInstanceNode("/root/hidden/sppiz00800/cond");
  1645. var row = grd_clodhist.row;
  1646. var estmcls = model.getValue("/root/main/list2/oscl["+ row +"]/estmcls");
  1647. var insukindcd = model.getValue("/root/main/item1/otpt/insukindcd");
  1648. if (insukindcd == "") {
  1649. messageBox("심사대상자의 보험유형이", "I004"); ///심사대상자의 보험유형이 없습니다
  1650. return false;
  1651. }
  1652. model.setValue("/root/hidden/sppiz00800/cond/insukind", insukindcd);
  1653. model.setValue("/root/hidden/sppiz00800/cond/estmcls", estmcls);
  1654. model.setValue("/root/hidden/sppiz00800/cond/todd", model.getValue("/root/main/list2/oscl["+ row +"]/ordtodd"));
  1655. modal("SPPIZ00800" ,"", "10", "10", "SPPIZ00800", "/root/hidden/sppiz00800/cond", "/root/hidden/cond", "", ""); // SPPIZ00800_산정코드조회.xrw
  1656. return true;
  1657. }
  1658. /* 특정내역 소트 */
  1659. function fSortSpclNo() {
  1660. if (grd_clsphist.rows > 1) {
  1661. for (var j = 1; j < grd_clsphist.rows; j++) {
  1662. // row 모두 hidden 상태 초기화
  1663. grd_clsphist.rowHidden(j) = false;
  1664. // 삭제시킨 특정내역은 소트 시 맨 뒤로 위치하도록 설정
  1665. var rowstatus = grd_clsphist.rowstatus(j);
  1666. if (rowstatus > 3) { // 삭제상태
  1667. model.makeValue("/root/main/list3/clcj["+ j +"]/currowstat", parseInt(rowstatus, 10 ) + 10);
  1668. } else if (rowstatus != 0) {
  1669. model.makeValue("/root/main/list3/clcj["+ j +"]/currowstat", rowstatus);
  1670. }
  1671. // 특정코드, 특정내역 없는 줄 삭제
  1672. var spclcd = model.getValue("/root/main/list3/clcj["+ j +"]/spclcd");
  1673. var spclspec = model.getValue("/root/main/list3/clcj["+ j +"]/spclspec");
  1674. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  1675. grd_clsphist.deleteRow(j, false);
  1676. i--;
  1677. }
  1678. }
  1679. // 소트 수행
  1680. grd_clsphist.colsort(grd_clsphist.colRef("unitflag")) = "desc";
  1681. grd_clsphist.colsort(grd_clsphist.colRef("edicd")) = "asc";
  1682. grd_clsphist.colsort(grd_clsphist.colRef("spclcd")) = "asc";
  1683. grd_clsphist.colsort(grd_clsphist.colRef("currowstat")) = "desc";
  1684. var maxRow = parseInt(grd_clsphist.rows) - 1;
  1685. var maxCol = parseInt(grd_clsphist.cols) - 1;
  1686. grd_clsphist.sort(grd_clsphist.fixedRows, grd_clsphist.fixedCols, maxRow, maxCol) = "usersort";
  1687. grd_clsphist.gridToInstance();
  1688. }
  1689. }
  1690. /* 수가코드가 없으며 DB에 저장된 내용이 아닌 경우 해당 줄을 삭제한다. 사용안함 */
  1691. function fDelEmptyGridOrderData() {
  1692. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i++) { // 첫 줄부터
  1693. var rowstatus = grd_clodhist.rowstatus(i);
  1694. var snglcalcscorcd = model.getValue("/root/main/list2/oscl["+ i +"]/snglcalcscorcd");
  1695. if (rowstatus != 4 && snglcalcscorcd) { // 4 : delete 삭제 상태가 아니면서 수가코드가 입력된 상태임
  1696. }
  1697. else if (rowstatus == 1 || rowstatus == 3) { // 수가코드 없으며 DB에 저장된 내용이 아닌 경우
  1698. alert("fDelEmptyGridOrderData");
  1699. grd_clodhist.deleteRow(i, true); // 줄을 삭제한다.
  1700. i--;
  1701. }
  1702. }
  1703. }
  1704. /* 처방의 수정된 row 상태를 표시 */
  1705. function fSetOrderChangeRowStat(row) {
  1706. var clodstatus = grd_clodhist.rowstatus(row);
  1707. if (clodstatus == 0 || clodstatus == 2) {
  1708. grd_clodhist.rowstatus(row) = 2;
  1709. }
  1710. }
  1711. /* 상병 위로 이동 */
  1712. function fDiagSeqUp() {
  1713. // 1. 삭제된 row의 경우 이동 불가
  1714. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  1715. if (rowstatus == 4) return;
  1716. // 2. 빈 row의 경우 이동 불가
  1717. var diagnm = model.getValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagnm");
  1718. if (diagnm == "") return;
  1719. // 3. row 위로 이동
  1720. var diagseq = parseInt(model.getValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagseq"));
  1721. if (diagseq > 1) {
  1722. model.setValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagseq", --diagseq);
  1723. if (rowstatus == 0 || rowstatus == 2) {
  1724. grd_cldihist.rowstatus(grd_cldihist.row) = 2;
  1725. model.setValue("/root/main/list1/diag[" + grd_cldihist.row + "]", "U");
  1726. grd_cldihist.valueMatrix(grd_cldihist.row, grd_cldihist.colRef("rowstat")) = "U";
  1727. }
  1728. // 바로 위 상병순서와 중복되는 경우
  1729. var nextrow = grd_cldihist.row - 1;
  1730. var nextdiagseq = model.getValue("/root/main/list1/diag["+ nextrow +"]/diagseq");
  1731. if (diagseq == nextdiagseq) {
  1732. model.setValue("/root/main/list1/diag["+ nextrow +"]/diagseq", ++diagseq);
  1733. rowstatus = grd_cldihist.rowstatus(nextrow);
  1734. if (rowstatus == 0 || rowstatus == 2) {
  1735. grd_cldihist.rowstatus(nextrow) = 2;
  1736. model.setValue("/root/main/list1/diag[" + nextrow + "]", "U");
  1737. grd_cldihist.valueMatrix(nextrow, grd_cldihist.colRef("rowstat")) = "U";
  1738. }
  1739. }
  1740. fSortDiagNo();
  1741. fDiagGridInsertRow();
  1742. }
  1743. }
  1744. /* 상병 아래로 이동 */
  1745. function fDiagSeqDown() {
  1746. // 1. 삭제된 row의 경우 이동 불가
  1747. var rowstatus = grd_cldihist.rowstatus(grd_cldihist.row);
  1748. if (rowstatus == 4) return;
  1749. // 2. 빈 row의 경우 이동 불가
  1750. var diagnm = model.getValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagnm");
  1751. if (diagnm =="") return;
  1752. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  1753. var lastRow = 0;
  1754. for (var i = grd_cldihist.rows - 2; i >= 1; i--) {
  1755. if (grd_cldihist.rowstatus(i) != 4) {
  1756. lastRow = i;
  1757. i = 1;
  1758. }
  1759. }
  1760. var diagseq = parseInt(model.getValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagseq")); // 선택된 줄의 NO
  1761. if (diagseq < lastRow) {
  1762. model.setValue("/root/main/list1/diag["+ grd_cldihist.row +"]/diagseq", ++diagseq);
  1763. if (rowstatus == 0 || rowstatus == 2) {
  1764. grd_cldihist.rowstatus(grd_cldihist.row) = 2;
  1765. model.setValue("/root/main/list1/diag[" + grd_cldihist.row + "]", "U");
  1766. grd_cldihist.valueMatrix(grd_cldihist.row, grd_cldihist.colRef("rowstat")) = "U";
  1767. }
  1768. // 바로 아래 상병순서와 중복되는 경우
  1769. var nextrow = grd_cldihist.row + 1;
  1770. var nextdiagseq = model.getValue("/root/main/list1/diag["+ nextrow +"]/diagseq");
  1771. if (diagseq == nextdiagseq) {
  1772. model.setValue("/root/main/list1/diag["+ nextrow +"]/diagseq", --diagseq);
  1773. rowstatus = grd_cldihist.rowstatus(nextrow);
  1774. if (rowstatus == 0 || rowstatus == 2) {
  1775. grd_cldihist.rowstatus(nextrow) = 2;
  1776. model.setValue("/root/main/list1/diag[" + nextrow + "]", "U");
  1777. grd_cldihist.valueMatrix(nextrow, grd_cldihist.colRef("rowstat")) = "U";
  1778. }
  1779. }
  1780. fSortDiagNo();
  1781. fDiagGridInsertRow();
  1782. }
  1783. }
  1784. /* 상병내역 소트 */
  1785. function fSortDiagNo() {
  1786. if (grd_cldihist.rows > 1) {
  1787. for (var j = grd_cldihist.rows - 1; j >= 1; j--) {
  1788. // row 모두 hidden 상태 초기화
  1789. grd_cldihist.rowHidden(j) = false;
  1790. // 상병코드, 상병명 없는 줄 삭제
  1791. var rowstatus = grd_cldihist.rowstatus(j);
  1792. var diagcd = model.getValue("/root/main/list1/diag["+ j +"]/diagcd");
  1793. var diagnm = model.getValue("/root/main/list1/diag["+ j +"]/diagnm");
  1794. if (rowstatus != 4 && diagcd == "" && diagnm == "") {
  1795. grd_cldihist.deleteRow(j, false);
  1796. }
  1797. }
  1798. // 소트 수행
  1799. var maxRow = parseInt(grd_cldihist.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  1800. grd_cldihist.sort(1, grd_cldihist.colRef("diagseq"), maxRow, grd_cldihist.colRef("diagseq")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  1801. grd_cldihist.gridToInstance();
  1802. }
  1803. }
  1804. /* 이전명세서 목록에서 선택한 청구키의 명세서를 이미 열려있는 Popup 화면으로 조회시에 호출 */
  1805. function fActivatePreDocuWindow() {
  1806. var rslt = fInitSrchData(); // 화면을 초기화한다.
  1807. if (rslt == false) { // 수정사항 저장이 완료되지 않아 초기화할 수 없는 경우
  1808. return false;
  1809. }
  1810. var pid = opener.model.getValue("/root/hidden/smpij00700/cond/pid");
  1811. var orddd = opener.model.getValue("/root/hidden/smpij00700/cond/orddd");
  1812. var cretno = opener.model.getValue("/root/hidden/smpij00700/cond/cretno");
  1813. var acptseqno = opener.model.getValue("/root/hidden/smpij00700/cond/acptseqno");
  1814. var insukindcd = opener.model.getValue("/root/hidden/smpij00700/cond/insukindcd");
  1815. if (pid && orddd && cretno && acptseqno && insukindcd) {
  1816. model.setValue("/root/send/item1/otpt/pid", pid);
  1817. model.setValue("/root/send/item1/otpt/orddd", orddd);
  1818. model.setValue("/root/send/item1/otpt/cretno", cretno);
  1819. model.setValue("/root/send/item1/otpt/acptseqno", acptseqno);
  1820. model.setValue("/root/send/item1/otpt/insukindcd", insukindcd);
  1821. //document.title = "이전 명세서 상병/처방 조회";
  1822. submit("TRPIJ00701");
  1823. // submit("TRPIJ00701") 일일 심사 대상자를 조회한 이후의 처리를 한다.
  1824. fSetDayJudgTrgtManSrchData();
  1825. } else {
  1826. fCheckAuth(); // 화면 권한을 설정한다.
  1827. }
  1828. }
  1829. // 화면 권한을 설정한다.
  1830. function fCheckAuth() {
  1831. var judgendyn = model.getValue("/root/main/item1/otpt/dschjudgprcsstat");
  1832. if (judgendyn == "E" || judgendyn == "D") {
  1833. // 외래사전심사상태 (P0379) - A: 미심사, B: 심사중, D: 보류, E: 통합심사완료
  1834. model.setValue("properties/auth", "10100000"); // 송신된 경우 처리권한을 부여하지 않는다.
  1835. } else {
  1836. model.setValue("properties/auth", "11100000");
  1837. }
  1838. var xAuth = !checkAuth("X"); // 처리권한(입력, 수정, 삭제 등)
  1839. btn_save.disabled = xAuth; // 저장
  1840. var pAuth = !checkAuth("P"); // 출력권한(보고서 출력, 엑셀 내려받기 등)
  1841. btn_excelsave.disabled = pAuth;
  1842. btn_print.disabled = pAuth;
  1843. }
  1844. // grid 타이틀 컬럼 정보
  1845. function getOrderInfoOfCol(grdid){
  1846. var refdata = ""; // ref
  1847. var sizedata = ""; // size
  1848. var grdobj = document.controls.item(grdid);
  1849. var totcol = grdobj.cols;
  1850. for(var i = 0; i < totcol; i++){
  1851. var refval = grdobj.colAttribute(i, "ref");
  1852. refdata += refval + "^";
  1853. var sizeval = grdobj.colWidth(i);
  1854. sizedata += sizeval + "^";
  1855. }
  1856. refdata = refdata.substring(0 , refdata.length-1);
  1857. sizedata = sizedata.substring(0, sizedata.length-1);
  1858. var scrnid = model.getValue("/root/hidden/listval/uuee/scrnid");
  1859. var compscnts = model.getValue("/root/hidden/listval/uuee/compscnts");
  1860. if (scrnid == "") {
  1861. model.setValue("/root/send/listval/uuee/flag","I");
  1862. } else {
  1863. model.setValue("/root/send/listval/uuee/flag","U");
  1864. }
  1865. model.setValue("/root/send/listval/uuee/scrnid","SMPIJ00700");
  1866. model.setValue("/root/send/listval/uuee/compsnm","grd_clodhist");
  1867. model.setValue("/root/send/listval/uuee/compscnts",refdata);
  1868. model.setValue("/root/send/listval/uuee/compsrefcnts","-");
  1869. model.setValue("/root/send/listval/uuee/compssizecnts",sizedata);
  1870. if ( submit("TXPIJ00402", false) ) {
  1871. messageBox("사용자 환경 저장이","I002");
  1872. }
  1873. }
  1874. // 사용자별 grid 타이틀 컬럼 설정
  1875. function setOrderInfoOfCol(grdid, refdata, sizedata){
  1876. var grdobj = document.controls.item(grdid);
  1877. var refarr = refdata.split("^");
  1878. var sizearr = sizedata.split("^");
  1879. for(var i = 0; i < refarr.length; i++){
  1880. var colcnt = grdobj.colref("" + refarr[i] + "");
  1881. grdobj.colMove(i, colcnt, "before",false);
  1882. var size = sizearr[i];
  1883. grdobj.colWidth(i) = eval(size);
  1884. }
  1885. grdobj.refresh();
  1886. }
  1887. // 기존 조회 내역 중 수정 사항이 있는 경우 저장할 것인지를 물어본다.
  1888. function fCheckChangeSave() {
  1889. var initclbs = model.getValue("/root/hidden/item1/initotpt/otpt/pid");
  1890. var isChange = false;
  1891. if (initclbs) {
  1892. var clbsupdatadata = false;
  1893. if (model.getValue("/root/hidden/item1/initotpt/otpt/suppkindcd") != model.getValue("/root/main/item1/otpt/suppkindcd")) {
  1894. clbsupdatadata = true;
  1895. }
  1896. else if (model.getValue("/root/hidden/item1/initotpt/otpt/ordfildcd") != model.getValue("/root/main/item1/otpt/ordfildcd")) {
  1897. clbsupdatadata = true;
  1898. }
  1899. else if (model.getValue("/root/hidden/item1/initotpt/otpt/orddeptcd") != model.getValue("/root/main/item1/otpt/orddeptcd")) {
  1900. clbsupdatadata = true;
  1901. }
  1902. else if (model.getValue("/root/hidden/item1/initotpt/otpt/orddrid") != model.getValue("/root/main/item1/otpt/orddrid")) {
  1903. clbsupdatadata = true;
  1904. }
  1905. else if (model.getValue("/root/hidden/item1/initotpt/otpt/ordrsltcd") != model.getValue("/root/main/item1/otpt/ordrsltcd")) {
  1906. clbsupdatadata = true;
  1907. }
  1908. else if (model.getValue("/root/hidden/item1/initotpt/otpt/insuno") != model.getValue("/root/main/item1/otpt/insuno")) {
  1909. clbsupdatadata = true;
  1910. }
  1911. else if (model.getValue("/root/hidden/item1/initotpt/otpt/certno") != model.getValue("/root/main/item1/otpt/certno")) {
  1912. clbsupdatadata = true;
  1913. }
  1914. if (clbsupdatadata == false) {
  1915. var clspupdtdata = getGridUpdateData(grd_clsphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  1916. var clodupdtdata = getGridUpdateData(grd_clodhist);
  1917. var clopupdtdata = getGridUpdateData(grd_oprcphist);
  1918. if (clodupdtdata || clopupdtdata) {
  1919. isChange = true;
  1920. } else { // 처방, 원외처방의 수정사항이 없는 경우
  1921. for (var i = 1; i < grd_cldihist.rows; i++) {
  1922. var rowstatus = grd_cldihist.rowstatus(i);
  1923. var diagcd = model.getValue("/root/main/list1/diag["+ i +"]/diagcd");
  1924. // 상병코드와 진료개시일이 입력되지 않은 경우
  1925. if (rowstatus == 1 || rowstatus == 3) {
  1926. if (diagcd == "") {
  1927. // 줄을 삭제한다.
  1928. grd_cldihist.deleteRow(i, true);
  1929. i--;
  1930. delcldiCheck = true;
  1931. }
  1932. }
  1933. }
  1934. // 상병의 경우 기본적으로 추가된 줄을 삭제한 후 체크한다.
  1935. var cldiupdtdata = getGridUpdateData(grd_cldihist);
  1936. if (cldiupdtdata) {
  1937. isChange = true;
  1938. }
  1939. for (var i = 1; i < grd_clsphist.rows; i++) {
  1940. var rowstatus = grd_clsphist.rowstatus(i);
  1941. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  1942. // 구분코드가 입력되지 않은 경우
  1943. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  1944. if (spclcd == "") {
  1945. // 줄을 삭제한다.
  1946. grd_clsphist.deleteRow(i, true);
  1947. i--;
  1948. delclcjCheck = true;
  1949. }
  1950. }
  1951. }
  1952. // 특정내역의 경우 기본적으로 추가된 줄을 삭제한 후 체크한다.
  1953. var clspupdtdata = getGridUpdateData(grd_clsphist);
  1954. if (clspupdtdata) {
  1955. isChange = true;
  1956. }
  1957. }
  1958. } else {
  1959. isChange = true;
  1960. }
  1961. }
  1962. if (isChange) {
  1963. var ans = messageBox("수정사항이 있습니다. 저장", "S001"); ///수정사항이 있습니다. 저장하시려면 예(Yes)\n아니면 아니오(No)
  1964. if (ans == 6) { // 6: yes
  1965. var rslt = fSaveOutDayJudg("B"); // 저장
  1966. if (rslt != "true") {
  1967. return false;
  1968. }
  1969. }
  1970. else if (ans == 2) { // 6: yes, 7:no, 2:cancel
  1971. return false;
  1972. }
  1973. }
  1974. return true;
  1975. }
  1976. // 상병, 특정내역, 처방 Group의 컨트롤 크기를 초기화한다.
  1977. function fInitUIControlSize() {
  1978. cap_grptemp.visible = false;
  1979. grp_predoculist.visible = false; // 이전 명세서 목록용 Group
  1980. grp_delclodlist.visible = false; // 삭제처방목록 Group
  1981. grp_delorderlist.visible = false; // 처방 휴지통 Group
  1982. case_spclspec.selected = false;
  1983. case_judgrmemo.selected = false;
  1984. case_ediclammemo.selected = false;
  1985. fCutSwitchSize();
  1986. }
  1987. // 처방조회부, 처방 Grid용 Group의 컨트롤 크기를 설정한다.
  1988. function fSetOrderControlSize() {
  1989. var otherGrp = true;
  1990. if (cap_clod.attribute("top") == "266") { // 초기상태이므로 확대시킴
  1991. otherGrp = false;
  1992. cap_clod.attribute("top") = "65";
  1993. // Message용 Output 크기를 초기화한다.
  1994. cap_message.attribute("left") = "5";
  1995. opt_msgspclformat.attribute("left") = "95";
  1996. opt_msgspclformat.attribute("width") = "1099";
  1997. } else { // 확대된 경우임
  1998. otherGrp = true;
  1999. cap_clod.attribute("top") = "266";
  2000. // 상병 Grid 크기를 초기화한다.
  2001. grp_cldihist.attribute("height") = "170";
  2002. grd_cldihist.attribute("height") = "145";
  2003. }
  2004. if (grp_clop.attribute("top") == "541" || grp_clop.attribute("top") == "541px") { // 원외처방 Grid 축소된 초기 상태임
  2005. if (cap_clod.attribute("top") == "266") { // 처방 title 초기상태
  2006. grd_clodhist.attribute("height") = "255"; // 처방 Grid를 축소한다.
  2007. } else {
  2008. grd_clodhist.attribute("height") = "456"; // 처방 Grid를 확대한다.
  2009. }
  2010. } else {
  2011. grd_clodhist.attribute("height") = "98"; // 처방Grid 타이틀 32 + data 2줄 23*2 + 스크롤 18 + 2 = 98
  2012. grp_clop.attribute("top") = parseInt(cap_clod.attribute("top")) - 5 + 123; // 123 = 처방 Grid 98 + 처방 title 부분간격 25
  2013. if (cap_clod.attribute("top") == "266") { // 처방 title 초기상태
  2014. grp_clop.attribute("height") = 255 + 50 + 71 - 123;
  2015. } else {
  2016. grp_clop.attribute("height") = 456 + 50 + 71 - 123;
  2017. }
  2018. grd_oprcphist.attribute("height") = parseInt(grp_clop.attribute("height")) - 25;
  2019. }
  2020. grp_cldihist.visible = otherGrp;
  2021. grp_clsphist.visible = otherGrp;
  2022. grp_calendar.visible = otherGrp; // 외래의 경우, 그리드달력 그룹이 추가됨
  2023. var icap_top = parseInt(cap_clod.attribute("top"));
  2024. ln_clodhist.attribute("y1") = icap_top + 15;
  2025. ln_clodhist.attribute("y2") = icap_top + 15;
  2026. grd_clodhist.attribute("top") = icap_top + 20;
  2027. btn_delordlist.attribute("top") = icap_top - 5;
  2028. btn_delordsrch.attribute("top") = icap_top - 5;
  2029. grp_ordsrch.attribute("top") = icap_top - 45; // 조회부 그룹
  2030. cap_message.attribute("top") = icap_top + 45;
  2031. opt_msgspclformat.attribute("top") = icap_top + 39;
  2032. }
  2033. // 이전명세서, 처방휴지통, 삭제처방 Group의 컨트롤 크기를 설정한다.
  2034. function fSetDelOrdPreDocuSize() {
  2035. var icap_top = parseInt(cap_clod.attribute("top"));
  2036. var igrd_hei = parseInt(grd_clodhist.attribute("height"));
  2037. cap_grptemp.attribute("top") = icap_top;
  2038. // 이전 명세서 목록
  2039. if (grp_predoculist.visible == true) {
  2040. cap_grptemp.text = "이전 명세서 목록";
  2041. cap_grptemp.visible = true;
  2042. grd_clodhist.attribute("width") = "630";
  2043. ln_clodhist.attribute("x2") = "630";
  2044. grp_predoculist.attribute("top") = icap_top + 15;
  2045. grp_predoculist.attribute("height") = igrd_hei + 5;
  2046. grd_predocu.attribute("height") = igrd_hei - 23;
  2047. btn_closepredoculist.attribute("top") = parseInt(grp_predoculist.attribute("height")) - 22;
  2048. }
  2049. // 처방 휴지통
  2050. if (grp_delclodlist.visible == true) {
  2051. cap_grptemp.text = "처방 휴지통";
  2052. cap_grptemp.visible = true;
  2053. grd_clodhist.attribute("width") = "630";
  2054. ln_clodhist.attribute("x2") = "630";
  2055. grp_delclodlist.attribute("top") = icap_top + 15;
  2056. grp_delclodlist.attribute("height") = igrd_hei + 5;
  2057. grd_delclod.attribute("height") = igrd_hei - 23;
  2058. btn_closedelclodlist.attribute("top") = parseInt(grp_delclodlist.attribute("height")) - 22;
  2059. }
  2060. // 삭제처방목록
  2061. if (grp_delorderlist.visible == true) {
  2062. cap_grptemp.text = "삭제처방 목록";
  2063. cap_grptemp.visible = true;
  2064. grd_clodhist.attribute("width") = "630";
  2065. ln_clodhist.attribute("x2") = "630";
  2066. grp_delorderlist.attribute("top") = icap_top + 15;
  2067. grp_delorderlist.attribute("height") = igrd_hei + 5;
  2068. grd_delorder.attribute("height") = igrd_hei - 23;
  2069. btn_closedelorderlist.attribute("top") = parseInt(grp_delorderlist.attribute("height")) - 22;
  2070. }
  2071. // 특정내역 / 심사자메모 / EDI메모 창이 확대된 경우 겹쳐져 보이므로 창을 작게 한다.
  2072. fCutSwitchSize();
  2073. }
  2074. /* 등록번호 + 엔터 시 대상자화면 호출 */
  2075. function fGetOutDayJudgTrgtManPidSrch() {
  2076. // 대상자 조회화면을 띄운다.
  2077. var trgtManWindow = getChildWindow("SMPIJ00600"); // SMPIJ00600_외래일일심사대상자조회.xrw
  2078. var patunitsrch1 = model.getValue("/root/main/item1/otpt/pid");
  2079. if (trgtManWindow == null) {
  2080. // pid가 변경되었는데 조회창을 여는 경우 기존 조회된 data 초기화를 위해 저장해둔다.
  2081. model.setValue("/root/hidden/smpij00600/cond/pid", patunitsrch1);
  2082. model.setValue("/root/hidden/smpij00600/rslt/oldPid", patunitsrch1);
  2083. open("SMPIJ00600" ,"", "10", "10", "SMPIJ00600", "/root/hidden/smpij00600/cond/pid", "/root/send/patunitsrch1", "", "");
  2084. } else {
  2085. // 대상자조회화면에 붙어있는 old 값 초기화
  2086. trgtManWindow.model.resetInstanceNode("/root/hidden/oldotpt");
  2087. var oldPid = model.getValue("/root/hidden/smpij00600/rslt/oldPid");
  2088. model.setValue("/root/hidden/smpij00600/cond/pid", patunitsrch1);
  2089. model.setValue("/root/hidden/smpij00600/rslt/oldPid", patunitsrch1);
  2090. if (oldPid == "") {
  2091. if (patunitsrch1 == "") { // 환자번호 입력 없이 대상자를 조회하는 경우
  2092. trgtManWindow.grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  2093. activateChild("SMPIJ00600");
  2094. } else { // 기존 심사대상자는 없는데 pid가 입력된 경우 또는 변경된 정보를 저장 후에 조회하는 경우
  2095. trgtManWindow.javascript.fSetPatUnitSrch1pidSrch();
  2096. }
  2097. } else {
  2098. if (patunitsrch1 != oldPid) { // 조회된 pid가 변경된 상태에서 조회하는 경우
  2099. model.setValue("/root/main/item1/otpt/pid", patunitsrch1);
  2100. model.setValue("/root/hidden/smpij00600/cond/pid", patunitsrch1);
  2101. trgtManWindow.javascript.fSetPatUnitSrch1pidSrch();
  2102. } else { // 기존 심사대상자는 있는데 pid가 변경되지 않은 경우
  2103. trgtManWindow.grp_judgmemo.visible = false; // 대상자 Grid의 메모 필드의 Btn 클릭시 보여지는 메모 저장용 Group을 감춘다.
  2104. activateChild("SMPIJ00600");
  2105. }
  2106. }
  2107. model.refresh();
  2108. }
  2109. }
  2110. /* 심사대상자 정보 조회 */
  2111. function fGetOutDayJudgMngt() {
  2112. var pid = model.getValue("/root/hidden/smpij00600/rslt/pid");
  2113. var orddd = model.getValue("/root/hidden/smpij00600/rslt/orddd");
  2114. var cretno = model.getValue("/root/hidden/smpij00600/rslt/cretno");
  2115. var acptseqno = model.getValue("/root/hidden/smpij00600/rslt/acptseqno");
  2116. var insukindcd = model.getValue("/root/hidden/smpij00600/rslt/insukindcd");
  2117. var opyn = model.getValue("/root/hidden/smpij00600/rslt/opyn");
  2118. var suppkindcd = model.getValue("/root/hidden/smpij00600/rslt/suppkindcd");
  2119. var dschjudgprcsstat = model.getValue("/root/hidden/smpij00600/rslt/dschjudgprcsstat");
  2120. var judgmdlid = model.getValue("/root/hidden/smpij00600/rslt/judgmdlid");
  2121. var lastjudgdt = model.getValue("/root/hidden/smpij00600/rslt/lastjudgdt");
  2122. var judgstatyn = model.getValue("/root/hidden/judgstatyn");
  2123. // 0. 전환자료이므로 1회량 등 정보가 틀릴수 있습니다. 정확한 처방정보는 환자진료정보 조회를 참고하세요(오픈 임시 메세지 처리)
  2124. if (orddd < "20081003") {
  2125. messageBox("전환자료이므로 1회량 등 정보가 틀릴수 있습니다. 정확한 처방정보는 환자진료정보 조회를", "I007");
  2126. }
  2127. // 1. 기존에 조회된 대상자의 심사상태를 이전으로 되돌린다.
  2128. if (judgstatyn != "N") {
  2129. var cretno2 = model.getValue("/root/main/item1/otpt/cretno");
  2130. var dschjudgprcsstat2 = model.getValue( "/root/main/item1/otpt/dschjudgprcsstat");
  2131. if (cretno2 != "" && dschjudgprcsstat2 == "B") {
  2132. // 1-1. 이전 row 의 심사상태 되돌리기 시작
  2133. var oldpid = model.getValue("/root/hidden/list8/pid");
  2134. var oldorddd = model.getValue("/root/hidden/list8/orddd");
  2135. var oldcretno = model.getValue("/root/hidden/list8/cretno");
  2136. var oldacptseqno = model.getValue("/root/hidden/list8/acptseqno");
  2137. var olddschjudgprcsstat = model.getValue("/root/hidden/list8/dschjudgprcsstat");
  2138. var oldjudgmdlid = model.getValue("/root/hidden/list8/judgmdlid");
  2139. var oldlastjudgdt = model.getValue("/root/hidden/list8/lastjudgdt");
  2140. if (olddschjudgprcsstat == "A" || olddschjudgprcsstat == "" || olddschjudgprcsstat == "D" || olddschjudgprcsstat == "E") {
  2141. model.removeNodeset("/root/send/list8");
  2142. model.makeValue("/root/send/list8/pid", oldpid);
  2143. model.makeValue("/root/send/list8/orddd", oldorddd);
  2144. model.makeValue("/root/send/list8/cretno", oldcretno);
  2145. model.makeValue("/root/send/list8/acptseqno", oldacptseqno);
  2146. model.makeValue("/root/send/list8/dschjudgprcsstat", olddschjudgprcsstat);
  2147. model.makeValue("/root/send/list8/judgmdlid", oldjudgmdlid);
  2148. model.makeValue("/root/send/list8/lastjudgdt", oldlastjudgdt);
  2149. submit("TXPIJ00604", false);
  2150. }
  2151. }
  2152. }
  2153. // 1-2. 심사상태 자동 해제를 위한 데이터를 담아두기 시작
  2154. model.removeNodeset("/root/hidden/list8");
  2155. model.makeValue("/root/hidden/list8/pid", pid);
  2156. model.makeValue("/root/hidden/list8/orddd", orddd);
  2157. model.makeValue("/root/hidden/list8/cretno", cretno);
  2158. model.makeValue("/root/hidden/list8/acptseqno", acptseqno);
  2159. model.makeValue("/root/hidden/list8/dschjudgprcsstat", dschjudgprcsstat);
  2160. model.makeValue("/root/hidden/list8/judgmdlid", judgmdlid);
  2161. model.makeValue("/root/hidden/list8/lastjudgdt", lastjudgdt);
  2162. model.setValue("/root/hidden/judgstatyn", "Y");
  2163. // 2. 대상자 조회를 한다.
  2164. var selectedRow = model.getValue("/root/hidden/smpij00600/rslt/selectedRow");
  2165. if (pid && orddd && cretno && acptseqno && insukindcd) {
  2166. // 2-1. 화면을 초기화한다.
  2167. var rslt = fInitSrchData();
  2168. if (rslt == false) {
  2169. return false;
  2170. }
  2171. model.setValue("/root/send/item1/otpt/pid", pid);
  2172. model.setValue("/root/send/item1/otpt/orddd", orddd);
  2173. model.setValue("/root/send/item1/otpt/cretno", cretno);
  2174. model.setValue("/root/send/item1/otpt/acptseqno", acptseqno);
  2175. model.setValue("/root/send/item1/otpt/insukindcd", insukindcd);
  2176. model.setValue("/root/send/item1/otpt/opyn", opyn); // 대상자화면에 표시된 수술여부를 전달한 경우, oscl 검색없이 수술여부를 구할 수 있다.
  2177. model.setValue("/root/send/item1/otpt/suppkindcd", suppkindcd);
  2178. model.setValue("/root/hidden/smpij00600/rslt/selectedRow", selectedRow);
  2179. submit("TRPIJ00701");
  2180. // 2-2. 조회 이후의 작업을 한다.
  2181. fSetDayJudgTrgtManSrchData();
  2182. model.setValue("/root/send/unitflag", "-");
  2183. // 2-3. 중증, 산정특례 여부 체크
  2184. //-------------------------------------------------
  2185. // 2011-01-08 김상진 아무기능이 없어서 삭제한다
  2186. //-------------------------------------------------
  2187. //fCheckEssc();
  2188. //-------------------------------------------------
  2189. // 2-4. 상단에 환자정보 초기화하고 기입하기
  2190. delPatientInfos();
  2191. fSetOutPatPamInfo();
  2192. //2-5. 환자 작성된 메세지 확인한다.
  2193. //-------------------------------------------------
  2194. // 2011-01-08 김상진 대상자조회할때로 옮기면서 삭제한다
  2195. //-------------------------------------------------
  2196. //fGetPatMsgYn(pid, orddd, cretno);
  2197. //-------------------------------------------------
  2198. model.refresh();
  2199. }
  2200. }
  2201. // 상단에 환자정보 기입하기
  2202. function fSetOutPatPamInfo() {
  2203. var pid = model.getValue("root/main/item1/otpt/pid");
  2204. var orddd = model.getValue("root/main/item1/otpt/orddd");
  2205. var cretno = model.getValue("root/main/item1/otpt/cretno");
  2206. var instcd = model.getValue("root/main/item1/otpt/instcd");
  2207. // param 첫번째 붙는 값은 외래 : O, 입원 : I, 지원부서 : S, 수술 : T, 응급 : E, 의뢰 : C
  2208. var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  2209. setParameter("condparam", param);
  2210. setParameter("errflag", "Y");
  2211. modal("SPMMO08900", 1, 0, 0, "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  2212. var useyn = getParameter("SPMMO08900_rtn_useyn");
  2213. if(useyn == "Y") {
  2214. setParameter("SPMMO08900_rtn_useyn", "");
  2215. }else{
  2216. }
  2217. }
  2218. // 중증, 산정특례 여부 체크
  2219. function fCheckEssc(){
  2220. var pid = model.getValue("/root/main/item1/otpt/pid");
  2221. var orddd = model.getValue("/root/main/item1/otpt/orddd");
  2222. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  2223. var acptseqno = model.getValue("/root/main/item1/otpt/acptseqno");
  2224. var orddeptcd = model.getValue("/root/main/item1/otpt/orddeptcd");
  2225. var insukind = model.getValue("/root/main/item1/otpt/insukindcd");
  2226. var mskind = model.getValue("/root/main/item1/otpt/mskind");
  2227. var insuflag = "";
  2228. if(pid){
  2229. var cNode = instance1.selectSingleNode("/root/hidden/chkessc/cond");
  2230. if(cNode == null){
  2231. model.makeValue("/root/hidden/chkessc/cond/pid",pid);
  2232. model.makeValue("/root/hidden/chkessc/cond/orddd",orddd);
  2233. model.makeValue("/root/hidden/chkessc/cond/cretno",cretno);
  2234. model.makeValue("/root/hidden/chkessc/cond/acptseqno",acptseqno);
  2235. model.makeValue("/root/hidden/chkessc/cond/orddeptcd",orddeptcd);
  2236. model.makeValue("/root/hidden/chkessc/cond/insukind",insukind);
  2237. model.makeValue("/root/hidden/chkessc/cond/mskind",mskind);
  2238. }else{
  2239. model.setValue("/root/hidden/chkessc/cond/pid",pid);
  2240. model.setValue("/root/hidden/chkessc/cond/orddd",orddd);
  2241. model.setValue("/root/hidden/chkessc/cond/cretno",cretno);
  2242. model.setValue("/root/hidden/chkessc/cond/acptseqno",acptseqno);
  2243. model.setValue("/root/hidden/chkessc/cond/orddeptcd",orddeptcd);
  2244. model.setValue("/root/hidden/chkessc/cond/insukind",insukind);
  2245. model.setValue("/root/hidden/chkessc/cond/mskind",mskind);
  2246. }
  2247. model.removenode("/root/hidden/chkessc/chkessc");
  2248. if(submit("TRPIJ00710", false)){
  2249. var isEsscV193 = false;
  2250. var isEsscV191 = false;
  2251. var isEsscVisible = true;
  2252. var cEssc = instance1.selectSingleNode("/root/hidden/chkessc");
  2253. if (cEssc == null) { // 특정내역이 없는 경우임
  2254. return;
  2255. }
  2256. var cEsscChildNodeList = cEssc.childNodes;
  2257. var msg
  2258. msg = "";
  2259. for (var i = 1; i <= cEsscChildNodeList.length; i++) {
  2260. var spclcd = model.getValue("/root/hidden/chkessc/chkessc/rslt["+i+"]/vcode");
  2261. var spclnm = model.getValue("/root/hidden/chkessc/chkessc/rslt["+i+"]/vcodenm");
  2262. if (spclcd != "" && spclnm != "") {
  2263. if (msg != "") {
  2264. msg = msg + " | " + spclcd + " (" + spclnm + ") ";
  2265. } else {
  2266. msg = spclcd + " (" + spclnm + ") ";
  2267. }
  2268. }
  2269. }
  2270. if (msg != "") {
  2271. //messageBox(msg+" 에 해당되는", "I005");
  2272. }
  2273. }
  2274. }
  2275. }
  2276. /* 일일 심사 대상자를 조회한 이후의 처리를 한다. */
  2277. function fSetDayJudgTrgtManSrchData() {
  2278. // 화면 권한을 설정한다.
  2279. fCheckAuth();
  2280. // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  2281. fSetJudgStatBtnAuth();
  2282. // 조회된 심사대상자의 특이 인적사항, 보조/요율 등을 계산하여 보여준다.
  2283. fGetPersonalData();
  2284. // 조회된 심사대상자의 실제진료일과 그달의 진료일자를 진료달력에 표시한다.
  2285. fSetOrdCalendar();
  2286. // 특정코드 줄단위 였던 row가 명세서 단위 row로 바뀌는 경우, 특정코드 값이 표시되지 않으므로 다시 확인한다.
  2287. for (var i = 1; i < grd_clsphist.rows; i++) {
  2288. grd_clsphist.cellComboNodeset(i, grd_clsphist.colRef("spclcd")) = "/root/init/P0117list/P0117";
  2289. // 특정내역 자동생성 처리 (자동생성되는 특정내역에 대해 stat 를 'I' 해주도록 한다.
  2290. var stat = model.getValue("/root/main/list3/clcj[" + i + "]/currowstat");
  2291. if (stat == "3") {
  2292. grd_clsphist.rowstatus(i) = 1;
  2293. }
  2294. }
  2295. // 특정내역 빈줄 추가
  2296. fSpclGridInsertRow();
  2297. // 상병내역 빈줄 추가
  2298. fDiagGridInsertRow();
  2299. // 처방 그리드 상태를 초기화 한다.
  2300. //grd_clodhist.attribute("nodeset") = "/root/main/list2/oscl";
  2301. //grd_clodhist.rebuild();
  2302. //grd_clodhist.row = 0
  2303. //grd_clodhist.refresh();
  2304. // 원외처방 그리드 상태를 급여구분 기본값인 "급여"로 필터링한다.
  2305. rdo_cloppayflag.dispatch("xforms-select");
  2306. fSetOrderData();
  2307. // "저장" Btn 클릭시에 인적사항이 변경되었는지 여부를 알기 위해 조회한 항목을 임시로 저장해두고 추후에 비교한다.
  2308. model.copyNode("/root/hidden/item1/initotpt/otpt", "/root/main/item1/otpt");
  2309. model.copyNode("/root/hidden/item1/initmemo/memo", "/root/main/item1/memo");
  2310. // 진료과 의사 값에 따라 선택가능한 주치의 nodeset을 설정한다.
  2311. cmb_orddrid.choices.itemset.attribute("nodeset") = "/root/init/orddrid/orddridlist[dp = '"+ model.getValue("/root/main/item1/otpt/orddeptcd") +"']";
  2312. }
  2313. // 원외처방 특정내역이 있으면 T필드에 * 처리
  2314. function fSetSpclSpec() {
  2315. var oprcrow = 1;
  2316. var clcjrow = 1;
  2317. var startclcj = 1;
  2318. var startoprc = 1;
  2319. for (var i = 1; i < grd_oprcphist.rows; i++) {
  2320. var spclspec = model.getValue("/root/main/list7/clop["+ i +"]/spclspec");
  2321. var fastprcpflag = model.getValue("/root/main/list7/clop["+ i +"]/fastprcpflag");
  2322. var tootfact = model.getValue("/root/main/list7/clop["+ i +"]/tootfact");
  2323. if ((spclspec != "" && spclspec != "-") || fastprcpflag != "") {
  2324. model.setValue("/root/main/list7/clop["+ i +"]/spclspecyn", "*");
  2325. }
  2326. }
  2327. }
  2328. // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류 / 삭제" Btn 권한을 설정한다.
  2329. function fSetJudgStatBtnAuth() {
  2330. var judgendyn = model.getValue("/root/main/item1/otpt/dschjudgprcsstat"); // 심사상태
  2331. var judgrid = model.getValue("/root/main/item1/otpt/judgmdlid"); // 심사중 심사자ID
  2332. var judgnm = model.getValue("/root/main/item1/otpt/judgmdlnm"); // 심사중 심사자ID
  2333. var userid = getUserId();
  2334. if (judgendyn == "B" || judgendyn == "D") { // 심사상태 : 심사중, 보류
  2335. if (judgrid == userid) {
  2336. btn_save.disabled = false;
  2337. btn_end.disabled = false;
  2338. btn_unjudg.disabled = false;
  2339. btn_rete.disabled = false;
  2340. } else {
  2341. if (judgnm != "") {
  2342. messageBox(judgnm + "님이 심사 진행중입니다. 저장은", "E001");
  2343. }
  2344. btn_save.disabled = true;
  2345. btn_end.disabled = true;
  2346. btn_unjudg.disabled = true;
  2347. btn_rete.disabled = true;
  2348. }
  2349. } else if (judgendyn == "E") { // 심사상태 : 심사완료
  2350. if (judgrid == userid) {
  2351. btn_save.disabled = true;
  2352. btn_end.disabled = true;
  2353. btn_unjudg.disabled = false;
  2354. btn_rete.disabled = false;
  2355. } else {
  2356. if (judgnm != "") {
  2357. messageBox(judgnm + "님이 심사 진행중입니다. 저장은", "E001");
  2358. }
  2359. btn_save.disabled = true;
  2360. btn_end.disabled = true;
  2361. btn_unjudg.disabled = true;
  2362. btn_rete.disabled = true;
  2363. }
  2364. } else if (judgendyn == "A") { // 심사상태 : 미심사
  2365. if (judgrid == userid) {
  2366. btn_save.disabled = true;
  2367. btn_end.disabled = true;
  2368. btn_unjudg.disabled = false;
  2369. btn_rete.disabled = false;
  2370. } else {
  2371. if (judgnm != "") {
  2372. messageBox(judgnm + "님이 심사 진행중입니다. 저장은", "E001");
  2373. }
  2374. btn_save.disabled = true;
  2375. btn_end.disabled = true;
  2376. btn_unjudg.disabled = true;
  2377. btn_rete.disabled = true;
  2378. }
  2379. } else {
  2380. btn_save.disabled = false;
  2381. btn_end.disabled = false;
  2382. btn_unjudg.disabled = false;
  2383. btn_rete.disabled = false;
  2384. }
  2385. // 보험유형이 자보 또는 산재일 경우
  2386. var insukindcd = model.getValue("/root/main/item1/otpt/insukindcd");
  2387. if (insukindcd == "31" || insukindcd == "41") {
  2388. opt_insukindcd.attribute("background-color") = "#f7a08b";
  2389. } else {
  2390. opt_insukindcd.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  2391. }
  2392. // 유형보조가 정상(00)이 아닐 경우
  2393. var suppkindcd = model.getValue("/root/main/item1/otpt/suppkindcd");
  2394. if (suppkindcd != "" && suppkindcd != "00") {
  2395. opt_suppkind.attribute("background-color") = "#f7a08b";
  2396. opt_payownbrate.attribute("background-color") = "#f7a08b";
  2397. } else {
  2398. opt_suppkind.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  2399. opt_payownbrate.attribute("background-color") = "#f2f2f2";
  2400. }
  2401. // 문제환자일 경우
  2402. fSetProbJudgColor();
  2403. // 수술환자의 경우 수술(유) 버튼을 설정한다.
  2404. if (model.getValue("/root/main/item1/otpt/opyn") == "Y") {
  2405. btn_opyn.visible = true;
  2406. btn_opyn.attribute("class") = "btn5_letter4";
  2407. btn_opyn.attribute("color") = "#cc3333"; //#ff0066"; // 해당 정보가 있는 경우 버튼 색 변경
  2408. } else {
  2409. btn_opyn.visible = false;
  2410. btn_opyn.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  2411. }
  2412. // 상병이력 버튼 설정
  2413. if (model.getValue("/root/main/item1/otpt/diaghist") == "Y") {
  2414. btn_diagHist.attribute("class") = "btn5_letter4";
  2415. btn_diagHist.attribute("color") = "#cc3333"; //#ff0066"; // 해당 정보가 있는 경우 버튼 색 변경
  2416. } else {
  2417. btn_diagHist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  2418. }
  2419. // 메모이력 버튼 설정
  2420. if (model.getValue("/root/main/item1/otpt/memohist") == "Y") {
  2421. btn_memohist.attribute("class") = "btn5_letter4";
  2422. btn_memohist.attribute("color") = "#cc3333"; //#ff0066"; // 해당 정보가 있는 경우 버튼 색 변경
  2423. } else {
  2424. btn_memohist.attribute("class") = "btn2_letter4"; // 표준에서 정한 기본 버튼으로 설정
  2425. }
  2426. // 미시행처방 버튼 설정
  2427. if (model.getValue("/root/main/item1/otpt/unexecord") == "Y") {
  2428. btn_unexecord.attribute("class") = "btn5_letter5";
  2429. btn_unexecord.attribute("color") = "#cc3333"; //#ff0066"; // 해당 정보가 있는 경우 버튼 색 변경
  2430. } else {
  2431. btn_unexecord.attribute("class") = "btn2_letter5"; // 표준에서 정한 기본 버튼으로 설정
  2432. }
  2433. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  2434. fCheckSpclSpecData();
  2435. }
  2436. // 문제환자일 경우, 색상표기 변경
  2437. function fSetProbJudgColor() {
  2438. var probjudgflag = model.getValue("/root/main/item1/otpt/probjudgflag");
  2439. if (probjudgflag == "Y") {
  2440. opt_probjudgflag.attribute("background-color") = "#f7a08b";
  2441. } else {
  2442. opt_probjudgflag.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  2443. }
  2444. }
  2445. // "심사완료"~"보류" 처리 후 다음 심사대상자를 조회한다.
  2446. function fGetNextDayJudgTrgtMan(judgendyn) {
  2447. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  2448. if (cretno) { // 조회된 심사대상자가 있으면
  2449. var rslt = fSaveOutDayJudg(judgendyn);
  2450. if (rslt == null || rslt == "") {
  2451. return;
  2452. }
  2453. else {
  2454. if (rslt == "false") { // 변경된 데이터가 없는 경우
  2455. model.makeValue("/root/send/item4/endotpt/pid", model.getValue("/root/main/item1/otpt/pid"));
  2456. model.makeValue("/root/send/item4/endotpt/orddd", model.getValue("/root/main/item1/otpt/orddd"));
  2457. model.makeValue("/root/send/item4/endotpt/cretno", model.getValue("/root/main/item1/otpt/cretno"));
  2458. model.makeValue("/root/send/item4/endotpt/acptseqno", model.getValue("/root/main/item1/otpt/acptseqno"));
  2459. model.makeValue("/root/send/item4/endotpt/dschjudgprcsstat", judgendyn);
  2460. submit("TXPIJ00702", false);
  2461. }
  2462. model.setValue("/root/main/item1/otpt/dschjudgprcsstat", judgendyn);
  2463. fGetPersonalData();
  2464. fCheckAuth(); // 화면 권한을 설정한다.
  2465. fSetJudgStatBtnAuth(); // 심사완료여부 상태에 따라 "저장 / 재계산 / 완료 / 미심 / 보류" Btn 권한을 설정한다.
  2466. }
  2467. // 다음 심사대상자로 넘어간다.
  2468. var trgtManWindow = getChildWindow("SMPIJ00600"); // SMPIJ00600_외래일일심사대상자조회.xrw
  2469. if (trgtManWindow != null) {
  2470. var selectedRow = model.getValue("/root/hidden/smpij00600/rslt/selectedRow");
  2471. if (selectedRow) {
  2472. var trgtmanlist = trgtManWindow.instance1.selectSingleNode("/root/main/list1");
  2473. var maxRow = trgtmanlist.childNodes.length;
  2474. if (selectedRow < maxRow) {
  2475. // 1. 환자단위 대상자이동 시작
  2476. if (trgtManWindow.grd_otptmast.visible == true) {
  2477. prevRow = parseInt(selectedRow, 10);
  2478. selectedRow = parseInt(selectedRow, 10) + 1;
  2479. //var tmpdschjudgprcsstat = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + selectedRow + "]/dschjudgprcsstat");
  2480. // 심사완료이면 다음대상자로 넘어간다.
  2481. //if (!tmpdschjudgprcsstat == "E" ) {
  2482. // selectedRow = parseInt(selectedRow, 10) + 1;
  2483. model.setValue("/root/hidden/smpij00600/rslt/selectedRow", selectedRow);
  2484. // 2008.01.27 박지욱 추가 (당일입원환자일 경우 메세지 처리)
  2485. var tdayinflag = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/tdayinflag");
  2486. if (tdayinflag != "N") {
  2487. messageBox("입원등록한", "I005");
  2488. }
  2489. // 당일입원환자 메세지 처리 끝
  2490. // 2008.10.04 박지욱 추가 (퇴원후 외래접수일 경우 메세지 처리)
  2491. var dschrsrvyn = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/dschrsrvyn");
  2492. if (dschrsrvyn == "Y") {
  2493. messageBox("퇴원후 외래접수된", "I005");
  2494. }
  2495. // 퇴원후 외래접수 메세지 처리 끝
  2496. var pid = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/pid");
  2497. var orddd = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/orddd");
  2498. var cretno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/cretno");
  2499. var acptseqno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/acptseqno");
  2500. var insukindcd = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/insukindcd");
  2501. var dschjudgprcsstat = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + selectedRow + "]/dschjudgprcsstat");
  2502. var judgmdlid = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + selectedRow + "]/judgmdlid");
  2503. var judgnm = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + selectedRow + "]/judgnm");
  2504. var lastjudgdt = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + selectedRow + "]/lastupdtdt");
  2505. // 심사상태 변경 처리 (더블클릭한 row가 심사상태가 A, D이면 B로 변경처리)
  2506. if (dschjudgprcsstat == "A" || dschjudgprcsstat == "" || dschjudgprcsstat == "D") {
  2507. model.setValue("/root/send/item7/pid", pid);
  2508. model.setValue("/root/send/item7/orddd", orddd);
  2509. model.setValue("/root/send/item7/cretno", cretno);
  2510. model.setValue("/root/send/item7/acptseqno", acptseqno);
  2511. model.setValue("/root/send/item7/dschjudgprcsstat", "B");
  2512. if(submit("TXPIJ00602", false)){
  2513. var userid = getUserId();
  2514. var usernm = getUserName();
  2515. var currentdate = getCurrentDate();
  2516. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/dschjudgprcsstat", "B");
  2517. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/judgnm", usernm);
  2518. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/judgmdlid", userid);
  2519. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/lastupdtdt", currentdate);
  2520. // old 값 기억 시작
  2521. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldrow", selectedRow);
  2522. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldpid", pid);
  2523. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldorddd", orddd);
  2524. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldcretno", cretno);
  2525. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldacptseqno", acptseqno);
  2526. trgtManWindow.model.setValue("/root/hidden/oldotpt/olddschjudgprcsstat", dschjudgprcsstat);
  2527. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldjudgmdlid", judgmdlid);
  2528. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldjudgnm", judgnm);
  2529. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldlastjudgdt", lastjudgdt);
  2530. // old 값 기억 끝
  2531. }
  2532. }
  2533. // 대상자조회 화면에 심사상태 변경
  2534. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/dschjudgprcsstat", judgendyn);
  2535. // 대상자조회화면에서 row 앞으로 이동
  2536. trgtManWindow.grd_otptmast.row = selectedRow;
  2537. // 미심사버튼이 클릭되면 대상자 조회화면에서 미심사로 바꾸고, 심사자, 심사일시를 삭제한다.
  2538. if (judgendyn == "A") {
  2539. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/judgnm", "");
  2540. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/lastupdtdt", "");
  2541. }
  2542. if (pid && orddd && cretno && acptseqno && insukindcd) {
  2543. model.setValue("/root/hidden/smpij00600/rslt/pid", pid);
  2544. model.setValue("/root/hidden/smpij00600/rslt/orddd", orddd);
  2545. model.setValue("/root/hidden/smpij00600/rslt/cretno", cretno);
  2546. model.setValue("/root/hidden/smpij00600/rslt/acptseqno", acptseqno);
  2547. model.setValue("/root/hidden/smpij00600/rslt/insukindcd", insukindcd);
  2548. model.setValue("/root/hidden/smpij00600/rslt/opyn", trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/opyn"));
  2549. model.setValue("/root/hidden/smpij00600/rslt/dschjudgprcsstat", trgtManWindow.model.getValue("/root/hidden/oldotpt/olddschjudgprcsstat"));
  2550. model.setValue("/root/hidden/smpij00600/rslt/judgmdlid", trgtManWindow.model.getValue("/root/hidden/oldotpt/oldjudgmdlid"));
  2551. model.setValue("/root/hidden/smpij00600/rslt/lastjudgdt", trgtManWindow.model.getValue("/root/hidden/oldotpt/oldlastjudgdt"));
  2552. fGetOutDayJudgMngt();
  2553. }
  2554. else {
  2555. messageBox("필수정보가 입력되지 않은", "I005"); ///필수정보가 입력되지 않은 환자입니다.
  2556. }
  2557. //}
  2558. }
  2559. // 1. 환자단위 대상자이동 끝
  2560. // 2. 처방별 대상자이동 시작 - 다음행의 pid, orddd, cretno, acptseqno 가 같으면 넘어간다.
  2561. else if (trgtManWindow.grd_specotpt.visible == true) {
  2562. selectedRow = parseInt(selectedRow, 10);
  2563. var curpid = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/pid");
  2564. var curorddd = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/orddd");
  2565. var curcretno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/cretno");
  2566. var curacptseqno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ selectedRow +"]/acptseqno");
  2567. var idx = selectedRow + 1;
  2568. // 현재 선택된 row 의 다음행부터 loop 돌면서 다른 대상자를 찾는다.
  2569. for (var i = idx; i < trgtManWindow.grd_specotpt.rows; i++) {
  2570. var nextpid = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/pid");
  2571. var nextorddd = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/orddd");
  2572. var nextcretno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/cretno");
  2573. var nextacptseqno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/acptseqno");
  2574. if (curpid == nextpid && curorddd == nextorddd && curcretno == nextcretno && curacptseqno == nextacptseqno) {
  2575. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + i + "]/dschjudgprcsstat", judgendyn);
  2576. } else {
  2577. model.setValue("/root/hidden/smpij00600/rslt/selectedRow", i);
  2578. // 2008.01.27 박지욱 추가 (당일입원환자일 경우 메세지 처리)
  2579. var tdayinflag = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/tdayinflag");
  2580. if (tdayinflag != "N") {
  2581. messageBox("입원등록한", "I005");
  2582. }
  2583. // 당일입원환자 메세지 처리 끝
  2584. // 2008.10.04 박지욱 추가 (퇴원후 외래접수일 경우 메세지 처리)
  2585. var dschrsrvyn = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/dschrsrvyn");
  2586. if (dschrsrvyn == "Y") {
  2587. messageBox("퇴원후 외래접수된", "I005");
  2588. }
  2589. // 퇴원후 외래접수 메세지 처리 끝
  2590. var pid = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/pid");
  2591. var orddd = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/orddd");
  2592. var cretno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/cretno");
  2593. var acptseqno = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/acptseqno");
  2594. var insukindcd = trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/insukindcd");
  2595. var dschjudgprcsstat = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + i + "]/dschjudgprcsstat");
  2596. var judgmdlid = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + i + "]/judgmdlid");
  2597. var judgnm = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + i + "]/judgnm");
  2598. var lastjudgdt = trgtManWindow.model.getValue( "/root/main/list1/otpt[" + i + "]/lastupdtdt");
  2599. // 심사상태 변경 처리 (더블클릭한 row가 심사상태가 A, D이면 B로 변경처리)
  2600. if (dschjudgprcsstat == "A" || dschjudgprcsstat == "" || dschjudgprcsstat == "D" || dschjudgprcsstat == "E") {
  2601. model.setValue("/root/send/item7/pid", pid);
  2602. model.setValue("/root/send/item7/orddd", orddd);
  2603. model.setValue("/root/send/item7/cretno", cretno);
  2604. model.setValue("/root/send/item7/acptseqno", acptseqno);
  2605. model.setValue("/root/send/item7/dschjudgprcsstat", "B");
  2606. if(submit("TXPIJ00602", false)){
  2607. var userid = getUserId();
  2608. var usernm = getUserName();
  2609. var currentdate = getCurrentDate();
  2610. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + i + "]/dschjudgprcsstat", "B");
  2611. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + i + "]/judgnm", usernm);
  2612. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + i + "]/judgmdlid", userid);
  2613. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + i + "]/lastupdtdt", currentdate);
  2614. // old 값 기억 시작
  2615. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldrow", i);
  2616. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldpid", pid);
  2617. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldorddd", orddd);
  2618. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldcretno", cretno);
  2619. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldacptseqno", acptseqno);
  2620. trgtManWindow.model.setValue("/root/hidden/oldotpt/olddschjudgprcsstat", dschjudgprcsstat);
  2621. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldjudgmdlid", judgmdlid);
  2622. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldjudgnm", judgnm);
  2623. trgtManWindow.model.setValue("/root/hidden/oldotpt/oldlastjudgdt", lastjudgdt);
  2624. // old 값 기억 끝
  2625. }
  2626. }
  2627. // 대상자조회 화면에 심사상태 변경
  2628. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/dschjudgprcsstat", judgendyn);
  2629. // 대상자조회화면에서 row 앞으로 이동
  2630. trgtManWindow.grd_specotpt.row = i;
  2631. // 미심사버튼이 클릭되면 대상자 조회화면에서 미심사로 바꾸고, 심사자, 심사일시를 삭제한다.
  2632. if (judgendyn == "A") {
  2633. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/judgnm", "");
  2634. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + selectedRow + "]/lastupdtdt", "");
  2635. }
  2636. if (pid && orddd && cretno && acptseqno && insukindcd) {
  2637. model.setValue("/root/hidden/smpij00600/rslt/pid", pid);
  2638. model.setValue("/root/hidden/smpij00600/rslt/orddd", orddd);
  2639. model.setValue("/root/hidden/smpij00600/rslt/cretno", cretno);
  2640. model.setValue("/root/hidden/smpij00600/rslt/acptseqno", acptseqno);
  2641. model.setValue("/root/hidden/smpij00600/rslt/insukindcd", insukindcd);
  2642. model.setValue("/root/hidden/smpij00600/rslt/opyn", trgtManWindow.model.getValue("/root/main/list1/otpt["+ i +"]/opyn"));
  2643. model.setValue("/root/hidden/smpij00600/rslt/dschjudgprcsstat", trgtManWindow.model.getValue("/root/hidden/oldotpt/olddschjudgprcsstat"));
  2644. model.setValue("/root/hidden/smpij00600/rslt/judgmdlid", trgtManWindow.model.getValue("/root/hidden/oldotpt/oldjudgmdlid"));
  2645. model.setValue("/root/hidden/smpij00600/rslt/lastjudgdt", trgtManWindow.model.getValue("/root/hidden/oldotpt/oldlastjudgdt"));
  2646. fGetOutDayJudgMngt();
  2647. }
  2648. else {
  2649. messageBox("필수정보가 입력되지 않은", "I005"); ///필수정보가 입력되지 않은 환자입니다.
  2650. }
  2651. i = trgtManWindow.grd_specotpt.rows;
  2652. }
  2653. }
  2654. }
  2655. // 2. 처방별 대상자이동 끝
  2656. }
  2657. else { // 마지막 줄인 경우 이후 대상자가 없다.
  2658. messageBox("조회된 마지막 심사대상자 입니다. 이후 심사 대상자가", "I004"); ///조회된 마지막 심사대상자 입니다. 이후 심사 대상자가 없습니다.
  2659. // 대상자 조회화면 심사상태 변경
  2660. prevRow = parseInt(selectedRow, 10);
  2661. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/dschjudgprcsstat", judgendyn);
  2662. // 미심사버튼이 클릭되면 대상자 조회화면에서 미심사로 바꾸고, 심사자, 심사일시를 삭제한다.
  2663. if (judgendyn == "A") {
  2664. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/judgnm", "");
  2665. trgtManWindow.model.setValue( "/root/main/list1/otpt[" + prevRow + "]/lastupdtdt", "");
  2666. }
  2667. }
  2668. }
  2669. else {
  2670. messageBox("대상자조회 화면이 변경되었으므로 다음 대상자를 다시", "C002");
  2671. }
  2672. }
  2673. }
  2674. }
  2675. /* 처방 항목 구분 및 선별심사 처방 색깔 구분 */
  2676. function fSetOrderData() {
  2677. model.resetInstanceNode("/root/hidden/list2/osclitem1");
  2678. var clodList = instance1.selectSingleNode("/root/main/list2");
  2679. if (clodList == null) {
  2680. return;
  2681. }
  2682. var clodNode = clodList.childNodes;
  2683. for (var i = 1; i <= clodNode.length; i++) {
  2684. // 2008. 01. 27 박지욱 추가 (처방 색깔 항 구분에 따라 흰색-회색 구분되도록 처리)
  2685. //fSetOrderColorByEdiitem();
  2686. // 선별심사 처방 색깔 구분
  2687. var spcljudgyn = model.getValue("/root/main/list2/oscl["+ i +"]/spcljudgyn");
  2688. if (spcljudgyn == "Y") {
  2689. grd_clodhist.rowStyle(i, "data", "color") = "#ff3333";
  2690. } else {
  2691. grd_clodhist.rowStyle(i, "data", "color") = "#000000";
  2692. }
  2693. // 항목구분 조회부 Radio에 해당하는 처방이 있는지 여부를 확인한다.
  2694. if (ediitem1) {
  2695. var path = "/root/hidden/list2/osclitem1/ediitem1_"+ ediitem1;
  2696. var node = instance1.selectSingleNode(path);
  2697. if (node != null) {
  2698. model.setValue(path, ediitem1);
  2699. }
  2700. }
  2701. }
  2702. // 처방 조회부 항목구분 Radio에서 해당 처방이 있는 item을 굵게 표시한다.
  2703. var itemRadioList = instance1.selectSingleNode("/root/hidden/list2/osclitem1");
  2704. var itemNode = itemRadioList.childNodes;
  2705. rdo_item1.item(0).attribute("font-weight") = "bold"; // "전체" 항목은 default 로 굵게 표시한다.
  2706. for (var i = 1; i < itemNode.length; i++) {
  2707. var ediitem1 = itemNode.item(i).value;
  2708. if (ediitem1) {
  2709. rdo_item1.item(i).attribute("font-weight") = "bold";
  2710. } else {
  2711. rdo_item1.item(i).attribute("font-weight") = "normal";
  2712. }
  2713. }
  2714. // ****************************************************************************************************************
  2715. // 항목별 소계 subtotal 김상진 20101122
  2716. // ****************************************************************************************************************
  2717. // #ffff0| 밝은노랑
  2718. // #d9e3fe 옅은파랑
  2719. // #eeddff 옅은보라
  2720. // #b9fcf8 밝은하늘
  2721. // #cefcfa 옅은하늘
  2722. /*
  2723. grd_clodhist.subtotalposition= "below";
  2724. grd_clodhist.subtotal("sum", grd_clodhist.colRef("ediitem1"), grd_clodhist.colRef("edihospaddtotamt"),"format:(-)#,###; roundmode:round; roundposition:0", "background-color:#cefcfa; color:#0000ff;font-weight:bold; ", grd_clodhist.colRef("hngnm"), "", false); //종별가산sum
  2725. grd_clodhist.subtotal("sum", grd_clodhist.colRef("ediitem1"), grd_clodhist.colRef("choiordtotamt"),"format:(-)#,###; roundmode:round; roundposition:0", "background-color:#cefcfa; color:#0000ff;font-weight:bold; ", grd_clodhist.colRef("hngnm"), "", false); //선택sum
  2726. grd_clodhist.subtotal("sum", grd_clodhist.colRef("ediitem1"), grd_clodhist.colRef("totordamt"),"format:(-)#,###; roundmode:round; roundposition:0", "background-color:#cefcfa; color:#0000ff;font-weight:bold; ", grd_clodhist.colRef("hngnm"), "", false); //총진료비
  2727. grd_clodhist.subtotal("sum", grd_clodhist.colRef("ediitem1"), grd_clodhist.colRef("calcamt"),"format:(-)#,###; roundmode:round; roundposition:0", "background-color:#cefcfa; color:#0000ff;font-weight:bold; ", grd_clodhist.colRef("hngnm"), "항목별소계", false); //금액
  2728. //grd_clodhist.gridToInstance();
  2729. var fild1 = "0";
  2730. var fild2 = "0";
  2731. for(var i = grd_clodhist.fixedRows; i <= grd_clodhist.rows; i++){
  2732. fild1 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm"));
  2733. if(fild1 == "항목별소계" && fild2 != ""){
  2734. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("calcqty")) = "";
  2735. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("daydrugqty")) = "";
  2736. if(fild2 == "01"){
  2737. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "진찰료 소계";
  2738. }else if(fild2 == "02"){
  2739. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "입원료 소계";
  2740. }else if(fild2 == "03"){
  2741. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "투약료 소계";
  2742. }else if(fild2 == "04"){
  2743. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "주사료 소계";
  2744. }else if(fild2 == "05"){
  2745. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "마취료 소계";
  2746. }else if(fild2 == "06"){
  2747. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "이학료 소계";
  2748. }else if(fild2 == "07"){
  2749. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "정신료 소계";
  2750. }else if(fild2 == "08"){
  2751. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "수술료 소계";
  2752. }else if(fild2 == "09"){
  2753. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "검사료 소계";
  2754. }else if(fild2 == "10"){
  2755. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "방사선 소계";
  2756. }else if(fild2 == "SS"){
  2757. grd_clodhist.valueMatrix(i, grd_clodhist.colRef("hngnm")) = "특수 소계";
  2758. }
  2759. }
  2760. fild2 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("ediitem1"));
  2761. }
  2762. */
  2763. }
  2764. /* 처방 필터링 */
  2765. function fGetSelectedOrderData() {
  2766. var selectedRdoPay = model.getValue("/root/hidden/list2/osclsrch/selectedRdoPay");
  2767. var selectedRdoItem = model.getValue("/root/hidden/list2/osclsrch/selectedRdoItem");
  2768. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i ++ ) {
  2769. grd_clodhist.rowHidden(i) = false;
  2770. if (selectedRdoPay == "" || selectedRdoPay == "-") { // 전체
  2771. }
  2772. else if (selectedRdoPay == "1") { // 급여인 경우
  2773. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("calcpayflag")) != "0" ) { // 급여구분1(P0104 -:해당사항없음, 0:급여, 1:전액본인부담, 2:일반)
  2774. grd_clodhist.rowHidden(i) = true;
  2775. }
  2776. }
  2777. else if (selectedRdoPay == "2") { // 전액본인인 경우
  2778. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("calcpayflag")) != "1" ) {
  2779. grd_clodhist.rowHidden(i) = true;
  2780. }
  2781. } else if (selectedRdoPay == "3") { // 비급여(일반)인 경우
  2782. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("calcpayflag")) != "2" ) {
  2783. grd_clodhist.rowHidden(i) = true;
  2784. }
  2785. } else { // 0원인 경우
  2786. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("calcamt")) != "0" ) {
  2787. grd_clodhist.rowHidden(i) = true;
  2788. }
  2789. }
  2790. if (selectedRdoItem == "" || selectedRdoItem == "-") { // 전체
  2791. } else {
  2792. if (grd_clodhist.valueMatrix(i, grd_clodhist.colRef("ediitem1")) != model.getValue("/root/hidden/list2/osclsrch/selectedRdoItem")) {
  2793. grd_clodhist.rowHidden(i) = true;
  2794. }
  2795. }
  2796. // 2008. 01. 27 박지욱 추가 (처방 색깔 항 구분에 따라 흰색-회색 구분되도록 처리)
  2797. //fSetOrderColorByEdiitem();
  2798. }
  2799. }
  2800. /* 처방 항 별 색상 구분 */
  2801. function fSetOrderColorByEdiitem() {
  2802. /*
  2803. var ediitem2 = "";
  2804. var color = "#f4f4f4";
  2805. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i ++ ) {
  2806. var status = grd_clodhist.rowHidden(i);
  2807. if (status == false) {
  2808. var ediitem1 = grd_clodhist.valueMatrix(i, grd_clodhist.colRef("ediitem1"));
  2809. if (ediitem1 == ediitem2) {
  2810. grd_clodhist.rowStyle(i,"data","background-color") = color;
  2811. } else {
  2812. ediitem2 = ediitem1;
  2813. if (color == "#ffffff") {
  2814. grd_clodhist.rowStyle(i,"data","background-color") = "#f4f4f4";
  2815. color = "#f4f4f4";
  2816. } else {
  2817. grd_clodhist.rowStyle(i,"data","background-color") = "#ffffff";
  2818. color = "#ffffff";
  2819. }
  2820. }
  2821. }
  2822. }
  2823. */
  2824. }
  2825. /* 처방 Grid 필터용 조회조건을 초기화 */
  2826. function fInitOrderFilter() {
  2827. // 처방Grid용 조회부의 Radio 초기값을 "전체"로 설정한다.
  2828. model.setValue("/root/hidden/list2/osclsrch/selectedRdoPay", "-");
  2829. model.setValue("/root/hidden/list2/osclsrch/selectedRdoItem", "-");
  2830. model.resetInstanceNode("/root/hidden/list2/osclsrch/chkChoiOrdTotAmt");
  2831. rdo_payflag.refresh();
  2832. rdo_item1.refresh();
  2833. chk_choiordtotamt.refresh();
  2834. //model.refresh();
  2835. for (var i = grd_clodhist.fixedRows; i < grd_clodhist.rows; i ++ ) {
  2836. grd_clodhist.rowHidden(i) = false;
  2837. }
  2838. // 2008. 01. 27 박지욱 추가 (처방 색깔 항 구분에 따라 흰색-회색 구분되도록 처리)
  2839. //fSetOrderColorByEdiitem();
  2840. }
  2841. /* 조회된 심사대상자의 특이 인적사항, 보조/요율 등을 계산하여 보여준다. */
  2842. function fGetPersonalData() {
  2843. var srchrslt = "";
  2844. if (model.getValue("/root/main/item1/otpt/dethyn") == "Y") {
  2845. srchrslt = " [사망환자입니다.]";
  2846. }
  2847. /*
  2848. //희귀난치산정특례 신청번호 - 2009/07/02 김주희
  2849. if (model.getValue("/root/main/item1/otpt/suppkindcd") == "06" || model.getValue("/root/main/item1/otpt/suppkindcd") == "11"){ //등록암 , 가정간호(등록암)
  2850. srchrslt += model.getValue("/root/main/item1/otpt/sdoamsg"); // 중증등록정보
  2851. }
  2852. else if (model.getValue("/root/main/item1/otpt/suppkindcd") == "50"){ //희귀난치산정특례
  2853. if(model.getValue("/root/main/item1/otpt/sdoamsg") != ""){
  2854. srchrslt += model.getValue("/root/main/item1/otpt/sdoamsg");
  2855. }
  2856. else{
  2857. srchrslt += model.getValue("/root/main/item1/otpt/rooamsg");} // 희귀난치신청번호
  2858. }
  2859. model.setValue("/root/hidden/item1/otpt/srchrslt", srchrslt);
  2860. */
  2861. //중증,희귀번호 동시 존재 시 추가 시작_2009/10/26
  2862. var sdoamsg = model.getValue("/root/main/item1/otpt/sdoamsg"); //중증번호
  2863. var rooamsg = model.getValue("/root/main/item1/otpt/rooamsg"); //희귀번호
  2864. // 중증번호만 존재시..sdoamsg
  2865. if(sdoamsg != "" && rooamsg == ""){
  2866. opt_srchrslt.visible = true;
  2867. roundrect1.visible = true;
  2868. cmb_itemraremsg.visible = false;
  2869. // 희귀번호만 존재시.. rooamsg
  2870. }else if(sdoamsg == "" && rooamsg != ""){
  2871. opt_srchrslt.visible = true;
  2872. roundrect1.visible = true;
  2873. cmb_itemraremsg.visible = false;
  2874. // 희귀난치성 산정특례환자의 등록번호를 보여준다.
  2875. var rooamsg = model.getValue("/root/main/item1/otpt/rooamsg");
  2876. if (rooamsg != '-') {
  2877. model.setValue("/root/main/item1/otpt/sdoamsg",rooamsg);
  2878. model.refresh();
  2879. }
  2880. // 두번호 모두 존재시.. sdoamsg, rooamsg
  2881. }else if(sdoamsg != "" && rooamsg != ""){
  2882. opt_srchrslt.visible = false;
  2883. roundrect1.visible = false;
  2884. cmb_itemraremsg.visible = true;
  2885. model.setValue("/root/hidden/itemraremsg/msg[" + 1 + "]/cd","sdoamsg");
  2886. model.setValue("/root/hidden/itemraremsg/msg[" + 1 + "]/nm",sdoamsg);
  2887. model.setValue("/root/hidden/itemraremsg/msg[" + 2 + "]/cd","rooamsg");
  2888. model.setValue("/root/hidden/itemraremsg/msg[" + 2 + "]/nm",rooamsg);
  2889. // 기본 중증 셋팅
  2890. cmb_itemraremsg.value = "sdoamsg";
  2891. }else{
  2892. opt_srchrslt.visible = true;
  2893. roundrect1.visible = true;
  2894. cmb_itemraremsg.visible = false;
  2895. }
  2896. //중증,희귀번호 동시 존재 시 추가 끝_2009/10/26
  2897. // 보조유형ID과 요율%로 combo 의 value
  2898. var suppkindcd = model.getValue("/root/main/item1/otpt/suppkindcd");
  2899. var payownbrate = model.getValue("/root/main/item1/otpt/payownbrate");
  2900. var supprate = suppkindcd+"/"+payownbrate; // 보조유형ID과 요율%로 combo 의 value
  2901. model.setValue("/root/hidden/item1/otpt/patsupprate", supprate);
  2902. }
  2903. /* 보조유형 및 요율 combo(cmb_supprate)의 선택 값이 변경된 경우 각각을 해당 output에 설정한다. 사용안함*/
  2904. function fSetPatSuppRate() {
  2905. // 보조유형ID과 요율%로 combo 의 value
  2906. // 보조유형NM과 요율%로 combo 의 label
  2907. var patsupprate = model.getValue("/root/hidden/item1/otpt/patsupprate");
  2908. var suppkindcd = patsupprate.substr(0, 2);
  2909. var payownbrate = patsupprate.substr(3, patsupprate.length);
  2910. model.setValue("/root/main/item1/otpt/suppkindcd", suppkindcd);
  2911. model.setValue("/root/main/item1/otpt/payownbrate", payownbrate);
  2912. model.setValue("/root/main/item1/otpt/recalcyn", "Y"); // 저장 시에 재계산할지 여부를 설정함
  2913. opt_suppkind.refresh();
  2914. opt_payownbrate.refresh();
  2915. //model.refresh();
  2916. if (suppkindcd != "" && suppkindcd != "00") {
  2917. opt_suppkind.attribute("background-color") = "#cece9c";
  2918. opt_payownbrate.attribute("background-color") = "#cece9c";
  2919. } else {
  2920. opt_suppkind.attribute("background-color") = "#f2f2f2"; // output_fix 클래스의 background-color
  2921. opt_payownbrate.attribute("background-color") = "#f2f2f2";
  2922. }
  2923. }
  2924. /* 조합기호(ipt_insuno)를 입력하면 해당 조합명칭을 조회한다. */
  2925. function fGetOutDayJudgTrgtManInsunm() {
  2926. model.makeValue("/root/send/item2/incd/insucd", model.getValue("/root/main/item1/otpt/insuno"));
  2927. model.makeValue("/root/send/item2/incd/ordfromdd", model.getValue("/root/main/item1/otpt/orddd"));
  2928. submit("TRPIJ00702");
  2929. var insucdnm = model.getValue("/root/main/item2/incd/insucdnm");
  2930. if (insucdnm) {
  2931. model.setValue("/root/main/item1/otpt/insunm", insucdnm);
  2932. opt_insunm.refresh();
  2933. //model.refresh();
  2934. } else {
  2935. model.resetInstanceNode("/root/main/item1/otpt/insunm");
  2936. opt_insunm.refresh();
  2937. //model.refresh();
  2938. ipt_insuno.dispatch("onbuttonclick");
  2939. }
  2940. }
  2941. // [2007.04.23] function 작성: (통합팀) 김선희 대리님
  2942. // 주민번호를 이용한 나이 계산의 경우, 유효하지 않은 주민번호에 대해서는 -1 값만을 반환하므로,
  2943. // 주민번호 앞자리를 이용해서 yyyymmdd 형태로 만든다.
  2944. function getBirthDate(pResidentNo) {
  2945. if (isNaN(pResidentNo)) return -1;
  2946. gender = pResidentNo.substr(6, 1);
  2947. if (gender == "3" || gender == "4" || gender == "7" || gender == "8") {
  2948. regYY = "20";
  2949. } else if(gender == "0" || gender == "9") {
  2950. regYY = "18";
  2951. } else {
  2952. regYY = "19";
  2953. }
  2954. var rtn = regYY + pResidentNo.substr(0 , 6);
  2955. return rtn;
  2956. }
  2957. /* 특정 환자에 대해 그동안 작성된 심사자메모, 청구메모 내역을 조회한다. */
  2958. function fGetMemoHistList() {
  2959. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  2960. if (cretno) {
  2961. // 1. 메모이력조회 화면을 호출한다.
  2962. model.removeNodeset("/root/hidden/sppiz00300/rslt");
  2963. model.makevalue("/root/hidden/sppiz00300/cond/pid", model.getValue("/root/main/item1/otpt/pid"));
  2964. model.makevalue("/root/hidden/sppiz00300/cond/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd"));
  2965. model.makevalue("/root/hidden/sppiz00300/cond/ioflag", "O");
  2966. model.makevalue("/root/hidden/sppiz00300/cond/refterm", "2");
  2967. model.makevalue("/root/hidden/sppiz00300/cond/anofildinclyn", "Y");
  2968. model.makevalue("/root/hidden/sppiz00300/cond/fromdd", "");
  2969. model.makevalue("/root/hidden/sppiz00300/cond/todd", "");
  2970. modal("SPPIZ00300" ,"", "10", "10", "SPPIZ00300", "/root/hidden/sppiz00300/cond", "/root/init", "", ""); // SPPIZ00300_메모이력조회.xrw
  2971. // 2. 조회 후 작업을 처리한다.
  2972. var SelectMemo = instance1.selectSingleNode("/root/hidden/sppiz00300/rslt");
  2973. if (SelectMemo != null) {
  2974. var choimemo = model.getValue("/root/hidden/sppiz00300/rslt/choimemo").getTrim();
  2975. var choiedicd = model.getValue("/root/hidden/sppiz00300/rslt/edicd");
  2976. if (choimemo) {
  2977. model.setValue("/root/hidden/sppiz00300/rslt/choimemo", choimemo);
  2978. var destRef = model.getValue("/root/hidden/sppiz00300/rslt/destRef");
  2979. // 2-1. 심사메모로 전달한다.
  2980. if (destRef == "judgmemo") {
  2981. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  2982. if (judgmemo) {
  2983. model.setValue("/root/main/item1/memo/judgmemo", judgmemo +" \n"+ choimemo);
  2984. } else {
  2985. if (choiedicd) {
  2986. // 동일한 EDI 코드가 있을 경우만 추가
  2987. for (var j = 1; j < grd_clodhist.rows; j++) {
  2988. var oscledicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  2989. if (choiedicd == oscledicd) {
  2990. model.setValue("/root/main/item1/memo/judgmemo", choimemo);
  2991. j = grd_clodhist.rows;
  2992. }
  2993. }
  2994. } else {
  2995. model.setValue("/root/main/item1/memo/judgmemo", choimemo);
  2996. }
  2997. }
  2998. tar_judgrmemo.refresh();
  2999. }
  3000. // 2-2. 청구메모로 전달한다.
  3001. else if (destRef == "edimemo") {
  3002. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  3003. if (edimemo) {
  3004. model.setValue("/root/main/item1/memo/edimemo", edimemo +" \n"+ choimemo);
  3005. } else {
  3006. if (choiedicd) {
  3007. // 동일한 EDI 코드가 있을 경우 * 표시
  3008. for (var j = 1; j < grd_clodhist.rows; j++) {
  3009. var oscledicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  3010. if (choiedicd == oscledicd) {
  3011. model.setValue("/root/main/item1/memo/edimemo", choimemo);
  3012. j = grd_clodhist.rows;
  3013. }
  3014. }
  3015. } else {
  3016. model.setValue("/root/main/item1/memo/edimemo", choimemo);
  3017. }
  3018. }
  3019. tar_ediclammemo.refresh();
  3020. }
  3021. // 2-3. 처방별주석(JX999)으로 전달한다.
  3022. else if (destRef == "prcpmemo") {
  3023. var clsprow = grd_clsphist.rows - 1;
  3024. var addcnt = 0;
  3025. for (var i = 1; i < grd_clodhist.rows; i++) {
  3026. var oscledicd = model.getValue("/root/main/list2/oscl["+ i +"]/basecd");
  3027. if (choiedicd == oscledicd) {
  3028. var lnunitspclspecyn = model.getValue("/root/main/list2/oscl["+ i +"]/lnunitspclspecyn");
  3029. var rowNum = "";
  3030. if (lnunitspclspecyn) {
  3031. // 기존에 입력한 JX999가 존재하는지 확인
  3032. for (var j = 1; j < grd_clsphist.rows; j++) {
  3033. var edicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  3034. if (oscledicd == edicd) {
  3035. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") == "JX999" && grd_clsphist.rowstatus(j) != 4) {
  3036. rowNum = j;
  3037. j = grd_clsphist.rows;
  3038. }
  3039. }
  3040. }
  3041. // 기존에 존재하는 경우
  3042. if (rowNum) {
  3043. var ans = messageBox(oscledicd + "(EDI코드) 에 등록된 메모가 있습니다. 기존 내역에 추가할 경우 예(Yes)\n 새로운 내역으로 변경하시려면 아니오(No)", "S003");
  3044. if (ans == 6) { // 6: yes
  3045. var spclspec = model.getValue("/root/main/list3/clcj["+ rowNum +"]/spclspec");
  3046. model.setValue("/root/main/list3/clcj["+ rowNum +"]/spclspec", spclspec + "\n"+ choimemo);
  3047. var rowstatus = grd_clsphist.rowstatus(rowNum);
  3048. if (rowstatus == 1 || rowstatus == 3) {
  3049. model.setValue("/root/main/list3/clcj["+ rowNum +"]/rowstat", "I");
  3050. } else {
  3051. grd_clsphist.rowstatus(rowNum) = 2;
  3052. model.setValue("/root/main/list3/clcj["+ rowNum +"]/rowstat", "U");
  3053. }
  3054. }
  3055. else if (ans == 7) { // 7:no
  3056. model.setValue("/root/main/list3/clcj["+ rowNum +"]/spclspec", choimemo);
  3057. var rowstatus = grd_clsphist.rowstatus(rowNum);
  3058. if (rowstatus == 1 || rowstatus == 3) {
  3059. model.setValue("/root/main/list3/clcj["+ rowNum +"]/rowstat", "I");
  3060. } else {
  3061. grd_clsphist.rowstatus(rowNum) = 2;
  3062. model.setValue("/root/main/list3/clcj["+ rowNum +"]/rowstat", "U");
  3063. }
  3064. }
  3065. else if (ans == 2) { // 2:cancel
  3066. }
  3067. // 기존에 존재하지 않는 경우
  3068. } else {
  3069. /*
  3070. var clsprow = grd_clsphist.rows - 1;
  3071. grd_clsphist.insertRow(clsprow++, true);
  3072. model.setValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "J");
  3073. model.setValue("/root/main/list3/clcj["+ clsprow +"]/edicd", oscledicd);
  3074. model.setValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", "JX999");
  3075. model.setValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "기타내역");
  3076. model.setValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", choimemo);
  3077. model.setValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(700)");
  3078. model.setValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  3079. model.setValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", "JX999");
  3080. // 처방 그리드에서 추가할 데이터를 불러온다.
  3081. for (var i = 1; i < grd_clodhist.rows; i++) {
  3082. var basecd = model.getValue("/root/main/list2/oscl["+ i +"]/basecd");
  3083. if (choiedicd == basecd) {
  3084. model.setValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ i +"]/prcpdd"));
  3085. model.setValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ i +"]/prcpno"));
  3086. model.setValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ i +"]/prcphistno"));
  3087. model.setValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ i +"]/execprcpseqno"));
  3088. i = grd_clodhist.rows;
  3089. }
  3090. }
  3091. grd_clsphist.row = clsprow;
  3092. */
  3093. clsprow++;
  3094. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  3095. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "J");
  3096. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", oscledicd);
  3097. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", "JX999");
  3098. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "기타내역");
  3099. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", choimemo);
  3100. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(700)");
  3101. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  3102. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", oscledicd);
  3103. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", "JX999");
  3104. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  3105. // 처방 그리드에서 추가할 데이터를 불러온다.
  3106. for (var i = 1; i < grd_clodhist.rows; i++) {
  3107. var basecd = model.getValue("/root/main/list2/oscl["+ i +"]/basecd");
  3108. if (choiedicd == basecd) {
  3109. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ i +"]/prcpdd"));
  3110. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ i +"]/prcpno"));
  3111. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ i +"]/prcphistno"));
  3112. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ i +"]/execprcpseqno"));
  3113. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", model.getValue("/root/main/list2/oscl["+ i +"]/edicdflag"));
  3114. i = grd_clodhist.rows;
  3115. }
  3116. }
  3117. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  3118. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ oscledicd +" / 특정내역명칭: "+ "기타내역" +" / 기재내역: "+ choimemo +" / 기재형식: "+ "X(700)");
  3119. opt_msgspclformat.refresh();
  3120. addcnt++;
  3121. }
  3122. // 기존에 JX999가 없는 경우
  3123. } else {
  3124. /*
  3125. var clspgridrow = grd_clsphist.rows - 1;
  3126. grd_clsphist.insertRow(clspgridrow++, true);
  3127. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/edicd", basecd);
  3128. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/spclcd", "JX999");
  3129. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/cdnm", "기타내역");
  3130. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/spclspec", choimemo);
  3131. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/spclformat", "X(700)");
  3132. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  3133. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/oldspclcd", "JX999");
  3134. // 처방 그리드에서 추가할 데이터를 불러온다.
  3135. for (var i = 1; i < grd_clodhist.rows; i++) {
  3136. var basecd = model.getValue("/root/main/list2/oscl["+ i +"]/basecd");
  3137. if (choiedicd == basecd) {
  3138. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ i +"]/prcpdd"));
  3139. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ i +"]/prcpno"));
  3140. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ i +"]/prcphistno"));
  3141. model.setValue("/root/main/list3/clcj["+ clspgridrow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ i +"]/execprcpseqno"));
  3142. model.setValue("/root/main/list2/clcj["+ i +"]/lnunitspclspecyn", "*");
  3143. }
  3144. }
  3145. grd_clsphist.row = clspgridrow;
  3146. */
  3147. clsprow++;
  3148. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  3149. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "J");
  3150. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", basecd);
  3151. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", "JX999");
  3152. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "기타내역");
  3153. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", choimemo);
  3154. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(700)");
  3155. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "특정내역의 구분코드가 없는 경우에는 기타 줄번호(확장 번호)단위의 기타내역에 기재");
  3156. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", basecd);
  3157. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", "JX999");
  3158. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  3159. // 처방 그리드에서 추가할 데이터를 불러온다.
  3160. for (var i = 1; i < grd_clodhist.rows; i++) {
  3161. var basecd = model.getValue("/root/main/list2/oscl["+ i +"]/basecd");
  3162. if (choiedicd == basecd) {
  3163. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ i +"]/prcpdd"));
  3164. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ i +"]/prcpno"));
  3165. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ i +"]/prcphistno"));
  3166. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ i +"]/execprcpseqno"));
  3167. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", model.getValue("/root/main/list2/oscl["+ i +"]/edicdflag"));
  3168. model.setValue("/root/main/list2/clcj["+ i +"]/lnunitspclspecyn", "*");
  3169. }
  3170. }
  3171. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  3172. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ basecd +" / 특정내역명칭: "+ "기타내역" +" / 기재내역: "+ choimemo +" / 기재형식: "+ "X(700)");
  3173. opt_msgspclformat.refresh();
  3174. addcnt++;
  3175. }
  3176. }
  3177. }
  3178. // row 상태를 다시 맞추어준다.
  3179. grd_clsphist.refresh();
  3180. fSetClcjRowStatus();
  3181. // 특정내역을 소팅한다. - 특정내역을 소트해야 하는 시기는 특정내역이 추가된 경우 뿐이다.
  3182. if (addcnt > 0) {
  3183. fSortSpclNo();
  3184. fSpclGridInsertRow();
  3185. }
  3186. }
  3187. }
  3188. }
  3189. }
  3190. }
  3191. /* 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다. */
  3192. function fSetJudgEDIMemo(spclmemo, usermemoyn) {
  3193. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  3194. var max = 1;
  3195. if (delclspNode != null) {
  3196. max = delclspNode.childNodes.length + 1;
  3197. }
  3198. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delunitflag", "M");
  3199. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclcd", "MX999");
  3200. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclmemoflag", usermemoyn);
  3201. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/deledicd", "MX999");
  3202. var item3Path = "";
  3203. var item3Node = "";
  3204. if (usermemoyn == "U") {
  3205. item3Path = "/root/send/item3/judgmemo[";
  3206. item3Node = "judg";
  3207. } else {
  3208. item3Path = "/root/send/item3/edimemo[";
  3209. item3Node = "edi";
  3210. }
  3211. var iSpclCdCnt = 0; // DB에 저장될 MX999 코드 개수
  3212. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  3213. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  3214. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  3215. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  3216. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  3217. var iStartInx = 0; // 특정내역 시작 index
  3218. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  3219. for (var i=0; i < spclmemo.length; i++) {
  3220. var sBit = spclmemo.charAt(i);
  3221. iCharCnt++;
  3222. if (escape(sBit).length > 4) {
  3223. iLen = iLen + 2;
  3224. } else {
  3225. iLen = iLen + 1;
  3226. }
  3227. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  3228. iSpclCdCnt++;
  3229. //model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"usermemoyn", usermemoyn);
  3230. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  3231. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo.substr(iStartInx, iCharCnt));
  3232. iStartInx += iCharCnt;
  3233. insCharTotCnt += 350;
  3234. }
  3235. else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  3236. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  3237. iStartInx += (iCharCnt - 1);
  3238. i--;
  3239. insCharTotCnt += 349;
  3240. }
  3241. iCharCnt = 0;
  3242. iLen = 0;
  3243. }
  3244. }
  3245. if (iSpclCdTotLength != insCharTotCnt) {
  3246. iSpclCdCnt++;
  3247. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo.substring(iStartInx, spclmemo.length));
  3248. }
  3249. }
  3250. else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  3251. iSpclCdCnt++;
  3252. //model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"usermemoyn", usermemoyn);
  3253. model.makeValue(item3Path + iSpclCdCnt +"]/"+ item3Node +"spclspec", spclmemo);
  3254. //}
  3255. }
  3256. }
  3257. // 심사Comment 조회 Popup에서 선택한 심사자메모를 설정한다.
  3258. function fSetJudgMemoRefresh(){
  3259. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  3260. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  3261. if (memo) {
  3262. if (judgmemo) { // 기존 심사메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  3263. model.setValue("/root/main/item1/memo/judgmemo", judgmemo +" \n"+ memo);
  3264. } else {
  3265. model.setValue("/root/main/item1/memo/judgmemo", memo);
  3266. }
  3267. tar_judgrmemo.refresh();
  3268. }
  3269. }
  3270. // 심사Comment 조회 Popup에서 선택한 EDI메모를 설정한다.
  3271. function fSetEdiMemoRefresh(){
  3272. var memo = model.getValue("/root/hidden/sppiz00700/rslt/memo");
  3273. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  3274. if (memo) {
  3275. if (edimemo) { // 기존 청구메모가 공백이 아닌 경우 선택된 메모를 심사화면 메모 뒤에 덧붙인다.
  3276. model.setValue("/root/main/item1/memo/edimemo", edimemo +" \n"+ memo);
  3277. } else {
  3278. model.setValue("/root/main/item1/memo/edimemo", memo);
  3279. }
  3280. tar_ediclammemo.refresh();
  3281. }
  3282. }
  3283. /* 상병이력 조회 및 전달 */
  3284. function fGetDiagHistList() {
  3285. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  3286. if (cretno) {
  3287. // 1. 상병이력조회 화면을 호출한다.
  3288. model.setValue("/root/hidden/smpiz00100/cond/pid", model.getValue("/root/main/item1/otpt/pid"));
  3289. model.setValue("/root/hidden/smpiz00100/cond/ordfromdd", model.getValue("/root/main/item1/otpt/orddd"));
  3290. model.setValue("/root/hidden/smpiz00100/cond/ordtodd", "");
  3291. modal("SMPIZ00100" ,"", "10", "10", "SMPIZ00100", "/root/hidden/smpiz00100/cond", "/root/init", "", ""); // SMPIZ00100_외래입원상병이력조회.xrw
  3292. //model.refresh();
  3293. // 2. 심사상병전달 처리한다.
  3294. var rsltNode = instance1.selectSingleNode("/root/hidden/smpiz00100/rslt");
  3295. if (rsltNode != null) {
  3296. var insrow = grd_cldihist.rows - 1;
  3297. var addcnt = 0;
  3298. for (var i = 1; i <= rsltNode.childNodes.length; i++) {
  3299. var diagcd = model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagcd");
  3300. var isSame = false;
  3301. // 2-1. 동일 상병이 존재하면 입력하지 않는다.
  3302. for (var j = 1; j < grd_cldihist.rows; j++) {
  3303. if (diagcd == model.getValue("/root/main/list1/diag["+ j +"]/diagcd")) {
  3304. // 동일한 상병이 존재하는 경우
  3305. isSame = true;
  3306. j = grd_cldihist.rows;
  3307. }
  3308. }
  3309. // 2-2. 동일 상병이 존재하지 않으면 추가한다.
  3310. if (isSame == false) {
  3311. insrow++;
  3312. model.makeValue("/root/main/list1/diag["+ insrow +"]/rowstat", "I");
  3313. model.makeValue("/root/main/list1/diag["+ insrow +"]/diagkindcd", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagkindcd"));
  3314. model.makeValue("/root/main/list1/diag["+ insrow +"]/diagseq", insrow);
  3315. model.makeValue("/root/main/list1/diag["+ insrow +"]/diagcd", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagcd"));
  3316. model.makeValue("/root/main/list1/diag["+ insrow +"]/diagnm", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diaghngnm"));
  3317. model.makeValue("/root/main/list1/diag["+ insrow +"]/diagengnm", model.getValue("/root/hidden/smpiz00100/rslt/diag["+ i +"]/diagengnm"));
  3318. var diagorddeptcd = model.getValue("/root/main/list1/diag/diagorddeptcd");
  3319. if (diagorddeptcd == "") {
  3320. diagorddeptcd = model.getValue("/root/main/item1/otpt/orddeptcd");
  3321. }
  3322. model.makeValue("/root/main/list1/diag["+ insrow +"]/diagorddeptcd", diagorddeptcd);
  3323. model.makeValue("/root/main/list1/diag["+ insrow +"]/ordfromdd", model.getValue("/root/main/list1/diag/ordfromdd"));
  3324. model.makeValue("/root/main/list1/diag["+ insrow +"]/toot", "-");
  3325. model.makeValue("/root/main/list1/diag["+ insrow +"]/toot1", "-");
  3326. model.makeValue("/root/main/list1/diag["+ insrow +"]/seqno", "");
  3327. model.makeValue("/root/main/list1/diag["+ insrow +"]/addflag", "Y");
  3328. model.makeValue("/root/main/list1/diag["+ insrow +"]/drinptyn", "N");
  3329. model.makeValue("/root/main/list1/diag["+ insrow +"]/pid", model.getValue("/root/main/item1/otpt/pid"));
  3330. model.makeValue("/root/main/list1/diag["+ insrow +"]/orddd", model.getValue("/root/main/item1/otpt/orddd"));
  3331. model.makeValue("/root/main/list1/diag["+ insrow +"]/cretno", model.getValue("/root/main/item1/otpt/cretno"));
  3332. addcnt++;
  3333. }
  3334. }
  3335. // 3. 그리드에 데이터를 반영한다.
  3336. grd_cldihist.refresh();
  3337. fSetDiagRowStatus();
  3338. // 4. 추가가 된 경우에만 소트한다.
  3339. if (addcnt > 0) {
  3340. // 4-1. 소트
  3341. fSortDiagNo();
  3342. // 4-2. 빈줄 추가
  3343. fDiagGridInsertRow();
  3344. // 4-3. seq 재부여
  3345. var seq = 1;
  3346. for (var j = 1; j < grd_cldihist.rows; j++) {
  3347. var diagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  3348. if (diagseq > "D0") {
  3349. } else {
  3350. model.setValue("/root/main/list1/diag[" + j + "]/diagseq", seq);
  3351. grd_cldihist.valueMatrix(j, grd_cldihist.colRef("diagseq")) = seq;
  3352. seq++;
  3353. }
  3354. }
  3355. }
  3356. }
  3357. }
  3358. }
  3359. /* 줄단위 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다. */
  3360. function fSetSpclSpecJX999() {
  3361. var iTotSpclCdCnt = 0; // DB에 저장될 JX999 코드 개수
  3362. for (var i = 1; i < grd_clsphist.rows; i++) {
  3363. var rowstatus = grd_clsphist.rowstatus(i);
  3364. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  3365. var edicd = model.getValue("/root/main/list3/clcj["+ i +"]/edicd");
  3366. var calcscorcd = model.getValue("/root/main/list3/clcj["+ i +"]/calcscorcd");
  3367. var edicdflag = model.getValue("/root/main/list3/clcj["+ i +"]/edicdflag");
  3368. if (rowstatus != 0 && spclcd == "JX999") {
  3369. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  3370. var max = 1;
  3371. if (delclspNode != null) {
  3372. max = delclspNode.childNodes.length + 1;
  3373. }
  3374. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delunitflag", "J");
  3375. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclmemoflag", "E");
  3376. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/deledicd", edicd);
  3377. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclcd", "JX999");
  3378. }
  3379. // 해당 EDI코드의 JX999는 모두 삭제하고 새로 추가하므로 "삭제" 상태가 아닌 모든 경우를 전송한다.
  3380. if (rowstatus != 0 && rowstatus != 4 && spclcd == "JX999") { // 0 : new, 4: delete
  3381. var spclmemo = model.getValue("/root/main/list3/clcj["+ i +"]/spclspec");
  3382. var iSpclCdCnt = 0;
  3383. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  3384. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  3385. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  3386. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  3387. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  3388. var iStartInx = 0; // 특정내역 시작 index
  3389. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  3390. for (var j = 0; j < spclmemo.length; j++) {
  3391. var sBit = spclmemo.charAt(j);
  3392. iCharCnt++;
  3393. if (escape(sBit).length > 4) {
  3394. iLen = iLen + 2;
  3395. } else {
  3396. iLen = iLen + 1;
  3397. }
  3398. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  3399. iTotSpclCdCnt++;
  3400. iSpclCdCnt++;
  3401. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  3402. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt));
  3403. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3404. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", model.getValue("/root/main/list3/clcj["+ i +"]/prcpdd"));
  3405. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", model.getValue("/root/main/list3/clcj["+ i +"]/prcpno"));
  3406. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", model.getValue("/root/main/list3/clcj["+ i +"]/prcphistno"));
  3407. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", model.getValue("/root/main/list3/clcj["+ i +"]/execprcpseqno"));
  3408. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", calcscorcd);
  3409. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3410. iStartInx += iCharCnt;
  3411. insCharTotCnt += 350;
  3412. }
  3413. else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  3414. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  3415. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3416. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", model.getValue("/root/main/list3/clcj["+ i +"]/prcpdd"));
  3417. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", model.getValue("/root/main/list3/clcj["+ i +"]/prcpno"));
  3418. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", model.getValue("/root/main/list3/clcj["+ i +"]/prcphistno"));
  3419. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", model.getValue("/root/main/list3/clcj["+ i +"]/execprcpseqno"));
  3420. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", calcscorcd);
  3421. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3422. iStartInx += (iCharCnt - 1);
  3423. j--;
  3424. insCharTotCnt += 349;
  3425. }
  3426. iCharCnt = 0;
  3427. iLen = 0;
  3428. }
  3429. }
  3430. if (iSpclCdTotLength != insCharTotCnt) {
  3431. iTotSpclCdCnt++;
  3432. iSpclCdCnt++;
  3433. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substring(iStartInx, spclmemo.length));
  3434. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3435. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", model.getValue("/root/main/list3/clcj["+ i +"]/prcpdd"));
  3436. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", model.getValue("/root/main/list3/clcj["+ i +"]/prcpno"));
  3437. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", model.getValue("/root/main/list3/clcj["+ i +"]/prcphistno"));
  3438. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", model.getValue("/root/main/list3/clcj["+ i +"]/execprcpseqno"));
  3439. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", calcscorcd);
  3440. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3441. }
  3442. }
  3443. else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  3444. iTotSpclCdCnt++;
  3445. iSpclCdCnt++;
  3446. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo);
  3447. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3448. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", model.getValue("/root/main/list3/clcj["+ i +"]/prcpdd"));
  3449. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", model.getValue("/root/main/list3/clcj["+ i +"]/prcpno"));
  3450. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", model.getValue("/root/main/list3/clcj["+ i +"]/prcphistno"));
  3451. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", model.getValue("/root/main/list3/clcj["+ i +"]/execprcpseqno"));
  3452. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitcalcscorcd", calcscorcd);
  3453. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3454. }
  3455. }
  3456. }
  3457. }
  3458. /* 원외처방 특정내역 중 JX999를 특정내역 형식에 맞춰 설정한다. */
  3459. function fSetOprcSpclSpecJX999() {
  3460. var iTotSpclCdCnt = 0; // DB에 저장될 JX999 코드 개수
  3461. for (var i = 1; i < grd_oprcphist.rows; i++) {
  3462. var rowstatus = grd_oprcphist.rowstatus(i);
  3463. var spclspec = model.getValue("/root/main/list7/clop["+ i +"]/spclspec");
  3464. var edicd = model.getValue("/root/main/list7/clop["+ i +"]/edicd");
  3465. var edicdflag = model.getValue("/root/main/list7/clop["+ i +"]/edicdflag");
  3466. if (rowstatus != 0 && spclspec != "") {
  3467. var delclspNode = instance1.selectSingleNode("/root/send/item3/delclsp");
  3468. var max = 1;
  3469. if (delclspNode != null) {
  3470. max = delclspNode.childNodes.length + 1;
  3471. }
  3472. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delunitflag", "O");
  3473. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclmemoflag", "E");
  3474. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/deledicd", edicd);
  3475. model.makeValue("/root/send/item3/delclsp/delmemo["+ max +"]/delspclcd", "JX999");
  3476. }
  3477. // 해당 EDI코드의 JX999는 모두 삭제하고 새로 추가하므로 "삭제" 상태가 아닌 모든 경우를 전송한다.
  3478. if (rowstatus != 0 && rowstatus != 4 && spclspec != "") { // 0 : new, 4: delete
  3479. var spclmemo = model.getValue("/root/main/list7/clop["+ i +"]/spclspec");
  3480. var prcpdd = model.getValue("/root/main/list7/clop["+ i +"]/prcpdd");
  3481. var prcpno = model.getValue("/root/main/list7/clop["+ i +"]/prcpno");
  3482. var prcphistno = model.getValue("/root/main/list7/clop["+ i +"]/prcphistno");
  3483. var execprcpseqno = model.getValue("/root/main/list7/clop["+ i +"]/execprcpseqno");
  3484. var iSpclCdCnt = 0;
  3485. var iSpclCdTotLength = getStringLength(spclmemo); // (stringHelper.js) 문자열의 길이를 구한다.
  3486. var insCharTotCnt = 0; // 특정내역으로 잘라진 총 글자 수
  3487. if (iSpclCdTotLength > 350) { // 새로 입력된 특정코드가 700byte를 넘는다.
  3488. // 영문(700자), 한글(350자) 길이로 잘라서 n개의 특정코드를 만든다.
  3489. var iLen = 0; // 특정내역 길이가 700 byte가 되었는지 계산
  3490. var iStartInx = 0; // 특정내역 시작 index
  3491. var iCharCnt = 0; // 몇글자로 구성되는지 계산
  3492. for (var j = 0; j < spclmemo.length; j++) {
  3493. var sBit = spclmemo.charAt(j);
  3494. iCharCnt++;
  3495. if (escape(sBit).length > 4) {
  3496. iLen = iLen + 2;
  3497. } else {
  3498. iLen = iLen + 1;
  3499. }
  3500. if (iLen == 350 || iLen > 350) { // 영문(700자), 한글(350자)
  3501. iTotSpclCdCnt++;
  3502. iSpclCdCnt++;
  3503. if (iLen == 350) { // 700byte로 길이가 끝난 경우
  3504. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt));
  3505. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3506. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitunitflag", "O");
  3507. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", prcpdd);
  3508. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", prcpno);
  3509. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", prcphistno);
  3510. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", execprcpseqno);
  3511. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3512. iStartInx += iCharCnt;
  3513. insCharTotCnt += 350;
  3514. }
  3515. else if (iLen > 350) { // 영문(700자), 한글(350자)를 넘는 경우
  3516. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substr(iStartInx, iCharCnt - 1));
  3517. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3518. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitunitflag", "O");
  3519. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", prcpdd);
  3520. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", prcpno);
  3521. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", prcphistno);
  3522. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", execprcpseqno);
  3523. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3524. iStartInx += (iCharCnt - 1);
  3525. j--;
  3526. insCharTotCnt += 349;
  3527. }
  3528. iCharCnt = 0;
  3529. iLen = 0;
  3530. }
  3531. }
  3532. if (iSpclCdTotLength != insCharTotCnt) {
  3533. iTotSpclCdCnt++;
  3534. iSpclCdCnt++;
  3535. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo.substring(iStartInx, spclmemo.length));
  3536. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3537. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitunitflag", "O");
  3538. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", prcpdd);
  3539. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", prcpno);
  3540. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", prcphistno);
  3541. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", execprcpseqno);
  3542. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3543. }
  3544. }
  3545. else if (iSpclCdTotLength > 0) { // 새로 추가된 내용이 있다.
  3546. iTotSpclCdCnt++;
  3547. iSpclCdCnt++;
  3548. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitspclspec", spclmemo);
  3549. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicd", edicd);
  3550. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitunitflag", "O");
  3551. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpdd", prcpdd);
  3552. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcpno", prcpno);
  3553. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitprcphistno", prcphistno);
  3554. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitexecprcpseqno", execprcpseqno);
  3555. model.makeValue("/root/send/item3/lnunitmemo["+ iTotSpclCdCnt +"]/lnunitedicdflag", edicdflag);
  3556. }
  3557. }
  3558. }
  3559. }
  3560. /* 처방 T필드 더블클릭 (특정내역 입력) */
  3561. function fSetLnUnitSpclSpec() {
  3562. // 1. 특정내역 상세관리 화면으로 데이터를 전달한다.
  3563. model.removeNodeset("/root/hidden/sppiz00500/rslt");
  3564. model.removeNodeset("/root/hidden/sppiz00500/cond");
  3565. var row = grd_clodhist.row;
  3566. var basecd = model.getValue("/root/main/list2/oscl["+ row +"]/basecd");
  3567. if (basecd) {
  3568. var lnunitspclspecyn = model.getValue("/root/main/list2/oscl["+ row +"]/lnunitspclspecyn");
  3569. if (lnunitspclspecyn == "") {
  3570. model.makeValue("/root/hidden/sppiz00500/cond/flag", "I");
  3571. model.makeValue("/root/hidden/sppiz00500/cond/snglcalcscorcd", basecd);
  3572. model.makeValue("/root/hidden/sppiz00500/cond/edilnno", "-");
  3573. model.makeNode("/root/hidden/sppiz00500/cond/spclcd");
  3574. model.makeNode("/root/hidden/sppiz00500/cond/detldesc");
  3575. model.makeNode("/root/hidden/sppiz00500/cond/spclspec");
  3576. model.makeNode("/root/hidden/sppiz00500/cond/spclformat");
  3577. model.makeNode("/root/hidden/sppiz00500/cond/rownum");
  3578. model.makeNode("/root/hidden/sppiz00500/cond/cdnm");
  3579. model.makeValue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3580. } else { // 기존에 입력된 줄단위 특정내역이 있는 경우
  3581. var rowcnt = 1;
  3582. var setrow = 0;
  3583. for (var i = 1; i < grd_clsphist.rows; i++) {
  3584. var spclEdicd = model.getValue("/root/main/list3/clcj["+ i +"]/edicd");
  3585. if (basecd == spclEdicd && model.getValue("/root/main/list3/clcj["+ i +"]/unitflag") == "J") {
  3586. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  3587. if (spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) {
  3588. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "");
  3589. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  3590. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", spclEdicd);
  3591. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", "-");
  3592. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  3593. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  3594. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clcj["+ i +"]/spclformat"));
  3595. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clcj["+ i +"]/cdnm"));
  3596. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clcj["+ i +"]/detldesc"));
  3597. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  3598. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  3599. setrow = i;
  3600. rowcnt = rowcnt+1;
  3601. }
  3602. }
  3603. }
  3604. model.makevalue("/root/hidden/sppiz00500/cond/flag", "");
  3605. model.makevalue("/root/hidden/sppiz00500/cond/snglcalcscorcd", basecd);
  3606. model.makevalue("/root/hidden/sppiz00500/cond/edilnno", "-");
  3607. model.makevalue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclcd"));
  3608. model.makevalue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clcj["+ setrow +"]/detldesc"));
  3609. model.makevalue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclspec"));
  3610. model.makevalue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclformat"));
  3611. model.makevalue("/root/hidden/sppiz00500/cond/rownum", setrow);
  3612. model.makevalue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clcj["+ setrow +"]/cdnm"));
  3613. model.makevalue("/root/hidden/sppiz00500/cond/unitflag", "J");
  3614. }
  3615. modal("SPPIZ00500" ,"", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  3616. // 2. 넘어온 특정내역 데이터를 처리한다.
  3617. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  3618. if (rsltcnt > 0) {
  3619. var clsprow = grd_clsphist.rows - 1;
  3620. var addcnt = 0;
  3621. for (var i = rsltcnt; i > 0; i--) {
  3622. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  3623. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  3624. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  3625. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  3626. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclspec");
  3627. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  3628. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  3629. // 2-1. 특정내역 추가
  3630. if (flag == "I") {
  3631. clsprow++;
  3632. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  3633. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "J");
  3634. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  3635. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", newspclcd);
  3636. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", newcdnm);
  3637. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", newspclspec);
  3638. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", newspclformat);
  3639. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", newdetldesc);
  3640. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  3641. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", newspclcd);
  3642. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  3643. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list2/oscl["+ row +"]/prcpdd"));
  3644. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list2/oscl["+ row +"]/prcpno"));
  3645. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list2/oscl["+ row +"]/prcphistno"));
  3646. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list2/oscl["+ row +"]/execprcpseqno"));
  3647. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  3648. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", model.getValue("/root/main/list2/oscl["+ row +"]/edicdflag"));
  3649. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  3650. opt_msgspclformat.refresh();
  3651. addcnt++;
  3652. // 2-2. 특정내역 수정
  3653. } else if (flag == "U") {
  3654. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  3655. model.setValue("/root/main/list3/clcj["+ rownum +"]/edicd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  3656. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclcd", newspclcd);
  3657. model.setValue("/root/main/list3/clcj["+ rownum +"]/cdnm", newcdnm);
  3658. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclspec", newspclspec);
  3659. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclformat", newspclformat);
  3660. model.setValue("/root/main/list3/clcj["+ rownum +"]/detldesc", newdetldesc);
  3661. model.setValue("/root/main/list3/clcj["+ rownum +"]/oldspclcd", newspclcd);
  3662. var rowstatus = grd_clsphist.rowstatus(rownum);
  3663. if (rowstatus == 1 || rowstatus == 3) {
  3664. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "I");
  3665. } else {
  3666. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  3667. }
  3668. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  3669. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  3670. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  3671. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  3672. opt_msgspclformat.refresh();
  3673. // 2-3. 특정내역 삭제
  3674. } else if (flag == "D" && rownum != "" ) {
  3675. var rowstatus = grd_clsphist.rowstatus(rownum);
  3676. if (rowstatus == 1 || rowstatus == 3) {
  3677. grd_clsphist.deleteRow(rownum, false);
  3678. } else {
  3679. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "D");
  3680. }
  3681. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  3682. opt_msgspclformat.refresh();
  3683. }
  3684. }
  3685. grd_clsphist.refresh();
  3686. fSetClcjRowStatus();
  3687. var cnt = 0;
  3688. for (var j = 1; j < grd_clsphist.rows; j++) {
  3689. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  3690. if (basecd == spclEdicd && model.getValue("/root/main/list3/clcj["+ j +"]/unitflag") == "J") {
  3691. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") != "JT001" && grd_clsphist.rowstatus(j) != 4) {
  3692. cnt++;
  3693. }
  3694. }
  3695. }
  3696. if (cnt > 0) {
  3697. if (lnunitspclspecyn == "") { // 기존에는 입력된 내역이 없다가 추가된 경우임
  3698. for (var j = 1; j < grd_clodhist.rows; j++) {
  3699. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  3700. if (basecd == osclEdicd) {
  3701. model.setValue("/root/main/list2/oscl["+ j +"]/lnunitspclspecyn", "*");
  3702. }
  3703. }
  3704. }
  3705. } else { // 특정내역이 한건도 없게 된 경우
  3706. if (lnunitspclspecyn) { // 기존에는 입력된 내역이 있다가 삭제된 경우임
  3707. for (var j = 1; j < grd_clodhist.rows; j++) {
  3708. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  3709. if (basecd == osclEdicd) {
  3710. model.resetInstanceNode("/root/main/list2/oscl["+ j +"]/lnunitspclspecyn");
  3711. }
  3712. }
  3713. }
  3714. }
  3715. }
  3716. // 3. 특정내역을 소팅한다. - 특정내역을 소트해야 하는 시기는 특정내역이 추가된 경우 뿐이다.
  3717. if (addcnt > 0) {
  3718. fSortSpclNo();
  3719. fSpclGridInsertRow();
  3720. }
  3721. } else {
  3722. messageBox("EDI코드가 입력되지 않았으며 해당 줄단위 특정내역이", "I004"); ///EDI코드가 입력되지 않았으며 해당 줄단위 특정내역이 없습니다.
  3723. }
  3724. }
  3725. /* 원외처방 T필드 더블클릭 (특정내역 입력) */
  3726. function fSetOprcpSpclSpec() {
  3727. // 1. 원외처방 특정내역 상세관리 화면을 호출한다.
  3728. model.removenode("/root/hidden/sppiz01700/rslt");
  3729. model.removenode("/root/hidden/sppiz01700/cond");
  3730. model.makeNode("/root/hidden/sppiz01700/rslt");
  3731. model.makeNode("/root/hidden/sppiz01700/cond");
  3732. var row = grd_oprcphist.row;
  3733. var edicd = model.getValue("/root/main/list7/clop["+ row +"]/edicd");
  3734. var clopdd = model.getValue("/root/main/list7/clop["+ row +"]/clopdd");
  3735. var clopno = model.getValue("/root/main/list7/clop["+ row +"]/clopno");
  3736. if (edicd) {
  3737. var spclspecyn = model.getValue("/root/main/list7/clop["+ row +"]/spclspecyn");
  3738. if (spclspecyn == "") {
  3739. model.makeValue("/root/hidden/sppiz01700/cond/flag", "I");
  3740. model.makeValue("/root/hidden/sppiz01700/cond/snglcalcscorcd", edicd);
  3741. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  3742. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  3743. model.makeValue("/root/hidden/sppiz01700/cond/edilnno", "-");
  3744. model.makeNode("/root/hidden/sppiz01700/cond/spclcd");
  3745. model.makeNode("/root/hidden/sppiz01700/cond/detldesc");
  3746. model.makeNode("/root/hidden/sppiz01700/cond/spclspec");
  3747. model.makeNode("/root/hidden/sppiz01700/cond/spclformat");
  3748. model.makeNode("/root/hidden/sppiz01700/cond/rownum");
  3749. model.makeNode("/root/hidden/sppiz01700/cond/cdnm");
  3750. model.makeValue("/root/hidden/sppiz01700/cond/unitflag", "J");
  3751. } else { // 기존에 입력된 줄단위 원외처방특정내역이 있는 경우
  3752. var rowcnt = 1;
  3753. var setrow = 0;
  3754. for (var i = 1; i < grd_oprcphist.rows; i++) {
  3755. var edicd2 = model.getValue("/root/main/list3/clcj["+ i +"]/edicd");
  3756. if (edicd == edicd2 && model.getValue("/root/main/list3/clcj["+ i +"]/unitflag") == "O") {
  3757. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  3758. if (spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) {
  3759. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/flag", "");
  3760. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/rownum", i);
  3761. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/snglcalcscorcd", edicd2);
  3762. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopdd", clopdd);
  3763. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/clopno", clopno);
  3764. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/edilnno", "-");
  3765. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  3766. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  3767. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clcj["+ i +"]/spclformat"));
  3768. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clcj["+ i +"]/cdnm"));
  3769. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clcj["+ i +"]/detldesc"));
  3770. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  3771. model.makeValue("/root/hidden/sppiz01700/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  3772. setrow = i;
  3773. rowcnt = rowcnt+1;
  3774. }
  3775. }
  3776. }
  3777. model.makevalue("/root/hidden/sppiz01700/cond/flag", "");
  3778. model.makevalue("/root/hidden/sppiz01700/cond/snglcalcscorcd", edicd);
  3779. model.makeValue("/root/hidden/sppiz01700/cond/clopdd", clopdd);
  3780. model.makeValue("/root/hidden/sppiz01700/cond/clopno", clopno);
  3781. model.makevalue("/root/hidden/sppiz01700/cond/edilnno", "-");
  3782. model.makevalue("/root/hidden/sppiz01700/cond/spclcd", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclcd"));
  3783. model.makevalue("/root/hidden/sppiz01700/cond/detldesc", model.getValue("/root/main/list3/clcj["+ setrow +"]/detldesc"));
  3784. model.makevalue("/root/hidden/sppiz01700/cond/spclspec", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclspec"));
  3785. model.makevalue("/root/hidden/sppiz01700/cond/spclformat", model.getValue("/root/main/list3/clcj["+ setrow +"]/spclformat"));
  3786. model.makevalue("/root/hidden/sppiz01700/cond/rownum", setrow);
  3787. model.makevalue("/root/hidden/sppiz01700/cond/cdnm", model.getValue("/root/main/list3/clcj["+ setrow +"]/cdnm"));
  3788. model.makevalue("/root/hidden/sppiz01700/cond/unitflag", "J");
  3789. }
  3790. modal("SPPIZ01700" ,"", "10", "10", "SPPIZ01700", "/root/hidden/sppiz01700", "/root/hidden/clsp", "", ""); // SPPIZ01700_원외처방특정내역상세관리.xrw
  3791. // 2. 넘어온 원외처방 특정내역을 처리한다.
  3792. var rsltcnt = getNodesetCount("/root/hidden/sppiz01700/rslt/list");
  3793. if (rsltcnt > 0) {
  3794. var clsprow = grd_clsphist.rows - 1;
  3795. var addcnt = 0;
  3796. for (var i = rsltcnt; i > 0; i--) {
  3797. var flag = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/flag");
  3798. var rownum = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/rownum");
  3799. var newspclcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclcd");
  3800. var newcdnm = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/cdnm");
  3801. var newspclspec = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclspec");
  3802. var newspclformat = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/spclformat ");
  3803. var newdetldesc = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/detldesc");
  3804. // 2-1. 특정내역 추가
  3805. if (flag == "I") {
  3806. clsprow++;
  3807. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  3808. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "O");
  3809. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", model.getValue("/root/hidden/sppiz01700/cond/snglcalcscorcd"));
  3810. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", newspclcd);
  3811. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", newcdnm);
  3812. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", newspclspec);
  3813. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", newspclformat);
  3814. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", newdetldesc);
  3815. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", model.getValue("/root/main/list7/clop["+ row +"]/snglcalcscorcd"));
  3816. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", newspclcd);
  3817. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  3818. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list7/clop["+ row +"]/prcpdd"));
  3819. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list7/clop["+ row +"]/prcpno"));
  3820. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list7/clop["+ row +"]/prcphistno"));
  3821. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list7/clop["+ row +"]/execprcpseqno"));
  3822. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  3823. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", model.getValue("/root/main/list7/clop["+ row +"]/edicdflag"));
  3824. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  3825. opt_msgspclformat.refresh();
  3826. addcnt++;
  3827. // 2-2. 특정내역 수정
  3828. } else if (flag == "U") {
  3829. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  3830. model.setValue("/root/main/list3/clcj["+ rownum +"]/edicd", model.getValue("/root/hidden/sppiz01700/cond/snglcalcscorcd"));
  3831. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclcd", newspclcd);
  3832. model.setValue("/root/main/list3/clcj["+ rownum +"]/cdnm", newcdnm);
  3833. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclspec", newspclspec);
  3834. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclformat", newspclformat);
  3835. model.setValue("/root/main/list3/clcj["+ rownum +"]/detldesc", newdetldesc);
  3836. model.setValue("/root/main/list3/clcj["+ rownum +"]/oldspclcd", newspclcd);
  3837. var rowstatus = grd_clsphist.rowstatus(rownum);
  3838. if (rowstatus == 1 || rowstatus == 3) {
  3839. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "I");
  3840. } else {
  3841. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  3842. }
  3843. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  3844. var oldspclcd = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/oldspclcd");
  3845. var oldspclspec = model.getValue("/root/hidden/sppiz01700/rslt/list["+ i +"]/oldspclspec");
  3846. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  3847. opt_msgspclformat.refresh();
  3848. // 2-3. 특정내역 삭제
  3849. } else if (flag == "D" && rownum != "" ) {
  3850. var rowstatus = grd_clsphist.rowstatus(rownum);
  3851. if (rowstatus == 1 || rowstatus == 3) {
  3852. grd_clsphist.deleteRow(rownum, false);
  3853. } else {
  3854. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "D");
  3855. }
  3856. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  3857. opt_msgspclformat.refresh();
  3858. }
  3859. }
  3860. grd_clsphist.refresh();
  3861. fSetClcjRowStatus();
  3862. var cnt = 0;
  3863. for (var j = 1; j < grd_clsphist.rows; j++) {
  3864. var clopEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  3865. if (edicd == clopEdicd && model.getValue("/root/main/list3/clcj["+ j +"]/unitflag") == "O") {
  3866. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") != "JT001" && grd_clsphist.rowstatus(j) != 4) {
  3867. cnt++;
  3868. }
  3869. }
  3870. }
  3871. if (cnt > 0) {
  3872. if (spclspecyn == "") { // 기존에는 입력된 내역이 없다가 추가된 경우임
  3873. for (var j = 1; j < grd_oprcphist.rows; j++) {
  3874. var clopEdicd = model.getValue("/root/main/list7/clop["+ j +"]/edicd");
  3875. if (edicd == clopEdicd) {
  3876. model.setValue("/root/main/list7/clop["+ j +"]/spclspecyn", "*");
  3877. }
  3878. }
  3879. }
  3880. } else { // 특정내역이 한건도 없게 된 경우
  3881. if (spclspecyn) { // 기존에는 입력된 내역이 있다가 삭제된 경우임
  3882. for (var j = 1; j < grd_clodhist.rows; j++) {
  3883. var clopEdicd = model.getValue("/root/main/list7/clop["+ j +"]/edicd");
  3884. if (edicd == clopEdicd) {
  3885. model.resetInstanceNode("/root/main/list7/clop["+ j +"]/spclspecyn");
  3886. }
  3887. }
  3888. }
  3889. }
  3890. }
  3891. // 3. 특정내역을 소팅한다. - 특정내역을 소트해야 하는 시기는 특정내역이 추가된 경우 뿐이다.
  3892. if (addcnt > 0) {
  3893. fSortSpclNo();
  3894. fSpclGridInsertRow();
  3895. }
  3896. } else {
  3897. messageBox("EDI코드가 입력되지 않았으며 해당 줄단위 특정내역이", "I004"); ///EDI코드가 입력되지 않았으며 해당 줄단위 특정내역이 없습니다.
  3898. }
  3899. }
  3900. /* 특정내역 Grid 에서 선택한 줄단위 특정내역을 조회하고, 명세서단위 특정내역을 수정/입력한다. */
  3901. function fSetDocRefLnSpclSpec(){
  3902. // 1. 특정내역 상세관리 화면을 호출한다.
  3903. model.removeNodeset("/root/hidden/sppiz00500/rslt");
  3904. model.removeNodeset("/root/hidden/sppiz00500/cond");
  3905. var row = grd_clsphist.row;
  3906. var edicd = model.getValue("/root/main/list3/clcj["+ row +"]/edicd");
  3907. var unitflag = model.getValue("/root/main/list3/clcj["+ row +"]/unitflag");
  3908. if (unitflag == "J") {
  3909. // 삭제상태인 경우 처방Grid에서 입력,수정은 가능하지만 특정내역Grid에서는 편집할 수 없다.
  3910. var rowstatus = grd_clsphist.rowstatus(row);
  3911. if (rowstatus == 4) { // 4 : delete
  3912. messageBox("삭제된 특정내역은 수정할 수", "I004"); ///삭제된 특정내역은 수정할 수 없습니다.
  3913. return;
  3914. }
  3915. }
  3916. var rowcnt = 1;
  3917. for (var i = 1; i < grd_clsphist.rows; i++) {
  3918. var spclEdicd = model.getValue("/root/main/list3/clcj["+ i +"]/edicd");
  3919. if (edicd == spclEdicd && model.getValue("/root/main/list3/clcj["+ i +"]/unitflag") == unitflag) {
  3920. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  3921. if (spclcd != "JT001" && grd_clsphist.rowstatus(i) != 4) { // 확인코드가 아닌 경우
  3922. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/flag", "");
  3923. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/rownum", i);
  3924. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/snglcalcscorcd", spclEdicd);
  3925. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/edilnno", "0");
  3926. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  3927. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  3928. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/spclformat", model.getValue("/root/main/list3/clcj["+ i +"]/spclformat"));
  3929. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/cdnm", model.getValue("/root/main/list3/clcj["+ i +"]/cdnm"));
  3930. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/detldesc", model.getValue("/root/main/list3/clcj["+ i +"]/detldesc"));
  3931. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  3932. model.makeValue("/root/hidden/sppiz00500/cond/list["+ rowcnt +"]/oldspclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  3933. rowcnt = rowcnt+1;
  3934. }
  3935. }
  3936. }
  3937. model.makevalue("/root/hidden/sppiz00500/cond/flag", "");
  3938. model.makevalue("/root/hidden/sppiz00500/cond/snglcalcscorcd", edicd);
  3939. model.makevalue("/root/hidden/sppiz00500/cond/edilnno", "0");
  3940. model.makevalue("/root/hidden/sppiz00500/cond/spclcd", model.getValue("/root/main/list3/clcj["+ row +"]/spclcd"));
  3941. model.makevalue("/root/hidden/sppiz00500/cond/detldesc", model.getValue("/root/main/list3/clcj["+ row +"]/detldesc"));
  3942. model.makevalue("/root/hidden/sppiz00500/cond/spclspec", model.getValue("/root/main/list3/clcj["+ row +"]/spclspec"));
  3943. model.makevalue("/root/hidden/sppiz00500/cond/spclformat", model.getValue("/root/main/list3/clcj["+ row +"]/spclformat"));
  3944. model.makevalue("/root/hidden/sppiz00500/cond/rownum", row);
  3945. model.makevalue("/root/hidden/sppiz00500/cond/cdnm", model.getValue("/root/main/list3/clcj["+ row +"]/cdnm"));
  3946. model.makevalue("/root/hidden/sppiz00500/cond/unitflag", unitflag);
  3947. modal("SPPIZ00500" ,"", "10", "10", "SPPIZ00500", "/root/hidden/sppiz00500", "/root/hidden/clsp", "", ""); // SPPIZ00500_특정내역상세관리.xrw
  3948. // 2. 넘어온 데이터를 처리한다.
  3949. var rsltcnt = getNodesetCount("/root/hidden/sppiz00500/rslt/list");
  3950. if (rsltcnt > 0) {
  3951. var clsprow = grd_clsphist.rows - 1;
  3952. var addcnt = 0;
  3953. for (var i = rsltcnt; i > 0; i--) {
  3954. var flag = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/flag");
  3955. var rownum = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/rownum");
  3956. var newspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclcd");
  3957. var newcdnm = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/cdnm");
  3958. var newspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclspec");
  3959. var newspclformat = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/spclformat ");
  3960. var newdetldesc = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/detldesc");
  3961. // 2-1. 특정내역을 추가한다.
  3962. if (flag == "I") {
  3963. clsprow++;
  3964. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  3965. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", unitflag);
  3966. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  3967. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", newspclcd);
  3968. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", newcdnm);
  3969. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", newspclspec);
  3970. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", newspclformat);
  3971. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", newdetldesc);
  3972. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  3973. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", newspclcd);
  3974. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  3975. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", model.getValue("/root/main/list3/clcj["+ row +"]/prcpdd"));
  3976. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", model.getValue("/root/main/list3/clcj["+ row +"]/prcpno"));
  3977. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", model.getValue("/root/main/list3/clcj["+ row +"]/prcphistno"));
  3978. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", model.getValue("/root/main/list3/clcj["+ row +"]/execprcpseqno"));
  3979. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  3980. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  3981. opt_msgspclformat.refresh();
  3982. addcnt++;
  3983. // 2-2. 특정내역을 수정한다.
  3984. } else if (flag == "U") {
  3985. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  3986. model.setValue("/root/main/list3/clcj["+ rownum +"]/edicd", model.getValue("/root/hidden/sppiz00500/cond/snglcalcscorcd"));
  3987. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclcd", newspclcd);
  3988. model.setValue("/root/main/list3/clcj["+ rownum +"]/cdnm", newcdnm);
  3989. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclspec", newspclspec);
  3990. model.setValue("/root/main/list3/clcj["+ rownum +"]/spclformat", newspclformat);
  3991. model.setValue("/root/main/list3/clcj["+ rownum +"]/detldesc", newdetldesc);
  3992. model.setValue("/root/main/list3/clcj["+ rownum +"]/oldspclcd", newspclcd);
  3993. var rowstatus = grd_clsphist.rowstatus(rownum);
  3994. if (rowstatus == 1 || rowstatus == 3) {
  3995. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "I");
  3996. } else {
  3997. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "U");
  3998. }
  3999. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  4000. var oldspclcd = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclcd");
  4001. var oldspclspec = model.getValue("/root/hidden/sppiz00500/rslt/list["+ i +"]/oldspclspec");
  4002. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ newcdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ newspclformat);
  4003. opt_msgspclformat.refresh();
  4004. // 2-3. 특정내역을 삭제한다.
  4005. } else if (flag == "D" && rownum != "" ) {
  4006. var rowstatus = grd_clsphist.rowstatus(rownum);
  4007. if (rowstatus == 1 || rowstatus == 3) {
  4008. grd_clsphist.deleteRow(rownum, false);
  4009. } else {
  4010. model.setValue("/root/main/list3/clcj["+ rownum +"]/rowstat", "D");
  4011. }
  4012. model.setValue("/root/hidden/list3/msgspclformat", "입력된 줄단위 특정내역이 없습니다.");
  4013. opt_msgspclformat.refresh();
  4014. }
  4015. }
  4016. grd_clsphist.refresh();
  4017. fSetClcjRowStatus();
  4018. if (unitflag == "M") { // 명세서 단위
  4019. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  4020. fCheckSpclSpecData();
  4021. } else { // 줄단위인 경우
  4022. var cnt = 0;
  4023. for (var j = 1; j < grd_clsphist.rows; j++) {
  4024. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  4025. if (edicd == spclEdicd && model.getValue("/root/main/list3/clcj["+ j +"]/unitflag") == "J") {
  4026. if (model.getValue("/root/main/list3/clcj["+ j +"]/spclcd") != "JT001" && grd_clsphist.rowstatus(j) != 4) {
  4027. cnt++;
  4028. }
  4029. }
  4030. }
  4031. if (cnt > 0) {
  4032. for (var j = 1; j < grd_clodhist.rows; j++) {
  4033. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  4034. if (edicd == osclEdicd) {
  4035. model.setValue("/root/main/list2/oscl["+ j +"]/lnunitspclspecyn", "*");
  4036. }
  4037. }
  4038. } else { // 특정내역이 한건도 없게 된 경우
  4039. for (var j = 1; j < grd_clodhist.rows; j++) {
  4040. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  4041. if (edicd == osclEdicd) {
  4042. model.resetInstanceNode("/root/main/list2/oscl["+ j +"]/lnunitspclspecyn");
  4043. }
  4044. }
  4045. }
  4046. }
  4047. // 3. 특정내역을 소팅한다. - 특정내역을 소트해야 하는 시기는 특정내역이 추가된 경우 뿐이다.
  4048. if (addcnt > 0) {
  4049. fSortSpclNo();
  4050. fSpclGridInsertRow();
  4051. }
  4052. }
  4053. }
  4054. /* 특정내역 Grid 에서 선택한 확인코드를 조회하고 줄단위 특정내역을 수정/입력한다. */
  4055. function fSetCnfmCdSpclSpec() {
  4056. var row = grd_clsphist.row;
  4057. // 1. 확인코드 조회 화면을 호출한다.
  4058. model.removeNodeset("root/hidden/sppiz01100/rslt");
  4059. model.makeValue("/root/hidden/sppiz01100/cond/code", model.getValue("/root/main/list3/clcj["+ row +"]/spclspec"));
  4060. modal("SPPIZ01100" ,"", "10", "10", "SPPIZ01100", "/root/hidden/sppiz01100", "/root/init/sppiz01100", "", "");
  4061. // 2. 조회 결과를 처리한다.
  4062. if (instance1.selectSingleNode("root/hidden/sppiz01100/rslt")) {
  4063. var cnfmcd = model.getValue("root/hidden/sppiz01100/rslt/code");
  4064. var basecd = model.getValue("/root/main/list3/clcj["+ row +"]/edicd");
  4065. // 2-1. 처방그리드 확인코드를 수정한다.
  4066. for (var j = 1; j < grd_clodhist.rows; j++) {
  4067. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  4068. if (basecd == osclEdicd) {
  4069. model.setValue("/root/main/list2/oscl["+ j +"]/cnfmcd", cnfmcd);
  4070. }
  4071. }
  4072. // 2-2. 특정내역 그리드 확인코드를 수정한다.
  4073. var rowstatus = grd_clsphist.rowstatus(row);
  4074. if (cnfmcd != "") {
  4075. if (rowstatus != 4) {
  4076. model.setValue("/root/main/list3/clcj["+ row +"]/spclspec", cnfmcd);
  4077. if (rowstatus == 1 || rowstatus == 3) {
  4078. } else {
  4079. grd_clsphist.rowstatus(row) = 2;
  4080. }
  4081. model.setValue("/root/hidden/list3/msgspclformat", "확인코드 - JT001 / 입력코드내역 : "+ cnfmcd +" / 기재형식 : X(5)");
  4082. opt_msgspclformat.refresh();
  4083. }
  4084. } else {
  4085. if (rowstatus == 1 || rowstatus == 3) {
  4086. grd_clsphist.deleteRow(row, true);
  4087. } else {
  4088. grd_clsphist.rowstatus(row) = 4;
  4089. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "D");
  4090. model.setValue("/root/main/list3/clcj["+ row +"]/spclspec", cnfmcd);
  4091. }
  4092. model.setValue("/root/hidden/list3/msgspclformat", "입력된 확인코드 내역이 없습니다.");
  4093. opt_msgspclformat.refresh();
  4094. }
  4095. }
  4096. }
  4097. /* 특정내역 / 심사자메모 / EDI메모 창을 작게 한다. */
  4098. function fCutSwitchSize() {
  4099. grp_clsphist.attribute("height") = "171";
  4100. var igrd_hei = parseInt(grp_clsphist.attribute("height"));
  4101. swt_spclmemo.attribute("height") = igrd_hei - 24;
  4102. grd_clsphist.attribute("height") = igrd_hei - 71;
  4103. tar_judgrmemo.attribute("height") = igrd_hei - 61;
  4104. tar_ediclammemo.attribute("height") = igrd_hei - 61;
  4105. if (grp_predoculist.visible == false && grp_delclodlist.visible == false && grp_delorderlist.visible == false) {
  4106. grd_clodhist.attribute("width") = "1114";
  4107. ln_clodhist.attribute("x2") = "1114";
  4108. }
  4109. }
  4110. /* 특정내역 / 심사자메모 / EDI메모 창을 크게 한다. */
  4111. function fExpandSwitchSize() {
  4112. grp_clsphist.attribute("height") = "632";
  4113. var igrd_hei = parseInt(grp_clsphist.attribute("height"));
  4114. swt_spclmemo.attribute("height") = igrd_hei - 24;
  4115. grd_clsphist.attribute("height") = igrd_hei - 71;
  4116. tar_judgrmemo.attribute("height") = igrd_hei - 61;
  4117. tar_ediclammemo.attribute("height") = igrd_hei - 61;
  4118. // 처방 Grid 을 축소하고, Grid Group이 겹쳐져 보이므로 visible = false 처리한다.
  4119. grd_clodhist.attribute("width") = "480";
  4120. ln_clodhist.attribute("x2") = "480";
  4121. }
  4122. /* SPPIZ00700_심사Comment조회.xrw 호출(심사자메모,EDI메모) */
  4123. function fGetJudgEdiComment(memoflag, memocls) {
  4124. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  4125. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  4126. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  4127. model.setValue("/root/hidden/sppiz00700/cond/memocls", memocls);
  4128. model.makeValue("/root/hidden/sppiz00700/cond/memo", "");
  4129. modal("SPPIZ00700" ,"", "10", "10", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", "");
  4130. }
  4131. /* SPPIZ00700_심사Comment조회.xrw 호출(줄단위메모) */
  4132. function fGetJudgEdiComment2(memoflag, ediitem1) {
  4133. model.resetInstanceNode("/root/hidden/sppiz00700/rslt");
  4134. model.resetInstanceNode("/root/hidden/sppiz00700/cond");
  4135. model.setValue("/root/hidden/sppiz00700/cond/memoflag", memoflag);
  4136. model.setValue("/root/hidden/sppiz00700/cond/ediitem1", ediitem1);
  4137. modal("SPPIZ00700" ,"", "10", "10", "SPPIZ00700", "/root/hidden/sppiz00700", "/root/send/sppiz00700", "", "");
  4138. }
  4139. /* MT004 특정내역 한줄 추가 */
  4140. function fSetSpclMT004() {
  4141. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  4142. if (cretno) {
  4143. // 1. 특정내역에 MT004가 존재하면 이를 삭제한다.
  4144. if (btn_mt0004.attribute("class") == "btn5_letter4") {
  4145. for (var i = 1; i < grd_clsphist.rows; i++) {
  4146. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  4147. var gridrowstatus = grd_clsphist.rowstatus(i);
  4148. if (spclcd == "MT004" && gridrowstatus != 4) {
  4149. if (gridrowstatus == 1 || gridrowstatus == 3) {
  4150. grd_clsphist.deleteRow(i, true);
  4151. } else {
  4152. model.makeValue("/root/main/list3/clcj["+ i +"]/rowstat", "D");
  4153. grd_clsphist.rowstatus(i) = 4;
  4154. }
  4155. }
  4156. }
  4157. btn_mt0004.attribute("class") = "btn2_letter4";
  4158. // 2. 특정내역에 MT004가 없으면 이를 추가한다.
  4159. } else {
  4160. var clsprow = grd_clsphist.rows;
  4161. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  4162. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "M");
  4163. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", "-");
  4164. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", "MT004");
  4165. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "소명자료 구분");
  4166. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", "Y");
  4167. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(1)");
  4168. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "소명자료를 첨부하는 경우 'Y'를 기재");
  4169. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", "-");
  4170. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", "MT004");
  4171. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  4172. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", "");
  4173. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", "");
  4174. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", "");
  4175. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", "");
  4176. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "1");
  4177. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", "-");
  4178. model.setValue("/root/hidden/list3/msgspclformat", "");
  4179. opt_msgspclformat.refresh();
  4180. grd_clsphist.refresh();
  4181. fSetClcjRowStatus();
  4182. fSortSpclNo();
  4183. fSpclGridInsertRow();
  4184. btn_mt0004.attribute("class") = "btn5_letter4";
  4185. btn_mt0004.attribute("color") = "#cc3333";
  4186. }
  4187. }
  4188. }
  4189. /* 소명자료 특정내역 추가 */
  4190. function fGetAttachedDataList() {
  4191. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  4192. if (cretno) {
  4193. // 1. 첨부물자료관리 팝업을 호출한다.
  4194. model.removeNodeset("/root/hidden/sppiz00200/cond");
  4195. var index = 0;
  4196. for (var i = 1; i < grd_clsphist.rows; i++) {
  4197. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  4198. var gridrowstatus = grd_clsphist.rowstatus(i);
  4199. if (spclcd == "MT015" || spclcd == "MT016") {
  4200. index++;
  4201. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/spclcd", model.getValue("/root/main/list3/clcj["+ i +"]/spclcd"));
  4202. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/seqno", model.getValue("/root/main/list3/clcj["+ i +"]/seqno"));
  4203. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/spclspec", model.getValue("/root/main/list3/clcj["+ i +"]/spclspec"));
  4204. // 특정내역 Grid에서 "행 삭제"한 경우 MT015 / MT016 자료를 표시하지 않도록 하도록 rowstatus를 전달함
  4205. model.makeValue("/root/hidden/sppiz00200/cond/clsp["+ index +"]/rowstat", gridrowstatus);
  4206. }
  4207. }
  4208. if (instance1.selectSingleNode("/root/hidden/sppiz00200/cond") == null) {
  4209. model.makeNode("/root/hidden/sppiz00200/cond");
  4210. }
  4211. modal("SPPIZ00200" ,"", "10", "10", "SPPIZ00200", "", "", "", ""); // SPPIZ00200_첨부물자료관리.xrw
  4212. // 2. 넘어온 데이터를 입력한다.
  4213. fDisplayAttachedDataList();
  4214. }
  4215. }
  4216. /* 소명자료 특정내역 추가 */
  4217. function fDisplayAttachedDataList() {
  4218. var cSrcNode = instance1.selectSingleNode("/root/hidden/sppiz00200/rslt/clsp");
  4219. if (cSrcNode == null) {
  4220. return;
  4221. }
  4222. if (model.getValue("/root/hidden/sppiz00200/rslt/clsp/unitflag") == "") { // "취소" 선택시에 버튼 색이 변경되지 않도록
  4223. return;
  4224. }
  4225. var cSrcChildNodeList = cSrcNode.childNodes;
  4226. var clsprow = grd_clsphist.rows - 1;
  4227. var addcnt = 0;
  4228. // 1. 소명자료를 추가,수정,삭제한다.
  4229. for (var i = 1; i <= cSrcChildNodeList.length; i++) {
  4230. var spclcd = model.getValue("/root/hidden/sppiz00200/rslt/clsp["+i+"]/spclcd");
  4231. var spclspec = model.getValue("/root/hidden/sppiz00200/rslt/clsp["+i+"]/spclspec");
  4232. if (spclcd == "MT015" || spclcd == "MT016") {
  4233. var rowstat = model.getValue("/root/hidden/sppiz00200/rslt/clsp["+i+"]/rowstat")
  4234. if (rowstat == "I") {
  4235. clsprow++;
  4236. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/rowstat", "I");
  4237. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/unitflag", "M");
  4238. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicd", "-");
  4239. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclcd", spclcd);
  4240. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclspec", spclspec);
  4241. if (spclcd == "MT015") {
  4242. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "제출자료 목록표");
  4243. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(2)");
  4244. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "제출자료코드/제출자료코드/... 형태로 입력");
  4245. } else {
  4246. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/cdnm", "제출자료 목록표(기타)");
  4247. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/spclformat", "X(200)");
  4248. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/detldesc", "영문(200자), 한글(100자)");
  4249. }
  4250. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/calcscorcd", "-");
  4251. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/oldspclcd", spclcd);
  4252. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/seqno", "");
  4253. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpdd", "");
  4254. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcpno", "");
  4255. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/prcphistno", "");
  4256. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/execprcpseqno", "");
  4257. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/currowstat", "");
  4258. model.makeValue("/root/main/list3/clcj["+ clsprow +"]/edicdflag", "-");
  4259. addcnt++;
  4260. } else if (rowstat == "U") {
  4261. for (var j = 1; j < grd_clsphist.rows; j++) {
  4262. var gridspclcd = model.getValue("/root/main/list3/clcj["+ j +"]/spclcd");
  4263. var gridspclspec = model.getValue("/root/main/list3/clcj["+ j +"]/spclspec");
  4264. var gridrowstatus = grd_clsphist.rowstatus(j);
  4265. if (gridspclcd == spclcd) {
  4266. model.setValue("/root/main/list3/clcj["+ j +"]/spclspec", spclspec);
  4267. if (gridrowstatus == 1 || gridrowstatus == 3) {
  4268. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "I");
  4269. } else {
  4270. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "U");
  4271. grd_clsphist.rowstatus(j) = 2;
  4272. }
  4273. }
  4274. }
  4275. // 1-3. 삭제한다.
  4276. } else if (rowstat == "D") {
  4277. for (var j = 1; j < grd_clsphist.rows; j++) {
  4278. var gridspclcd = model.getValue("/root/main/list3/clcj["+ j +"]/spclcd");
  4279. var gridspclspec = model.getValue("/root/main/list3/clcj["+ j +"]/spclspec");
  4280. var gridrowstatus = grd_clsphist.rowstatus(j);
  4281. if (gridspclcd == spclcd) {
  4282. if (gridrowstatus == 1 || gridrowstatus == 3) {
  4283. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "R");
  4284. } else {
  4285. grd_clsphist.rowstatus(j) = 4;
  4286. model.setValue("/root/main/list3/clcj["+ j +"]/rowstat", "D");
  4287. }
  4288. }
  4289. }
  4290. }
  4291. }
  4292. }
  4293. grd_clsphist.refresh();
  4294. fSetClcjRowStatus();
  4295. // 2. 소명자료가 추가되었을 경우에만 특정내역을 소트한다.
  4296. if (addcnt > 0) {
  4297. grd_clsphist.refresh();
  4298. fSetClcjRowStatus();
  4299. fSortSpclNo();
  4300. fSpclGridInsertRow();
  4301. }
  4302. // 3. 소명자료 버튼 색을 변경한다.
  4303. var isAttachedDataList = false;
  4304. for (var m = 1; m < grd_clsphist.rows && isAttachedDataList != true; m++) {
  4305. var spclcd = model.getValue("/root/main/list3/clcj["+ m +"]/spclcd");
  4306. if (spclcd == "MT015" || spclcd == "MT016") isAttachedDataList = true;
  4307. }
  4308. if (isAttachedDataList) {
  4309. btn_attData.attribute("class") = "btn5_letter4";
  4310. btn_attData.attribute("color") = "#cc3333";
  4311. } else {
  4312. btn_attData.attribute("class") = "btn2_letter4";
  4313. }
  4314. }
  4315. /* MT004, 소명자료 버튼 색상 */
  4316. function fCheckSpclSpecData() {
  4317. // 삭제된 상태가 아닌 소명자료 내역이 있는지 파악하여 "소명자료" Btn 색을 설정한다.
  4318. // 특정코드 MT004 가 있는지를 파악하여 "MT004" Btn 색을 설정한다.
  4319. var isAttachedDataList = false;
  4320. var isMT004DataList = false;
  4321. for (var i = 1; i < grd_clsphist.rows; i++) {
  4322. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  4323. var spclspec = model.getValue("/root/main/list3/clcj["+ i +"]/spclspec");
  4324. if (spclcd == "MT015" || spclcd == "MT016") {
  4325. if (grd_clsphist.rowstatus(i) != 4) {
  4326. isAttachedDataList = true;
  4327. }
  4328. }
  4329. else if (spclcd == "MT004") {
  4330. if (grd_clsphist.rowstatus(i) != 4) {
  4331. isMT004DataList = true;
  4332. }
  4333. }
  4334. }
  4335. if (isAttachedDataList) {
  4336. btn_attData.attribute("class") = "btn5_letter4";
  4337. btn_attData.attribute("color") = "#cc3333";
  4338. } else {
  4339. // 소명자료 Btn
  4340. btn_attData.attribute("class") = "btn2_letter4";
  4341. }
  4342. if (isMT004DataList) {
  4343. btn_mt0004.attribute("class") = "btn5_letter4";
  4344. btn_mt0004.attribute("color") = "#cc3333";
  4345. } else {
  4346. // MT004 Btn
  4347. btn_mt0004.attribute("class") = "btn2_letter4";
  4348. }
  4349. }
  4350. /* 상병 및 처방 치식 입력 호출 */
  4351. function fDiagOrderToothInput(flag) {
  4352. if (flag == "Diag") {
  4353. var row = grd_cldihist.row;
  4354. var diagcd = model.getValue("/root/main/list1/diag["+ row +"]/diagcd");
  4355. if (diagcd) {
  4356. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/otpt/pid"));
  4357. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list1/diag["+ row +"]/toot"));
  4358. model.setValue("/root/hidden/sppiz00600/cond/clamym", "");
  4359. model.setValue("/root/hidden/sppiz00600/cond/clamdg", "");
  4360. model.setValue("/root/hidden/sppiz00600/cond/pidsn", "");
  4361. fSetToothPop(row, "1");
  4362. model.removenode("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  4363. modal("SPPIZ00600" ,"", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  4364. fGetToothPop();
  4365. }
  4366. }
  4367. else if (flag == "Order") {
  4368. var row = grd_clodhist.row;
  4369. var basecd = model.getValue("/root/main/list2/oscl["+ row +"]/basecd");
  4370. if (basecd) {
  4371. model.setValue("/root/hidden/sppiz00600/cond/pid", model.getValue("/root/main/item1/otpt/pid"));
  4372. model.setValue("/root/hidden/sppiz00600/cond/toot", model.getValue("/root/main/list2/oscl["+ row +"]/tootfact"));
  4373. model.setValue("/root/hidden/sppiz00600/cond/clamym", "");
  4374. model.setValue("/root/hidden/sppiz00600/cond/clamdg", "");
  4375. model.setValue("/root/hidden/sppiz00600/cond/pidsn", "");
  4376. fSetToothPop(row, "2");
  4377. model.removenode("/root/hidden/sppiz00600/rslt"); // SPPIZ00600_상병및처방별치식 에서 선택된 결과가 copyNode되는 경로임
  4378. modal("SPPIZ00600" ,"", "10", "10", "SPPIZ00600", "/root/hidden/sppiz00600/cond", "/root/hidden/cond", "", ""); // SPPIZ00600_상병및처방별치식.xrw
  4379. fGetToothPop();
  4380. }
  4381. }
  4382. }
  4383. // 현재 상병, 처방 Grid 상에서 입력상태의 치식을 팝업 화면에 전달하기 위해 리스트 형태로 만든다.
  4384. function fSetToothPop(row, flag) {
  4385. model.removeNodeset("/root/hidden/sppiz00600/cond/list");
  4386. model.makeNode("/root/hidden/sppiz00600/cond/list");
  4387. // 상병
  4388. var cntcldi = getNodesetCount("/root/main/list1/diag");
  4389. // 처방
  4390. var cntclod = getNodesetCount("/root/main/list2/oscl");
  4391. var cd = "";
  4392. var cdnm = "";
  4393. var orddd = "";
  4394. var toot = "";
  4395. var rowcnt = 1;
  4396. for (i=1; i<=cntcldi; i++) {
  4397. cd = model.getValue("/root/main/list1/diag["+ i + "]/diagcd");
  4398. cdnm = model.getValue("/root/main/list1/diag["+ i + "]/diagnm");
  4399. orddd = model.getValue("/root/main/list1/diag["+ i + "]/ordfromdd");
  4400. toot = model.getValue("/root/main/list1/diag["+ i + "]/toot");
  4401. if (toot != "-" && toot != "") {
  4402. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  4403. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag");
  4404. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd");
  4405. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm");
  4406. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper");
  4407. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper");
  4408. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower");
  4409. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower");
  4410. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd");
  4411. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot");
  4412. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row");
  4413. var milktoothstr = "ABCDE000";
  4414. var subTootStr = "";
  4415. for (var inx = 0; inx < 32; inx++) {
  4416. var tootnum = toot.substr(inx,1);
  4417. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  4418. if (inx < 8) {
  4419. subTootStr += (8 - inx);
  4420. }
  4421. else if (inx > 7 && inx < 16) {
  4422. subTootStr += (inx - 7);
  4423. }
  4424. else if (inx > 15 && inx < 24) {
  4425. subTootStr += (24 - inx);
  4426. } else {
  4427. subTootStr += (inx - 23);
  4428. }
  4429. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  4430. if (inx < 8) {
  4431. subTootStr += milktoothstr.charAt(7 - inx);
  4432. }
  4433. else if (inx > 7 && inx < 16) {
  4434. subTootStr += milktoothstr.charAt(inx - 8);
  4435. }
  4436. else if (inx > 15 && inx < 24) {
  4437. subTootStr += milktoothstr.charAt(23 - inx);
  4438. } else {
  4439. subTootStr += milktoothstr.charAt(inx - 24);
  4440. }
  4441. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  4442. subTootStr += " ";
  4443. }
  4444. }
  4445. //치식 표기를 설정한다.
  4446. if (row == i && flag == "1" ) {
  4447. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  4448. } else {
  4449. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  4450. }
  4451. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  4452. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  4453. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  4454. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  4455. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  4456. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  4457. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  4458. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  4459. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  4460. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  4461. rowcnt = rowcnt+1;
  4462. } else {
  4463. if (row == i && flag == "1" ) {
  4464. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  4465. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag");
  4466. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd");
  4467. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm");
  4468. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper");
  4469. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper");
  4470. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower");
  4471. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower");
  4472. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd");
  4473. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot");
  4474. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row");
  4475. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  4476. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "상병");
  4477. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  4478. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  4479. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  4480. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  4481. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  4482. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  4483. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  4484. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  4485. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  4486. rowcnt = rowcnt+1;
  4487. }
  4488. }
  4489. }
  4490. for (i=1; i<=cntclod; i++) {
  4491. cd = model.getValue("/root/main/list2/oscl["+ i + "]/snglcalcscorcd");
  4492. cdnm = model.getValue("/root/main/list2/oscl["+ i + "]/hngnm");
  4493. orddd = model.getValue("/root/main/list2/oscl["+ i + "]/orddd");
  4494. toot = model.getValue("/root/main/list2/oscl["+ i + "]/tootfact");
  4495. estmcls = model.getValue("/root/main/list2/oscl["+ i + "]/estmcls");
  4496. if ((toot != "-" && toot != "") || estmcls == "U") {
  4497. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  4498. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag");
  4499. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd");
  4500. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm");
  4501. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper");
  4502. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper");
  4503. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower");
  4504. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower");
  4505. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd");
  4506. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot");
  4507. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row");
  4508. var milktoothstr = "ABCDE000";
  4509. var subTootStr = "";
  4510. var tmpStr = "";
  4511. for (var inx = 0; inx < 32; inx++) {
  4512. var tootnum = toot.substr(inx,1);
  4513. if (tootnum == "*") { // 선택된 영구치의 경우 1~8 사이 숫자로 표시한다.
  4514. if (inx < 8) {
  4515. subTootStr += (8 - inx);
  4516. }
  4517. else if (inx > 7 && inx < 16) {
  4518. subTootStr += (inx - 7);
  4519. }
  4520. else if (inx > 15 && inx < 24) {
  4521. subTootStr += (24 - inx);
  4522. } else {
  4523. subTootStr += (inx - 23);
  4524. }
  4525. } else if (tootnum == "#") { // 선택된 유치의 경우 A~E 사이 알파벳으로 표시한다.
  4526. if (inx < 8) {
  4527. subTootStr += milktoothstr.charAt(7 - inx);
  4528. }
  4529. else if (inx > 7 && inx < 16) {
  4530. subTootStr += milktoothstr.charAt(inx - 8);
  4531. }
  4532. else if (inx > 15 && inx < 24) {
  4533. subTootStr += milktoothstr.charAt(23 - inx);
  4534. } else {
  4535. subTootStr += milktoothstr.charAt(inx - 24);
  4536. }
  4537. } else { // if (tootnum == "0") 선택되지 않은 경우 공백으로 처리한다.
  4538. subTootStr += " ";
  4539. }
  4540. }
  4541. //치식 표기를 설정한다.
  4542. if (row == i && flag == "2" ) {
  4543. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  4544. } else {
  4545. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "false");
  4546. }
  4547. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "처방");
  4548. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  4549. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  4550. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", subTootStr.substr(0, 8));
  4551. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", subTootStr.substr(8, 8));
  4552. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", subTootStr.substr(16, 8));
  4553. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", subTootStr.substr(24, 8));
  4554. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  4555. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", toot);
  4556. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  4557. rowcnt = rowcnt+1;
  4558. } else {
  4559. if (row == i && flag == "2" ) {
  4560. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos");
  4561. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag");
  4562. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd");
  4563. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm");
  4564. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper");
  4565. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper");
  4566. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower");
  4567. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower");
  4568. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd");
  4569. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot");
  4570. model.makeNode("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row");
  4571. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/chos", "true");
  4572. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/flag", "처방");
  4573. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cd", cd);
  4574. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/cdnm", cdnm);
  4575. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightupper", "");
  4576. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftupper", "");
  4577. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/rightlower", "");
  4578. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/leftlower", "");
  4579. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/orddd", orddd);
  4580. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/toot", "");
  4581. model.setValue("/root/hidden/sppiz00600/cond/list/toothapplist[" + rowcnt + "]/row", i);
  4582. rowcnt = rowcnt+1;
  4583. }
  4584. }
  4585. }
  4586. }
  4587. /* 치식결과 반영 */
  4588. function fGetToothPop() {
  4589. var tootSelectcnt = getNodesetCount("/root/hidden/sppiz00600/rslt/list");
  4590. var flag = "";
  4591. var row = "";
  4592. var toot = "";
  4593. tootSelectcnt = eval(tootSelectcnt) + 1;
  4594. for (var i=1; i<tootSelectcnt; i++) {
  4595. flag = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/flag");
  4596. row = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/row");
  4597. var rlsttoot = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/toot");
  4598. var rlsttoot1 = model.getValue("/root/hidden/sppiz00600/rslt/list["+ i +"]/toot1");
  4599. if (rlsttoot == "") {
  4600. rlsttoot = "-";
  4601. }
  4602. if (rlsttoot1 == "") {
  4603. rlsttoot1 = "-";
  4604. }
  4605. if (flag == "1") {
  4606. toot = model.getValue("/root/main/list1/diag["+ row +"]/toot");
  4607. model.setValue("/root/main/list1/diag["+ row +"]/toot", rlsttoot);
  4608. model.setValue("/root/main/list1/diag["+ row +"]/toot1", rlsttoot1);
  4609. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  4610. var cldistatus = grd_cldihist.rowstatus(row);
  4611. if (cldistatus == 0 || cldistatus == 2) { // 0 : new, 2 : update
  4612. grd_cldihist.rowstatus(row) = 2; // 2 : update
  4613. }
  4614. }
  4615. } else if (flag == "2") {
  4616. toot = model.getValue("/root/main/list2/oscl["+ row +"]/tootfact");
  4617. model.setValue("/root/main/list2/oscl["+ row +"]/tootfact", rlsttoot);
  4618. model.setValue("/root/main/list2/oscl["+ row +"]/tootfact1", rlsttoot1);
  4619. if (rlsttoot != toot) { // 치식번호가 변경된 경우
  4620. // 처방의 수정된 row 상태를 표시한다.
  4621. fSetOrderChangeRowStat(row);
  4622. }
  4623. }
  4624. }
  4625. }
  4626. /* 심사사유, 조정사유, 수정사유 입력. 사용안함 */
  4627. function fSetAdjtResnCd() {
  4628. var oldcd = model.getValue("/root/main/list2/oscl["+ grd_clodhist.row +"]/judgadjtresncd");
  4629. model.resetInstanceNode("/root/hidden/sppiz01000");
  4630. model.setValue("/root/hidden/sppiz01000/cond/cdid", oldcd);
  4631. modal("SPPIZ01000", 1,150, 150, "SPPIZ01000", "/root/hidden/sppiz01000/cond/cdid", "/root/hidden/sppiz01000/cond/cdid", "", "");
  4632. var newcd = model.getValue("/root/hidden/sppiz01000/rslt/cdid");
  4633. if (newcd) {
  4634. model.setValue("/root/main/list2/oscl["+ grd_clodhist.row +"]/judgadjtresncd", newcd);
  4635. if (newcd != oldcd && grd_clodhist.rowStatus(grd_clodhist.row) == 0) { // 0 : new, 2 : update
  4636. grd_clodhist.rowStatus(grd_clodhist.row) = 2;
  4637. }
  4638. }
  4639. return newcd;
  4640. }
  4641. /* 특정내역 저장 */
  4642. function fSaveClcjList() {
  4643. var isValidCheck = true;
  4644. var saveNoMsg = "";
  4645. var saveOkMsg = "";
  4646. model.removeNodeset("/root/send/item2");
  4647. model.removeNodeset("/root/send/item3");
  4648. model.removeNodeset("/root/send/item4");
  4649. model.removeNodeset("/root/send/list1");
  4650. model.removeNodeset("/root/send/list2");
  4651. model.removeNodeset("/root/send/list3");
  4652. model.removeNodeset("/root/send/item5");
  4653. model.removeNodeset("/root/send/list7");
  4654. grd_clsphist.refresh();
  4655. fSetClcjRowStatus();
  4656. // 1.특정내역에 저장할 정보가 올바른지 확인한다.
  4657. var rtn = fCheckSaveOutDayJudgInfoCLSP();
  4658. if (rtn == "3") {
  4659. var updtdata = getGridUpdateData(grd_clsphist);
  4660. if (updtdata) {
  4661. model.makeValue("/root/send/list3/clcj", updtdata);
  4662. }
  4663. if (updtdata != "" && grd_clsphist.rows > 1) {
  4664. saveOkMsg += "[특정내역] ";
  4665. } else {
  4666. saveNoMsg += "[특정내역] ";
  4667. }
  4668. } else if (rtn == "1") {
  4669. isValidCheck = false;
  4670. } else if (rtn == "2") {
  4671. fSpclGridInsertRow();
  4672. return;
  4673. }
  4674. if (isValidCheck) {
  4675. if (saveOkMsg) {
  4676. if (model.getValue("/root/send/list3/clcj")) {
  4677. // 줄단위 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다.
  4678. fSetSpclSpecJX999();
  4679. }
  4680. if (submit("TXPIJ00703", false)) {
  4681. grd_clsphist.clearStatus();
  4682. grd_clsphist.refresh();
  4683. }
  4684. }
  4685. else if (saveNoMsg) {
  4686. messageBox(saveNoMsg +"변경된 데이터가","I004"); ///변경된 데이터가 없습니다.
  4687. }
  4688. } else {
  4689. messageBox("변경된 정보를 저장할 특정내역이", "I004");
  4690. }
  4691. fSpclGridInsertRow();
  4692. }
  4693. /* 특정내역 탭 특정코드 변경 */
  4694. function fChangeSpclCd() {
  4695. var row = grd_clsphist.row;
  4696. var newspclcd = model.getValue("/root/main/list3/clcj["+ row +"]/spclcd");
  4697. var newspclspec = model.getValue("/root/main/list3/clcj["+ row +"]/spclspec");
  4698. var unitflag = model.getValue("/root/main/list3/clcj["+ row +"]/unitflag");
  4699. // 1. 명세서단위 중복 특정코드가 있는지 확인한다.
  4700. if (unitflag == "M" && newspclcd != "") {
  4701. if (newspclcd == "MT004" || newspclcd == "MT015" || newspclcd == "MT016" || newspclcd == "MX999") {
  4702. for (var i = 1; i < grd_clsphist.rows; i++) {
  4703. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  4704. if (row != i && newspclcd == spclcd) {
  4705. if (grd_clsphist.rowstatus(i) != 4) {
  4706. model.setValue("/root/main/list3/clcj["+ row +"]/spclcd", model.getValue("/root/main/list3/clcj["+ row +"]/oldspclcd"));
  4707. model.setValue("/root/hidden/list3/msgspclformat", "명세서 단위 특정코드 '"+ newspclcd +"'가 중복되었습니다.");
  4708. opt_msgspclformat.refresh();
  4709. return;
  4710. }
  4711. }
  4712. }
  4713. }
  4714. // 특정코드 MT015, MT016, MT004 정보가 입력된 환자인지를 확인한다.
  4715. fCheckSpclSpecData();
  4716. // 2. 줄단위 중복 특정코드가 있는지 확인한다.
  4717. } else {
  4718. if (newspclcd == "JX999" || newspclcd == "JT001") {
  4719. var basecd = model.getValue("/root/main/list3/clcj["+ row +"]/edicd");
  4720. // 중복된 특정코드가 있는지를 확인한다.
  4721. for (var i = 1; i < grd_clsphist.rows; i++) {
  4722. var spclEdicd = model.getValue("/root/main/list3/clcj["+ i +"]/edicd");
  4723. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  4724. if (row != i && basecd == spclEdicd && newspclcd == spclcd) {
  4725. if (grd_clsphist.rowstatus(i) != 4) {
  4726. model.setValue("/root/main/list3/clcj["+ row +"]/spclcd", model.getValue("/root/main/list3/clcj["+ row +"]/oldspclcd"));
  4727. model.setValue("/root/hidden/list3/msgspclformat", "EDI코드 "+ basecd +"의 줄단위 특정코드 '"+ newspclcd +"'가 중복되었습니다.");
  4728. opt_msgspclformat.refresh();
  4729. return;
  4730. }
  4731. }
  4732. }
  4733. }
  4734. }
  4735. // 3. 특정코드에 맞는 특정코드명을 기입한다.
  4736. var p0117list = instance1.selectSingleNode("/root/init/P0117list");
  4737. if (p0117list != null) {
  4738. var p0117 = p0117list.childNodes;
  4739. for (var i = 1; i <= p0117.length; i++) {
  4740. var cdid = model.getValue("/root/init/P0117list/P0117["+ i +"]/cdid");
  4741. if (cdid == newspclcd) {
  4742. model.setValue("/root/main/list3/clcj["+ row +"]/cdnm", model.getValue("/root/init/P0117list/P0117["+ i +"]/cdnm"));
  4743. var format = model.getValue("/root/init/P0117list/P0117["+ i +"]/cdval");
  4744. format = format.substring(0,50);
  4745. model.setValue("/root/main/list3/clcj["+ row +"]/spclformat", format);
  4746. model.setValue("/root/main/list3/clcj["+ row +"]/detldesc", model.getValue("/root/init/P0117list/P0117["+ i +"]/detldesc"));
  4747. i = p0117.length + 1;
  4748. }
  4749. }
  4750. }
  4751. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "I");
  4752. model.setValue("/root/main/list3/clcj["+ row +"]/oldspclcd", newspclcd);
  4753. // 4. 하단 Message 구성
  4754. var cdnm = model.getValue("/root/main/list3/clcj["+ row +"]/cdnm");
  4755. var spclformat = model.getValue("/root/main/list3/clcj["+ row +"]/spclformat");
  4756. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ cdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ spclformat);
  4757. opt_msgspclformat.refresh();
  4758. // 5. 빈줄 추가
  4759. fSpclGridInsertRow();
  4760. }
  4761. /* 특정내역 탭 특정코드 외 다른 필드 변경 */
  4762. function fChangeOtherCd() {
  4763. var row = grd_clsphist.row;
  4764. var newspclcd = model.getValue("/root/main/list3/clcj["+ row +"]/spclcd");
  4765. var newspclspec = model.getValue("/root/main/list3/clcj["+ row +"]/spclspec");
  4766. // 1. 확인코드(jt001)의 경우, spclspec가 빈값이면 삭제
  4767. var unitflag = model.getValue("/root/main/list3/clcj["+ row +"]/unitflag");
  4768. if (unitflag == "J") {
  4769. if (newspclcd == "JT001") {
  4770. var basecd = model.getValue("/root/main/list3/clcj["+ row +"]/edicd");
  4771. for (var j = 1; j < grd_clodhist.rows; j++) {
  4772. var osclEdicd = model.getValue("/root/main/list2/oscl["+ j +"]/basecd");
  4773. if (basecd == osclEdicd) {
  4774. model.setValue("/root/main/list2/oscl["+ j +"]/cnfmcd", newspclspec);
  4775. }
  4776. }
  4777. if (newspclspec == "") {
  4778. for (var j = 1; j < grd_clsphist.rows; j++) {
  4779. var unitflag = model.getValue("/root/main/list3/clcj["+ j +"]/unitflag");
  4780. if (unitflag == "J") {
  4781. var spclEdicd = model.getValue("/root/main/list3/clcj["+ j +"]/edicd");
  4782. var spclSpclcd = model.getValue("/root/main/list3/clcj["+ j +"]/spclcd");
  4783. if (spclEdicd == basecd && spclSpclcd == "JT001") {
  4784. var rowstatus = grd_clsphist.rowstatus(j);
  4785. if (rowstatus == 1 || rowstatus == 3) {
  4786. grd_clsphist.valueMatrix(row, grd_clsphist.colRef("rowstat")) = "D";
  4787. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "D");
  4788. } else {
  4789. grd_clsphist.rowstatus(j) = 4;
  4790. grd_clsphist.valueMatrix(row, grd_clsphist.colRef("rowstat")) = "D";
  4791. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "D");
  4792. }
  4793. }
  4794. }
  4795. }
  4796. model.setValue("/root/hidden/list3/msgspclformat", "입력된 확인코드 내역이 없습니다.");
  4797. opt_msgspclformat.refresh();
  4798. // 행 삭제
  4799. for (var s = grd_clsphist.rows-1; s >= 1 ; s--) {
  4800. var rowstatus = grd_clsphist.rowstatus(s);
  4801. var rowtext = grd_clsphist.valueMatrix(s, grd_clsphist.colRef("rowstat"));
  4802. if (rowstatus == 1 || rowstatus == 3) {
  4803. if (rowtext == "D") grd_clsphist.deleteRow(s, false);
  4804. }
  4805. }
  4806. return;
  4807. }
  4808. }
  4809. }
  4810. // 2. row상태 update 처리
  4811. var rowstat = model.getValue("/root/main/list3/clcj["+ row +"]/rowstat");
  4812. if (rowstat == "") {
  4813. model.setValue("/root/main/list3/clcj["+ row +"]/rowstat", "U");
  4814. }
  4815. /*
  4816. var rowstatus = grd_clsphist.rowstatus(row);
  4817. // 특정코드, 특정내역이 변경되었거나 삭제된 특정코드를 조회하여 "확인"을 선택한 경우
  4818. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  4819. } else {
  4820. grd_clsphist.rowstatus(row) = 2; // 2 : update 상태로 stat를 변경한다.
  4821. }
  4822. var cdnm = model.getValue("/root/main/list3/clcj["+ row +"]/cdnm");
  4823. var spclformat = model.getValue("/root/main/list3/clcj["+ row +"]/spclformat");
  4824. model.setValue("/root/hidden/list3/msgspclformat", "특정내역코드: "+ newspclcd +" / 특정내역명칭: "+ cdnm +" / 기재내역: "+ newspclspec +" / 기재형식: "+ spclformat);
  4825. model.refresh();
  4826. // 처방 행 삭제 or 삭제취소 후에 특정내역 sorting 작업
  4827. fSortSpclNo();
  4828. */
  4829. }
  4830. /* 심사자메모, edi메모만 따로 저장. */
  4831. function fSaveMemo() {
  4832. var isValidCheck = true;
  4833. var saveNoMsg = "";
  4834. var saveOkMsg = "";
  4835. model.removeNodeset("/root/send/item2");
  4836. model.removeNodeset("/root/send/item3"); // 저장 오류가 난 경우 다시 "저장" Btn 누르면 새로 메모 내역이 생성되어야 하므로
  4837. model.removeNodeset("/root/send/item4");
  4838. model.removeNodeset("/root/send/list1");
  4839. model.removeNodeset("/root/send/list2");
  4840. model.removeNodeset("/root/send/list3");
  4841. model.removeNodeset("/root/send/item5");
  4842. model.removeNodeset("/root/send/list7");
  4843. var initmemo = instance1.selectNodesXml("/root/hidden/item1/initmemo/memo");
  4844. var currentmemo = instance1.selectNodesXml("/root/main/item1/memo");
  4845. if (initmemo != currentmemo) {
  4846. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  4847. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  4848. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  4849. if (judgmemo != model.getValue("/root/hidden/item1/initmemo/memo/judgmemo")) {
  4850. fSetJudgEDIMemo(judgmemo, "U");
  4851. }
  4852. if (edimemo != model.getValue("/root/hidden/item1/initmemo/memo/edimemo")) {
  4853. fSetJudgEDIMemo(edimemo, "E");
  4854. }
  4855. saveOkMsg += "[심사메모] ";
  4856. } else {
  4857. saveNoMsg += "[심사메모] ";
  4858. }
  4859. if (isValidCheck) {
  4860. if (saveOkMsg) {
  4861. if (submit("TXPIJ00701", false)) {
  4862. }
  4863. }
  4864. else if (saveNoMsg) {
  4865. messageBox(saveNoMsg +"변경된 데이터가","I004"); ///변경된 데이터가 없습니다.
  4866. }
  4867. } else { // isValidCheck == false
  4868. messageBox("변경된 정보를 저장할 심사메모가", "I004");
  4869. }
  4870. }
  4871. /* 저장버튼 클릭 */
  4872. function fSaveOutDayJudg(judgendyn) {
  4873. model.removeNodeset("/root/send/item2");
  4874. model.removeNodeset("/root/send/item3"); // 저장 오류가 난 경우 다시 "저장" Btn 누르면 새로 메모 내역이 생성되어야 하므로
  4875. model.removeNodeset("/root/send/item4");
  4876. model.removeNodeset("/root/send/list1");
  4877. model.removeNodeset("/root/send/list2");
  4878. model.removeNodeset("/root/send/list3");
  4879. model.removeNodeset("/root/send/item5");
  4880. model.removeNodeset("/root/send/list7");
  4881. var selectedRow = model.getValue("/root/hidden/smpij00600/rslt/selectedRow"); // 대상자 화면에서 선택했던 줄
  4882. var isValidCheck = true;
  4883. var pid = model.getValue("/root/main/item1/otpt/pid");
  4884. var orddd = model.getValue("/root/main/item1/otpt/orddd");
  4885. var cretno = model.getValue("/root/main/item1/otpt/cretno");
  4886. var acptseqno = model.getValue("/root/main/item1/otpt/acptseqno");
  4887. var insukindcd = model.getValue("/root/main/item1/otpt/insukindcd");
  4888. var opyn = model.getValue("/root/main/item1/otpt/opyn");
  4889. if (pid && orddd && cretno && acptseqno && insukindcd) { // 조회된 심사대상자가 있으면
  4890. // 처방 Grid 필터용 조회조건을 초기화한다.
  4891. fInitOrderFilter();
  4892. var saveNoMsg = "";
  4893. var saveOkMsg = "";
  4894. if (fCheckSaveOutDayJudgCLBS()) { // CLBS 테이블에 저장할 정보가 올바른지 확인한다.
  4895. // 인적사항
  4896. var recalcyn = model.getValue("/root/main/item1/otpt/recalcyn");
  4897. var suppkindcd = model.getValue("/root/main/item1/otpt/suppkindcd");
  4898. var patsupprate = model.getValue("/root/hidden/item1/otpt/patsupprate");
  4899. var payownbrate = model.getValue("/root/main/item1/otpt/payownbrate");
  4900. // 보조요율만 변경된 경우 재계산만 하고, 인적사항 수정은 안하기 위해 초기값과 같게 만든다.
  4901. model.setValue("/root/main/item1/otpt/recalcyn", model.getValue("/root/hidden/item1/initotpt/otpt/recalcyn"));
  4902. model.setValue("/root/main/item1/otpt/suppkindcd", model.getValue("/root/hidden/item1/initotpt/otpt/suppkindcd"));
  4903. model.setValue("/root/hidden/item1/otpt/patsupprate", model.getValue("/root/hidden/item1/initotpt/otpt/patsupprate"));
  4904. model.setValue("/root/main/item1/otpt/payownbrate", model.getValue("/root/hidden/item1/initotpt/otpt/payownbrate"));
  4905. var initclbs = instance1.selectNodesXml("/root/hidden/item1/initotpt/otpt");
  4906. var currentclbs = instance1.selectNodesXml("/root/main/item1/otpt");
  4907. if (initclbs == currentclbs) {
  4908. saveNoMsg = "[인적사항] ";
  4909. // 인적사항 변경이 없는 경우에도 사용되는 진료과 / 진료의사 정보를 send data에 설정한다.
  4910. model.makeValue("/root/send/item1/otpt/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd"));
  4911. model.makeValue("/root/send/item1/otpt/recalcyn", recalcyn);
  4912. if (recalcyn == "Y") { // 보조유형, 요율 외에는 변경사항이 없는 경우임
  4913. saveOkMsg = "[보조유형 및 요율] ";
  4914. model.makeValue("/root/send/item1/otpt/suppkindcd", suppkindcd);
  4915. }
  4916. } else {
  4917. saveOkMsg = "[인적사항] ";
  4918. model.copyNode("/root/send/item1/otpt", "/root/main/item1/otpt");
  4919. model.makeValue("/root/send/item1/otpt/payownbrate", payownbrate);
  4920. model.makeValue("/root/send/item1/otpt/suppkindcd", suppkindcd);
  4921. model.makeValue("/root/send/item1/otpt/recalcyn", recalcyn);
  4922. }
  4923. // 심사상태를 '저장' 또는 '심사완료' 상태로 저장한다.
  4924. model.makeValue("/root/send/item1/otpt/dschjudgprcsstat", judgendyn); // 외래사전심사상태 (P0379) - A: 미심사, B: 심사중, D: 보류, E: 통합심사완료
  4925. model.setValue("/root/main/item1/otpt/recalcyn", recalcyn);
  4926. model.setValue("/root/main/item1/otpt/suppkindcd", suppkindcd);
  4927. model.setValue("/root/hidden/item1/otpt/patsupprate", patsupprate);
  4928. model.setValue("/root/main/item1/otpt/payownbrate", payownbrate);
  4929. } else {
  4930. isValidCheck = false;
  4931. }
  4932. // 심사메모
  4933. var initmemo = instance1.selectNodesXml("/root/hidden/item1/initmemo/memo");
  4934. var currentmemo = instance1.selectNodesXml("/root/main/item1/memo");
  4935. if (initmemo != currentmemo) {
  4936. // 심사자메모, EDI청구메모를 특정내역 형식에 맞춰 설정한다.
  4937. var judgmemo = model.getValue("/root/main/item1/memo/judgmemo");
  4938. var edimemo = model.getValue("/root/main/item1/memo/edimemo");
  4939. if (judgmemo != model.getValue("/root/hidden/item1/initmemo/memo/judgmemo")) {
  4940. fSetJudgEDIMemo(judgmemo, "U");
  4941. }
  4942. if (edimemo != model.getValue("/root/hidden/item1/initmemo/memo/edimemo")) {
  4943. fSetJudgEDIMemo(edimemo, "E");
  4944. }
  4945. saveOkMsg += "[심사메모] ";
  4946. } else {
  4947. saveNoMsg += "[심사메모] ";
  4948. }
  4949. if (fCheckSaveOutDayJudgInfoCLDI()) { // CLDI 테이블에 저장할 정보가 올바른지 확인한다.
  4950. // 상병은 기존의 데이터를 모두 삭제한 뒤, 새로 모두 저장하는 형태로 돌아감
  4951. /*
  4952. for (var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  4953. var status = grd_cldihist.rowstatus(j);
  4954. if (status != 4) {
  4955. grd_cldihist.rowstatus(j) = 1;
  4956. }
  4957. }
  4958. */
  4959. var updtdata = getGridUpdateData(grd_cldihist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  4960. if (updtdata) {
  4961. model.makeValue("/root/send/list1/diag", updtdata);
  4962. }
  4963. if (updtdata != "" && grd_cldihist.rows > 1) { // 타이틀 부분으로 인해 data가 없어도 rows = 1 임.
  4964. // <table id="list1/diag" count_ref="cldi" min_count="1"> 로 인해 빈줄이 제거된 경우에도 delete 처리를 하므로
  4965. // Grid 상에 데이터가 있는지를 확인한다.
  4966. saveOkMsg += "[상병] ";
  4967. } else {
  4968. saveNoMsg += "[상병] ";
  4969. }
  4970. } else {
  4971. isValidCheck = false;
  4972. }
  4973. grd_clsphist.refresh();
  4974. fSetClcjRowStatus();
  4975. // 1.특정내역에 저장할 정보가 올바른지 확인한다.
  4976. var rtn = fCheckSaveOutDayJudgInfoCLSP();
  4977. if (rtn == "3") {
  4978. var updtdata = getGridUpdateData(grd_clsphist);
  4979. if (updtdata) {
  4980. model.makeValue("/root/send/list3/clcj", updtdata);
  4981. }
  4982. if (updtdata != "" && grd_clsphist.rows > 1) {
  4983. saveOkMsg += "[특정내역] ";
  4984. } else {
  4985. saveNoMsg += "[특정내역] ";
  4986. }
  4987. } else if (rtn == "1") {
  4988. isValidCheck = false;
  4989. } else if (rtn == "2") {
  4990. fSpclGridInsertRow();
  4991. return;
  4992. }
  4993. if (fCheckSaveOutDayJudgInfoCLOD()) { // CLOD 테이블에 저장할 정보가 올바른지 확인한다.
  4994. // 처방
  4995. var updtdata = getGridUpdateData(grd_clodhist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  4996. if (updtdata) {
  4997. model.makeValue("/root/send/list2/oscl", updtdata);
  4998. }
  4999. if (updtdata != "" && (grd_clodhist.rows > 1 || grd_delclod.rows > 1)) {
  5000. saveOkMsg += "[처방] ";
  5001. } else {
  5002. saveNoMsg += "[처방] ";
  5003. }
  5004. } else {
  5005. isValidCheck = false;
  5006. }
  5007. if (fCheckSaveOutDayJudgInfoCLOP()) { // CLOP 테이블에 저장할 정보가 올바른지 확인한다.
  5008. // 원외처방
  5009. var updtdata = getGridUpdateData(grd_oprcphist); // (tfHelper.js) 그리드 업데이트 데이터 반환, 업데이트 정보가 없을경우 "" 반환
  5010. if (updtdata) {
  5011. model.makeValue("/root/send/list7/clop", updtdata);
  5012. }
  5013. if (updtdata != "" && grd_oprcphist.rows > 1) {
  5014. saveOkMsg += "[원외처방] ";
  5015. } else {
  5016. saveNoMsg += "[원외처방] ";
  5017. }
  5018. } else {
  5019. isValidCheck = false;
  5020. }
  5021. if (isValidCheck) {
  5022. if (saveOkMsg) {
  5023. if (model.getValue("/root/send/list3/clcj")) {
  5024. // 줄단위 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다.
  5025. fSetSpclSpecJX999();
  5026. }
  5027. if (model.getValue("/root/send/list7/clop")) {
  5028. // 원외처방 특정내역 중 기타메모(JX999)를 특정내역 형식에 맞춰 설정한다.
  5029. fSetOprcSpclSpecJX999();
  5030. }
  5031. if (submit("TXPIJ00701", false)) {
  5032. model.resetInstanceNode("/root/hidden/item1/initotpt/otpt");
  5033. grd_cldihist.clearStatus();
  5034. grd_clodhist.clearStatus();
  5035. grd_delclod.clearStatus();
  5036. grd_oprcphist.clearStatus();
  5037. grd_clsphist.clearStatus();
  5038. grd_clsphist.refresh();
  5039. if (judgendyn == "B") { // 외래사전심사상태 (P0379) - A: 미심사, B: 심사중, D: 보류, E: 통합심사완료
  5040. model.resetInstanceNode("/root/hidden/smpij00600/rslt");
  5041. model.setValue("/root/hidden/smpij00600/rslt/pid", pid);
  5042. model.setValue("/root/hidden/smpij00600/rslt/orddd", orddd);
  5043. model.setValue("/root/hidden/smpij00600/rslt/cretno", cretno);
  5044. model.setValue("/root/hidden/smpij00600/rslt/acptseqno", acptseqno);
  5045. model.setValue("/root/hidden/smpij00600/rslt/insukindcd", insukindcd);
  5046. model.setValue("/root/hidden/smpij00600/rslt/opyn", opyn);
  5047. // 대상자조회 화면에서 선택했던 환자의 Row를 기억해 두고, pre/next대상조회 버튼에서 이전, 이후 대상자를 조회한다.
  5048. model.setValue("/root/hidden/smpij00600/rslt/selectedRow", selectedRow);
  5049. // 저장은 저장일 뿐 심사자 이동이 없으므로, 심사상태 변경 관련 동작은 타지 않도록 구분한다.
  5050. model.setValue("/root/hidden/judgstatyn", "N");
  5051. fGetOutDayJudgMngt();
  5052. model.resetInstanceNode("/root/hidden/smpij00600/rslt/oldPid"); // 내역이 변경되어 대상자 화면을 열때 다시 조회하도록 설정함
  5053. }
  5054. // E: 심사완료의 경우, 저장 후 결과를 다시 조회하기 위해
  5055. return "true";
  5056. }
  5057. }
  5058. else if (saveNoMsg) {
  5059. if (judgendyn != "B") { // 외래사전심사상태 (P0379) - A: 미심사, B: 심사중, D: 보류, E: 통합심사완료
  5060. return "false";
  5061. } else {
  5062. fDiagGridInsertRow();
  5063. messageBox(saveNoMsg +"변경된 데이터가","I004"); ///변경된 데이터가 없습니다.
  5064. }
  5065. }
  5066. } else { // isValidCheck == false
  5067. // 상병
  5068. for (var j = grd_cldihist.fixedRows; j < grd_cldihist.rows; j++) {
  5069. if (grd_cldihist.rowstatus(j) == 4) {
  5070. var diagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  5071. model.setValue("/root/main/list1/diag["+ j +"]/diagseq", "D" + diagseq);
  5072. }
  5073. }
  5074. fDiagGridInsertRow();
  5075. }
  5076. } else {
  5077. messageBox("변경된 정보를 저장할 일일심사 대상자가", "I004"); ///변경된 정보를 저장할 일일심사 대상자가 없습니다.
  5078. }
  5079. }
  5080. // CLBS 테이블에 저장할 정보가 올바른지 확인한다.
  5081. function fCheckSaveOutDayJudgCLBS() {
  5082. if (model.getValue("/root/main/item1/otpt/pid") == "") {
  5083. messageBox("등록번호가", "I004"); ///등록번호가 없습니다
  5084. return false;
  5085. }
  5086. if (model.getValue("/root/main/item1/otpt/orddd") == "") {
  5087. messageBox("접수일자가", "I004"); ///접수일자가 없습니다
  5088. return false;
  5089. }
  5090. if (model.getValue("/root/main/item1/otpt/suppkindcd") == "") {
  5091. messageBox("보조유형이", "I004"); //보조유형이 없습니다
  5092. return false;
  5093. }
  5094. if (model.getValue("/root/main/item1/otpt/payownbrate") =="") {
  5095. messageBox("올바른 보조유형을", "C002"); ///올바른 보조유형을 선택하십시오.
  5096. return false;
  5097. }
  5098. if (model.getValue("/root/main/item1/otpt/insuno") == "") {
  5099. //messageBox("조합기호가", "I004"); ///조합기호가 없습니다
  5100. //return false;
  5101. }
  5102. if (model.getValue("/root/main/item1/otpt/insunm") == "") {
  5103. //messageBox("조합명칭이", "I004"); ///조합명칭이 없습니다
  5104. //return false;
  5105. }
  5106. if (model.getValue("/root/main/item1/otpt/certno") == "") {
  5107. //messageBox("증번호가", "I004"); ///증번호가 없습니다
  5108. //return false;
  5109. }
  5110. return true;
  5111. }
  5112. // CLDI 테이블에 저장할 정보가 올바른지 확인한다.
  5113. function fCheckSaveOutDayJudgInfoCLDI() {
  5114. // 먼저 빈 줄을 삭제한다.
  5115. var delcldiCheck = false;
  5116. for (var i = 1; i < grd_cldihist.rows; i++) {
  5117. var rowstatus = grd_cldihist.rowstatus(i);
  5118. var diagcd = model.getValue("/root/main/list1/diag["+ i +"]/diagcd");
  5119. // 상병코드와 진료개시일이 입력되지 않은 경우
  5120. if (rowstatus == 1 || rowstatus == 3) { // 1 : insert, 3 : insert & new
  5121. if (diagcd == "") {
  5122. // 줄을 삭제한다.
  5123. grd_cldihist.deleteRow(i, true);
  5124. i--;
  5125. delcldiCheck = true;
  5126. }
  5127. }
  5128. }
  5129. // 빈줄을 삭제한 경우 상병순서를 다시 부여한다.
  5130. if (delcldiCheck) {
  5131. var seq = 1;
  5132. for (var i = 1; i < grd_cldihist.rows; i++) {
  5133. var rowstatus = grd_cldihist.rowstatus(i);
  5134. if (rowstatus != 4) {
  5135. model.setValue("/root/main/list1/diag["+ i +"]/diagseq", seq++);
  5136. }
  5137. }
  5138. }
  5139. // 저장할 정보를 체크한다.
  5140. var cldiList = instance1.selectSingleNode("/root/main/list1"); //root/main/list1
  5141. if (cldiList == null) {
  5142. return false;
  5143. }
  5144. var cldiNode = cldiList.childNodes; //root/main/list1/diag
  5145. for (var i = 1; i <= cldiNode.length; i++) {
  5146. var diagcd = model.getValue("/root/main/list1/diag["+ i +"]/diagcd");
  5147. var ordfromdd = model.getValue("/root/main/list1/diag["+ i +"]/ordfromdd");
  5148. if (diagcd == "" || ordfromdd == "") {
  5149. messageBox("상병코드 또는 진료개시일이 입력되지", "E007"); ///상병코드 또는 진료개시일이 입력되지 않았습니다.
  5150. return false;
  5151. }
  5152. var diagseq = model.getValue("/root/main/list1/diag["+ i +"]/diagseq");
  5153. for (var j = 1; j < i; j++) {
  5154. var prediagseq = model.getValue("/root/main/list1/diag["+ j +"]/diagseq");
  5155. var prediagcd = model.getValue("/root/main/list1/diag["+ j +"]/diagcd");
  5156. if (grd_cldihist.rowstatus(i) != 4) {
  5157. // 중복된 상병 NO가 있는 경우
  5158. if (diagseq == prediagseq) {
  5159. messageBox("상병순서 '"+ diagseq +"'가", "E006"); ///상병순서 '***'가 중복되었습니다.
  5160. return false;
  5161. }
  5162. // 중복된 상병코드가 있는 경우
  5163. if (diagcd == prediagcd) {
  5164. messageBox("상병코드 '"+ diagcd +"'가", "E006"); ///상병코드 '***'가 중복되었습니다.
  5165. return false;
  5166. }
  5167. }
  5168. }
  5169. if (model.getValue("/root/main/list1/diag["+ i +"]/toot") == "") { // 치식이 입력되지 않은 경우
  5170. model.setValue("/root/main/list1/diag["+ i +"]/toot", "-");
  5171. }
  5172. }
  5173. return true;
  5174. }
  5175. /* 특정내역 데이터 검사 */
  5176. function fCheckSaveOutDayJudgInfoCLSP() {
  5177. // 먼저 빈 줄을 삭제한다.
  5178. for (var i = 1; i < grd_clsphist.rows; i++) {
  5179. var rowstatus = grd_clsphist.rowstatus(i);
  5180. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  5181. var spclspec = model.getValue("/root/main/list3/clcj["+ i +"]/spclspec");
  5182. // 특정코드과 특정내역이 입력되지 않은 경우
  5183. if (rowstatus != 4 && spclcd == "" && spclspec == "") {
  5184. // 줄을 삭제한다.
  5185. grd_clsphist.deleteRow(i, true);
  5186. i--;
  5187. }
  5188. }
  5189. // 저장할 정보를 체크한다.
  5190. var clspList = instance1.selectSingleNode("/root/main/list3"); //root/main/list3
  5191. if (clspList == null) {
  5192. return "1";
  5193. }
  5194. var clspNode = clspList.childNodes; //root/main/list3/clcj
  5195. for (var i = 1; i <= clspNode.length; i++) {
  5196. var spclcd = model.getValue("/root/main/list3/clcj["+ i +"]/spclcd");
  5197. var spclspec = model.getValue("/root/main/list3/clcj["+ i +"]/spclspec");
  5198. var rowstat = model.getValue("/root/main/list3/clcj["+ i +"]/rowstat");
  5199. if (rowstat != "D") {
  5200. if (spclcd == "" || spclspec == "") {
  5201. messageBox("특정코드 또는 특정내역이 입력되지", "E007"); ///특정코드 또는 특정내역이 입력되지 않았습니다.
  5202. return "2";
  5203. }
  5204. else if (spclcd == "MX999" || spclcd == "MT015" || spclcd == "MT016" || spclcd == "MT004") {
  5205. for (var j = 1; j < i; j++) {
  5206. var prespclcd = model.getValue("/root/main/list3/clcj["+ j +"]/spclcd");
  5207. // 중복된 명세서 단위 특정코드가 있는 경우
  5208. if (grd_clsphist.rowstatus(i) != 4 && spclcd == prespclcd) {
  5209. messageBox("명세서 단위 특정코드 '"+ spclcd +"'가", "E006"); ///명세서 단위 특정코드 '***'가 중복되었습니다.
  5210. return "2";
  5211. }
  5212. }
  5213. }
  5214. }
  5215. }
  5216. return "3";
  5217. }
  5218. // CLOD 테이블에 저장할 정보가 올바른지 확인한다.
  5219. function fCheckSaveOutDayJudgInfoCLOD() {
  5220. // 저장할 정보를 체크한다.
  5221. // 처방 Grid
  5222. var clodList = instance1.selectSingleNode("/root/main/list2"); //root/main/list2
  5223. if (clodList == null) {
  5224. return false;
  5225. }
  5226. var clodNode = clodList.childNodes; //root/main/list2/oscl
  5227. for (var i = 1; i <= clodNode.length; i++) {
  5228. var pid = model.getValue("/root/main/list2/oscl["+ i +"]/pid");
  5229. var orddd = model.getValue("/root/main/list2/oscl["+ i +"]/orddd");
  5230. var cretno = model.getValue("/root/main/list2/oscl["+ i +"]/cretno");
  5231. var calcseqno = model.getValue("/root/main/list2/oscl["+ i +"]/calcseqno");
  5232. var calcscorseqno = model.getValue("/root/main/list2/oscl["+ i +"]/calcscorseqno");
  5233. //if (orddd == "" || cretno == "" || calcseqno == "" || calcscorseqno == "") {
  5234. // messageBox("예외코드 저장을 위한 정보가 ", "I004"); ///수가코드 '***'의 처방일자 정보가 없습니다.
  5235. // return false;
  5236. //}
  5237. if (model.getValue("/root/main/list2/oscl["+ i +"]/tootfact") == "") { // 치식이 입력되지 않은 경우
  5238. model.setValue("/root/main/list2/oscl["+ i +"]/tootfact", "-");
  5239. }
  5240. }
  5241. return true;
  5242. }
  5243. // CLOP 테이블에 저장할 정보가 올바른지 확인한다.
  5244. function fCheckSaveOutDayJudgInfoCLOP() {
  5245. // 저장할 정보를 체크한다.
  5246. // 원외처방 Grid
  5247. var clopList = instance1.selectSingleNode("/root/main/list7"); //root/main/list7
  5248. if (clopList == null) {
  5249. return false;
  5250. }
  5251. var clopNode = clopList.childNodes; //root/main/list7/clop
  5252. for (var i = 1; i <= clopNode.length; i++) {
  5253. var spclspec = model.getValue("/root/main/list7/clop["+ i +"]/spclspec");
  5254. var stat = grd_oprcphist.rowStatus(i);
  5255. if (spclspec == "" && stat != 0) {
  5256. messageBox("원외처방 특정내역이", "I004"); // 원외처방 특정내역이 없습니다.
  5257. return false;
  5258. }
  5259. }
  5260. return true;
  5261. }
  5262. function fCheckSaveOutDayJudgInfoCLCJ() {
  5263. // 저장할 정보를 체크한다.
  5264. // 원외처방 특정내역 Grid
  5265. var clcjList = instance1.selectSingleNode("/root/main/list8");
  5266. if (clcjList == null) {
  5267. return false;
  5268. }
  5269. var clcjNode = clcjList.childNodes;
  5270. for (var i = 1; i <= clcjNode.length; i++) {
  5271. var clopdd = model.getValue("/root/main/list7/clop["+ i +"]/clopdd");
  5272. var clopno = model.getValue("/root/main/list7/clop["+ i +"]/clopno");
  5273. if (isValidDateTime(clopdd)) { // (dateHelper.js) 유효한 날짜, 시간 인지 점검
  5274. if (clopno == "") {
  5275. messageBox("원외처방 교부일자 '"+ clopdd +"'의 교부번호가", "I004"); ///원외처방 교부일자 '***'의 교부번호가 없습니다.
  5276. return false;
  5277. }
  5278. model.setValue("/root/main/list7/clop["+ i +"]/newmpsno", clopdd+clopno);
  5279. } else {
  5280. messageBox("올바른 형식의 원외처방 교부일자를", "C001"); ///올바른 형식의 원외처방 교부일자를 입력하십시오.
  5281. return false;
  5282. }
  5283. }
  5284. return true;
  5285. }
  5286. //2009.08.13 zzu - 계산처방시행조회(코드별 처방 hx.보기)
  5287. function fOpenSMPIS00500Detail_O() {
  5288. var irow = grd_clodhist.row;
  5289. model.makeValue("/root/hidden/smpis00500/cond/patunitsrch", model.getValue("/root/main/item1/otpt/pid"));
  5290. model.makeValue("/root/hidden/smpis00500/cond/code", model.getValue("/root/main/list2/oscl[" + irow + "]/snglcalcscorcd"));
  5291. model.makeValue("/root/hidden/smpis00500/cond/datecond", "");
  5292. model.makeValue("/root/hidden/smpis00500/cond/fromdd", model.getValue("/root/main/item1/otpt/orddd"));
  5293. model.makeValue("/root/hidden/smpis00500/cond/todd", model.getValue("/root/main/item1/otpt/orddd"));
  5294. model.makeValue("/root/hidden/smpis00500/cond/ioflag", "O");
  5295. // model.makeValue("/root/hidden/smpis00500/cond/orddeptcd", model.getValue("/root/main/item1/iteminfo/orddeptcd"));
  5296. // model.makeValue("/root/hidden/smpis00500/cond/orddrid", model.getValue("/root/main/item1/otpt/orddrid"));
  5297. model.makeValue("/root/hidden/smpis00500/cond/orddeptcd", "");
  5298. model.makeValue("/root/hidden/smpis00500/cond/orddrid", "");
  5299. model.makeValue("/root/hidden/smpis00500/cond/codecond", "");
  5300. model.makeValue("/root/hidden/smpis00500/cond/judgrid", "");
  5301. model.makeValue("/root/hidden/smpis00500/cond/cancer", "");
  5302. model.makeValue("/root/hidden/smpis00500/cond/large", "");
  5303. model.makeValue("/root/hidden/smpis00500/cond/middle", "");
  5304. model.makeValue("/root/hidden/smpis00500/cond/small", "");
  5305. model.makeValue("/root/hidden/smpis00500/cond/edicd", "");
  5306. modal("SMPIS00500", "1", "10", "10", "SMPIS00500", "/root/hidden/smpis00500/cond", "/root/send", "", ""); // SMPIS00500_????.xrw
  5307. }
  5308. //2009.08.13 zzu - 청구삭감조회(코드별 청구 hx.보기)
  5309. function fOpenSMPIS00600Detail_O() {
  5310. var irow = grd_clodhist.row;
  5311. var today = getCurrentDate();
  5312. var fromdd = today.toDate().getAddDate(-6,"M").getDateFormat("YYYYMM");
  5313. model.makeValue("/root/hidden/smpis00600/cond/patunitsrch", model.getValue("/root/main/item1/otpt/pid"));
  5314. model.makeValue("/root/hidden/smpis00600/cond/code", model.getValue("/root/main/list2/oscl[" + irow + "]/snglcalcscorcd"));
  5315. model.makeValue("/root/hidden/smpis00600/cond/clamym", "");
  5316. model.makeValue("/root/hidden/smpis00600/cond/clamymfrom", fromdd);
  5317. model.makeValue("/root/hidden/smpis00600/cond/clamdgfrom", "");
  5318. model.makeValue("/root/hidden/smpis00600/cond/clamymto", today);
  5319. model.makeValue("/root/hidden/smpis00600/cond/clamdgto", "");
  5320. model.makeValue("/root/hidden/smpis00600/cond/clamflag", "");
  5321. model.makeValue("/root/hidden/smpis00600/cond/ioflag", "I");
  5322. model.makeValue("/root/hidden/smpis00600/cond/insukind", model.getValue("/root/main/item1/otpt/insukindcd"));
  5323. //model.makeValue("/root/hidden/smpis00600/cond/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd"));
  5324. //model.makeValue("/root/hidden/smpis00600/cond/orddrid", model.getValue("/root/main/item1/otpt/orddrid"));
  5325. model.makeValue("/root/hidden/smpis00600/cond/orddeptcd", "");
  5326. model.makeValue("/root/hidden/smpis00600/cond/orddrid", "");
  5327. model.makeValue("/root/hidden/smpis00600/cond/cutonly", "false");
  5328. modal("SMPIS00600", "1", "10", "10", "SMPIS00600", "/root/hidden/smpis00600/cond", "/root/send", "", ""); // SMPIS00600_????.xrw
  5329. }
  5330. // 처방사유조회
  5331. // history.. 진료에 있는화면 기본조건으로 팝업사용..YS(윤샘)요청
  5332. function fPrcpResnRef(){
  5333. // 세션값 받기
  5334. var sUserInfosS = getUserInfos();
  5335. sUserInfosS = sUserInfosS + "|";
  5336. var UserInfosS_Array = sUserInfosS.split("|");
  5337. var userid = UserInfosS_Array[0]; //사용자번호
  5338. var usernm = UserInfosS_Array[1]; //사용자이름
  5339. var posinstcd = UserInfosS_Array[6]; //근무지기관코드
  5340. var posinstnm = UserInfosS_Array[7]; //근무지기관명
  5341. var posdeptcd = UserInfosS_Array[4]; //소속부서코드
  5342. var posdeptnm = UserInfosS_Array[5]; //소속부서명
  5343. model.makeValue("/root/tmp/prcpresnref/info/pid", model.getValue("/root/main/item1/otpt/pid")); // 등록번호
  5344. model.makeValue("/root/tmp/prcpresnref/info/fromdd", model.getValue("/root/main/item1/otpt/orddd")); // 처방시작일 default orddd
  5345. model.makeValue("/root/tmp/prcpresnref/info/todd", model.getValue("/root/main/item1/otpt/orddd")); // 처방종료일 default "99991231"
  5346. // model.makeValue("/root/tmp/prcpresnref/info/orddeptcd", model.getValue("/root/main/item1/otpt/orddeptcd")); // 진료과 : 주진료과
  5347. model.makeValue("/root/tmp/prcpresnref/info/orddeptcd", "-"); // 진료과 : 주진료과
  5348. model.makeValue("/root/tmp/prcpresnref/info/orddrid","-"); // 주치의 : default "-"
  5349. model.makeValue("/root/tmp/prcpresnref/info/mainjudgid", "-"); // 심사자 : 현재심사자
  5350. model.makeValue("/root/tmp/prcpresnref/info/prcpcd", model.getvalue("/root/main/list2/oscl[" + grd_clodhist.row + "]/grupcalcscorcd")); // 수가코드 : 그룹코드
  5351. model.makeValue("/root/tmp/prcpresnref/info/insukind", model.getValue("/root/main/item1/otpt/insukindcd")); // 보험유형 : 환자보험유형
  5352. model.makeValue("/root/tmp/prcpresnref/info/ioflag", "O"); // 내원유형 : default "-"
  5353. model.makeValue("/root/tmp/prcpresnref/info/resncd", "FF"); // 사유구분 : default "FF" : 중복처방사유
  5354. model.makeValue("/root/tmp/prcpresnref/info/popup", "judg"); // 팝업사용처구분 : judg(심사)
  5355. modal("SPMMO19000_중복처방사유조회", "", "400", "300", "", "/root/tmp/prcpresnref/info", "/root/tmp/prcpresnref/info");
  5356. model.removeNode("/root/tmp/prcpresnref");
  5357. }