MMR03700.xjs 175 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[
  3. /*
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. 마취환자기록 ( SMMMR03700_마취환자기록.xfdl - JScript )
  6. - Version :
  7. 1) : Ver.1.00.01
  8. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  9. */
  10. // 마취과 부서코드 (마취통증의학과/통증클리닉)
  11. /*var anstdeptcd = "2090000000";*/
  12. // 수술환자정보
  13. var chkreview = true;
  14. /**
  15. 수술환자 parameter 구조 : mmohoprs수술예약정보 tbl의 정보를 기본으로 함
  16. var param = 구분자'T' + "▦" +
  17. 등록번호 :=pid + "▦" +
  18. 수술확정일자 :=opcnfmdd + "▦" +
  19. (생성번호) :=cretno + "▦" +
  20. 기관코드 :=instcd + "▦" +
  21. 집도과코드 :=perfdeptcd + "▦" +
  22. 집도의 :=perfdrid + "▦" +
  23. 환자구분 :=patflag + "▦" + ==> 외래(I), 입원(O), DSC(D), 응급(E)
  24. 처리구분'F' + "▦" +
  25. 수술예약번호 :=oprsrvno + "▦" +
  26. 수술이력번호 :=ophistno + "▦" +
  27. 조회일자;
  28. */
  29. /**
  30. * @desc : 폼초기화
  31. * @
  32. * @param :
  33. * @return :
  34. * @---------------------------------------------------
  35. */
  36. function fFormInit() {
  37. if( grp_base.btn_tabsize.class == "icon_bottom" ){
  38. grp_base.btn_tabsize.click();
  39. }
  40. // 2009.04.21. 기관코드 셋
  41. ds_grd_main.enableevent = false;
  42. grp_base.Splitter00.position2.left = 458;
  43. sInstcd = sysf_getUserInfo("dutplceinstcd");
  44. loadyn = "Y";
  45. // 수술환자정보
  46. operationdata = sysf_getGlobalVariable("operation");
  47. dsf_setCSVToDs("ds_hidden_operationdata", operationdata);
  48. //2012/12/11 Start 마취기록지 수정사항 적용여부
  49. lf_reqHardCodeInfo(ds_init_applychk,5586);
  50. applychk = ds_init_applychk.getColumn(0,"hardcd");
  51. //2012/12/11 End
  52. //2013/07/22 Start 마취기록지 초기화 버튼 활성화 여부
  53. // mmbfGetHardCodeInfo("/root/send/reqdata", "/root/init/hardcd5870", 5870);
  54. lf_reqHardCodeInfo(ds_init_hardcd5870,5870);
  55. var hardcd5870 = ds_init_hardcd5870.getColumn(0,"hardcd");
  56. if(hardcd5870=="Y" || hardcd5870=="y"){
  57. grp_base.button2.visible=true;
  58. }else{
  59. grp_base.button2.visible=false;
  60. }
  61. //2013/07/22 End
  62. //2016.07.01 Progress Note 정보 조회
  63. lf_reqHardCodeInfo(ds_init_hardcd9964, 9964);
  64. //2017.02.07 Meeting Time 변경시 기록 제어여부
  65. lf_reqHardCodeInfo(ds_init_hardcd9975, 9975);
  66. iv_anstinfo_load = "N";
  67. iv_anstmast_load = "N";
  68. iv_anstprcp_load = "N";
  69. if (ds_hidden_operationdata.rowcount == 0) {
  70. alert("환자 수술정보가 없습니다.");
  71. ds_grd_main.enableevent = true;
  72. return;
  73. }
  74. var operation = operationdata.split("▩");
  75. var oprsrvinfo = operation[1].split("▦");
  76. oprsrvno = oprsrvinfo[0]; // 수술예약번호
  77. if (oprsrvno.length == 0) {
  78. alert("환자 수술정보가 없습니다..");
  79. ds_grd_main.enableevent = true;
  80. return;
  81. }
  82. // 팝업 버튼 활성화..
  83. grp_base.swt_right.case_prog.btn_pca.enable = true;
  84. grp_base.swt_right.case_prog.btn_totalio.enable = true;
  85. // 메인 그리드 클리어..
  86. ds_grd_main.filter("");
  87. ds_grd_main.clearData();
  88. ds_grd_main.addRow();
  89. ds_grd_prog.clearData();
  90. ds_grd_prog.addRow();
  91. ds_grd_vslist.clearData();
  92. ds_grd_vslist.addRow();
  93. ds_grd_timerec.clearData();
  94. ds_grd_timerec.addRow();
  95. // 마취일반정보
  96. grp_base.sw_left.case_anstinfo.iv_anstinfo.url = "emr_anstrecxp::SSMMR05700_마취환자기록일반정보.xfdl";
  97. grp_base.sw_left.case_anstinfo.iv_anstinfo.fFormInit(oprsrvno);
  98. //공통 기본 정보 셋
  99. oprsrvno = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"oprsrvno");
  100. ophistno = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"ophistno");
  101. pid = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"pid");
  102. phngnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"phngnm");
  103. anstrecno = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"anstrecno");
  104. var wt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"wt"); // 2009.06.12. 환자 키/몸무게 셋팅해주기..
  105. var ht = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"ht");
  106. var ibw = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"ibw");
  107. recsetcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"recsetcd"); // 마취일반정보 기본셋
  108. lastespiyn = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"lastespiyn"); // 최종인증저장 여부 값 설정 2014.09.04
  109. // 공통 기본 정보 셋 (마취기록번호)
  110. ds_send_reqdata.setColumn(0,"oprsrvno" , oprsrvno);
  111. ds_send_reqdata.setColumn(0,"ophistno" , ophistno);
  112. ds_send_reqdata.setColumn(0,"pid" , pid);
  113. ds_send_reqdata.setColumn(0,"phngnm" , phngnm);
  114. ds_send_reqdata.setColumn(0,"anstrecno", anstrecno);
  115. var weight = "";
  116. var height = "";
  117. var sibw = "";
  118. if (!utlf_isNull(wt)) { weight = "Wt : " + wt + " kg"; }
  119. if (!utlf_isNull(ht)) { height = "Ht : " + ht + " cm"; }
  120. if (!utlf_isNull(ibw)) { sibw = "IBW : " +ibw; }
  121. //model.makeValue("/root/hidden/cap_vs", height + " / " + weight);
  122. ds_hidden.setColumn(0,"cap_vs", height + " / " + weight + " / " + sibw);
  123. if( anstrecno == "0") {
  124. ds_hidden.setColumn(0,"savestate", "저장상태: 신규");
  125. } else {
  126. if( lastespiyn == "Y") {
  127. ds_hidden.setColumn(0,"savestate", "저장상태: 인증저장");
  128. } else {
  129. ds_hidden.setColumn(0,"savestate", "저장상태: 임시저장");
  130. }
  131. }
  132. // 마취기록정보
  133. grp_base.sw_left.case_anstmast.iv_anstmast.url = "emr_anstrecxp::SSMMR05800_마취환자기록마스터.xfdl";
  134. grp_base.sw_left.case_anstmast.iv_anstmast.fFormInit();
  135. // 마취처방내역조회
  136. fAnstOrdMast();
  137. // 사용자 직종 체킹하기..
  138. fUserAuth();
  139. // 마취일반정보 : default tab 처리
  140. grp_base.sw_left.tabindex = 0;
  141. //var ev = new TabIndexChangeEventInfo;
  142. //frmf_inputEnterKey("grp_base.sw_left", "onchanged", ev );
  143. // 그래프 차트 보여주기...
  144. //fOpenLeft(true);
  145. // 현재일시
  146. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  147. ds_send_reqdata.setColumn(0,"currentdate" , currentdate);
  148. // 2008.10.13. V/S SET 콤보 초기화...
  149. ds_send_setinfo.setColumn(0,"setcd" , "");
  150. // V/S SET LIST 조회
  151. var oParam = {};
  152. oParam.id = "TRMMR04204";
  153. oParam.service = "anstrecapp.AnstRec";
  154. oParam.method = "reqGetAnstSet";
  155. oParam.inds = "reqdata=ds_send_reqdata";
  156. oParam.outds = "ds_init_setlist=item";
  157. oParam.async = false;
  158. oParam.callback = "cf_TRMMR04204";
  159. tranf_submit(oParam);
  160. // V/S마스터 정보 조회
  161. var oParam = {};
  162. oParam.id = "TRMMR04207";
  163. oParam.service = "anstrecapp.AnstRec";
  164. oParam.method = "reqGetVSMast";
  165. oParam.inds = "reqdata=ds_send_reqdata";
  166. oParam.outds = "ds_grd_vslist=item";
  167. oParam.async = false;
  168. oParam.callback = "cf_TRMMR04207";
  169. tranf_submit(oParam);
  170. // V/S마스터 정보 조회
  171. dsf_copyDs(ds_vssetitem, ds_grd_vslist,"replace");
  172. // 마취환자 Progress 조회
  173. var oParam = {};
  174. oParam.id = "TRMMR03703";
  175. oParam.service = "anstrecapp.AnstRec";
  176. oParam.method = "reqGetAnstProg";
  177. oParam.inds = "reqdata=ds_send_reqdata";
  178. oParam.outds = "ds_grd_prog=item";
  179. oParam.async = false;
  180. oParam.callback = "cf_TRMMR03703";
  181. tranf_submit(oParam);
  182. // 2009.02.24. 시간기록 추가..
  183. var nOpcnfmdd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  184. if( !utlf_isNull(nOpcnfmdd) && nOpcnfmdd.length == 8){
  185. ds_send_reqdata.setColumn(0,"currentdate" , nOpcnfmdd + "000000");
  186. }
  187. var oParam = {};
  188. oParam.id = "TRMMR04210";
  189. oParam.service = "anstrecapp.AnstRec";
  190. oParam.method = "reqGetTimeRecMast";
  191. oParam.inds = "reqdata=ds_send_reqdata";
  192. oParam.outds = "ds_timerec=item";
  193. oParam.async = false;
  194. oParam.callback = "cf_TRMMR04210";
  195. tranf_submit(oParam);
  196. ds_send_reqdata.setColumn(0,"currentdate" , currentdate);
  197. // 2009.02.25. 시간기록 가져오기..
  198. fOpenTimeRec();
  199. // 2008.01.07. 그래프 시작일시, 종료일시 셋해주기.. Meeting Time ~ (5분간격 컬럼 표시 : 총 2시간)
  200. var meetingdt = utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdt"));
  201. if (meetingdt.length == 8) {
  202. meetingdt = meetingdt + "0000";
  203. }
  204. fSetGraphFormdt(meetingdt);
  205. // 메인그리드에 그려주자..
  206. fDisplayGrid();
  207. // V/S TChart 그려주자..
  208. //fDisplayChart();
  209. // V/S Set 하기.. (2009.06.22)
  210. var vssetcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"vssetcd");
  211. if (utlf_isNull(vssetcd)) {
  212. ds_anstinfo.setColumn(0,"vssetcd", "0");
  213. } else {
  214. ds_anstinfo.setColumn(0,"vssetcd", vssetcd);
  215. }
  216. // V/S Set 그려주자..
  217. fSetItemDisplay();
  218. // 처방 네비게이션을 위한 추가 함수... (2008.07.22)
  219. var scrnwnd = frmf_findPopup("SPMMB08400");
  220. if(!utlf_isNull(scrnwnd)){
  221. scrnwnd.fCloseOpenEmrWnd();
  222. }
  223. //2016.07.01 [요청번호:20160621011] 마취기록지 Progress 추가
  224. var prognoteCnt = ds_init_hardcd9964.rowcount;
  225. // progress 그리드 초기화 해주기 (디폴트로 20개 로우셋 해주기)
  226. for (var i = ds_grd_prog.rowcount ; i < 20 ; i++) {
  227. ds_grd_prog.addRow();
  228. ds_grd_prog.setColumn(i-1,"progno", i);
  229. if (i <= prognoteCnt) {
  230. var progrec = utlf_transNullToEmpty(ds_grd_prog.getColumn(i-1,"progrec"));
  231. if (progrec.replace(" ", "").length == 0) {
  232. ds_grd_prog.setColumn(i-1,"progrec", ds_init_hardcd9964.getColumn(i-1, "hardcdnm"));
  233. }
  234. } else {
  235. var progrec = utlf_transNullToEmpty(ds_grd_prog.getColumn(i-1,"progrec"));
  236. if (progrec.replace(" ", "").length == 0) {
  237. ds_grd_prog.setColumn(i-1,"progrec", "");
  238. }
  239. }
  240. }
  241. loadyn = "N";
  242. ds_grd_main.enableevent = true;
  243. }
  244. function cf_TRMMR04204(sSvcId, nErrorCode, sErrorMsg) {
  245. if(nErrorCode < 0) return;
  246. }
  247. function cf_TRMMR04207(sSvcId, nErrorCode, sErrorMsg) {
  248. if(nErrorCode < 0) return;
  249. }
  250. function cf_TRMMR03703(sSvcId, nErrorCode, sErrorMsg) {
  251. if(nErrorCode < 0) return;
  252. }
  253. function cf_TRMMR04210(sSvcId, nErrorCode, sErrorMsg) {
  254. if(nErrorCode < 0) return;
  255. }
  256. /**
  257. * @---------------------------------------------------
  258. * @creat : 20110418
  259. * @author : 최원돈
  260. * @desc : 마취환자 CDIS처방 투여일시 가져오기
  261. * @---------------------------------------------------
  262. */
  263. function lf_searchAnstCdisItem()
  264. {
  265. ds_grd_main.enableevent = false;
  266. if (iv_anstprcp_load == "Y")
  267. {
  268. grp_base.sw_left.case_anstprcp.iv_anstprcp.searchAnstCdisItem(anstrecno, grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm")) // 마취환자 CDIS처방 투여일시 조회
  269. // 메인 그리드에 그려주자..
  270. fDisplayGrid();
  271. // V/S TChart 그려주자..
  272. fDisplayChart();
  273. // V/S
  274. var gridObj = grp_base.grd_main;
  275. var firstRow = "";
  276. for (var i=2 ; i < grp_base.grd_main.rowcount ; i++) {
  277. var tmplinktype = grp_base.grd_main.getCellText(i, "linktype");
  278. if (tmplinktype == "V" && vslist == "on" && !utlf_isNull(firstRow)) {
  279. //gridObj.rowhidden(i) = false;
  280. grp_base.grd_main.setFormatRowProperty(i, "size", 24);
  281. }
  282. if (tmplinktype == "V" && vslist == "off" && !utlf_isNull(firstRow)) {
  283. //gridObj.rowhidden(i) = true;
  284. grp_base.grd_main.setFormatRowProperty(i, "size", 0);
  285. }
  286. if (tmplinktype == "V" && utlf_isNull(firstRow)) {
  287. firstRow = "ok";
  288. }
  289. }
  290. }
  291. ds_grd_main.enableevent = true;
  292. }
  293. /**
  294. * @desc : 처방내역
  295. * @
  296. * @param :
  297. * @return :
  298. * @---------------------------------------------------
  299. */
  300. function fAnstOrdMast()
  301. {
  302. if (iv_anstprcp_load == "N") {
  303. // 2016.09.30 현재 시점에서 작성 시점으로 변경
  304. var nOpcnfmdd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  305. if( !utlf_isNull(nOpcnfmdd) && nOpcnfmdd.length == 8){
  306. nOpcnfmdd = nOpcnfmdd + "000000";
  307. }
  308. // 마취 기록 & 처방
  309. grp_base.sw_left.case_anstprcp.iv_anstprcp.url = "emr_anstrecxp::SSMMR05900_마취환자기록처방목록.xfdl";
  310. grp_base.sw_left.case_anstprcp.iv_anstprcp.fFormInit(anstrecno, nOpcnfmdd);
  311. iv_anstprcp_load = "Y";
  312. }
  313. }
  314. /**
  315. * @desc : 그래프 시작일시 셋해주기.. 마취시작시간 ~ (5분간격 컬럼 표시 : 총 2시간)
  316. * @
  317. * @param :
  318. * @return :
  319. * @author :
  320. * @---------------------------------------------------
  321. */
  322. function fSetGraphFormdt(fromdt)
  323. {
  324. var fromdd = fromdt.substr(0,8);
  325. var fromhr = fromdt.substr(8,2);
  326. var frommin = fromdt.substr(10,2);
  327. // 6분 시작 -> 5분/10분, 14분 시작 -> 10분/15분
  328. var share = parseInt(frommin / 5);
  329. frommin = 5 * share;
  330. if (("" + frommin).length == 1) { frommin = "0" + frommin; }
  331. graph_fromdt = "" + fromdd + fromhr + frommin;
  332. }
  333. /**
  334. * @desc : 그래프의 시작시간 가져오기
  335. * @
  336. * @param :
  337. * @return :
  338. * @author :
  339. * @---------------------------------------------------
  340. */
  341. function fGetGraphFormdt(fromdt)
  342. {
  343. var fromdd = fromdt.substr(0,8);
  344. var fromhr = fromdt.substr(8,2);
  345. var frommin = fromdt.substr(10,2);
  346. // 6분 시작 -> 5분/10분, 14분 시작 -> 10분/15분
  347. var share = parseInt(frommin / 5);
  348. frommin = 5 * share;
  349. if (("" + frommin).length == 1) { frommin = "0" + frommin; }
  350. return "" + fromdd + fromhr + frommin;
  351. }
  352. /**
  353. * @desc : 마취 정보 넘겨주기
  354. * @
  355. * @param :
  356. * @return :
  357. * @author :
  358. * @---------------------------------------------------
  359. */
  360. function fDisplayGrid()
  361. {
  362. var dataCnt = ds_grd_prog.rowcount;
  363. if (dataCnt == 1) {
  364. if (utlf_isNull(ds_grd_prog.getColumn(0,"progrec"))) {
  365. //grd_prog.deleteRow(grd_prog.rows-1,true);
  366. ds_grd_prog.deleteRow(ds_grd_prog.rowcount - 1);
  367. }
  368. }
  369. //2016.07.01 [요청번호:20160621011] 마취기록지 Progress 추가
  370. var prognoteCnt = ds_init_hardcd9964.rowcount;
  371. // progress 그리드 초기화 해주기 (디폴트로 20개 로우셋 해주기)
  372. for (var i = ds_grd_prog.rowcount ; i < 20 ; i++) {
  373. ds_grd_prog.addRow();
  374. ds_grd_prog.setColumn(i-1,"progno", i);
  375. if (i <= prognoteCnt) {
  376. var progrec = ds_grd_prog.getColumn(i-1,"progrec");
  377. if (utlf_transNullToEmpty(progrec).toString().replace(" ", "").length == 0) {
  378. ds_grd_prog.setColumn(i-1,"progrec", ds_init_hardcd9964.getColumn(i-1, "hardcdnm"));
  379. }
  380. }
  381. }
  382. // 메인 그리드 초기화
  383. fGridLoad();
  384. //this.grp_base.grd_main.setCellProperty("body",1,"align","left");
  385. }
  386. /**
  387. * @desc : 그리드 초기화
  388. * @
  389. * @param :
  390. * @return :
  391. * @---------------------------------------------------
  392. */
  393. function fGridLoad()
  394. {
  395. ds_grd_main.enableevent = false;
  396. // 컬럼에 날짜, 시간, 분 셋하기... + 총용량 + 단위 (추가)
  397. fAddColDate();
  398. // 그리드 로우 초기화 (타이틀 3 row)
  399. ds_grd_main.clearData();
  400. // 1. progress (0번째 row)
  401. var newrow = ds_grd_main.addRow();
  402. ds_grd_main.setColumn(newrow, "type","Progress");
  403. ds_grd_main.setColumn(newrow, "linktype", "P");
  404. ds_grd_main.setColumn(newrow, "sorttype",sorttype_progress);
  405. ds_grd_main.setColumn(newrow, "sortno", 1);
  406. fDisplayProgress();
  407. ds_grd_main.enableevent = false;
  408. // *. 시작종료 (1번째 row)
  409. newrow = ds_grd_main.addRow();
  410. ds_grd_main.setColumn(newrow, "type","시작종료");
  411. ds_grd_main.setColumn(newrow, "linktype", "S");
  412. ds_grd_main.setColumn(newrow, "sorttype", sorttype_startend);
  413. ds_grd_main.setColumn(newrow, "sortno", 1);
  414. // fDisplayStartEnd();
  415. // 2009.02.24. 시작종료 심볼 표시하기...
  416. fDisplayTimeRec();
  417. ds_grd_main.enableevent = false;
  418. // 2. V/S item display + data display
  419. var dataCnt = ds_grd_vslist.rowcount;
  420. for (var i = 0 ; i < dataCnt ; i++) {
  421. var checked = ds_grd_vslist.getColumn(i,"checked");
  422. if (checked == "true") {
  423. var vsitemnm = ds_grd_vslist.getColumn(i,"vsitemnm");
  424. var vsitemcd = ds_grd_vslist.getColumn(i,"vsitemcd");
  425. fAddVS( vsitemnm, vsitemcd);
  426. fDisplayAnstItem(ds_grd_main.rowcount-1);
  427. }
  428. }
  429. // 2008.01.07. 마취시작시간을 입력하기...
  430. if (graph_fromdt.length != 12) {
  431. alert("Meeting Time을 입력하시기 바랍니다.");
  432. chkreview = false;
  433. ds_grd_main.enableevent = true;
  434. //fOpenLeft(true);
  435. return;
  436. }
  437. chkreview = true;
  438. // 3. agent / drug / fluid
  439. var dataCnt = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  440. var tmpprcpcd;
  441. // 차트 그리드 에 표시
  442. for (var i = 0 ; i < dataCnt ; i++) {
  443. var prcptype = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"prcptype");
  444. var prcpcd = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"prcpcd");
  445. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  446. var prcpseqno= this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"prcpseqno");
  447. var sortno = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"sortno");
  448. var checked = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.getColumn(i,"checked");
  449. if (prcptype == "A" || prcptype == "D" || prcptype == "F" || prcptype == "H") {
  450. if (checked == "true") {
  451. // 로우 추가
  452. fAddRow(prcptype, prcpcd, sortno, prcpseqno)
  453. // 투여용량, 시작시간, 종료시간 표시하기
  454. fDisplayAnstItem(ds_grd_main.rowcount-1);
  455. }
  456. }
  457. }
  458. // 입력 불가 모드 (Progress)
  459. //grd_main.isReadOnly(row_progress , grd_main.fixedcols, row_progress , grd_main.cols - 1) = true;
  460. ds_grd_main.rowposition =-1;
  461. // 2008.11.07. 메인 그리드 sort 처리..
  462. fGridSort();
  463. ds_grd_main.enableevent = true;
  464. }
  465. /**
  466. * @desc : 마취기록 메인 그리드에서 항목 로우 추가하기...
  467. * @
  468. * @param :
  469. * @return :
  470. * @---------------------------------------------------
  471. */
  472. function fAddRow(prcptype, prcpcd, sortno, prcpseqno)
  473. {
  474. ds_grd_main.enableevent = false;
  475. var sorttype;
  476. switch (prcptype){
  477. case "A": sorttype = sorttype_agent; break;
  478. case "D": sorttype = sorttype_drug; break;
  479. case "F": sorttype = sorttype_fluid; break;
  480. case "H": sorttype = sorttype_blood; break;
  481. }
  482. if (prcptype == "A" || prcptype == "D" || prcptype == "F" || prcptype == "H") {
  483. // 로우 추가
  484. var addrow = ds_grd_main.addRow();
  485. ds_grd_main.setColumn(addrow,"linkcd",prcpcd);
  486. ds_grd_main.setColumn(addrow,"linktype", prcptype);
  487. ds_grd_main.setColumn(addrow,"sorttype", sorttype);
  488. ds_grd_main.setColumn(addrow,"sortno", sortno);
  489. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  490. ds_grd_main.setColumn(addrow,"linkseqno", prcpseqno);
  491. // 처방 타입을 보여주기
  492. if (prcptype == "A") {
  493. ds_grd_main.setColumn(addrow,"type", "Agent");
  494. } else if (prcptype == "D") {
  495. ds_grd_main.setColumn(addrow,"type", "Drug");
  496. } else if (prcptype == "F") {
  497. ds_grd_main.setColumn(addrow,"type", "Fluid");
  498. } else if (prcptype == "H") {
  499. ds_grd_main.setColumn(addrow,"type", "Blood");
  500. }
  501. // 약어명 보여주기
  502. var abbrnm = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", prcpcd,"abbrnm");
  503. var prcpnm = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", prcpcd,"prcpnm");
  504. if (!utlf_isNull(abbrnm)) {
  505. ds_grd_main.setColumn(addrow,"linknm",abbrnm);
  506. } else {
  507. ds_grd_main.setColumn(addrow,"linknm",prcpnm);
  508. }
  509. // 총용량을 계산하나??
  510. var totvolyn = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", prcpcd,"totvolyn");
  511. if (totvolyn == "Y") {
  512. // 기록된 용량 다 더해주기.. 총용량 보여주기
  513. ds_grd_main.setColumn(addrow,"totalvol", fGetTotalRecVol(prcpcd, prcpseqno,""));
  514. var prcpvolunitnm = this.grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", prcpcd,"prcpvolunitnm");
  515. ds_grd_main.setColumn(addrow,"volunit", prcpvolunitnm);
  516. }
  517. // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리, 일단 보류
  518. //grd_main.cellstyle("font-weight", addrow, 1, addrow, 1) = "bold";
  519. //grp_base.grd_main.setCellProperty("body",1,"style","font:EXPR(getColumn(currow,'linkcd') == '" + prcpcd + "' && getColumn(currow,'linktype')!='V'?'Dotum,9,bold':'')");
  520. if(loadyn == "N")
  521. {
  522. ds_grd_main.setColumn(addrow,"boldyn", "Y");
  523. }
  524. ds_grd_main.setColumn(addrow,"viewyn", "Y");
  525. }
  526. ds_grd_main.enableevent = true;
  527. }
  528. /**
  529. * @desc : Agent, Drug, Fluid, Blood 인 경우 투여용량, 시작시간, 종료시간 표시하기
  530. * @
  531. * @param :
  532. * @return :
  533. * @---------------------------------------------------
  534. *
  535. */
  536. function fDisplayAnstItem(row)
  537. {
  538. ds_grd_main.enableevent = false;
  539. // grp_base.grd_main.enableredraw = false;
  540. var gridObj = grp_base.grd_main;
  541. var dsObj = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  542. var dsObj_anstprcp = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item;
  543. var linkcd = ds_grd_main.getColumn(row, "linkcd");
  544. var linktype = ds_grd_main.getColumn(row, "linktype");
  545. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  546. var linkseqno = ds_grd_main.getColumn(row, "linkseqno");
  547. ds_grd_main.addColumn("color", "string", 256);
  548. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다.. (agent,drug,fluid,blood)
  549. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다.. (v/s)
  550. // 2008.09.22. time out chrck 확인한다.. time out chrck보다 선택된 시작시간이 작으면 time out chrck으로 저장한다.. (agent,drug,fluid,blood)
  551. if (linktype == "V") {
  552. var anstfromdt = dsObj.getColumn(0,"meetingdd") + dsObj.getColumn(0,"meetingtm");
  553. } else {
  554. var anstfromdt = dsObj.getColumn(0,"anstfromdd") + dsObj.getColumn(0,"anstfromtm");
  555. }
  556. var anstfromdt = utlf_transNullToEmpty(dsObj.getColumn(0,"meetingdd")) + utlf_transNullToEmpty(dsObj.getColumn(0,"meetingtm"));
  557. if (anstfromdt.length != 12) {
  558. ds_grd_main.enableevent = true;
  559. // grp_base.grd_main.enableredraw = true;
  560. return;
  561. }
  562. var totvolyn = dsObj_anstprcp.lookup("prcpcd", linkcd, "totvolyn");
  563. var clscd = dsObj_anstprcp.lookup("prcpcd", linkcd, "clscd");
  564. // 2008.10.20. 마취기록지 컬러 주기..
  565. /*
  566. 1. Agent - 구분이 01
  567. @ Air -> 노란색
  568. @ N2O -> 하늘색
  569. @ O2 -> 녹색
  570. @ 그밖의 마취가스 -> 주황색
  571. 2. Agent - 그외 02,03,04 (토탈용량 기록여부에 따라)
  572. @ 용량 -> 회색
  573. @ 농도 -> 연노란색
  574. 2. Drug -> 보라색
  575. 3. Fluid -> 살구색
  576. 4. Blood -> 연두색
  577. */
  578. if (linktype != "V") {
  579. // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리
  580. ds_grd_main.setColumn(row,"boldyn", "Y");
  581. }
  582. for (var j = col_fromdt + 1 ; j < parseInt(col_todt) + parseInt(col_fromdt) ; j++) {
  583. ds_grd_main.setColumn(row,lf_getBindCellName(grp_base.grd_main,j),"");
  584. }
  585. //gridObj.rowstyle(row, "data", "background-color") = "#ffffff";
  586. // 처방목록에 시작시간, 종료시간 셋 해주자~
  587. //var ref = "/root/main/anstitem/item";
  588. var refDs = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  589. var dataCnt = refDs.rowcount;
  590. for (var i=0 ; i < dataCnt ; i++) {
  591. var tmplinkcd = refDs.getColumn(i,"linkcd");
  592. var tmplinkseqno = refDs.getColumn(i,"linkseqno");
  593. if (tmplinkcd == linkcd && tmplinkseqno == linkseqno) {
  594. var fromdt = refDs.getColumn(i,"fromdt");
  595. var todt = refDs.getColumn(i,"todt");
  596. var rec = refDs.getColumn(i,"rec");
  597. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다.. (agent,drug,fluid,blood)
  598. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다.. (v/s)
  599. if (fromdt == anstfromdt) {
  600. fromdt = fGetGraphFormdt(fromdt);
  601. }
  602. if (utlf_isNull(todt)) { todt = fromdt; }
  603. fromdt.substr(0,12);
  604. todt.substr(0,12);
  605. for (var j = col_fromdt + 1 ; j <= parseInt(col_todt)+ parseInt(col_fromdt); j++) {
  606. var graphappyn = ds_grd_vslist.lookup("vsitemcd", linkcd, "graphappyn");
  607. var colDate = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  608. if (fromdt <= colDate && colDate <= todt) {
  609. if (linktype != "V") {
  610. // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리
  611. ds_grd_main.setColumn(row,"boldyn", "N");
  612. }
  613. if (!utlf_isNull(rec)) {
  614. //gridObj.textMatrix(row, j) = rec;
  615. ds_grd_main.setColumn(row,lf_getBindCellName(grp_base.grd_main,j),rec);
  616. rec = "";
  617. } else {
  618. //gridObj.textMatrix(row, j) = "·";
  619. ds_grd_main.setColumn(row,lf_getBindCellName(grp_base.grd_main,j),"·");
  620. }
  621. }
  622. // 2008.10.20. Display 루프 빠져나오기..
  623. if (colDate > todt ) {
  624. break;
  625. }
  626. }
  627. }
  628. }
  629. // agent, drug, blood 인 경우 시작용량이 정량보다 작은 경우 처방용량에 적용한다.
  630. // fulid 인 경우 시작용량이 정량보다 작은 경우 처방총용량에 적용하지 않는다.
  631. if (linktype == "A" || linktype == "D" || linktype == "F" || linktype == "H") {
  632. // 기록 총용량 계산해 보여주기..
  633. var recvol = fGetTotalRecVol(linkcd, linkseqno,"");
  634. //gridObj.textmatrix(row,col_prcpvol) = recvol;
  635. ds_grd_main.setColumn(row,"totalvol",recvol);
  636. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  637. var refDs = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item;
  638. var dataCnt = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  639. for (var i=0 ; i < dataCnt ; i++) {
  640. // 총용량 계산하여 보여주기
  641. var prcpcd = refDs.getColumn(i,"prcpcd");
  642. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  643. var prcpseqno = refDs.getColumn(i,"prcpseqno");
  644. if (linkcd == prcpcd && linkseqno == prcpseqno) {
  645. refDs.setColumn(i,"recvol", recvol);
  646. if (linktype == "F") {
  647. recvol = fGetTotalRecVol(linkcd, linkseqno, "sub");
  648. }
  649. // 처방 총용량 계산해 보여주기..
  650. var prcpvol = fGetTotalPrcpVol(linkcd, recvol);
  651. refDs.setColumn(i,"prcpvol", prcpvol);
  652. }
  653. }
  654. }
  655. ds_grd_main.enableevent = true;
  656. // grp_base.grd_main.enableredraw = true;
  657. }
  658. /**
  659. * @desc : V/S TChart 그리기
  660. * @
  661. * @param :
  662. * @return :
  663. * @author :
  664. * @---------------------------------------------------
  665. */
  666. function fDisplayChart()
  667. {
  668. // set 을 선택한 경우 모든 V/S item checked = false 하고
  669. var dataCnt = ds_grd_vslist.rowcount ;
  670. for (var i = 0 ; i < dataCnt ; i++) {
  671. ds_grd_vslist.setColumn(i,"checked", "false");
  672. }
  673. // set item 을 checked = true 한다.
  674. var dataCnt2 = ds_vssetitem.rowcount;
  675. for (var j = 0 ; j < dataCnt2 ; j++) {
  676. var vsitemcd = ds_vssetitem.getColumn(j,"vsitemcd");
  677. ds_grd_vslist.setColumn(ds_grd_vslist.findRowExpr("vsitemcd == '"+ vsitemcd +"'"),"checked", "true");
  678. //model.setValue("/root/main/vslist/item[vsitemcd = '"+ vsitemcd +"']/checked", "true");
  679. }
  680. // V/S 항목 hidden..
  681. fHiddenVS();
  682. if(applychk=="Y"){
  683. fSetGrdColor();
  684. }
  685. }
  686. /**
  687. * @desc : V/S 항목 hidden..
  688. * @
  689. * @param :
  690. * @return :
  691. * @author :
  692. * @---------------------------------------------------
  693. */
  694. function fHiddenVS()
  695. {
  696. // V/S 항목 hidden..
  697. ds_grd_main.enableevent = false;
  698. ds_grd_main.filter("");
  699. var rvalue = "";
  700. for (var k = 0 ; k < ds_grd_main.rowcount ; k++)
  701. {
  702. var linktype = ds_grd_main.getColumn(k,"linktype");
  703. if (linktype == "V")
  704. {
  705. var linkcd = ds_grd_main.getColumn(k,"linkcd");
  706. var checked = ds_grd_vslist.lookup("vsitemcd", linkcd,"checked");
  707. if (checked == "true" || checked == "1")
  708. {
  709. ds_grd_main.setColumn(k,"viewyn","Y");
  710. } else
  711. {
  712. ds_grd_main.setColumn(k,"viewyn","N");
  713. }
  714. } else
  715. {
  716. ds_grd_main.setColumn(k,"viewyn","Y");
  717. }
  718. }
  719. ds_grd_main.filter("viewyn == 'Y'");
  720. ds_grd_main.enableevent = true;
  721. }
  722. /**
  723. * @desc : 시간을 컬럼에 보여주기
  724. * @
  725. * @param :
  726. * @return :
  727. * @author :
  728. * @---------------------------------------------------
  729. */
  730. function fAddColDate()
  731. {
  732. // merge했던 그리드를 split으로 푼후 다시 merge한다
  733. if(mergeFlag == "Y"){
  734. grp_base.grd_main.splitContentsCell("Head",0,8,0,296,true);
  735. }
  736. // 일시 : 날짜+시+분
  737. var fromdt = graph_fromdt;
  738. var fromdtMin = graph_fromdt;
  739. var lCol_todt = grp_base.grd_main.getCellCount("Head");
  740. var enddd,endhr,endmin;
  741. // 그리드 헤더 시간표시위해 병합
  742. for (var i = col_fromdt ; i < (lCol_todt /2) +1; i++) {
  743. grp_base.grd_main.setCellProperty("Head",i,"text",fromdt.substr(0,4) + "/" + fromdt.substr(4,2) + "/" +fromdt.substr(6,2) + " [" + fromdt.substr(8,2) + "시]"); //(" +d+ ")
  744. //grp_base.grd_main.setFormatColProperty(new Number(i+2),"size",35);
  745. if(i == (lCol_todt / 2) - 1){
  746. enddd = fromdt.substr(6,2);
  747. endhr = fromdt.substr(8,2);
  748. mergeFlag = "Y";
  749. }
  750. var tmpdt = fromdt.toDate("YYYYMMDDhhmm");
  751. var rtndt = tmpdt.getAddDate(5, "m");
  752. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  753. }
  754. // 분 표시
  755. var lCol_todt2 = grp_base.grd_main.getCellCount("Head");
  756. ds_timeheader.clear();
  757. for (var i = 8 ; i <= (lCol_todt2 /2) ; i++) {
  758. var colno = i + 1;
  759. ds_timeheader.addColumn("t"+ colno,"string",256);
  760. if(i== 8)
  761. {
  762. ds_timeheader.addRow();
  763. ds_timeheader.addRow();
  764. }
  765. //var u = (i+ col_fromdt);
  766. var j = ((lCol_todt2 /2)+i) -1;
  767. grp_base.grd_main.setCellProperty("Head",j,"text",fromdtMin.substr(10,2));
  768. // 임시로 저장할 값.
  769. var si = grp_base.grd_main.getCellProperty("Head",i,"text");
  770. si = si.replace(" [","");
  771. si = si.replace("시]","");
  772. si = si.replace("/","");
  773. ds_timeheader.setColumn(0,"t"+ colno, si);
  774. ds_timeheader.setColumn(1,"t"+ colno, fromdtMin.substr(10,2));
  775. if( i == ( (lCol_todt2 /2) - 4 ) -1){
  776. endmin = fromdtMin.substr(10,2);
  777. }
  778. var tmpdt = fromdtMin.toDate("YYYYMMDDhhmm");
  779. var rtndt = tmpdt.getAddDate(5, "m");
  780. fromdtMin = rtndt.getDateFormat("YYYYMMDDhhmm");
  781. }
  782. // 시간표시된 헤더 같은 시간별로 가로 병합.
  783. var cnt = 0;
  784. for(var i= (lCol_todt /2 ) ; i > col_fromdt -1 ; i--){
  785. var cur = utlf_transNullToEmpty(grp_base.grd_main.getCellProperty("Head",i,"text"));
  786. var bef = utlf_transNullToEmpty(grp_base.grd_main.getCellProperty("Head",i-1,"text"));
  787. if(cur == bef){
  788. cnt++;
  789. }else{
  790. var mergecol = grp_base.grd_main.mergeContentsCell("Head",0,i+1,0,i+cnt+1,i,false);
  791. cnt = 0;
  792. }
  793. }
  794. graph_todt = "" + enddd + endhr + endmin;
  795. }
  796. /**
  797. * @desc : 메인 그리드에 시간 추가하기.. (2시간 단위로)
  798. * @
  799. * @param :
  800. * @return :
  801. * @author :
  802. * @---------------------------------------------------
  803. */
  804. // function fAddColDateHr()
  805. // {
  806. // // 2008.10.09. 메인 그리드에 시간 추가하기.. (2시간 단위로)
  807. // var end_col = col_todt + 24;
  808. // // 일시 : 날짜+시+분
  809. // var todt = graph_todt;
  810. //
  811. // for (var i = col_todt ; i < end_col ; i++) {
  812. //
  813. // if (i >= grp_base.grd_main.getCellCount("Head")) {
  814. // // 2010.02.12 이은영 마취기록 메인 화면에 30분 단위로 굵은 선을 보여줌..
  815. // if (todt.substr(10,2) == "25" || todt.substr(10,2) == "55") {
  816. // //grd_main.addColumn("ref:t"+ (i - col_todt + 1) +";type:input;text-align:center;_chartype=upper;border-right-color:#ccecff;border-right-width:2px;border-style:solid",false);
  817. // var ncol= grp_base.grd_main.appendContentsCol();
  818. // grp_base.grd_main.setCellProperty("body",ncol,"displaytype","text");
  819. // grp_base.grd_main.setCellProperty("body",ncol,"edittype","text");
  820. // grp_base.grd_main.setCellProperty("body",ncol,"align","center middle");
  821. // grp_base.grd_main.setCellProperty("body",ncol,"bind","t"+ (i - col_todt + 1));
  822. //
  823. // } else {
  824. // //grd_main.addColumn("ref:t"+ (i - col_todt + 1) +";type:input;text-align:center;_chartype=upper",false);
  825. // var ncol= grp_base.grd_main.appendContentsCol();
  826. // grp_base.grd_main.setCellProperty("body",ncol,"displaytype","text");
  827. // grp_base.grd_main.setCellProperty("body",ncol,"edittype","text");
  828. // grp_base.grd_main.setCellProperty("body",ncol,"align","center middle");
  829. // grp_base.grd_main.setCellProperty("body",ncol,"bind","t"+ (i - col_todt + 1));
  830. // }
  831. // }
  832. //
  833. // ds_grd_main.setColumn(0,lf_getBindCellName(grp_base.grd_main,i),fromdt.substr(0,8));
  834. // ds_grd_main.setColumn(1,lf_getBindCellName(grp_base.grd_main,i),fromdt.substr(8,2));
  835. // ds_grd_main.setColumn(2,lf_getBindCellName(grp_base.grd_main,i),fromdt.substr(10,2));
  836. //
  837. // grp_base.grd_main.setRealColSize(i,32);
  838. //
  839. // var tmpdt = todt.toDate("YYYYMMDDhhmm");
  840. // var rtndt = tmpdt.getAddDate(5, "m");
  841. // todt = rtndt.getDateFormat("YYYYMMDDhhmm");
  842. // }
  843. //
  844. // col_todt = end_col;
  845. //
  846. // // 2008.10.09. 마취기록 한번에 처리함..
  847. // var enddd,endhr,endmin;
  848. //
  849. //
  850. // enddd = grp_base.grd_main.getCellText(0,grp_base.grd_main.getCellCount("Head")-1);
  851. // endhr = grp_base.grd_main.getCellText(1,grp_base.grd_main.getCellCount("Head")-1);
  852. // endmin = grp_base.grd_main.getCellText(2,grp_base.grd_main.getCellCount("Head")-1);
  853. //
  854. // graph_todt = "" + enddd + endhr + endmin;
  855. //
  856. // ds_grd_main.rowposition = -1;
  857. // fDisplayGrid();
  858. //
  859. // }
  860. /**
  861. * @desc : V/S 항목 그리드에 추가
  862. * @
  863. * @param :
  864. * @return :
  865. * @author :
  866. * @---------------------------------------------------
  867. */
  868. function fAddVS(vsitemnm, vsitemcd)
  869. {
  870. ds_grd_main.enableevent = false;
  871. var row = ds_grd_main.addRow();
  872. ds_grd_main.setColumn(row,"type", "V/S");
  873. ds_grd_main.setColumn(row,"linknm", vsitemnm);
  874. ds_grd_main.setColumn(row,"linkcd", vsitemcd);
  875. ds_grd_main.setColumn(row,"linktype","V");
  876. ds_grd_main.setColumn(row,"sorttype",sorttype_vs);
  877. ds_grd_main.setColumn(row,"sortno", row - row_startend);
  878. ds_grd_main.setColumn(row,"linkseqno","0");
  879. ds_grd_main.enableevent = true;
  880. }
  881. /**
  882. * @desc : V/S 데이타 셋하기
  883. * @
  884. * @param :
  885. * @---------------------------------------------------
  886. */
  887. function fSetVS(indxRow, indxCol)
  888. {
  889. //var dataPath = "/root/main/vs/item"
  890. var dataCnt = ds_vs.rowcount;
  891. var colDate = ds_timeheader.getColumn(0,"t"+indxCol) + ds_timeheader.getColumn(1,"t"+ indxCol);
  892. var colValue = grp_base.grd_main.getCellText(indxRow,indxCol);
  893. var vsitemnm = grp_base.grd_main.getCellText(indxRow,1);
  894. var vsitemcd = grp_base.grd_main.getCellText(indxRow,2);
  895. for (var i = 0 ; i < dataCnt ; i++) {
  896. var vs = ds_vs.getColumn(i,"vsitemcd");
  897. var fromdt = ds_vs.getColumn(i,"recfromdt");
  898. if (vs == vsitemcd) {
  899. if ( utlf_isNull(fromdt) || fromdt == colDate) {
  900. break;
  901. }
  902. }
  903. }
  904. if (i > dataCnt) {
  905. i = ds_vs.addRow();
  906. }
  907. ds_vs.setColumn(i,"vsitemcd" ,vsitemcd);
  908. ds_vs.setColumn(i,"vsitemnm" ,vsitemnm);
  909. ds_vs.setColumn(i,"vsitemrstl",colValue);
  910. ds_vs.setColumn(i,"recfromdt" ,colDate);
  911. ds_vs.setColumn(i,"rectodt" ,"");
  912. }
  913. function fGetTotalRecVol(prcp, seqno, sub)
  914. {
  915. var totalvol:decimal = 0;
  916. //var totalvol = 0;
  917. var totvolyn = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", prcp, "totvolyn");
  918. if (totvolyn == "Y") {
  919. var refds = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  920. // var prcpvol:decimal = 0;
  921. var prcpvol = 0;
  922. var tmpprcpvol = 0;
  923. for (var i=0 ; i < refds.rowcount ; i++) {
  924. // 총용량 계산하여 보여주기
  925. var prcpcd = refds.getColumn(i,"linkcd");
  926. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  927. var prcpseqno = refds.getColumn(i,"linkseqno");
  928. if (prcp == prcpcd && seqno == prcpseqno) {
  929. if (sub == "sub") {
  930. prcpvol = refds.getColumn(i,"subrec");
  931. } else {
  932. prcpvol = refds.getColumn(i,"rec");
  933. }
  934. if (utlf_isNull(prcpvol)) { prcpvol = 0; }
  935. prcpvol = Number(utlf_transNullToEmpty(prcpvol));
  936. if (utlf_isNum(prcpvol)) {
  937. totalvol = Number(totalvol) + Number(prcpvol);
  938. }
  939. }
  940. }
  941. }
  942. return totalvol;
  943. }
  944. /**
  945. * @desc : 처방타입에 따른 처방 총용량 구하기
  946. * @
  947. * @param :
  948. * @
  949. * @return :
  950. * @author :
  951. * @---------------------------------------------------
  952. */
  953. function fGetTotalPrcpVol(prcp, recvol)
  954. {
  955. grp_base.sw_left.case_anstmast.iv_anstmast.fPrcpMastLoad();
  956. if( !utlf_isNull(grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.filterstr.current) ){
  957. sysf_trace("ds_prcpmast_item.filterstr : " + grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.filterstr.current);
  958. grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.filter("");
  959. }
  960. var totalvol = 0;
  961. var nFindRow = grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.findRow("prcpcd", prcp);
  962. if( nFindRow == -1 ){
  963. sysf_trace(">>>>>>> fGetTotalPrcpVol findRow -1 !!! || ds_prcpmast prcpcd : " + prcp);
  964. }
  965. var prcptype = grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.getColumn(nFindRow , "prcptype");
  966. var totvolyn = grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.getColumn(nFindRow , "totvolyn");
  967. var prcpvolunit = grp_base.sw_left.case_anstmast.iv_anstmast.ds_prcpmast_item.getColumn(nFindRow , "prcpvol");
  968. if (totvolyn == "Y" && Number(prcpvolunit) > 0 && utlf_isNum(recvol)) {
  969. // agent, blood 인 경우 시작용량이 정량보다 작은 경우 처방용량에 적용한다.
  970. // drug 인 경우 정량보다 작은 경우 처방총용량에 적용한다.
  971. if (prcptype == "A" || prcptype == "H" || prcptype == "D") {
  972. totalvol = recvol;
  973. // fulid 인 경우 시작용량이 정량보다 작은 경우 처방총용량에 적용하지 않는다.
  974. } else if (prcptype == "F" ) {
  975. if (utlf_isNull(recvol) || recvol == "0" || recvol == 0){
  976. totalvol = 0;
  977. } else {
  978. var share = parseInt(recvol / prcpvolunit);
  979. totalvol = prcpvolunit * share;
  980. }
  981. }
  982. }
  983. return totalvol;
  984. }
  985. /**
  986. * @desc : Progress 순번 리스트 보여주기.
  987. * @
  988. * @param :
  989. * @return :
  990. * @---------------------------------------------------
  991. *
  992. */
  993. function fOpenProgNo()
  994. {
  995. var gridObj = grp_base.grd_main;
  996. // progress 순번 리스트 가져오기...
  997. //var ref = "/root/main/prog";
  998. var dataCnt = ds_grd_prog.rowcount;
  999. var newrow = 0;
  1000. // 선택 시간
  1001. var colDate = ds_timeheader.getColumn(0,"t"+gridObj.currentcol) + ds_timeheader.getColumn(1,"t"+gridObj.currentcol);
  1002. // 그리드 초기화
  1003. ds_grd_progno.clearData();
  1004. //2016.10.12 (#739) 마취기록 Progress Note 우클릭 시 선택할 Progress No 표현 오류
  1005. var refds_anstinfo = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  1006. var meetingdt = refds_anstinfo.getColumn(0,"meetingdd") + utlf_transNullToEmpty(refds_anstinfo.getColumn(0,"meetingtm"));
  1007. // 그리드에 progress 순번 리스트 보여주기...
  1008. for (var i = 0 ; i < dataCnt ; i++) {
  1009. // progress 기록이 있는 경우만...
  1010. var progrec = ds_grd_prog.getColumn(i,"progrec");
  1011. if (!utlf_isNull(progrec)) {
  1012. var fromdt = ds_grd_prog.getColumn(i,"progfromdt");
  1013. var progno = ds_grd_prog.getColumn(i,"progno");
  1014. // progress 시작시간이 없는 경우 add 해주기
  1015. if (utlf_isNull(fromdt)) {
  1016. newrow = ds_grd_progno.addRow();
  1017. ds_grd_progno.setColumn(newrow,"checked", "false");
  1018. ds_grd_progno.setColumn(newrow,"progno", progno);
  1019. }
  1020. // progress 시작시간이 같은 경우 체크해주기
  1021. if (fromdt == colDate
  1022. || (!utlf_isNull(meetingdt) && meetingdt.length == 12 && colDate < meetingdt && fromdt == meetingdt)) {
  1023. newrow = ds_grd_progno.addRow();
  1024. ds_grd_progno.setColumn(newrow,"checked", "true");
  1025. ds_grd_progno.setColumn(newrow,"progno", progno);
  1026. }
  1027. }
  1028. }
  1029. if (ds_grd_progno.rowcount > 0) {
  1030. fShowWndIptBox("prog");
  1031. }
  1032. }
  1033. /**
  1034. * @desc :Progress 순번 리스트 팝업 (시간 셋)
  1035. * @ 마취기록 추가기록의 팝업
  1036. * @param :
  1037. * @return :
  1038. * @---------------------------------------------------
  1039. */
  1040. function fShowWndIptBox(job)
  1041. {
  1042. grup_prog.visible = false;
  1043. grup_startend.visible = false;
  1044. grup_range.visible = false;
  1045. grup_vs.visible = false;
  1046. if (job == "prog") {
  1047. grup_prog.position.left = clientX-20;
  1048. grup_prog.position.top = clientY-10;
  1049. grup_prog.position.width = 90;
  1050. grup_prog.position.height = 180;
  1051. grup_prog.visible = true;
  1052. } else if (job == "startend") {
  1053. grup_startend.position.left = clientX-10;
  1054. grup_startend.position.top = clientY-10;
  1055. grup_startend.position.width = 72;
  1056. grup_startend.position.height = 215;
  1057. grup_startend.visible = true;
  1058. } else if (job == "range") {
  1059. grup_range.position.left = clientX-10;
  1060. grup_range.position.top = grp_base.grd_main.position.top + 130 + "px";
  1061. grup_range.position.width = 75;
  1062. grup_range.position.height = 294;
  1063. grup_range.visible = true;
  1064. } else if (job == "vslist") {
  1065. grup_vs.position.left = clientX+20;
  1066. grup_vs.position.top = grp_base.grd_main.position.top + 130 + "px";
  1067. grup_vs.position.width = 105;
  1068. grup_vs.position.height = 215;
  1069. grup_vs.visible = true;
  1070. }
  1071. }
  1072. /**
  1073. * @desc : Progress 순번에 시간을 설정해 준다.
  1074. * @
  1075. * @param :
  1076. * @return :
  1077. * @---------------------------------------------------
  1078. *
  1079. */
  1080. function fSetProgress()
  1081. {
  1082. grup_prog.visible = false;
  1083. //var ref = "/root/main/prog/item";
  1084. var dataCnt = ds_grd_prog.rowcount;
  1085. var refds_anstinfo = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  1086. var gridObj = grp_base.grd_main;
  1087. var j = gridObj.currentcol;
  1088. // 선택 시간
  1089. var colDate = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  1090. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다..
  1091. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다..
  1092. var meetingdt = refds_anstinfo.getColumn(0,"meetingdd") + utlf_transNullToEmpty(refds_anstinfo.getColumn(0,"meetingtm"));
  1093. if (meetingdt.length != 12) {
  1094. //alert("마취시작시간을 확인하시기 바랍니다.");
  1095. return;
  1096. }
  1097. if (colDate < meetingdt) {
  1098. colDate = meetingdt;
  1099. }
  1100. gridObj = grup_prog.grd_progno;
  1101. for (var i = 0 ; i < ds_grd_progno.rowcount ; i++) {
  1102. // 그리드의 선택된 Progress 순번 가져오기...
  1103. var checked = ds_grd_progno.getColumn(i,"checked");
  1104. var no = ds_grd_progno.getColumn(i,"progno");
  1105. if (checked == "true" || checked == "1") {
  1106. // 체킹된 경우 progress 순번의 시작시간 업데이트...
  1107. for (var j = 0 ; j < dataCnt ; j++) {
  1108. var progno = ds_grd_prog.getColumn(j,"progno");
  1109. if (no == progno) {
  1110. ds_grd_prog.setColumn(j,"progfromdt",colDate);
  1111. break;
  1112. }
  1113. }
  1114. } else {
  1115. // 체킹된 안된 경우 progress 순번의 시작시간 초기화...
  1116. for (var j = 0 ; j < dataCnt ; j++) {
  1117. var progno = ds_grd_prog.getColumn(j,"progno");
  1118. if (no == progno) {
  1119. ds_grd_prog.setColumn(j,"progfromdt","");
  1120. break;
  1121. }
  1122. }
  1123. }
  1124. }
  1125. fDisplayProgress();
  1126. }
  1127. /**
  1128. * @desc : Progress 번호 그리드에 표기하기..
  1129. * @
  1130. * @param :
  1131. * @return :
  1132. * @author :
  1133. * @---------------------------------------------------
  1134. */
  1135. function fDisplayProgress()
  1136. {
  1137. ds_grd_main.enableevent = false;
  1138. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  1139. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다..
  1140. var refds_anstinfo = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  1141. var obj = grp_base.grd_main;
  1142. var meetingdt = utlf_transNullToEmpty(refds_anstinfo.getColumn(0,"meetingdd")) + utlf_transNullToEmpty(refds_anstinfo.getColumn(0,"meetingtm"));
  1143. if (meetingdt.length != 12) {
  1144. ds_grd_main.enableevent = true;
  1145. return;
  1146. }
  1147. // 그리드 초기화
  1148. for (var j = col_fromdt + 1 ; j < parseInt(col_todt) + parseInt(col_fromdt) ; j++) {
  1149. //grd_main.textMatrix(row_progress, j) = "";
  1150. ds_grd_main.setColumn(row_progress,lf_getBindCellName(grp_base.grd_main,j),"");
  1151. }
  1152. var dataCnt = ds_grd_prog.rowcount;
  1153. // 차트 그리드 에 표시
  1154. for (var i = 0 ; i < dataCnt ; i++) {
  1155. var progno = ds_grd_prog.getColumn(i,"progno");
  1156. var fromdt = ds_grd_prog.getColumn(i,"progfromdt");
  1157. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  1158. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다..
  1159. if (fromdt == meetingdt) {
  1160. fromdt = graph_fromdt;
  1161. }
  1162. for (var j = col_fromdt + 1 ; j <= parseInt(col_todt) + parseInt(col_fromdt) ; j++) {
  1163. if ( utlf_isNull(fromdt)) {
  1164. break;
  1165. }
  1166. var colDate = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  1167. if ( colDate == fromdt) {
  1168. //grd_main.textMatrix(row_progress, j) = grd_main.textMatrix(row_progress, j) + "," + progno;
  1169. ds_grd_main.setColumn(row_progress,lf_getBindCellName(obj,j),obj.getCellText(row_progress,j)+ "," + progno);
  1170. var nolist = obj.getCellText(row_progress,j);
  1171. if (nolist.substring(0,1) == "," ) {
  1172. //grd_main.textMatrix(row_progress, j) = nolist.substring(1, nolist.length);
  1173. ds_grd_main.setColumn(row_progress,lf_getBindCellName(obj,j),nolist.substring(1, nolist.length) );
  1174. }
  1175. break;
  1176. }
  1177. }
  1178. }
  1179. ds_grd_main.enableevent = true;
  1180. }
  1181. /**
  1182. * @desc : Progress 순번 리스트 초기화하기.
  1183. * @
  1184. * @param :
  1185. * @return :
  1186. * @---------------------------------------------------
  1187. *
  1188. */
  1189. function fClearProgNo()
  1190. {
  1191. ds_grd_main.enableevent = false;
  1192. grup_prog.visible = false;
  1193. var obj = grp_base.grd_main;
  1194. // progress 순번 리스트 가져오기...
  1195. //var ref = "/root/main/prog";
  1196. var dataCnt = ds_grd_prog.rowcount;
  1197. // 그리드에 progress 순번 리스트 보여주기...
  1198. for (var i = 0 ; i < dataCnt ; i++) {
  1199. ds_grd_prog.setColumn(i,"progfromdt","");
  1200. }
  1201. // 그리드 초기화
  1202. for (var i = col_fromdt + 1 ; i <= parseInt(col_todt) + parseInt(col_fromdt) ; i++) {
  1203. ds_grd_main.setColumn(row_progress,lf_getBindCellName(grp_base.grd_main,i),"");
  1204. }
  1205. ds_grd_main.enableevent = true;
  1206. }
  1207. /**
  1208. * @desc : Agent, Drug, Fluid 인 경우 전체 시간을 클리어한다.
  1209. * @
  1210. * @param :
  1211. * @return :
  1212. * @---------------------------------------------------
  1213. *
  1214. */
  1215. function fClearAnstItem()
  1216. {
  1217. var linkcd = ds_grd_main.getColumn(ds_grd_main.rowposition,"linkcd");
  1218. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  1219. var linkseqno = ds_grd_main.getColumn(ds_grd_main.rowposition,"linkseqno");
  1220. // 투여일시 인스턴스도 삭제
  1221. //grp_base.sw_left.case_anstprcp.iv_anstprcp.fDestroyAnstItem(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem, linkcd, linkseqno);
  1222. grp_base.sw_left.case_anstprcp.iv_anstprcp.fDestroyAnstItem(linkcd, linkseqno);
  1223. // 투여용량, 시작시간, 종료시간 표시하기
  1224. fDisplayAnstItem(ds_grd_main.rowposition);
  1225. }
  1226. /**
  1227. * @desc : Agent, Drug, Fluid, Blood - 용량 기록
  1228. * @
  1229. * @param :
  1230. * @return :
  1231. * @---------------------------------------------------
  1232. *
  1233. */
  1234. function fSetAnstItemRec(Rowno,Colno)
  1235. {
  1236. var gridObj = grp_base.grd_main;
  1237. if (Colno < 0)
  1238. {
  1239. return;
  1240. }
  1241. var linkcd = ds_grd_main.getColumn(Rowno,"linkcd");
  1242. var linktype = ds_grd_main.getColumn(Rowno,"linktype");
  1243. var rec = ds_grd_main.getColumn(Rowno, lf_getBindCellName(gridObj,Colno));
  1244. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  1245. var linkseqno= ds_grd_main.getColumn(Rowno,"linkseqno");
  1246. var refds_anstinfo = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  1247. // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리
  1248. //gridObj.cellstyle("font-weight", gridObj.row, 1, gridObj.row, 1) = "normal";
  1249. //gridObj.setCellProperty("body",1,"style","font:EXPR(getColumn(currow,'linknm') == '" + ds_grd_main.getColumn(ds_grd_main.rowposition,"linknm") + "?'Dotum,9')");
  1250. // 선택된 시작일시
  1251. var j = Colno;
  1252. var fromdt = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  1253. var todt = Number(fromdt) + 4;
  1254. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다.. (agent,drug,fluid,blood)
  1255. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다.. (v/s)
  1256. // 2008.09.22. time out chrck 확인한다.. time out chrck보다 선택된 시작시간이 작으면 time out chrck으로 저장한다.. (agent,drug,fluid,blood)
  1257. if (linktype == "V") {
  1258. var anstfromdt = refds_anstinfo.getColumn(0,"meetingdd") + refds_anstinfo.getColumn(0,"meetingtm");
  1259. } else {
  1260. var anstfromdt = refds_anstinfo.getColumn(0,"anstfromdd") + refds_anstinfo.getColumn(0,"anstfromtm");
  1261. }
  1262. var anstfromdt = refds_anstinfo.getColumn(0,"meetingdd") + refds_anstinfo.getColumn(0,"meetingtm");
  1263. if (anstfromdt.length != 12) {
  1264. return;
  1265. }
  1266. if (fromdt < anstfromdt) {
  1267. fromdt = anstfromdt;
  1268. }
  1269. // 처방목록에 시작시간, 종료시간 셋 해주자~
  1270. //var ref = "/root/main/anstitem/item";
  1271. var refds_anstitem = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  1272. var dataCnt = refds_anstitem.rowcount;
  1273. // 종료시간이 있는데 업데이트 하면?? 기록에 업데이트 해줘야지~
  1274. for (var i=0 ; i < dataCnt ; i++) {
  1275. var tmplinkcd = refds_anstitem.getColumn(i,"linkcd");
  1276. var tmplinkseqno = refds_anstitem.getColumn(i,"linkseqno");
  1277. var tmptodt = refds_anstitem.getColumn(i,"todt");
  1278. if (tmplinkcd == linkcd && tmplinkseqno == linkseqno && tmptodt == todt) {
  1279. refds_anstitem.setColumn(i,"rec", rec);
  1280. if (linktype == "F") {
  1281. var subrec = refds_anstitem.getColumn(i,"subrec");
  1282. rec = Number(subrec) - Number(rec);
  1283. refds_anstitem.setColumn(i,"rec", rec);
  1284. }
  1285. // 투여용량, 시작시간, 종료시간 표시하기
  1286. fDisplayAnstItem(Rowno);
  1287. return;
  1288. }
  1289. }
  1290. // 시작시간이 있으면 업데이트... 없으면 추가...
  1291. for (var i=0 ; i < dataCnt ; i++) {
  1292. var tmplinkcd = refds_anstitem.getColumn(i,"linkcd");
  1293. var tmplinkseqno = refds_anstitem.getColumn(i,"linkseqno");
  1294. var tmpfromdt = refds_anstitem.getColumn(i,"fromdt");
  1295. if (tmplinkcd == linkcd && tmplinkseqno == linkseqno && tmpfromdt == fromdt) {
  1296. refds_anstitem.setColumn(i,"rec" , rec);
  1297. refds_anstitem.setColumn(i,"subrec", rec);
  1298. // 투여용량, 시작시간, 종료시간 표시하기
  1299. fDisplayAnstItem(Rowno);
  1300. break;
  1301. }
  1302. }
  1303. var newrow = dataCnt;
  1304. if (i >= dataCnt) {
  1305. if (dataCnt > 0) {
  1306. var checkValue = refds_anstitem.getColumn(dataCnt-1, "linktype");
  1307. if (!utlf_isNull(checkValue)) {
  1308. newrow = refds_anstitem.addRow();
  1309. }
  1310. } else {
  1311. newrow = refds_anstitem.addRow();
  1312. }
  1313. refds_anstitem.setColumn(newrow,"linktype" , linktype);
  1314. refds_anstitem.setColumn(newrow,"linkcd" , linkcd);
  1315. refds_anstitem.setColumn(newrow,"linkseqno", linkseqno);
  1316. refds_anstitem.setColumn(newrow,"fromdt" , fromdt);
  1317. refds_anstitem.setColumn(newrow,"todt" , "");
  1318. refds_anstitem.setColumn(newrow,"rec" , rec);
  1319. refds_anstitem.setColumn(newrow,"subrec" , "");
  1320. if (linktype == "F") {
  1321. refds_anstitem.setColumn(newrow,"subrec" , rec);
  1322. }
  1323. // 투여용량, 시작시간, 종료시간 표시하기
  1324. fDisplayAnstItem(Rowno);
  1325. }
  1326. }
  1327. /**
  1328. * @desc : Agent, Drug, Fluid, Blood, V/S - 시작일시 적용
  1329. * @
  1330. * @param :
  1331. * @return :
  1332. * @---------------------------------------------------
  1333. *
  1334. */
  1335. function fSetAnstItemFromDt(Rowno,Colno)
  1336. {
  1337. var gridObj = grp_base.grd_main;
  1338. if(Colno < 0)
  1339. {
  1340. return;
  1341. }
  1342. var linkcd = ds_grd_main.getColumn(Rowno,"linkcd");
  1343. var linktype = ds_grd_main.getColumn(Rowno,"linktype");
  1344. var linkseqno = ds_grd_main.getColumn(Rowno,"linkseqno");
  1345. var rec = ds_grd_main.getColumn(Rowno, lf_getBindCellName(gridObj,Colno));
  1346. var refds_anstinfo = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  1347. // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리
  1348. //gridObj.cellstyle("font-weight", gridObj.row, 1, gridObj.row, 1) = "normal";
  1349. //gridObj.setCellProperty("body",1,"style","font:EXPR(getColumn(currow,'linknm') == '" + ds_grd_main.getColumn(ds_grd_main.rowposition,"linknm") + "?'Dotum,9')");
  1350. // 선택된 시작일시
  1351. var j = Colno;
  1352. var fromdt = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  1353. if (fromdt.length != 12) { return; }
  1354. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다.. (agent,drug,fluid,blood)
  1355. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다.. (v/s)
  1356. // 2008.09.22. time out chrck 확인한다.. time out chrck보다 선택된 시작시간이 작으면 time out chrck으로 저장한다.. (agent,drug,fluid,blood)
  1357. if (linktype == "V") {
  1358. var anstfromdt = refds_anstinfo.getColumn(0,"meetingdd") + refds_anstinfo.getColumn(0,"meetingtm");
  1359. } else {
  1360. var anstfromdt = refds_anstinfo.getColumn(0,"anstfromdd") + refds_anstinfo.getColumn(0,"anstfromtm");
  1361. }
  1362. var anstfromdt = refds_anstinfo.getColumn(0,"meetingdd") + refds_anstinfo.getColumn(0,"meetingtm");
  1363. if (anstfromdt.length != 12) {
  1364. sysf_messageBox("Meeting Time 시간을 정확히 입력하십시오", "E999", "");
  1365. return;
  1366. }
  1367. if (fromdt < anstfromdt) {
  1368. fromdt = anstfromdt;
  1369. }
  1370. // 처방목록에 시작시간, 종료시간 셋 해주자~
  1371. var refds_anstitem = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  1372. var dataCnt = refds_anstitem.rowcount;
  1373. // 추가 또는 업데이트...
  1374. for (var i=0 ; i < dataCnt ; i++) {
  1375. var tmplinkcd = refds_anstitem.getColumn(i,"linkcd");
  1376. var tmplinkseqno = refds_anstitem.getColumn(i,"linkseqno");
  1377. var tmpfromdt = refds_anstitem.getColumn(i,"fromdt");
  1378. if (tmplinkcd == linkcd && tmplinkseqno == linkseqno && tmpfromdt == fromdt) {
  1379. if (utlf_isNull(rec)) {
  1380. refds_anstitem.deleteRow(i);
  1381. } else {
  1382. refds_anstitem.setColumn(i,"linkcd", linkcd);
  1383. refds_anstitem.setColumn(i,"rec", rec);
  1384. }
  1385. break;
  1386. }
  1387. }
  1388. var newrow = dataCnt;
  1389. if (i >= dataCnt) {
  1390. if (dataCnt > 0) {
  1391. var checkValue = refds_anstitem.getColumn(dataCnt-1 ,"linktype");
  1392. if (!utlf_isNull(checkValue)) {
  1393. newrow = refds_anstitem.addRow();
  1394. }
  1395. } else {
  1396. newrow = refds_anstitem.addRow();
  1397. }
  1398. refds_anstitem.setColumn(newrow,"linktype" , linktype);
  1399. refds_anstitem.setColumn(newrow,"linkcd" , linkcd);
  1400. refds_anstitem.setColumn(newrow,"linkseqno", linkseqno);
  1401. refds_anstitem.setColumn(newrow,"fromdt" , fromdt);
  1402. refds_anstitem.setColumn(newrow,"todt" , "");
  1403. refds_anstitem.setColumn(newrow,"rec" , rec);
  1404. refds_anstitem.setColumn(newrow,"subrec" , "");
  1405. if (linktype == "F") {
  1406. refds_anstitem.setColumn(newrow,"subrec" , rec);
  1407. }
  1408. }
  1409. // 투여용량, 시작시간, 종료시간 표시하기
  1410. fDisplayAnstItem(Rowno);
  1411. }
  1412. /**
  1413. * @desc : Agent, Drug, Fluid, Blood - 종료일시 적용
  1414. * @
  1415. * @param :
  1416. * @return :
  1417. * @---------------------------------------------------
  1418. *
  1419. */
  1420. function fSetAnstItemToDt()
  1421. {
  1422. var gridObj = grp_base.grd_main;
  1423. var linkcd = ds_grd_main.getColumn(ds_grd_main.rowposition,"linkcd");
  1424. var linktype = ds_grd_main.getColumn(ds_grd_main.rowposition,"linktype");
  1425. var linkseqno = ds_grd_main.getColumn(ds_grd_main.rowposition,"linkseqno");
  1426. // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리
  1427. //gridObj.cellstyle("font-weight", gridObj.row, 1, gridObj.row, 1) = "normal";
  1428. //gridObj.setCellProperty("body",1,"style","font:EXPR(currow == " + gridObj.currentrow + "?Dotum,9");
  1429. // 선택된 시작일시, 종료일시
  1430. var j = gridObj.currentcol;
  1431. var todt = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  1432. todt = Number(todt) + 4;
  1433. // 처방목록에 시작시간, 종료시간 셋 해주자~
  1434. var refds_anstitem = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  1435. var dataCnt = refds_anstitem.rowcount;
  1436. for (var i=0 ; i< dataCnt ; i++) {
  1437. var tmplinkcd = refds_anstitem.getColumn(i,"linkcd");
  1438. var tmplinkseqno = refds_anstitem.getColumn(i,"linkseqno");
  1439. var tmptodt = refds_anstitem.getColumn(i,"todt");
  1440. if (tmplinkcd == linkcd && tmplinkseqno == linkseqno && utlf_isNull(tmptodt)) {
  1441. // 종료일시 업데이트 하기...
  1442. refds_anstitem.setColumn(i,"todt", todt);
  1443. }
  1444. }
  1445. // 투여용량, 시작시간, 종료시간 표시하기
  1446. fDisplayAnstItem(ds_grd_main.rowposition);
  1447. }
  1448. //
  1449. //
  1450. // /**
  1451. // * @desc : Agent, Drug, Fluid, Blood - 시작일시, 종료일시 적용
  1452. // * @
  1453. // * @param :
  1454. // * @return :
  1455. // * @---------------------------------------------------
  1456. // *
  1457. // */
  1458. // function fSetAnstItemFromDtToDt()
  1459. // {
  1460. // var gridObj = grd_main;
  1461. // var linkcd = gridObj.textMatrix(gridObj.row, col_linkcd);
  1462. // var linktype = gridObj.textMatrix(gridObj.row, col_linktype);
  1463. // var linkseqno = gridObj.textMatrix(gridObj.row, col_linkseqno);
  1464. // var rec = gridObj.textMatrix(gridObj.row, gridObj.col);
  1465. //
  1466. // // 처음은 bold 체로 보여주고 시간이 셋이 되면 normal 처리
  1467. // gridObj.cellstyle("font-weight", gridObj.row, 1, gridObj.row, 1) = "normal";
  1468. //
  1469. // // 선택된 시작일시, 종료일시
  1470. // var fromdt = gridObj.valueMatrix(0, gridObj.col) + gridObj.valueMatrix(1, gridObj.col) + gridObj.valueMatrix(2, gridObj.col);
  1471. // if (fromdt.length == 12) { return; }
  1472. //
  1473. // var todt = Number(fromdt) + 4;
  1474. // if (gridObj.selectedCells.length > 1) {
  1475. // var col_todt = gridObj.col + gridObj.selectedCells.length - 1;
  1476. // todt = gridObj.valueMatrix(0, col_todt) + gridObj.valueMatrix(1, col_todt) + gridObj.valueMatrix(2, col_todt);
  1477. // }
  1478. //
  1479. // // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다.. (agent,drug,fluid,blood)
  1480. // // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다.. (v/s)
  1481. // // 2008.09.22. time out chrck 확인한다.. time out chrck보다 선택된 시작시간이 작으면 time out chrck으로 저장한다.. (agent,drug,fluid,blood)
  1482. // if (linktype == "V") {
  1483. // var anstfromdt = iv_anstinfo.model.getValue("/root/main/anstinfo/meetingdd") + iv_anstinfo.model.getValue("/root/main/anstinfo/meetingtm");
  1484. // } else {
  1485. // var anstfromdt = iv_anstinfo.model.getValue("/root/main/anstinfo/anstfromdd") + iv_anstinfo.model.getValue("/root/main/anstinfo/anstfromtm");
  1486. // }
  1487. // var anstfromdt = iv_anstinfo.model.getValue("/root/main/anstinfo/meetingdd") + iv_anstinfo.model.getValue("/root/main/anstinfo/meetingtm");
  1488. // if (anstfromdt.length != 12) {
  1489. // return;
  1490. // }
  1491. // if (fromdt < anstfromdt) {
  1492. // fromdt = anstfromdt;
  1493. // }
  1494. //
  1495. // // 처방목록에 시작시간, 종료시간 셋 해주자~
  1496. // var ref = "/root/main/anstitem/item";
  1497. // var dataCnt = getNodesetCnt(iv_anstprcp.model, ref);
  1498. //
  1499. // // 추가 또는 업데이트...
  1500. // for (var i=1 ; i <= dataCnt ; i++) {
  1501. // var tmplinkcd = iv_anstprcp.model.getValue(ref+"["+ i +"]/linkcd");
  1502. // var tmplinkseqno = iv_anstprcp.model.getValue(ref+"["+ i +"]/linkseqno");
  1503. // var tmpfromdt = iv_anstprcp.model.getValue(ref+"["+ i +"]/fromdt");
  1504. // if (tmplinkcd == linkcd && tmplinkseqno == linkseqno && tmpfromdt == fromdt) {
  1505. // iv_anstprcp.model.setValue(ref+"["+ i +"]/todt", todt);
  1506. // iv_anstprcp.model.setValue(ref+"["+ i +"]/rec", rec);
  1507. // break;
  1508. // }
  1509. // }
  1510. // if (i > dataCnt) {
  1511. // if (dataCnt > 0) {
  1512. // var checkValue = iv_anstprcp.model.getValue(ref+"["+ dataCnt +"]/linktype");
  1513. // if (checkValue != "") {
  1514. // dataCnt = dataCnt + 1;
  1515. // }
  1516. // } else {
  1517. // dataCnt = dataCnt + 1;
  1518. // }
  1519. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/linktype" , linktype);
  1520. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/linkcd" , linkcd);
  1521. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/linkseqno", linkseqno);
  1522. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/fromdt" , fromdt);
  1523. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/todt" , todt);
  1524. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/rec" , rec);
  1525. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/subrec" , "");
  1526. // if (linktype == "F") {
  1527. // iv_anstprcp.model.makeValue(ref+"["+ dataCnt +"]/subrec" , rec);
  1528. // }
  1529. // }
  1530. // // 투여용량, 시작시간, 종료시간 표시하기
  1531. // fDisplayAnstItem(gridObj.row);
  1532. // }
  1533. /**
  1534. * @desc : 왼쪽 화면을 보여주기 / 차트 줄이기
  1535. * @
  1536. * @param :
  1537. * @return :
  1538. * @---------------------------------------------------
  1539. *
  1540. */
  1541. function fOpenLeft(flag)
  1542. {
  1543. grp_base.sw_left.visible =true;
  1544. if (eval(flag) == true) {
  1545. //grd_main.attribute("style") = "left:458px; top:25px; width:540px; height:712px; ";
  1546. grp_base.grd_main.position.left = 460;
  1547. grp_base.grd_main.position.width = 540;
  1548. grp_base.grd_main.position.top = 35;
  1549. grp_base.grd_main.position.height = 704;
  1550. } else {
  1551. //grd_main.attribute("style") = "left:0px; top:25px; width:998px; height:712px; ";
  1552. grp_base.grd_main.position.left = 0;
  1553. grp_base.grd_main.position.width = 998;
  1554. grp_base.grd_main.position.top = 35;
  1555. grp_base.grd_main.position.height = 704;
  1556. }
  1557. // 2008.10.09. 메인 그리드에 시간 추가하기.. (1시간 단위로)
  1558. grp_base.btn_addcol.visible = false;
  1559. fShowWndIptBox();
  1560. }
  1561. //
  1562. //
  1563. // /**
  1564. // * @desc : 메인 그리드 화면을 보여주기 / 차트 줄이기
  1565. // * @
  1566. // * @param :
  1567. // * @return :
  1568. // * @---------------------------------------------------
  1569. // *
  1570. // */
  1571. // function fOpenTop(flag)
  1572. // {
  1573. // return;
  1574. //
  1575. // if (flag == "true") {
  1576. // btn_small.visible = true;
  1577. // btn_big.visible = false;
  1578. // grd_main.attribute("style") = "left:0px; top:0px; width:998px; height:696px; ";
  1579. // TChart1.height = 0;
  1580. // } else {
  1581. // btn_small.visible = false;
  1582. // btn_big.visible = true;
  1583. // grd_main.attribute("style") = "left:0px; top:350px; width:998px; height:345px; ";
  1584. // TChart1.height = 355;
  1585. // }
  1586. // fShowWndIptBox();
  1587. // }
  1588. //
  1589. /**
  1590. * @group : SET 목록 조회 선택시 SET 아이템 보여주기
  1591. * @ver : 2007-08-24
  1592. * @by : 이은영
  1593. * @---------------------------------------------------
  1594. * @type : function
  1595. * @access : public
  1596. * @desc :
  1597. * @---------------------------------------------------
  1598. */
  1599. function fSetItemDisplay()
  1600. {
  1601. var setlist = grp_base.cbo_setlist.value;
  1602. if (setlist != "0") {
  1603. ds_send_setinfo.setColumn(0,"instcd" , sInstcd);
  1604. ds_send_setinfo.setColumn(0,"settype", "V");
  1605. ds_send_setinfo.setColumn(0,"setcd" , setlist);
  1606. // 현재일시
  1607. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  1608. ds_send_setinfo.setColumn(0,"currentdate" , currentdate);
  1609. // 마취 VS SET 아이템 조회하기..
  1610. var oParam = {};
  1611. oParam.id = "TRMMR04209";
  1612. oParam.service = "anstrecapp.AnstRec";
  1613. oParam.method = "reqGetVSSetItem";
  1614. oParam.inds = "setinfo=ds_send_setinfo";
  1615. oParam.outds = "ds_vssetitem=item";
  1616. oParam.async = false;
  1617. oParam.callback = "cf_TRMMR04209";
  1618. tranf_submit(oParam);
  1619. // V/S TChart 그려주자..
  1620. fDisplayChart();
  1621. }
  1622. }
  1623. function cf_TRMMR04209(sSvcId, nErrorCode, sErrorMsg) {
  1624. if(nErrorCode < 0) return;
  1625. }
  1626. /**
  1627. * @desc : 메인 그리드의 Agent, Drug, Fluid 선택시 Progress list 에 Copy
  1628. * @
  1629. * @param :
  1630. * @return :
  1631. * @---------------------------------------------------
  1632. */
  1633. function fCopyProgList(gridObj:Grid)
  1634. {
  1635. if (gridObj.currentcol == 0) {
  1636. var linktype = ds_grd_main.getColumn(ds_grd_main.rowposition, "linktype");
  1637. if (linktype == "V") {
  1638. if (vslist == "on") { vslist = "off"; } else { vslist = "on"; }
  1639. var firstRow = "";
  1640. for (var i=0 ; i < gridObj.rowcount; i++) {
  1641. var tmplinktype = gridObj.getCellText(i, col_linktype);
  1642. if (tmplinktype == "V" && vslist == "on" && !utlf_isNull(firstRow)) {
  1643. //gridObj.rowhidden(i) = false;
  1644. gridObj.setRealRowSize(i, 19);
  1645. }
  1646. if (tmplinktype == "V" && vslist == "off" && !utlf_isNull(firstRow)) {
  1647. //gridObj.rowhidden(i) = true;
  1648. gridObj.setRealRowSize(i, 0);
  1649. }
  1650. if (tmplinktype == "V" && utlf_isNull(firstRow)) {
  1651. firstRow = "ok";
  1652. }
  1653. }
  1654. }
  1655. if (linktype == "A") {
  1656. if (agentlist == "on") { agentlist = "off"; } else { agentlist = "on"; }
  1657. var firstRow = "";
  1658. for (var i=0 ; i < gridObj.rowcount; i++) {
  1659. var tmplinktype = gridObj.getCellText(i, col_linktype);
  1660. if (tmplinktype == "A" && agentlist == "on" && !utlf_isNull(firstRow)) {
  1661. gridObj.setRealRowSize(i, 19);
  1662. }
  1663. if (tmplinktype == "A" && agentlist == "off" && !utlf_isNull(firstRow)) {
  1664. gridObj.setRealRowSize(i, 0);
  1665. }
  1666. if (tmplinktype == "A" && utlf_isNull(firstRow)) {
  1667. firstRow = "ok";
  1668. }
  1669. }
  1670. }
  1671. if (linktype == "D") {
  1672. if (druglist == "on") { druglist = "off"; } else { druglist = "on"; }
  1673. var firstRow = "";
  1674. for (var i=0 ; i < gridObj.rowcount; i++) {
  1675. var tmplinktype = gridObj.getCellText(i, col_linktype);
  1676. if (tmplinktype == "D" && druglist == "on" && !utlf_isNull(firstRow)) {
  1677. gridObj.setRealRowSize(i, 19);
  1678. }
  1679. if (tmplinktype == "D" && druglist == "off" && !utlf_isNull(firstRow)) {
  1680. gridObj.setRealRowSize(i, 0);
  1681. }
  1682. if (tmplinktype == "D" && utlf_isNull(firstRow)) {
  1683. firstRow = "ok";
  1684. }
  1685. }
  1686. }
  1687. if (linktype == "F") {
  1688. if (fluidlist == "on") { fluidlist = "off"; } else { fluidlist = "on"; }
  1689. var firstRow = "";
  1690. for (var i=0 ; i < gridObj.rowcount; i++) {
  1691. var tmplinktype = gridObj.getCellText(i, col_linktype);
  1692. if (tmplinktype == "F" && fluidlist == "on" && !utlf_isNull(firstRow)) {
  1693. gridObj.setRealRowSize(i, 19);
  1694. }
  1695. if (tmplinktype == "F" && fluidlist == "off" && !utlf_isNull(firstRow)) {
  1696. gridObj.setRealRowSize(i, 0);
  1697. }
  1698. if (tmplinktype == "F" && utlf_isNull(firstRow)) {
  1699. firstRow = "ok";
  1700. }
  1701. }
  1702. }
  1703. if (linktype == "H") {
  1704. if (blodlist == "on") { blodlist = "off"; } else { blodlist = "on"; }
  1705. var firstRow = "";
  1706. for (var i=0 ; i < gridObj.rowcount; i++) {
  1707. var tmplinktype = gridObj.getCellText(i, col_linktype);
  1708. if (tmplinktype == "H" && blodlist == "on" && !utlf_isNull(firstRow)) {
  1709. gridObj.setRealRowSize(i, 19);
  1710. }
  1711. if (tmplinktype == "H" && blodlist == "off" && !utlf_isNull(firstRow)) {
  1712. gridObj.setRealRowSize(i, 0);
  1713. }
  1714. if (tmplinktype == "H" && utlf_isNull(firstRow)) {
  1715. firstRow = "ok";
  1716. }
  1717. }
  1718. }
  1719. }
  1720. if (gridObj.currentcol == 1) {
  1721. var linktype = gridObj.getCellText(gridObj.currentrow, col_linktype);
  1722. if (linktype == "A" || linktype == "D" || linktype == "F" || linktype == "H") {
  1723. var prcptiemnm = gridObj.getCellText(gridObj.currentrow, gridObj.currentcol);
  1724. for (var i=0 ; i < ds_grd_prog.rowcount -1 ; i++) {
  1725. var progrec = ds_grd_prog.getColumn(i,lf_getBindCellName(grp_base.swt_right.case_prog.grd_prog, 1));
  1726. if (progrec.length == 0) {
  1727. ds_grd_prog.setColumn(i,lf_getBindCellName(grp_base.swt_right.case_prog.grd_prog, 1), prcptiemnm);
  1728. //grd_prog.autoresize = true;
  1729. grp_base.swt_right.case_prog.grd_prog.autoSizeRow("row",i);
  1730. break;
  1731. }
  1732. }
  1733. }
  1734. }
  1735. utlf_addLog(gridObj.currentcol + " || " + col_fromdt + " || " + col_todt);
  1736. if (gridObj.currentcol >= col_fromdt && gridObj.currentcol <= col_todt) {
  1737. var linktype = gridObj.getCellText(gridObj.currentrow, col_linktype);
  1738. if (linktype == "A" || linktype == "D" || linktype == "F" || linktype == "H") {
  1739. // 투여용량, 시작시간, 종료시간 표시하기
  1740. fSetAnstItemRec(gridObj.currentrow,gridObj.currentcol);
  1741. grp_base.grd_main.showEditor(true);
  1742. }
  1743. }
  1744. }
  1745. /**
  1746. * @desc : 메인 그리드에서 삭제 메뉴 클릭시 처방목록에서 삭제한다.
  1747. * @
  1748. * @param :
  1749. * @return :
  1750. * @---------------------------------------------------
  1751. */
  1752. function fDelGridPrcp()
  1753. {
  1754. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  1755. var prcpcd = ds_grd_main.getColumn(ds_grd_main.rowposition,"linkcd");
  1756. var prcpseqno = ds_grd_main.getColumn(ds_grd_main.rowposition,"linkseqno");
  1757. var i;
  1758. var gridObj = grp_base.sw_left.case_anstprcp.iv_anstprcp.grd_anstprcp;
  1759. //var ref = "/root/main/anstprcp/item";
  1760. var refds_anstprcp = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item;
  1761. for (i=0 ; i < refds_anstprcp.rowcount ; i++)
  1762. {
  1763. var tmpprcpcd = refds_anstprcp.getColumn(i,"prcpcd");
  1764. var tmpprcpseqno = refds_anstprcp.getColumn(i,"prcpseqno");
  1765. if (tmpprcpcd == prcpcd && tmpprcpseqno == prcpseqno)
  1766. {
  1767. refds_anstprcp.rowposition = i;
  1768. break;
  1769. }
  1770. }
  1771. if (i < refds_anstprcp.rowcount)
  1772. {
  1773. // 전체 처방 목록에 삭제처리함.
  1774. grp_base.sw_left.case_anstprcp.iv_anstprcp.fDelPrcpList();
  1775. }
  1776. }
  1777. /**
  1778. * @desc : 이전 버튼을 클릭하여 그래프를 1시간 간격으로 이전 페이지 이동
  1779. * @ 다음 버튼을 클릭하여 그래프를 1시간 간격으로 다음 페이지 이동
  1780. * @param :
  1781. * @
  1782. * @return :
  1783. * @author :
  1784. * @---------------------------------------------------
  1785. */
  1786. function fGraphPageMove(flag)
  1787. {
  1788. var fromdt = graph_fromdt;
  1789. var tmpdt = fromdt.toDate("YYYYMMDDhhmm");
  1790. if (flag == "prev") {
  1791. var rtndt = tmpdt.getAddDate(-1, "h"); // 1시간 빼기
  1792. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  1793. } else if (flag == "next") {
  1794. var rtndt = tmpdt.getAddDate(1, "h"); // 1시간 더하기
  1795. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  1796. } else if (flag == "prev2") {
  1797. var rtndt = tmpdt.getAddDate(-2, "h"); // 1시간 빼기
  1798. rtndt = tmpdt.getAddDate(5, "m"); // 5분 더하기
  1799. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  1800. } else if (flag == "next2") {
  1801. var rtndt = tmpdt.getAddDate(2, "h"); // 1시간 더하기
  1802. rtndt = tmpdt.getAddDate(-5, "m"); // 5분 빼기
  1803. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  1804. } else if (flag == "start") {
  1805. var meetingdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdt");
  1806. fromdt = meetingdt.substr(0,12); // 마취시작시간
  1807. } else if (flag == "end") {
  1808. var ansttodt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodt");
  1809. var tmpdt = ansttodt.toDate("YYYYMMDDhhmm");
  1810. var rtndt = tmpdt.getAddDate(-2, "h"); // 마취종료시간에서 - 2시간
  1811. rtndt = tmpdt.getAddDate(5, "m"); // 마취종료시간에서 + 5분
  1812. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  1813. }
  1814. // 시작일시를 바꿔주자..
  1815. fSetGraphFormdt(fromdt);
  1816. // 메인 그리드에 그려주자..
  1817. fDisplayGrid();
  1818. // V/S TChart 그려주자..
  1819. fDisplayChart();
  1820. // V/S
  1821. var gridObj = grp_base.grd_main;
  1822. var firstRow = "";
  1823. for (var i=1 ; i < grp_base.grd_main.rowcount ; i++) {
  1824. var tmplinktype = grp_base.grd_main.getCellText(i, col_linktype);
  1825. if (tmplinktype == "V" && vslist == "on" && !utlf_isNull(firstRow)) {
  1826. //gridObj.rowhidden(i) = false;
  1827. grp_base.grd_main.setFormatRowProperty(i, "size",24);
  1828. }
  1829. if (tmplinktype == "V" && vslist == "off" && !utlf_isNull(firstRow)) {
  1830. //gridObj.rowhidden(i) = true;
  1831. grp_base.grd_main.setFormatRowProperty(i, "size",0);
  1832. }
  1833. if (tmplinktype == "V" && utlf_isNull(firstRow)) {
  1834. firstRow = "ok";
  1835. }
  1836. }
  1837. }
  1838. /**
  1839. * @desc : 우클릭시 바로 팝업처리.. VS Range 표시해주기
  1840. * @
  1841. * @param :
  1842. * @return :
  1843. * @---------------------------------------------------
  1844. *
  1845. */
  1846. function fOpenVSRange(e:GridMouseEventInfo)
  1847. {
  1848. ds_hidden.setColumn(0,"vsrec","");
  1849. var gridObj = grp_base.grd_main;
  1850. if (gridObj.currentcol >= col_fromdt && gridObj.currentcol <= col_todt) {
  1851. var linkcd = gridObj.getCellText(gridObj.currentrow, col_linkcd);
  1852. // vs 항목 정보 가져오기...
  1853. //var ref = "/root/main/vslist/item";
  1854. var dataCnt = ds_grd_vslist.rowcount;
  1855. // 그리드 초기화
  1856. ds_grd_range.clearData();
  1857. // 그리드에 vs range 리스트 보여주기...
  1858. for (var i = 0 ; i < dataCnt ; i++) {
  1859. var vsitemcd = ds_grd_vslist.getColumn(i,"vsitemcd");
  1860. if (linkcd == vsitemcd) {
  1861. var rangemin = ds_grd_vslist.getColumn(i,"rangemin");
  1862. var rangemax = ds_grd_vslist.getColumn(i,"rangemax");
  1863. var interval = ds_grd_vslist.getColumn(i,"interval");
  1864. for (var j = Number(rangemin) ; j <= Number(rangemax) ; j = Number(j) + Number(interval)) {
  1865. var newrow= ds_grd_range.addRow();
  1866. //grd_range.textMatrix(grd_range.row, 0) = j;
  1867. ds_grd_range.setColumn(newrow,"rec",j);
  1868. }
  1869. break;
  1870. }
  1871. }
  1872. if (ds_grd_range.rowcount > 9) {
  1873. ds_grd_range.rowposition = Number(ds_grd_range.rowcount/2)-5;
  1874. }
  1875. fShowWndIptBox("range",e);
  1876. if(vsitemcd == "38")
  1877. {
  1878. ds_grd_range.rowposition = ds_grd_range.rowcount - 1;
  1879. grup_range.grd_range.vscrollbar.pos = ds_grd_range.rowposition;
  1880. }
  1881. else
  1882. {
  1883. ds_grd_range.rowposition = -1;
  1884. grup_range.grd_range.vscrollbar.pos = ds_grd_range.rowposition;
  1885. }
  1886. }
  1887. }
  1888. /**
  1889. * @desc : VS Range 클릭시 메인에 적용해 주고, drag한 컬럼의 시간에 수치 업데이트 또는 추가
  1890. * @
  1891. * @param : flag - 0 : range grid , 1 : main frid , 2 : text
  1892. * @return :
  1893. * @---------------------------------------------------
  1894. *
  1895. */
  1896. function fSetVSValue(flag)
  1897. {
  1898. ds_grd_main.enableevent = false;
  1899. var gridObj = grp_base.grd_main;
  1900. var linkcd = gridObj.getCellText(gridObj.currentrow, col_linkcd);
  1901. if (flag == "0") {
  1902. rec = grup_range.grd_range.getCellText(grup_range.grd_range.currentrow, grup_range.grd_range.currentcol);
  1903. } else if (flag == "1") {
  1904. rec = gridObj.getCellText(gridObj.currentrow, gridObj.currentcol);
  1905. } else if (flag == "2") {
  1906. rec = ds_hidden.getColumn(0,"vsrec");
  1907. }
  1908. if (!utlf_isNull(flag) || grup_range.grd_range.currentcol == 0) {
  1909. //선택된 셀의 vs의 anstitem 추가
  1910. // var cells = gridObj.selectedCells;
  1911. var SelectedCols = grdf_getSelectedCols(grp_base.grd_main);
  1912. for (var i=0 ; i < SelectedCols.length ; i++)
  1913. {
  1914. var col = SelectedCols[i];
  1915. ds_grd_main.setColumn(ds_grd_main.rowposition,lf_getBindCellName(grp_base.grd_main,col), rec);
  1916. // sysf_trace(ds_grd_main.saveXML());
  1917. fSetVSAnstItemFromDt(ds_grd_main.rowposition, col);
  1918. }
  1919. //fSetChart(TChart1, linkcd);
  1920. grup_range.visible = false;
  1921. }
  1922. ds_grd_main.enableevent = true;
  1923. }
  1924. /**
  1925. * @desc : V/S 인 경우 드래그후 우클릭시 처음 선택한 컬럼의 값을 셋한다.
  1926. * @
  1927. * @param :
  1928. * @return :
  1929. * @---------------------------------------------------
  1930. *
  1931. */
  1932. function fVSDragSet()
  1933. {
  1934. ds_grd_main.enableevent = false;
  1935. var gridObj = grp_base.grd_main;
  1936. var linkcd = gridObj.getCellText(gridObj.currentrow, col_linkcd);
  1937. var rec = gridObj.getCellText(gridObj.currentrow, gridObj.selectstartcol);
  1938. //선택된 셀의 vs의 anstitem 추가
  1939. var SelectedCols = grdf_getSelectedCols(grp_base.grd_main);
  1940. for (var i=0 ; i < SelectedCols.length ; i++)
  1941. {
  1942. var col = SelectedCols[i];
  1943. ds_grd_main.setColumn(ds_grd_main.rowposition,lf_getBindCellName(grp_base.grd_main,col), rec);
  1944. fSetVSAnstItemFromDt(ds_grd_main.rowposition, col);
  1945. }
  1946. ds_grd_main.enableevent = true;
  1947. }
  1948. /**
  1949. * @desc : drag한 컬럼의 시간에 수치 업데이트 또는 추가
  1950. * @
  1951. * @param :
  1952. * @return :
  1953. * @---------------------------------------------------
  1954. *
  1955. */
  1956. function fSetVSAnstItemFromDt(row, col)
  1957. {
  1958. var gridObj = grp_base.grd_main;
  1959. var linkcd = ds_grd_main.getColumn(row,"linkcd");
  1960. var linktype = ds_grd_main.getColumn(row,"linktype");
  1961. var linkseqno = ds_grd_main.getColumn(row,"linkseqno");
  1962. var rec = ds_grd_main.getColumn(row,lf_getBindCellName(grp_base.grd_main,col));
  1963. var i = 0;
  1964. // 선택된 시작일시
  1965. var fromdt = ds_timeheader.getColumn(0,"t"+col) + ds_timeheader.getColumn(1,"t"+col);
  1966. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다.. (agent,drug,fluid,blood)
  1967. // 2008.01.07. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다.. (v/s)
  1968. // 2008.09.22. time out chrck 확인한다.. time out chrck보다 선택된 시작시간이 작으면 time out chrck으로 저장한다.. (agent,drug,fluid,blood)
  1969. if (linktype == "V") {
  1970. var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm");
  1971. } else {
  1972. var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromtm");
  1973. }
  1974. if (anstfromdt.length != 12) {
  1975. if (linktype == "V") {
  1976. sysf_messageBox("Meeting Time 시간을 정확히 입력하십시오", "E999", "");
  1977. }else{
  1978. sysf_messageBox("마취시작 시간을 정확히 입력하십시오", "E999", "");
  1979. }
  1980. return;
  1981. }
  1982. var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm");
  1983. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  1984. if (fromdt < anstfromdt) {
  1985. fromdt = anstfromdt;
  1986. }
  1987. // 처방목록에 시작시간, 종료시간 셋 해주자~
  1988. var refds = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  1989. var dataCnt = refds.rowcount;
  1990. // 추가 또는 업데이트...
  1991. for (i=0 ; i < dataCnt ; i++) {
  1992. var tmplinkcd = refds.getColumn(i,"linkcd");
  1993. var tmpfromdt = refds.getColumn(i,"fromdt");
  1994. if (tmplinkcd == linkcd && tmpfromdt == fromdt) {
  1995. refds.setColumn(i,"rec", rec);
  1996. break;
  1997. }
  1998. }
  1999. var newrow = dataCnt;
  2000. if (i >= dataCnt) {
  2001. newrow = refds.addRow();
  2002. refds.setColumn(newrow,"linktype" , linktype);
  2003. refds.setColumn(newrow,"linkcd" , linkcd);
  2004. refds.setColumn(newrow,"linkseqno", linkseqno);
  2005. refds.setColumn(newrow,"fromdt" , fromdt);
  2006. refds.setColumn(newrow,"todt" , "");
  2007. refds.setColumn(newrow,"rec" , rec);
  2008. refds.setColumn(newrow,"subrec" , rec);
  2009. }
  2010. }
  2011. /**
  2012. * @desc : drag한 컬럼의 시간에 데이타 삭제하기
  2013. * @
  2014. * @param :
  2015. * @return :
  2016. * @---------------------------------------------------
  2017. *
  2018. */
  2019. function fClearAnstItemFormDtToDt()
  2020. {
  2021. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  2022. // 2008.10.04. meeting time을 확인한다.. meeting time이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  2023. var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm");
  2024. if (anstfromdt.length != 12) {
  2025. //alert("마취시작시간을 확인하시기 바랍니다.");
  2026. return;
  2027. }
  2028. var gridObj = grp_base.grd_main;
  2029. var linkcd = gridObj.getCellText(gridObj.currentrow, col_linkcd);
  2030. //선택된 셀의 vs의 anstitem 추가
  2031. var cells = grdf_getSelectedCols(gridObj); ;
  2032. for (var i=0 ; i < cells.length ; i++)
  2033. {
  2034. var col = cells[i];
  2035. var fromdt = ds_timeheader.getColumn(0,"t"+col) + ds_timeheader.getColumn(1,"t"+col);
  2036. var linkcd = gridObj.getCellText(gridObj.currentrow, col_linkcd);
  2037. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  2038. var linkseqno = gridObj.getCellValue(gridObj.currentrow, col_linkseqno);
  2039. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  2040. if (fromdt < anstfromdt) {
  2041. fromdt = anstfromdt;
  2042. }
  2043. fDestroyAnstItemFromDtToDt(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem, linkcd, linkseqno, fromdt);
  2044. }
  2045. // 투여용량, 시작시간, 종료시간 표시하기
  2046. fDisplayAnstItem(gridObj.currentrow);
  2047. }
  2048. /**
  2049. * @desc : 그리드 메인 에서 처방항목 클리어 하기.. 전체 처방 목록의 처방코드의 투여일시 인스턴스도 삭제한다.
  2050. * @
  2051. * @param :
  2052. * @return :
  2053. * @---------------------------------------------------
  2054. */
  2055. function fDestroyAnstItemFromDtToDt(refds, linkcd, linkseqno, fromdt)
  2056. {
  2057. var dataCnt = refds.rowcount;
  2058. for (var i=0 ; i < dataCnt ; i++) {
  2059. // 2008.09.23. 2개이상 처방코드 추가 기록하기.. (fluid일때)
  2060. var tmplinkcd = refds.getColumn(i,"linkcd");
  2061. var tmplinkseqno = refds.getColumn(i,"linkseqno");
  2062. var tmpfromdt = refds.getColumn(i,"fromdt");
  2063. var tmptodt = refds.getColumn(i,"todt");
  2064. tmpfromdt = tmpfromdt.substr(0,12);
  2065. if (utlf_isNull(tmptodt)) { tmptodt = tmpfromdt };
  2066. if (tmplinkcd == linkcd && tmplinkseqno == linkseqno) {
  2067. if (tmpfromdt <= fromdt && fromdt <= tmptodt ) {
  2068. // 처방코드가 같은가? del
  2069. refds.deleteRow(i);
  2070. break;
  2071. }
  2072. }
  2073. }
  2074. }
  2075. /**
  2076. * @desc : 마취 기록 & 처방
  2077. * @
  2078. * @param :
  2079. * @return :
  2080. * @---------------------------------------------------
  2081. */
  2082. function fAnstRecMast()
  2083. {
  2084. if (iv_anstmast_load == "N") {
  2085. // 마취 기록 & 처방
  2086. grp_base.sw_left.case_anstmast.iv_anstmast.url = "emr_anstrecxp::SSMMR05800_마취환자기록마스터.xfdl";
  2087. grp_base.sw_left.case_anstmast.iv_anstmast.fFormInit(anstrecno);
  2088. iv_anstmast_load = "Y";
  2089. }
  2090. }
  2091. /**
  2092. * @desc : 마취기록 Reviewe
  2093. * @
  2094. * @param :
  2095. * @return :
  2096. * @---------------------------------------------------
  2097. */
  2098. function fAnstRecReview()
  2099. {
  2100. if (oprsrvno.length == 0) {
  2101. //alert("환자 수술정보가 없습니다.");
  2102. //return;
  2103. }
  2104. // iviewer 인스턴스 넘겨주기..
  2105. // 1. info : 마취정보 + remark + 집도의 + 마취의
  2106. // Total I/O : Urine output , Bloodloss, Crystalloid, Colloid
  2107. // 2. opinfo : 진단명 리스트, 수술명(전)- case cart (주+부), 수술명(후)
  2108. // 3. 기록 - 마취방법
  2109. // 4. Progress
  2110. // 5. Agent
  2111. // 6. Drug
  2112. // 7. Fluid
  2113. // 8. Blood
  2114. // 9. Procedure
  2115. // 10. V/S
  2116. // 11. time, vol, value
  2117. // opposturerem
  2118. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"opposturerem", "string", ds_anstinfo.getColumn(0,"opposturerem"));
  2119. // remark
  2120. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"remark","string" , ds_anstinfo.getColumn(0,"remark"));
  2121. // pca remark
  2122. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"pcarem","string" ,ds_anstinfo.getColumn(0,"pcarem"));
  2123. // vs set code (2009.06.22)
  2124. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"vssetcd","string" , ds_anstinfo.getColumn(0,"vssetcd"));
  2125. // 2008.09.29. 수술예약정보에서 수술환자구분, 협진여부, 재수술여부 셋해주기...
  2126. var oppatflagcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"oppatflagcd");
  2127. var oppatflagnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_M0020.lookup("cdid", oppatflagcd, "cdnm");
  2128. var cnstopflag = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"cnstopflag");
  2129. var reopflag = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"reopflag");
  2130. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"oppatflagnm","string" , oppatflagnm);
  2131. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"cnstopflag","string" , cnstopflag);
  2132. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"reopflag","string" , reopflag);
  2133. // 마취일반정보에 코드에 따른 라벨(값) 셋해주기...
  2134. var anstmthdcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstmthdcd");
  2135. var anstmthdcdsub = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstmthdcdsub");
  2136. var anstaddcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstaddcd");
  2137. var physstat = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"physstat");
  2138. var opflagcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opflagcd");
  2139. var oproomcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"oproomcd");
  2140. var anstdrid1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid1");
  2141. var anstdrid2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid2");
  2142. var anstdrid3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid3");
  2143. //2013/09/25 Start 이정택(네번째 마취의가 통합기록에 안보이는 현상 수정)
  2144. var anstdrid4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid4");
  2145. //200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:20200210033
  2146. var anstdrid5 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid5");
  2147. var anstdrid6 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid6");
  2148. var anstdrid7 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid7");
  2149. var anstdrid8 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid8");
  2150. //2013/09/25 End
  2151. var anstnursid1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstnursid1");
  2152. var anstnursid2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstnursid2");
  2153. //20131104 Start
  2154. var anstnursid3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstnursid3");
  2155. var anstnursid4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstnursid4");
  2156. //20131104 End
  2157. var anstmthdnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_M0270.lookup("cdid", anstmthdcd, "cdnm");
  2158. var anstmthdnmsub = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_M0271.lookup("cdid", anstmthdcdsub, "cdnm");
  2159. var anstaddnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_M0008.lookup("cdid", anstaddcd, "cdnm");
  2160. var physstatnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_M0269.lookup("cdid", physstat, "cdnm");
  2161. var opflagnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_M0013.lookup("cdid", opflagcd, "cdnm");
  2162. var oproomnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_oproomlist.lookup("oproomcd", oproomcd ,"oproomnm");
  2163. var anstdrnm1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid1, "usernm");
  2164. var anstdrnm2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid2, "usernm");
  2165. var anstdrnm3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid3, "usernm");
  2166. //2013/09/25 Start 이정택(네번째 마취의가 통합기록에 안보이는 현상 수정)
  2167. var anstdrnm4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid4, "usernm");
  2168. //20200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:20200210033
  2169. var anstdrnm5 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid5, "usernm");
  2170. var anstdrnm6 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid6, "usernm");
  2171. var anstdrnm7 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid7, "usernm");
  2172. var anstdrnm8 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid8, "usernm");
  2173. //2013/09/25 End
  2174. var anstnursnm1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstnurslist.lookup("userid", anstnursid1 ,"usernm");
  2175. var anstnursnm2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstnurslist.lookup("userid", anstnursid2 ,"usernm");
  2176. //20131104 Start
  2177. var anstnursnm3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstnurslist.lookup("userid", anstnursid3 ,"usernm");
  2178. var anstnursnm4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstnurslist.lookup("userid", anstnursid4 ,"usernm");
  2179. //20131104 End
  2180. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstmthdnm","string" , anstmthdnm);
  2181. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstmthdnmsub","string" , anstmthdnmsub);
  2182. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstaddnm","string" , anstaddnm);
  2183. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"physstatnm","string" , physstatnm);
  2184. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"opflagnm" ,"string" , opflagnm);
  2185. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"oproomnm" ,"string" , oproomnm);
  2186. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm1","string" , anstdrnm1);
  2187. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm2","string" , anstdrnm2);
  2188. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm3","string" , anstdrnm3);
  2189. //2013/09/25 Start 이정택(네번째 마취의가 통합기록에 안보이는 현상 수정)
  2190. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm4","string" , anstdrnm4);
  2191. //20200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:20200210033
  2192. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm5","string" , anstdrnm5);
  2193. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm6","string" , anstdrnm6);
  2194. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm7","string" , anstdrnm7);
  2195. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstdrnm8","string" , anstdrnm8);
  2196. //2013/09/25 end
  2197. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstnursnm1","string" , anstnursnm1);
  2198. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstnursnm2","string" , anstnursnm2);
  2199. //20131104 Start
  2200. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstnursnm3","string" , anstnursnm3);
  2201. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstnursnm4","string" , anstnursnm4);
  2202. //20131104 End
  2203. var perfdeptcd1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdeptcd1");
  2204. var perfdrid1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdrid1");
  2205. var perfdeptcd2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdeptcd2");
  2206. var perfdrid2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdrid2");
  2207. var perfdeptcd3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdeptcd3");
  2208. var perfdrid3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdrid3");
  2209. var perfdeptcd4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdeptcd4");
  2210. var perfdrid4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"perfdrid4");
  2211. var perfdeptnm1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_orddept.lookup("deptcd", perfdeptcd1 ,"depthngnm");
  2212. var perfdrnm1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_userlist1.lookup("userid", perfdrid1 ,"usernm");
  2213. var perfdeptnm2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_orddept.lookup("deptcd", perfdeptcd2 ,"depthngnm");
  2214. var perfdrnm2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_userlist2.lookup("userid", perfdrid2 ,"usernm");
  2215. var perfdeptnm3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_orddept.lookup("deptcd", perfdeptcd3 ,"depthngnm");
  2216. var perfdrnm3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_userlist3.lookup("userid", perfdrid3 ,"usernm");
  2217. var perfdeptnm4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_orddept.lookup("deptcd", perfdeptcd4 ,"depthngnm");
  2218. var perfdrnm4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_userlist4.lookup("userid", perfdrid4 ,"usernm");
  2219. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdeptnm1","string" , perfdeptnm1);
  2220. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdrnm1","string" , perfdrnm1);
  2221. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdeptnm2" ,"string", perfdeptnm2);
  2222. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdrnm2" ,"string" , perfdrnm2);
  2223. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdeptnm3" ,"string", perfdeptnm3);
  2224. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdrnm3" ,"string" , perfdrnm3);
  2225. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdeptnm4","string" , perfdeptnm4);
  2226. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"perfdrnm4" ,"string" , perfdrnm4);
  2227. // 마취, 수술 (시작 날짜+시간, 종료 날짜+시간)
  2228. var meetingdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm"));
  2229. var tmoutchkdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"tmoutchkdd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"tmoutchktm"));
  2230. var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromdd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromtm"));
  2231. var ansttodt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttotm"));
  2232. var opfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opfromdd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opfromtm"));
  2233. var optodt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"optodd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"optotm"));
  2234. var opfcsttodt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opfcsttodd") + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opfcsttotm"));
  2235. // 마취, 수술 (시작일시, 종료일시)
  2236. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"meetingdt" ,"string", meetingdt);
  2237. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"tmoutchkdt","string", tmoutchkdt);
  2238. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"anstfromdt","string", anstfromdt);
  2239. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"ansttodt" ,"string", ansttodt);
  2240. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"opfromdt" ,"string", opfromdt);
  2241. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"optodt" ,"string", optodt);
  2242. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"opfcsttodt","string", opfcsttodt);
  2243. // 마취 총 시간 (시작~종료)
  2244. var ansttm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata.getColumn(0,"ansttm");
  2245. var anstmnt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata.getColumn(0,"anstmnt");
  2246. dsf_makeValue(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"intervaltm","string", ansttm + " 시간 " + anstmnt + " 분");
  2247. grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata_opinfo.clearData();
  2248. dsf_createDs("ds_temp_opinfo_filter");
  2249. // 진단명, 수술(전)카드명, 수술(후)명...
  2250. grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo_item.filter("cdflag=='1'");
  2251. ds_temp_opinfo_filter.copyData(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo_item,true);
  2252. dsf_copyDs(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata_opinfo,ds_temp_opinfo_filter,"after");
  2253. ds_temp_opinfo_filter.clearData();
  2254. grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo_item.filter("cdflag=='2'");
  2255. ds_temp_opinfo_filter.copyData(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo_item,true);
  2256. dsf_copyDs(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata_opinfo,ds_temp_opinfo_filter,"after");
  2257. grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo_item.filter("");
  2258. dsf_copyDs(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata_opinfo,grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo7_item,"after");
  2259. dsf_createDs("ds_info");
  2260. ds_info.copyData(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700);
  2261. dsf_createDs("ds_opinfo");
  2262. ds_opinfo.copyData(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata_opinfo);
  2263. grp_base.sw_left.case_anstmast.iv_anstmast.ds_recmast_item.filter("checked=='true'");
  2264. dsf_createDs("ds_rec");
  2265. ds_rec.copyData(grp_base.sw_left.case_anstmast.iv_anstmast.ds_recmast_item,true);
  2266. grp_base.sw_left.case_anstmast.iv_anstmast.ds_recmast_item.filter("");
  2267. dsf_createDs("ds_agent");
  2268. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("prcptype=='A'");
  2269. ds_agent.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item,true);
  2270. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("");
  2271. if(ds_agent.rowcount == 0){
  2272. ds_agent.addRow();
  2273. }
  2274. dsf_createDs("ds_drug");
  2275. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("prcptype=='D'");
  2276. ds_drug.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item,"true");
  2277. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("");
  2278. if(ds_drug.rowcount == 0){
  2279. ds_drug.addRow();
  2280. }
  2281. dsf_createDs("ds_fluid");
  2282. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("prcptype=='F'");
  2283. ds_fluid.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item,"true");
  2284. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("");
  2285. if(ds_fluid.rowcount == 0){
  2286. ds_fluid.addRow();
  2287. }
  2288. dsf_createDs("ds_blood");
  2289. ds_blood.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item,"true");
  2290. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("");
  2291. if(ds_blood.rowcount == 0){
  2292. ds_blood.addRow();
  2293. }
  2294. dsf_createDs("ds_proc");
  2295. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("prcptype=='P'");
  2296. ds_proc.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item,"true");
  2297. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("");
  2298. if(ds_proc.rowcount == 0){
  2299. ds_proc.addRow();
  2300. }
  2301. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.filter("");
  2302. dsf_createDs("ds_time");
  2303. ds_time.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem);
  2304. dsf_createDs("ds_vslist");
  2305. ds_vslist.copyData(ds_grd_vslist,true);
  2306. // 2008.10.13. 인증저장시 오류에 따른 데
  2307. dsf_createDs("ds_savedata",
  2308. [{col:"instcd" , type:"string", size:256},
  2309. {col:"anstrecno" , type:"string", size:256},
  2310. {col:"progno" , type:"string", size:256},
  2311. {col:"progrec" , type:"string", size:256},
  2312. {col:"progfromdt" , type:"string", size:256},
  2313. {col:"progtodt" , type:"string", size:256}
  2314. ]);
  2315. ds_savedata.clearData();
  2316. var dataString = "";
  2317. //var dataRef = "/root/main/prog/item";
  2318. var dataCnt = ds_grd_prog.rowcount;
  2319. for (var i=0 ; i < dataCnt ; i++)
  2320. {
  2321. var progno = ds_grd_prog.getColumn(i,"progno");
  2322. var progrec = ds_grd_prog.getColumn(i,"progrec");
  2323. var progfromdt = ds_grd_prog.getColumn(i,"progfromdt");
  2324. var progtodt = ds_grd_prog.getColumn(i,"progtodt");
  2325. var newrow = ds_savedata.addRow();
  2326. ds_savedata.setColumn(newrow,"instcd",sInstcd);
  2327. ds_savedata.setColumn(newrow,"anstrecno",anstrecno);
  2328. ds_savedata.setColumn(newrow,"progno",progno);
  2329. ds_savedata.setColumn(newrow,"progrec",progrec);
  2330. ds_savedata.setColumn(newrow,"progfromdt",progfromdt);
  2331. ds_savedata.setColumn(newrow,"progtodt",progtodt);
  2332. }
  2333. dsf_createDs("ds_prog");
  2334. ds_prog.copyData(ds_savedata);
  2335. // 2008.02.12. 마취기록화면 네비게이션 때문에 선택시 로딩 되도록..
  2336. //grp_base.sw_left.case_review.iviewer1.url = "emr_anstrecxp::SPMMR05200_마취환자기록Review.xfdl";
  2337. grp_base.sw_left.case_review.iviewer1.visible = true;
  2338. //dsf_makeValue(grp_base.sw_left.case_review.iviewer1.ds_send, "anstrecno","string" ,"");
  2339. grp_base.sw_left.case_review.iviewer1.ds_send.clearData();
  2340. grp_base.sw_left.case_review.iviewer1.ds_send.addRow();
  2341. grp_base.sw_left.case_review.iviewer1.ds_info.copyData(ds_info);
  2342. grp_base.sw_left.case_review.iviewer1.ds_opinfo.copyData(ds_opinfo);
  2343. grp_base.sw_left.case_review.iviewer1.ds_rec.copyData(ds_rec);
  2344. grp_base.sw_left.case_review.iviewer1.ds_prog.copyData(ds_prog);
  2345. grp_base.sw_left.case_review.iviewer1.ds_agent.copyData(ds_agent);
  2346. grp_base.sw_left.case_review.iviewer1.ds_drug.copyData(ds_drug);
  2347. grp_base.sw_left.case_review.iviewer1.ds_fluid.copyData(ds_fluid);
  2348. grp_base.sw_left.case_review.iviewer1.ds_blood.copyData(ds_blood);
  2349. grp_base.sw_left.case_review.iviewer1.ds_proc.copyData(ds_proc);
  2350. grp_base.sw_left.case_review.iviewer1.ds_vslist.copyData(ds_vslist);
  2351. grp_base.sw_left.case_review.iviewer1.ds_time.copyData(ds_time, true);
  2352. grp_base.sw_left.case_review.iviewer1.fFormInit();
  2353. }
  2354. function cf_TRMMR03722(sSvcId, nErrorCode, sErrorMsg) {
  2355. if(nErrorCode < 0) return;
  2356. }
  2357. /**
  2358. * @desc : 마취기록 Review 인스턴스 만들어 주기..
  2359. * @
  2360. * @param :
  2361. * @return :
  2362. * @---------------------------------------------------
  2363. */
  2364. function fSaveAnstEspi(flag) {
  2365. //수술부위 확인 점검표 저장확인(20120425 이윤주 with 손성훈)
  2366. if (flag == "Y"){
  2367. if( fOppartchk(oprsrvno, formcd) == false ){
  2368. return;
  2369. }
  2370. if(lf_ContainsHardCD("485", "Y") == true) { // 칠곡만 적용 수술예방적 항생제 투약시간 알림 적용여부
  2371. var opfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opfromdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"opfromtm"); // 수술시작시간
  2372. dsf_makeValue(ds_send_reqdata,"oprsrvno", "string", oprsrvno);
  2373. dsf_makeValue(ds_send_reqdata,"opfromdt", "string", opfromdt);
  2374. var oParam = {};
  2375. oParam.id = "TRMMR03722";
  2376. oParam.service = "anstrecapp.AnstRec";
  2377. oParam.method = "reqGetPreAntiCheck";
  2378. oParam.inds = "reqdata=ds_send_reqdata";
  2379. oParam.outds = "ds_preantimed=preantimed";
  2380. oParam.async = false;
  2381. oParam.callback = "cf_TRMMR03722";
  2382. tranf_submit(oParam);
  2383. var sRtnMsg = ds_preantimed.getColumn(0,"preantimsg");
  2384. if(!utlf_isNull(sRtnMsg)) {
  2385. sysf_messageBox(sRtnMsg, "I999", "");
  2386. }
  2387. }
  2388. }
  2389. if (utlf_isNull(flag)) { flag = "N" };
  2390. if (flag == "N" && lastespiyn == "Y") { // 인증저장된 기록을 임시저장 하려고 할때 블러킹 처리 2014.09.04 엄영만
  2391. sysf_messageBox("인증저장 된 기록을 임시저장으로 수정 할수 없습니다.\n\n인증저장 해주십시오.", "I");
  2392. return;
  2393. }
  2394. //20131112 추가(이정택)
  2395. var anstdrid1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.cmb_anstdrid1.value;
  2396. if(utlf_isNull(anstdrid1) || anstdrid1=="0" || anstdrid1=="-"){
  2397. sysf_messageBox("첫번째 마취의는 필수 입력입니다.", "E");
  2398. return;
  2399. }
  2400. var btn_oproominoutctl_clickyn = grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_oproominoutctl_clickyn;
  2401. if(btn_oproominoutctl_clickyn==true){
  2402. var patoutroomdd=grp_base.sw_left.case_anstinfo.iv_anstinfo.ipt_patoutroomdd.value;
  2403. var patoutroomtm=grp_base.sw_left.case_anstinfo.iv_anstinfo.ipt_patoutroomtm.value;
  2404. if(utlf_isNull(patoutroomdd) || utlf_isNull(patoutroomtm)){
  2405. sysf_messageBox("수술방 퇴실시간이 입력되지 않았습니다. 최종 인증저장이라면\n수술방 퇴실시간을 입력 후 다시 한번 인증저장 해주십시오.", "I");
  2406. }
  2407. }
  2408. //2013/12/09 마취기록지 인증저장시 마취일반정보의 마취의사 휴진일정 체크
  2409. var meetingdate=utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd"));
  2410. var meetingtime=utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm"));
  2411. var chkdrid1=utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid1"));
  2412. var chkdrid2=utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid2"));
  2413. var chkdrid3=utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid3"));
  2414. var chkdrid4=utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid4"));
  2415. var chkdrid="";
  2416. if(chkdrid1!="-" && !utlf_isNull(chkdrid1) && chkdrid1!="0"){
  2417. chkdrid += "'"+chkdrid1+"'";
  2418. }
  2419. if(chkdrid2!="-" && !utlf_isNull(chkdrid2) && chkdrid2!="0"){
  2420. chkdrid += ","+"'"+chkdrid2+"'";
  2421. }
  2422. if(chkdrid3!="-" && !utlf_isNull(chkdrid3) && chkdrid3!="0"){
  2423. chkdrid += ","+"'"+chkdrid3+"'";
  2424. }
  2425. if(chkdrid4!="-" && !utlf_isNull(chkdrid4) && chkdrid4!="0"){
  2426. chkdrid += ","+"'"+chkdrid4+"'";
  2427. }
  2428. if(chkdrid.length!=0){
  2429. dsf_makeValue(ds_send_reqdata,"chkdrid","string", chkdrid);
  2430. }
  2431. dsf_makeValue(ds_send_reqdata,"meetingdate","string", meetingdate);
  2432. dsf_makeValue(ds_send_reqdata,"meetingtime","string", meetingtime);
  2433. var oParam = {};
  2434. oParam.id = "TRMMR03721";
  2435. oParam.service = "anstrecapp.AnstRec";
  2436. oParam.method = "reqGetHoliCheck";
  2437. oParam.inds = "reqdata=ds_send_reqdata";
  2438. oParam.async = false;
  2439. oParam.callback = "cf_TRMMR03721";
  2440. tranf_submit(oParam);
  2441. if(arErrorCode.pop("TRMMR03721") < 0){
  2442. return;
  2443. }
  2444. //2013/12/09
  2445. // 마취일반정보 저장
  2446. grp_base.sw_left.case_anstinfo.iv_anstinfo.fSaveAnstInfo(flag);
  2447. //공통 기본 정보 셋
  2448. anstrecno = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstrecno");
  2449. // 공통 기본 정보 셋 (마취기록번호)
  2450. dsf_makeValue(ds_send_reqdata,"anstrecno","string", anstrecno);
  2451. if (anstrecno > 0)
  2452. {
  2453. var savedata = "";
  2454. var dataString = "";
  2455. var dataRef = "";
  2456. var dataCnt = 0;
  2457. // iviewer 인스턴스 넘겨주기..
  2458. // 1. 기록 - 마취방법
  2459. // 2. Progress
  2460. // 3. Prcp
  2461. // 4. vs list
  2462. // 5. time, vol, value
  2463. // 6. cert 인증정보
  2464. // 7. send : 기관코드, 마취기록번호, 수술예약번호, 서명번호
  2465. // 1. 기록 - 마취방법
  2466. savedata = "instcd▦anstrecno▦currentdate▦recitem▦rectype▦recnm▦subrec▩";
  2467. dataString = "";
  2468. dataRef = grp_base.sw_left.case_anstmast.iv_anstmast.ds_recmast_item;
  2469. dataCnt = grp_base.sw_left.case_anstmast.iv_anstmast.ds_recmast_item.rowcount;
  2470. for (var i=0 ; i < dataCnt ; i++)
  2471. {
  2472. var checked = dataRef.getColumn(i,"checked");
  2473. if (checked == "true") {
  2474. var recitem = utlf_transNullToEmpty(dataRef.getColumn(i,"recitem"));
  2475. var rectype = utlf_transNullToEmpty(dataRef.getColumn(i,"rectype"));
  2476. var recnm = utlf_transNullToEmpty(dataRef.getColumn(i,"recnm"));
  2477. var subrec = utlf_transNullToEmpty(dataRef.getColumn(i,"subrec"));
  2478. if (rectype == "F") { subrec = ""; }
  2479. dataString = dataString + sInstcd + "▦" + anstrecno + "▦" + currentdate + "▦" + recitem + "▦" + rectype + "▦" + recnm + "▦" + subrec + "▩";
  2480. }
  2481. }
  2482. dataString = dataString.replace("undefined","");
  2483. var reclist = savedata + dataString;
  2484. // 2. Progress
  2485. savedata = "instcd▦anstrecno▦progno▦progrec▦progfromdt▦progtodt▩";
  2486. dataString = "";
  2487. //dataRef = "/root/main/prog/item";
  2488. dataCnt = ds_grd_prog.rowcount;
  2489. for (var i=0 ; i < dataCnt ; i++)
  2490. {
  2491. var progno = i+1;
  2492. var progrec = utlf_transNullToEmpty(ds_grd_prog.getColumn(i,"progrec"));
  2493. var progfromdt = utlf_transNullToEmpty(ds_grd_prog.getColumn(i,"progfromdt"));
  2494. var progtodt = utlf_transNullToEmpty(ds_grd_prog.getColumn(i,"progtodt"));
  2495. // 2009.01.07. progress 내용이 없는 경우 no 가 중간에 빠지는 에러가 발생함.
  2496. //if (progrec.replace(" ","").length > 0) {
  2497. dataString = dataString + sInstcd + "▦" + anstrecno + "▦" + progno + "▦" + progrec + "▦" + progfromdt + "▦" + progtodt + "▩";
  2498. dataString = dataString.replace("undefined","");
  2499. //}
  2500. }
  2501. var prog = savedata + dataString;
  2502. // 3. prcp
  2503. savedata = "instcd▦anstrecno▦prcptype▦prcpcd▦prcpseqno▦prcpnm▦prcpvol▦prcpvolunitnm▦drugmthdcd▦recvol▦remark▦pcaflag▦currentdate▩";
  2504. dataString = fGetDataStringAnstPrcp();
  2505. dataString = dataString.replace("undefined","");
  2506. var prcp = savedata + dataString;
  2507. // 4. vs list
  2508. savedata = "instcd▦anstrecno▦currentdate▦vsitemcd▦vsitemnm▩";
  2509. dataString = "";
  2510. //dataRef = "/root/main/vslist/item";
  2511. dataCnt = ds_grd_vslist.rowcount;
  2512. for (var i = 0 ; i < dataCnt ; i++) {
  2513. var vsitemcd = ds_grd_vslist.getColumn(i,"vsitemcd");
  2514. var vsitemnm = ds_grd_vslist.getColumn(i,"vsitemnm");
  2515. dataString = dataString + sInstcd + "▦" + anstrecno + "▦" + currentdate + "▦" + vsitemcd + "▦" + vsitemnm + "▩";
  2516. }
  2517. dataString = dataString.replace("undefined","");
  2518. var vslist = savedata + dataString;
  2519. // 5. 마취 처방 투여일시
  2520. savedata = "instcd▦anstrecno▦linktype▦linkcd▦linkseqno▦fromdt▦todt▦rec▦subrec▩";
  2521. dataString = "";
  2522. dataRef = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  2523. dataRef.filter("");
  2524. dataCnt = dataRef.rowcount;
  2525. for (var i = 0 ; i <dataCnt ; i++) {
  2526. var linktype = utlf_transNullToEmpty(dataRef.getColumn(i,"linktype"));
  2527. // 2009.03.02. 시간추가 기록저장하기..
  2528. if (linktype != "S") {
  2529. var linkcd = utlf_transNullToEmpty(dataRef.getColumn(i,"linkcd"));
  2530. var linkseqno = utlf_transNullToEmpty(dataRef.getColumn(i,"linkseqno"));
  2531. if (utlf_isNull(linkseqno)) { linkseqno = "0"; }
  2532. var fromdt = utlf_transNullToEmpty(dataRef.getColumn(i,"fromdt"));
  2533. var todt = utlf_transNullToEmpty(dataRef.getColumn(i,"todt"));
  2534. var rec = utlf_transNullToEmpty(dataRef.getColumn(i,"rec"));
  2535. var subrec = utlf_transNullToEmpty(dataRef.getColumn(i,"subrec"));
  2536. dataString = dataString + instcd + "▦" + anstrecno + "▦" + linktype + "▦" + linkcd + "▦" + linkseqno + "▦";
  2537. dataString = dataString + fromdt + "▦" + todt + "▦" + rec + "▦" + subrec + "▩";
  2538. dataString = dataString.replace("undefined","");
  2539. }
  2540. }
  2541. // 2009.03.02. 시간추가 기록저장하기..
  2542. //dataRef = "/root/main/grd_timerec/item";
  2543. dataCnt = ds_grd_timerec.rowcount;
  2544. for (var i = 0 ; i < dataCnt ; i++) {
  2545. var linktype = ds_grd_timerec.getColumn(i,"linktype");
  2546. var linkcd = ds_grd_timerec.getColumn(i,"linkcd");
  2547. var linkseqno = ds_grd_timerec.getColumn(i,"linkseqno");
  2548. if (utlf_isNull(linkseqno)) { linkseqno = "0"; }
  2549. var fromdt = ds_grd_timerec.getColumn(i,"fromdt");
  2550. var todt = ds_grd_timerec.getColumn(i,"todt");
  2551. var rec = ds_timerec.lookup("tmreccd", linkcd, "tmrecnm");
  2552. var subrec = utlf_transNullToEmpty(ds_grd_timerec.getColumn(i,"subrec"));
  2553. if (!utlf_isNull(linkcd)) {
  2554. dataString = dataString + sInstcd + "▦" + anstrecno + "▦" + linktype + "▦" + linkcd + "▦" + linkseqno + "▦";
  2555. dataString = dataString + fromdt + "▦" + todt + "▦" + rec + "▦" + subrec + "▩";
  2556. }
  2557. }
  2558. dataString = dataString.replace("undefined","");
  2559. var time = savedata + dataString;
  2560. dsf_setCSVToDs("ds_send_savedata_prog", prog);
  2561. dsf_setCSVToDs("ds_send_savedata_rec", reclist);
  2562. dsf_setCSVToDs("ds_send_savedata_prcp", prcp);
  2563. dsf_setCSVToDs("ds_send_savedata_vslist", vslist);
  2564. dsf_setCSVToDs("ds_send_savedata_time", time);
  2565. // 2016.07.15 V/S 기록 누락에 따른 기록 저장시 제어로직 추가
  2566. var anstInfoDs = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700;
  2567. var nMeetingTime = utlf_transNullToEmpty(anstInfoDs.getColumn(0,"meetingdd")) + utlf_transNullToEmpty(anstInfoDs.getColumn(0,"meetingtm"));
  2568. if( !utlf_isNull(nMeetingTime) && nMeetingTime.length == 12
  2569. && grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.getCaseCount("linktype!='S'") < 1){
  2570. sysf_messageBox("V/S 저장 할 정보가 없습니다. 확인바랍니다.", "E999", "");
  2571. return;
  2572. }
  2573. trace(nMeetingTime + " || " +grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.getCaseCount("linktype!='S'") )
  2574. // 2016.07.21 Grid 보여지는 정보와 저장할려는 정보 비교
  2575. dsf_createDs("ds_tmp_main");
  2576. ds_tmp_main.copyData(ds_grd_main);
  2577. var ColId = "";
  2578. var recCnt = 0;
  2579. for( var i=0; i<ds_tmp_main.rowcount; i++ ){
  2580. var nLinkType = ds_tmp_main.getColumn(i, "linktype");
  2581. if( nLinkType != "V" ){
  2582. continue;
  2583. }
  2584. for( var j=9; j<ds_tmp_main.colcount; j++ ){
  2585. ColId = ds_tmp_main.getColID(j);
  2586. if(!utlf_isNull(ColId) && ColId.indexOf("t") > -1
  2587. && !utlf_isNull(ds_tmp_main.getColumn(i, ColId))
  2588. && ds_tmp_main.getColumn(i, ColId) != "·"){
  2589. recCnt++;
  2590. }
  2591. }
  2592. }
  2593. trace(" recCnt : " + recCnt + " || " + grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.getCaseCount("linktype=='V' && !utlf_isNull(rec)"));
  2594. if( lf_getHardCDList("Y", 9965, 3, null) == "Y"
  2595. && grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.getCaseCount("linktype=='V' && !utlf_isNull(rec)") != recCnt ){
  2596. alert ("기록정보가 일치 하지 않습니다. 저장하실 수 없습니다.");
  2597. return;
  2598. }
  2599. // 7. send : 기관코드, 마취기록번호, 수술예약번호, 서명번호
  2600. dsf_makeValue(ds_send_savedata,"instcd","string" ,sInstcd);
  2601. dsf_makeValue(ds_send_savedata,"oprsrvno","string" ,oprsrvno);
  2602. dsf_makeValue(ds_send_savedata,"anstrecno","string" ,anstrecno);
  2603. dsf_makeValue(ds_send_savedata,"lastespiyn","string",flag);
  2604. dsf_makeValue(ds_send_savedata,"espideq","string" ,"");
  2605. var oParam = {};
  2606. oParam.id = "TXMMR03711";
  2607. oParam.service = "anstrecapp.AnstRec";
  2608. oParam.method = "reqExeAnstInfoAll";
  2609. oParam.inds = "send=ds_send_savedata prog=ds_send_savedata_prog rec=ds_send_savedata_rec prcp=ds_send_savedata_prcp vslist=ds_send_savedata_vslist time=ds_send_savedata_time";
  2610. oParam.outds = "ds_rtn=rtn";
  2611. oParam.async = false;
  2612. oParam.callback = "cf_TXMMR03711";
  2613. tranf_submit(oParam);
  2614. // 2008.10.12. 상단의 환자정보 확인하기..
  2615. var top_pid = appf_getPatientInfo("pid");
  2616. if (top_pid != pid) {
  2617. alert("상단의 환자정보와 기록지의 환자정보가 상이합니다. 확인하세요.");
  2618. return;
  2619. }
  2620. // 6. 인증정보
  2621. if (flag == "Y") {
  2622. // 2008.09.26. *** 마취기록 인증데이타 만들기..
  2623. if (fGetAnstRecCert()) {
  2624. // 2013.10.24 김영기 미비조회(SMMRI01800)에서 화면 호출시 미비 상태값 변경을 위한 함수
  2625. fProcessIncompleteConfirmation();
  2626. };
  2627. lastespiyn = "Y"; // 최종인증저장 값 설정. 2014.09.04 엄영만
  2628. ds_hidden.setColumn(0,"savestate", "저장상태: 인증저장");
  2629. }
  2630. sysf_messageBox("정상적으로 저장되었습니다","I");
  2631. }
  2632. }
  2633. function cf_TRMMR03721(sSvcId, nErrorCode, sErrorMsg) {
  2634. arErrorCode.push(sSvcId, nErrorCode);
  2635. }
  2636. function cf_TXMMR03711(sSvcId, nErrorCode, sErrorMsg) {
  2637. if(nErrorCode < 0) return;
  2638. }
  2639. /**
  2640. * @desc : 마취 처방 데이타 가져오기..
  2641. * @
  2642. * @param :
  2643. * @return :
  2644. * @author :
  2645. * @---------------------------------------------------
  2646. */
  2647. function fGetDataStringAnstPrcp()
  2648. {
  2649. var refds = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item;
  2650. var dataCnt = refds.rowcount;
  2651. var dataString = "";
  2652. var tmpprcpcd = "";
  2653. // agent, drug, fluid, blood, prog
  2654. for (var i=0 ; i < dataCnt ; i++) {
  2655. var prcpcd = refds.getColumn(i,"prcpcd");
  2656. var checked = refds.getColumn(i,"checked");
  2657. if (checked == "true" || prcpcd == tmpprcpcd) {
  2658. var prcptype = refds.getColumn(i,"prcptype");
  2659. var prcpcd = refds.getColumn(i,"prcpcd");
  2660. var prcpseqno = refds.getColumn(i,"prcpseqno");
  2661. var prcpnm = refds.getColumn(i,"prcpnm");
  2662. var prcpvol = refds.getColumn(i,"prcpvol");
  2663. var prcpvolunitnm = refds.getColumn(i,"prcpvolunitnm");
  2664. var drugmthdcd = refds.getColumn(i,"drugmthdcd");
  2665. var recvol = refds.getColumn(i,"recvol");
  2666. var remark = refds.getColumn(i,"remark");
  2667. var pcaflag = refds.getColumn(i,"pcaflag");
  2668. // Agent01 인 경우 시작시간, 종료시간 저장하기..
  2669. var clscd = refds.getColumn(i,"clscd");
  2670. if (prcptype == "A" || clscd == "01") {
  2671. var drugfromdd = "";//grp_base.sw_left.case_anstmast.iv_anstmast.ds_agent01_item.lookup("prcpcd", prcpcd,"drugfromdd");
  2672. var drugfromtm = "";//grp_base.sw_left.case_anstmast.iv_anstmast.ds_agent01_item.lookup("prcpcd", prcpcd,"drugfromtm");
  2673. var drugtodd = "";//grp_base.sw_left.case_anstmast.iv_anstmast.ds_agent01_item.lookup("prcpcd", prcpcd,"drugtodd");
  2674. var drugtotm = "";//grp_base.sw_left.case_anstmast.iv_anstmast.ds_agent01_item.lookup("prcpcd", prcpcd,"drugtotm");
  2675. remark = drugfromdd + "." + drugfromtm + "." + drugtodd + "." + drugtotm;
  2676. }
  2677. dataString = dataString + sInstcd + "▦" + anstrecno + "▦" + prcptype + "▦" + prcpcd + "▦" + prcpseqno + "▦" + prcpnm + "▦";
  2678. dataString = dataString + prcpvol + "▦" + prcpvolunitnm + "▦" + drugmthdcd + "▦" + recvol + "▦";
  2679. dataString = dataString + remark + "▦" + pcaflag + "▦" + currentdate + "▩";
  2680. }
  2681. tmpprcpcd = prcpcd;
  2682. }
  2683. return dataString;
  2684. }
  2685. /**
  2686. * @desc : 마취기록 Fluid / Blood IO 팝업창을 기록
  2687. * @
  2688. * @param :
  2689. * @return :
  2690. * @---------------------------------------------------
  2691. */
  2692. function fAnstFluidBloodIO()
  2693. {
  2694. // popup form 인스턴스 넘겨주기..
  2695. // window.load("../../../emr/anstrecweb/xrw/SPMMR05300_마취환자기록IO.xrw", "modeless", "", "popup");
  2696. //2012/12/11 Start TOTAL I/O URINE 항목에 마취기록지의 Urine Output의 합계를 셋팅
  2697. if(applychk=="Y"){
  2698. var sub_total=0;
  2699. var bldloss=0;
  2700. for(var i=0; i<ds_grd_main.rowcount; i++){
  2701. var linknm=ds_grd_main.getColumn(i,"linknm");
  2702. if(linknm=="Urine Output"){
  2703. for (var j = col_fromdt + 1 ; j <= parseInt(col_todt)+ parseInt(col_fromdt); j++) {
  2704. if(parseInt(ds_grd_main.getColumn(i, j))>=0){
  2705. sub_total+=parseInt(ds_grd_main.getColumn(i, j));
  2706. }
  2707. }
  2708. }
  2709. if(linknm=="Blood Loss" || linknm=="blood loss"){
  2710. for (var j = col_fromdt + 1 ; j <= parseInt(col_todt)+ parseInt(col_fromdt); j++) {
  2711. if(parseInt(ds_grd_main.getColumn(i, j))>=0){
  2712. bldloss+=parseInt(ds_grd_main.getColumn(i, j));
  2713. }
  2714. }
  2715. }
  2716. }
  2717. if(utlf_isNull(sub_total)) sub_total = 0;
  2718. if(utlf_isNull(bldloss)) bldloss = 0;
  2719. frmf_setParameter("Urine_total",sub_total);
  2720. frmf_setParameter("Blood_loss_total",bldloss);
  2721. }
  2722. //2012/12/11 End
  2723. frmf_modal("SPMMR05300","SPMMR05300", "","","", "700", "200", "", "", "", "","","M");
  2724. //2012/12/11 Start
  2725. if(applychk=="Y"){
  2726. frmf_clearParameter("Urine_total");
  2727. }
  2728. //2012/12/11 End
  2729. }
  2730. /**
  2731. * @desc : 처방이동 버튼 클릭후 처방리스트 팝업 띄우기
  2732. * @
  2733. * @param :
  2734. * @
  2735. * @return :
  2736. * @author :
  2737. * @---------------------------------------------------
  2738. */
  2739. // function fSendPrcpList()
  2740. // {
  2741. // // 수술환자정보
  2742. // operationdata = sysf_getGlobalVariable("operation");
  2743. //
  2744. //
  2745. // // 2008.10.12. 상단의 환자정보 확인하기..
  2746. // var top_pid = appf_getPatientInfo("pid");
  2747. // if (top_pid != pid) {
  2748. // alert("상단의 환자정보와 기록지의 환자정보가 상이합니다. 확인하세요.");
  2749. // return;
  2750. // }
  2751. //
  2752. //
  2753. // var savedata ="prcpcd▦prcpvol▦mthdcd▦abbrnm▩";
  2754. // var dataString = "";
  2755. //
  2756. // var ref = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item;
  2757. // var dataCnt = ref.rowcount;
  2758. // var msg = "";
  2759. //
  2760. // // prcp 총용량이 0보다 작은지 확인하자..
  2761. // for (var i=0 ; i < dataCnt ; i++) {
  2762. // var checked = ref.getColumn(i,"checked");
  2763. // var prcpappyn = ref.getColumn(i,"prcpappyn");
  2764. // var prcptype = ref.getColumn(i,"prcptype");
  2765. // var prcpvol = ref.getColumn(i,"prcpvol");
  2766. // if (checked == "true" && prcpappyn == "Y" && prcptype != "H") {
  2767. // if (Number(prcpvol) <= 0) {
  2768. // var prcpnm = ref.getColumn(i,"prcpnm");
  2769. // msg = msg + "\n" + "-------------------------------------------------"
  2770. // msg = msg + "\n" + prcpnm ;
  2771. // }
  2772. // }
  2773. // }
  2774. //
  2775. // // 2008.01.04. 처방용량이 '0'인 경우.. 수정후 처방이동 할 것인가? 아니면 처방이동으로 바로 처리할 것인가?
  2776. // if (!utlf_isNull(msg))
  2777. // {
  2778. // msg = msg + "\n" + "================================================="
  2779. // msg = msg + "\n"
  2780. // msg = msg + "\n" + "처방용량이 입력되지 않았습니다. 수정하시겠습니까?"
  2781. // msg = msg + "\n"
  2782. // var answer = alert(msg ,"처방이동", 4); // yes : 6, no : 7
  2783. // if (answer == 6) {
  2784. // // [확인] 하면 처방내역을 로드한다.
  2785. // grp_base.sw_left.tabindex = 2;
  2786. //
  2787. // return;
  2788. // }
  2789. // }
  2790. //
  2791. // // 2008.01.08. 처방이동시 임시저장을 한 후 처방이동을 한다. (마취일반 + 마취기록 저장)
  2792. // // 2008.12.23. 처방이동시 임시저장을 안함.
  2793. //
  2794. // // prcp list
  2795. // for (var i=0 ; i < dataCnt ; i++) {
  2796. // var checked = ref.getColumn(i,"checked");
  2797. // var prcpappyn = ref.getColumn(i,"prcpappyn");
  2798. // var prcptype = ref.getColumn(i,"prcptype");
  2799. // if (checked == "true" && prcpappyn == "Y" && prcptype != "H") {
  2800. // var prcpcd = ref.getColumn(i,"prcpcd");
  2801. // var prcpvol = ref.getColumn(i,"prcpvol");
  2802. // var mthdcd = ref.getColumn(i,"drugmthdcd");
  2803. // var abbrnm = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_hidden_tmedmthdlist.lookup("mthdcd", mthdcd , "abbrnm");
  2804. // if (Number(prcpvol) > 0) {
  2805. // dataString = dataString + prcpcd + "▦" + prcpvol + "▦" + mthdcd + "▦" + abbrnm + "▩";
  2806. // }
  2807. // }
  2808. // }
  2809. //
  2810. //
  2811. // // prcp list -> OCS 팝업
  2812. // if (dataString.length > 0) {
  2813. //
  2814. // var paramyn = "Y";
  2815. // var opansflagcd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstaddcd"); // 마취일반정보의 가산여부
  2816. // var ansttm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata.getColumn(0,"ansttm") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_hiddendata.getColumn(0,"anstmnt");
  2817. // var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstfromtm"); // 마취일반정보의 마취시작시간
  2818. // var ansttodt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttodd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"ansttotm"); // 마취일반정보의 마취종료시간
  2819. //
  2820. // if (utlf_isNull(opansflagcd)) { opansflagcd = "0"; }
  2821. // if (utlf_isNull(ansttm)) { ansttm = "0000"; }
  2822. // if (utlf_isNull(anstfromdt)) { anstfromdt = utlf_getCurrentDate() + "0000"; }
  2823. // if (utlf_isNull(ansttodt)) { ansttodt = utlf_getCurrentDate() + "0000"; }
  2824. //
  2825. //
  2826. // // 마취과 의사1
  2827. // var anstdrid1 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid1");
  2828. // var anstdrid = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid1");
  2829. // var anstdrnm = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid,"usernm");
  2830. // var refseq = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid,"refseq");
  2831. //
  2832. // // 2009.07.13. 성가 요청사항..
  2833. // // 마취과 의사 1,2,3 중 선택진료의가 있는 경우 마취의를 선택진료의로 셋되게 보냄..
  2834. //
  2835. // //2013/09/06 Start 마취의 4번째 추가되면서 처방 입력시 선택 진료의 들어가도록 수정
  2836. // var anstdrid4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid4");
  2837. // var refseq4 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid4,"refseq");
  2838. // if (refseq4 == "A") { // A면 선택진료의
  2839. // anstdrid = anstdrid4;
  2840. // refseq = refseq4;
  2841. // }
  2842. // //2013/09/06 End
  2843. //
  2844. // var anstdrid3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid3");
  2845. // var refseq3 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid3,"refseq");
  2846. // if (refseq3 == "A") {
  2847. // anstdrid = anstdrid3;
  2848. // refseq = refseq3;
  2849. // }
  2850. // var anstdrid2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstdrid2");
  2851. // var refseq2 = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_init_anstdrlist.lookup("userid", anstdrid2,"refseq");
  2852. // if (refseq2 == "A") {
  2853. // anstdrid = anstdrid2;
  2854. // refseq = refseq2;
  2855. // }
  2856. // if (refseq == "A") {
  2857. // anstdrid = anstdrid1;
  2858. // }
  2859. //
  2860. // // 처방창 로딩하기..
  2861. // var mainObj = frmf_getMainViewer();
  2862. // // var xpt = window.screenleft + eval(0);
  2863. // // var ypt = window.screenTop + eval(0);
  2864. // // var coord = getRelativeCoordinate ( xpt, ypt );
  2865. // // var mon = coord[0];
  2866. // // xpt = coord[1];
  2867. // // ypt = coord[2];
  2868. //
  2869. // var xpt = this.position.left ;
  2870. // var ypt = this.position.top;
  2871. // var mon = sysf_getCurrentMonitorNumber();
  2872. //
  2873. // var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); //활성화된 처방Main 화면 object loading
  2874. //
  2875. // if(!utlf_isNull(curPrcpObj)){ //활성화된 처방화면이 있는 경우, 처방창 클로징하기..
  2876. // curPrcpObj.fPrcpWndClose();
  2877. // }
  2878. //
  2879. // // 마취기록지 refresh 안함..
  2880. // frmf_setParameter("SMMMR03700_refresh" , "false");
  2881. // frmf_setParameter("SMMMR03700_paramyn" , paramyn);
  2882. // frmf_setParameter("SMMMR03700_opansflagcd", opansflagcd);
  2883. // frmf_setParameter("SMMMR03700_ansttm" , ansttm);
  2884. // frmf_setParameter("SMMMR03700_anstfromdt" , anstfromdt);
  2885. // frmf_setParameter("SMMMR03700_ansttodt" , ansttodt);
  2886. // frmf_setParameter("SMMMR03700_anstdrid" , anstdrid);
  2887. // frmf_setParameter("SMMMR03700_refseq" , refseq);
  2888. // //20131107 파라미터 추가(이정택)
  2889. // frmf_setParameter("SMMMR03700_anstdrnm" , anstdrnm);
  2890. // //20131107
  2891. // //2013/09/06 Start 처방 로직 수정에 따른 파라미터 값 추가
  2892. // var anstrecno=grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"anstrecno");
  2893. // if(!utlf_isNull(anstrecno)){
  2894. // frmf_setParameter("SMMMR03700_anstrecno" , anstrecno);
  2895. // }
  2896. // //2013/09/06 End
  2897. // var objArg = {};
  2898. // objArg.plgv_scrnId = "SMMMR03700";
  2899. // //var sysMessageobj = frmf_getViewer("sysMessage");
  2900. // frmf_setParameter("SMMMR03700_prcp" , savedata + dataString);
  2901. // frmf_open("SMMMO00100", "SMMMO00100", objArg, false, 2, null, null, 1195, 784, null, null, null, "M");
  2902. // frmf_clearParameter ( "SMMMR03700_refresh" );
  2903. // frmf_clearParameter ( "SMMMR03700_paramyn" );
  2904. // frmf_clearParameter ( "SMMMR03700_opansflagcd" );
  2905. // frmf_clearParameter ( "SMMMR03700_ansttm" );
  2906. // frmf_clearParameter ( "SMMMR03700_anstfromdt" );
  2907. // frmf_clearParameter ( "SMMMR03700_ansttodt" );
  2908. // frmf_clearParameter ( "SMMMR03700_anstdrid" );
  2909. // frmf_clearParameter ( "SMMMR03700_refseq" );
  2910. // frmf_clearParameter ( "SMMMR03700_prcp" );
  2911. // }
  2912. // }
  2913. /**
  2914. * @desc : 처방Main 화면 Open (혈액처방을 위하여~)
  2915. * @
  2916. * @param :
  2917. * @return :
  2918. * @---------------------------------------------------
  2919. */
  2920. function fOpenPrcpMainWnd(){
  2921. // 처방창 로딩하기..
  2922. var mainObj = frmf_getMainViewer();
  2923. // var xpt = window.screenleft + eval(0);
  2924. // var ypt = window.screenTop + eval(0);
  2925. // var coord = getRelativeCoordinate ( xpt, ypt );
  2926. // var mon = coord[0];
  2927. // xpt = coord[1];
  2928. // ypt = coord[2];
  2929. var xpt = this.position.left ;
  2930. var ypt = this.position.top;
  2931. var mon = sysf_getCurrentMonitorNumber();
  2932. var curPrcpObj = mainObj.frmf_findPopup("SMMMO00100"); //활성화된 처방Main 화면 object loading
  2933. if(!utlf_isNull(curPrcpObj)){ //활성화된 처방화면이 있는 경우, 처방창 클로징하기..
  2934. curPrcpObj.fPrcpWndClose();
  2935. }
  2936. // 마취기록지 refresh 안함..
  2937. frmf_setParameter("SMMMR03700_refresh" , "false");
  2938. frmf_modal("SMMMO00100","SMMMO00100","","","","","","","","","","","M");
  2939. frmf_clearParameter ( "SMMMR03700_refresh" );
  2940. }
  2941. /**
  2942. * @group : 사용자 직종에 따른 권한 버튼 처리.
  2943. * @ver : 2007-12-08
  2944. * @by : 이은영
  2945. * @---------------------------------------------------
  2946. * @type : function
  2947. * @access : public
  2948. * @desc :
  2949. * @---------------------------------------------------
  2950. */
  2951. function fUserAuth() {
  2952. var jobkindcd = sysf_getUserInfo("jobkindcd");
  2953. ds_init.setColumn(0,"jobkindcd", jobkindcd); // 사용자 직종에 따른 권한 버튼 처리.
  2954. // 의사 : 0330
  2955. var disabled = false;
  2956. if (sysf_getUserInfo("jobkindcd") == "0330"|| sysf_getUserInfo("jobkindcd") == "0332") {
  2957. disabled = true;
  2958. }
  2959. // 1. 메인 화면
  2960. this.grp_base.swt_right.case_prog.btn_addrow.enable = disabled;
  2961. this.grp_base.swt_right.case_prog.btn_delrow.enable = disabled;
  2962. grp_base.btn_moveocs.enable = disabled;
  2963. grp_base.btn_saveinfo.enable = disabled;
  2964. grp_base.btn_saveespi.enable = disabled;
  2965. grp_base.btn_cdisload.enable = disabled; // KNUH 20110419 최원돈
  2966. grp_base.btn_cdisload.visible = (lf_getHardCDList("Y", "5553", 3) == "Y") ? true : false; // KNUH 20110421 최원돈
  2967. grup_prog.btn_progno.enable = disabled;
  2968. grup_range.btn_vsno.enable = disabled;
  2969. grup_vs.btn_vsset.enable = disabled;
  2970. grup_prog.grd_progno.enable = disabled;
  2971. grup_range.grd_range.enable = disabled;
  2972. grup_vs.grd_vs.enable = disabled;
  2973. grup_startend.grd_startend.enable = disabled;
  2974. grup_range.ipt_vsrec.enable = disabled;
  2975. grp_base.swt_right.case_remark.txt_remark.enable = disabled;
  2976. grp_base.grup_pcarem.txt_pcarem.enable = disabled;
  2977. // 2008.02.24. 시간기록 추가..
  2978. grp_base.swt_right.case_timerec.btn_addrowtimerec.enable = disabled;
  2979. grp_base.swt_right.case_timerec.btn_delrowtimerec.enable = disabled;
  2980. // 2. 마취일반정보
  2981. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_meetingdt.enable = disabled;
  2982. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_tmoutchkdt.enable = disabled;
  2983. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_anstfromdt.enable = disabled;
  2984. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_opfromdt.enable = disabled;
  2985. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_optodt.enable = disabled;
  2986. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_ansttodt.enable = disabled;
  2987. grp_base.sw_left.case_anstinfo.iv_anstinfo.btn_saveanst.enable = disabled;
  2988. // 3. 마취마스터
  2989. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_set.btn_saveprcpset.enable = disabled;
  2990. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_agent.btn_setenddt.enable = disabled;
  2991. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_agent.btn_addagent02.enable = disabled;
  2992. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_agent.btn_addagent03.enable = disabled;
  2993. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_agent.btn_addagent04.enable = disabled;
  2994. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_drug.btn_adddrug.enable = disabled;
  2995. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_fluid.btn_addfluid.enable = disabled;
  2996. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_fluid.btn_addblod.enable = disabled;
  2997. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_fluid.btn_ocsblod.enable = disabled;
  2998. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_proc.btn_addproc.enable = disabled;
  2999. grp_base.sw_left.case_anstmast.iv_anstmast.sw_left1.case_search.btn_addsearch.enable = disabled;
  3000. }
  3001. /**
  3002. * @desc : 메인 그리드 - 처방목록 그리드에 보여주기... 정렬기준
  3003. * @param :
  3004. * @
  3005. * @return :
  3006. * @author :
  3007. * @---------------------------------------------------
  3008. */
  3009. function fGridSort()
  3010. {
  3011. var gridObj = grp_base.grd_main;
  3012. //ds_grd_main.keystring = "G:sorttype,sortno,linknm,linkseqno";
  3013. ds_grd_main.keystring = "";
  3014. ds_grd_main.keystring = "S:+sorttype+sortno+linknm+linkseqno";
  3015. // gridObj.colsort(col_sorttype) = "asc";
  3016. // gridObj.colsort(col_sortno) = "asc";
  3017. // gridObj.colsort(col_linknm) = "asc";
  3018. // gridObj.colsort(col_linkseqno)= "asc";
  3019. // gridObj.sort(3, 1, gridObj.rows - 1, gridObj.cols - 1) = "usersort";
  3020. // 2010.02.12 이은영 마취기록 메인 화면에 30분 단위로 굵은 선을 보여줌..
  3021. var fromdt = graph_fromdt; // 일시 : 날짜+시+분
  3022. for (var i = col_fromdt ; i < parseInt(col_todt) + parseInt(col_fromdt) ; i++) {
  3023. if (fromdt.substr(10,2) == "30" || fromdt.substr(10,2) == "00"){
  3024. // grp_base.grd_main.setCellProperty("body",i,"line","1 solid #b1b5b9ff,2 solid #000000ff,1 solid #b1b5b9ff,1 solid #b1b5b9ff");
  3025. }else{
  3026. // grp_base.grd_main.setCellProperty("body",i,"line","1 solid #b1b5b9ff,2 solid #c0c0c0ff,1 solid #b1b5b9ff,1 solid #b1b5b9ff");
  3027. }
  3028. var tmpdt = fromdt.toDate("YYYYMMDDhhmm");
  3029. var rtndt = tmpdt.getAddDate(5, "m");
  3030. fromdt = rtndt.getDateFormat("YYYYMMDDhhmm");
  3031. }
  3032. // 2010.02.12 이은영 마취기록 메인 화면에 30분 단위로 굵은 선을 보여줌..
  3033. }
  3034. /**
  3035. * @desc : PCA 기록 - 팝업
  3036. * @
  3037. * @param :
  3038. * @return :
  3039. * @---------------------------------------------------
  3040. */
  3041. function fOpenPCA()
  3042. {
  3043. // popup form 인스턴스 넘겨주기..
  3044. frmf_modal("SPMMR06000_마취환자기록PCA","SPMMR06000_마취환자기록PCA", "","","", "700", "200", "", "", "", "M");
  3045. }
  3046. /**
  3047. * @desc : 상용구 팝업
  3048. * @id :
  3049. * @event : DOMActivate
  3050. * @return : void
  3051. * @authur : 이경희
  3052. */
  3053. function fPopCommUse()
  3054. {
  3055. frmf_setParameter("comn_chosflag", "C") // C : 상용구
  3056. frmf_setParameter("comn_formprogflag", "B") // A: Summary, B : 주호소
  3057. frmf_setParameter("openmode", "select");
  3058. //2012/12/18 Start 상용구에서 마취기록지를 구분하기 위해서
  3059. frmf_setParameter("screen_id", "SMMMR03700");
  3060. //2012/12/18 End
  3061. //modal("SPMRF04700");
  3062. frmf_modal("SPMRF04900","SPMRF04900","","","","","","","","","","","M");
  3063. var rtn = utlf_transNullToEmpty(frmf_getParameter("comncnts")); //내용
  3064. //2012/12/12 Start Progress 부분 수정(상용구 선택시 하니씩 순서대로 들어갈 수 있도록 수정)
  3065. var result = new Array();
  3066. var cnt = ds_grd_prog.getCaseCount("progrec != null");
  3067. var j=cnt;
  3068. result = rtn.split("▦");
  3069. for(var i=0; i<=result.length; i++){
  3070. if(!utlf_isNull(result[i])){
  3071. ds_grd_prog.setColumn(j,"progrec", result[i]);
  3072. j++;
  3073. }
  3074. }
  3075. //2012/12/12 End
  3076. frmf_setParameter("comncnts", "");
  3077. //2012/12/18 Start
  3078. frmf_clearParameter("setParameter");
  3079. //grd_prog.resizeCells();
  3080. }
  3081. /**
  3082. * @desc : 상용구 팝업
  3083. * @id :
  3084. * @event : DOMActivate
  3085. * @return : void
  3086. * @authur : 이경희
  3087. */
  3088. function fPopCommUsePCA()
  3089. {
  3090. frmf_setParameter("comn_chosflag", "C") // C : 상용구
  3091. frmf_setParameter("comn_formprogflag", "B") // A: Summary, B : 주호소
  3092. frmf_setParameter("openmode", "select");
  3093. //modal("SPMRF04700");
  3094. frmf_modal("SPMRF04900","SPMRF04900","","","","","","","","","","","M");
  3095. var rtn = frmf_getParameter("comncnts"); //내용
  3096. frmf_setParameter("comncnts", "");
  3097. if (!utlf_isNull(rtn)) {
  3098. ds_anstinfo.setColumn(0,"pcarem", rtn);
  3099. }
  3100. }
  3101. /**
  3102. * @group :
  3103. * @ver : 2008.09.25.
  3104. * @by : 이은영
  3105. * @---------------------------------------------------
  3106. * @type : function
  3107. * @access : public
  3108. * @desc : 기록 저장
  3109. * @param : pFlag : TempSave : 임시저장, CertSave : 인증저장
  3110. * @return :
  3111. * @---------------------------------------------------
  3112. */
  3113. function fGetAnstRecCert(){
  3114. objDOM = rptf_createDOM();
  3115. // *** 마취기록 리뷰를 해서 그 html 파일을 읽어온다.
  3116. fAnstRecReview();
  3117. //model.removeNode("/root/main/signSaveData");
  3118. // model.makeNode(xSignPath);
  3119. dsf_createDs("ds_signSaveData_anstinfo");
  3120. dsf_copyDs(ds_signSaveData_anstinfo,grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700,"replace");
  3121. //copyNodeset(xSignPathAnstInfo ,"/root/main/anstinfo", "", model, iv_anstinfo.model);
  3122. // 2008.09.29. format date..
  3123. // 마취, 수술 (시작일시, 종료일시)
  3124. var meetingdt = ds_signSaveData_anstinfo.getColumn(0,"meetingdt");
  3125. var tmoutchkdt = ds_signSaveData_anstinfo.getColumn(0,"tmoutchkdt");
  3126. var anstfromdt = ds_signSaveData_anstinfo.getColumn(0,"anstfromdt");
  3127. var ansttodt = ds_signSaveData_anstinfo.getColumn(0,"ansttodt");
  3128. var opfromdt = ds_signSaveData_anstinfo.getColumn(0,"opfromdt");
  3129. var optodt = ds_signSaveData_anstinfo.getColumn(0,"optodt");
  3130. var opfcsttodt = ds_signSaveData_anstinfo.getColumn(0,"opfcsttodt");
  3131. dsf_makeValue(ds_signSaveData_anstinfo,"meetingdt" , "string", fDateFormat(meetingdt));
  3132. dsf_makeValue(ds_signSaveData_anstinfo,"tmoutchkdt", "string",fDateFormat(tmoutchkdt));
  3133. dsf_makeValue(ds_signSaveData_anstinfo,"anstfromdt", "string",fDateFormat(anstfromdt));
  3134. dsf_makeValue(ds_signSaveData_anstinfo,"ansttodt" , "string",fDateFormat(ansttodt));
  3135. dsf_makeValue(ds_signSaveData_anstinfo,"opfromdt" , "string",fDateFormat(opfromdt));
  3136. dsf_makeValue(ds_signSaveData_anstinfo,"optodt" , "string",fDateFormat(optodt));
  3137. dsf_makeValue(ds_signSaveData_anstinfo,"opfcsttodt", "string",fDateFormat(opfcsttodt));
  3138. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/anstinfo", ds_signSaveData_anstinfo);
  3139. dsf_createDs("ds_signSaveData_opinfo");
  3140. dsf_copyDs(ds_signSaveData_opinfo,grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_opinfo_item,"replace");
  3141. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/opinfo", ds_signSaveData_opinfo);
  3142. dsf_createDs("ds_signSaveData_recmast");
  3143. dsf_copyDs(ds_signSaveData_recmast,grp_base.sw_left.case_anstmast.iv_anstmast.ds_recmast_item,"replace");
  3144. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/recmast", ds_signSaveData_recmast);
  3145. dsf_createDs("ds_signSaveData_prog");
  3146. dsf_copyDs(ds_signSaveData_prog,ds_grd_prog,"replace");
  3147. // 2008.09.29. format date..
  3148. // progress date...
  3149. var dataCnt = ds_grd_prog.rowcount;
  3150. for (var i=0 ; i < dataCnt ; i++) {
  3151. var progfromdt = ds_signSaveData_prog.getColumn(i,"progfromdt");
  3152. ds_signSaveData_prog.setColumn(i,"progfromdt", fDateFormat(progfromdt));
  3153. ds_signSaveData_prog.setColumn(i,"progno", i);
  3154. }
  3155. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/prog", ds_signSaveData_prog);
  3156. dsf_createDs("ds_signSaveData_prcp");
  3157. dsf_copyDs(ds_signSaveData_prcp,grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item,"replace");
  3158. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/prcp", ds_signSaveData_prcp);
  3159. dsf_createDs("ds_signSaveData_item");
  3160. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.filter("linktype!='S'");
  3161. ds_signSaveData_item.copyData(grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem ,true);
  3162. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.filter("");
  3163. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/item/item", ds_signSaveData_item);
  3164. dsf_copyDs(ds_signSaveData_item,ds_grd_timerec ,"after");
  3165. dsf_createDs("ds_signSaveData_vslist");
  3166. dsf_copyDs(ds_signSaveData_vslist,ds_grd_vslist,"replace");
  3167. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/vslist", ds_signSaveData_vslist);
  3168. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.filter("");
  3169. // 2008.09.29. v/s 항목 셋..
  3170. var dataRow = 0;
  3171. var vsCnt = ds_signSaveData_vslist.rowcount;
  3172. dsf_createDs("ds_signSaveData_temp");
  3173. var arrColInfo = [{col: "vsitemcd", type:"string", size:256},
  3174. {col: "vsitemnm", type:"string", size:256},
  3175. {col: "t1", type:"string", size:256},
  3176. {col: "r1", type:"string", size:256},
  3177. {col: "t2", type:"string", size:256},
  3178. {col: "r2", type:"string", size:256},
  3179. {col: "t3", type:"string", size:256},
  3180. {col: "r3", type:"string", size:256},
  3181. {col: "t4", type:"string", size:256},
  3182. {col: "r4", type:"string", size:256},
  3183. {col: "t5", type:"string", size:256},
  3184. {col: "r5", type:"string", size:256},
  3185. {col: "t6", type:"string", size:256},
  3186. {col: "r6", type:"string", size:256}
  3187. ]
  3188. dsf_createDs("ds_signSaveData_time",arrColInfo);
  3189. for (var i=0 ; i < vsCnt ; i++)
  3190. {
  3191. var vsitemcd = ds_signSaveData_vslist.getColumn(i,"vsitemcd");
  3192. var vsitemnm = ds_signSaveData_vslist.getColumn(i,"vsitemnm");
  3193. var dataCnt = ds_signSaveData_item.getCaseCount("linkcd=='"+ vsitemcd +"'");
  3194. if (dataCnt > 0)
  3195. {
  3196. ds_signSaveData_item.filter("linkcd=='"+ vsitemcd +"'");
  3197. ds_signSaveData_temp.copyData(ds_signSaveData_item,true);
  3198. //copyNodeset(xSignPathTemp+"/item", xSignPathItem+"[linkcd='"+ vsitemcd +"']");
  3199. ds_signSaveData_item.filter("");
  3200. //grd_temp.colsort(grd_temp.colRef("fromdt")) = "asc";
  3201. //grd_temp.sort(1, 0, grd_temp.rows - 1, grd_temp.cols - 1) = "usersort";
  3202. //grd_temp.gridToInstance();
  3203. ds_grd_temp.keystring="S:fromdt";
  3204. //20181012 이돈희 : TF->XP 변환 오류, 마취기록지의 Vital Sign이 시간 순으로 정렬이 안됨
  3205. grdf_realSort("asc", "fromdt", ds_signSaveData_temp);
  3206. for (var j=0 ; j < dataCnt ; j++)
  3207. {
  3208. var t1 = ds_signSaveData_temp.getColumn((j+0),"fromdt");
  3209. var r1 = ds_signSaveData_temp.getColumn((j+0),"rec");
  3210. var t2 = ds_signSaveData_temp.getColumn((j+1),"fromdt");
  3211. var r2 = ds_signSaveData_temp.getColumn((j+1),"rec");
  3212. var t3 = ds_signSaveData_temp.getColumn((j+2),"fromdt");
  3213. var r3 = ds_signSaveData_temp.getColumn((j+2),"rec");
  3214. var t4 = ds_signSaveData_temp.getColumn((j+3),"fromdt");
  3215. var r4 = ds_signSaveData_temp.getColumn((j+3),"rec");
  3216. var t5 = ds_signSaveData_temp.getColumn((j+4),"fromdt");
  3217. var r5 = ds_signSaveData_temp.getColumn((j+4),"rec");
  3218. var t6 = ds_signSaveData_temp.getColumn((j+5),"fromdt");
  3219. var r6 = ds_signSaveData_temp.getColumn((j+5),"rec");
  3220. dataRow = ds_signSaveData_time.addRow();
  3221. ds_signSaveData_time.setColumn(dataRow,"vsitemcd", vsitemcd);
  3222. ds_signSaveData_time.setColumn(dataRow,"vsitemnm", vsitemnm);
  3223. ds_signSaveData_time.setColumn(dataRow,"t1", fTimeFormat(t1));
  3224. ds_signSaveData_time.setColumn(dataRow,"r1", r1);
  3225. ds_signSaveData_time.setColumn(dataRow,"t2", fTimeFormat(t2));
  3226. ds_signSaveData_time.setColumn(dataRow,"r2", r2);
  3227. ds_signSaveData_time.setColumn(dataRow,"t3", fTimeFormat(t3));
  3228. ds_signSaveData_time.setColumn(dataRow,"r3", r3);
  3229. ds_signSaveData_time.setColumn(dataRow,"t4", fTimeFormat(t4));
  3230. ds_signSaveData_time.setColumn(dataRow,"r4", r4);
  3231. ds_signSaveData_time.setColumn(dataRow,"t5", fTimeFormat(t5));
  3232. ds_signSaveData_time.setColumn(dataRow,"r5", r5);
  3233. ds_signSaveData_time.setColumn(dataRow,"t6", fTimeFormat(t6));
  3234. ds_signSaveData_time.setColumn(dataRow,"r6", r6);
  3235. j=j+5;
  3236. }
  3237. }
  3238. }
  3239. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/temp", ds_signSaveData_temp);
  3240. rptf_setNodeListToDOM(objDOM, "/root/main/signSaveData/time", ds_signSaveData_time);
  3241. //인증저장
  3242. if (!fSign()) return false;
  3243. var oParam = {};
  3244. oParam.id = "TXMMR03712";
  3245. oParam.service = "anstrecapp.AnstRec";
  3246. oParam.method = "reqExeAnstEspi";
  3247. oParam.inds = "signinfo=ds_send_signdata";
  3248. oParam.outds = "";
  3249. oParam.async = false;
  3250. oParam.callback = "cf_TXMMR03712";
  3251. tranf_submit(oParam);
  3252. if(arErrorCode.pop("TXMMR03712") > -1){
  3253. dsf_deleteDs("ds_signSaveData_anstinfo");
  3254. dsf_deleteDs("ds_signSaveData_opinfo");
  3255. dsf_deleteDs("ds_signSaveData_recmast");
  3256. dsf_deleteDs("ds_signSaveData_prog");
  3257. dsf_deleteDs("ds_signSaveData_prcp");
  3258. dsf_deleteDs("ds_signSaveData_item");
  3259. dsf_deleteDs("ds_signSaveData_vslist");
  3260. dsf_deleteDs("ds_signSaveData_temp");
  3261. dsf_deleteDs("ds_signSaveData_time");
  3262. } else {
  3263. return false;
  3264. }
  3265. return true;
  3266. }
  3267. function cf_TXMMR03712(sSvcId, nErrorCode, sErrorMsg) {
  3268. arErrorCode.push(sSvcId, nErrorCode);
  3269. }
  3270. /**
  3271. * @group :
  3272. * @ver : 2008.09.25.
  3273. * @by : 이은영
  3274. * @---------------------------------------------------
  3275. * @type : function
  3276. * @access : public
  3277. * @desc : 인증로직
  3278. * @param :
  3279. * @return :
  3280. * @---------------------------------------------------
  3281. */
  3282. function fSign(){
  3283. // 상단정보에서 환자정보 set 하기..
  3284. fPamInfo();
  3285. var ls_emrinptsavetime = lf_getHardCDList("Y", 401, 3, null);
  3286. var ll_emrinptsavetime = ls_emrinptsavetime == "" ? 0 : parseInt(ls_emrinptsavetime) * -1;
  3287. var gs_emrinptsavetime = sysf_getGlobalVariable("emrinptsavetime"); // 이전 인증저장시간
  3288. if (ll_emrinptsavetime < 0 && !utlf_isNull(gs_emrinptsavetime) && gs_emrinptsavetime >= utlf_getCurrentDateTime().toDate("YYYYMMDD hhmmss").getAddDate(ll_emrinptsavetime, "m").getDateFormat("YYYYMMDD hhmmss")) {
  3289. Sign.certreload = false ; // 전자서명 호출시 인증서가 팝업 되지 않도록 처리
  3290. } else {
  3291. Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
  3292. }
  3293. if(Sign.signprocess() == true){
  3294. // 전자인증 관련 환자 인적 정보를 보내줌.
  3295. dsf_makeValue(ds_send_signdata,"pid", "string", sPid );//등록번호
  3296. if( sIOFlag =="O" ){
  3297. dsf_makeValue(ds_send_signdata,"orddd", "string", sOrddd); //입원일자(입원,응급)/진료일자(외래)
  3298. }else{
  3299. dsf_makeValue(ds_send_signdata,"orddd", "string", sIndd); //입원일자(입원,응급)/진료일자(외래)
  3300. }
  3301. dsf_makeValue(ds_send_signdata,"signno", "string", ""); //서명번호
  3302. dsf_makeValue(ds_send_signdata,"cretno", "string", sCretNo); //생성번호
  3303. var sOpCnfmDd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  3304. dsf_makeValue(ds_send_signdata,"recdd", "string", sOpCnfmDd); //실제 기록 일자에서 수술확정일자로 변경 2015.01.16 이윤주 요청 20150108010
  3305. dsf_makeValue(ds_send_signdata,"rectm", "string", utlf_getCurrentTime()); //실제 기록이 이루어진 기록시간
  3306. dsf_makeValue(ds_send_signdata,"recsaveflag","string", "Y"); //전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  3307. dsf_makeValue(ds_send_signdata,"signflag", "string", "01" ); //서명자료구분 (01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  3308. dsf_makeValue(ds_send_signdata,"signgenrflag","string", sIOFlag); //외래/입원구분(코드정의서 M0010 참조)
  3309. dsf_makeValue(ds_send_signdata,"formcd", "string", formcd); //각 기록지별 서식코드
  3310. dsf_makeValue(ds_send_signdata,"orddeptcd","string", sOrdDeptCd); //진료부서코드
  3311. dsf_makeValue(ds_send_signdata,"orddrid", "string", sOrdDrId ); //진료의사ID
  3312. dsf_makeValue(ds_send_signdata,"dispyn", "string", "Y"); //기록뷰어에는 조회안되도록
  3313. // 인증할 데이터 정보(미기록 노드 제거된 정보)
  3314. // 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  3315. dsf_makeValue(ds_send_signdata,"signbfcnts" , "string", Sign.signedInfos[1]);
  3316. // 공인인증 처리후 데이터
  3317. dsf_makeValue(ds_send_signdata,"signaftcnts" ,"string", Sign.signedInfos[2]);
  3318. // 마취기록을 위한 추가 컬럼....
  3319. dsf_makeValue(ds_send_signdata,"oprsrvno" , "string",oprsrvno);
  3320. dsf_makeValue(ds_send_signdata,"anstrecno" , "string",anstrecno);
  3321. }else{
  3322. return false;
  3323. }
  3324. dsf_makeValue(ds_send_signdata,"screenid", "string", frmf_getScreenID());
  3325. sysf_setGlobalVariable("emrinptsavetime", utlf_getCurrentDateTime()); // 인증저장시간 설정
  3326. return true;
  3327. }
  3328. /**
  3329. * @group :
  3330. * @ver : 2008.09.25.
  3331. * @by : 이은영
  3332. * @---------------------------------------------------
  3333. * @type : function
  3334. * @access : public
  3335. * @desc : 상단 환자정보 가져오기..
  3336. * @param :
  3337. * @return :
  3338. * @---------------------------------------------------
  3339. */
  3340. function fPamInfo(){
  3341. var node = sysf_getGlobalVariable("paminfo");
  3342. dsf_setCSVToDs("ds_paminfo", node);
  3343. sPid = ds_paminfo.getColumn(0,"pid"); // 환자번호
  3344. sIndd = ds_paminfo.getColumn(0,"indd"); // 입원일자
  3345. sOrddd = ds_paminfo.getColumn(0,"orddd"); // 진료일자
  3346. sCretNo = ds_paminfo.getColumn(0,"cretno"); // 환자 일자별 일련번호
  3347. sInstcd = ds_paminfo.getColumn(0,"instcd"); // 기관코드
  3348. sIOFlag = ds_paminfo.getColumn(0,"ioflag"); // 입원/외래 구분
  3349. sWardCD = ds_paminfo.getColumn(0,"wardcd");
  3350. sRoomCD = ds_paminfo.getColumn(0,"roomcd");
  3351. sOrdDeptCd = ds_paminfo.getColumn(0,"orddeptcd"); // 진료과코드
  3352. sOrdDrId = ds_paminfo.getColumn(0,"medispclid"); // 진료의사ID
  3353. }
  3354. /**
  3355. * @group :
  3356. * @ver : 2007.06.15
  3357. * @by : 이은영
  3358. * @---------------------------------------------------
  3359. * @type : function
  3360. * @access : public
  3361. * @desc : format date
  3362. * @param :
  3363. * @return :
  3364. * @---------------------------------------------------
  3365. */
  3366. function fDateFormat(date){
  3367. if (utlf_isNull(date)) { return; }
  3368. if (date.length == 0) { return; }
  3369. if (date.length == 8) {
  3370. var yyyy = date.substr(0,4);
  3371. var mm = date.substr(4,2);
  3372. var dd = date.substr(6,2);
  3373. return yyyy+'-'+mm+'-'+dd;
  3374. } else {
  3375. var yyyy = date.substr(0,4);
  3376. var mm = date.substr(4,2);
  3377. var dd = date.substr(6,2);
  3378. var hh = date.substr(8,2);
  3379. var nn = date.substr(10,2);
  3380. return yyyy+'-'+mm+'-'+dd+' '+hh+':'+nn;
  3381. }
  3382. }
  3383. /**
  3384. * @group :
  3385. * @ver : 2007.06.15
  3386. * @by : 이은영
  3387. * @---------------------------------------------------
  3388. * @type : function
  3389. * @access : public
  3390. * @desc : format date
  3391. * @param :
  3392. * @return :
  3393. * @---------------------------------------------------
  3394. */
  3395. function fTimeFormat(date){
  3396. if (utlf_isNull(date)) { return; }
  3397. if (date.length == 0) { return; }
  3398. if (date.length > 8) {
  3399. var hh = date.substr(8,2);
  3400. var nn = date.substr(10,2);
  3401. return hh+':'+nn;
  3402. }
  3403. }
  3404. /**
  3405. * @group :
  3406. * @ver : 2008.10.10
  3407. * @by : 이은영
  3408. * @---------------------------------------------------
  3409. * @type : function
  3410. * @access : public
  3411. * @desc : format date
  3412. * @param :
  3413. * @return :
  3414. * @---------------------------------------------------
  3415. */
  3416. // function fSetColor(gridObj)
  3417. // {
  3418. // for (var i = row_startend+1 ; i <= gridObj.rows; i++) {
  3419. // if (i == gridObj.row) {
  3420. // gridObj.cellstyle("background-color", gridObj.row, col_linknm) = "#ff99ff";
  3421. // } else {
  3422. // gridObj.cellstyle("background-color", gridObj.row, col_linknm) = "#ffffff";
  3423. // }
  3424. // }
  3425. // }
  3426. /**
  3427. * @desc : 시간기록 로우 추가하기..
  3428. * @
  3429. * @param :
  3430. * @return :
  3431. * @author : 2009.02.25. 이은영
  3432. * @---------------------------------------------------
  3433. */
  3434. function fAddRowTimeRec()
  3435. {
  3436. // 시간기록 가져오기..
  3437. //var dataRef = "/root/main/grd_timerec/item";
  3438. var dataCnt = ds_grd_timerec.rowcount;
  3439. var i = ds_grd_timerec.addRow();
  3440. var dt = utlf_getCurrentDate();
  3441. var tm = utlf_getCurrentTime();
  3442. tm = tm.substring(0,4);
  3443. if (graph_fromdt.length > 7) { dt = graph_fromdt.substring(0,8); }
  3444. ds_grd_timerec.enableevent = false;
  3445. ds_grd_timerec.setColumn(i,"linktype" ,"S");
  3446. ds_grd_timerec.setColumn(i,"linkcd" ,"");
  3447. ds_grd_timerec.setColumn(i,"linkseqno" ,"0");
  3448. ds_grd_timerec.setColumn(i,"fromdt" ,dt + tm);
  3449. ds_grd_timerec.setColumn(i,"todt" ,"");
  3450. ds_grd_timerec.setColumn(i,"rec" ,"");
  3451. ds_grd_timerec.setColumn(i,"subrec" ,"");
  3452. ds_grd_timerec.setColumn(i,"date" ,dt);
  3453. ds_grd_timerec.setColumn(i,"time" ,tm);
  3454. ds_grd_timerec.enableevent = true;
  3455. fSetTimeRec();
  3456. }
  3457. /**
  3458. * @desc : 시간기록 로우 삭제하기..
  3459. * @
  3460. * @param :
  3461. * @return :
  3462. * @author : 2009.02.25. 이은영
  3463. * @---------------------------------------------------
  3464. */
  3465. function fDelRowTimeRec()
  3466. {
  3467. ds_grd_timerec.deleteRow(ds_grd_timerec.rowposition);
  3468. fDisplayTimeRec();
  3469. }
  3470. /**
  3471. * @desc : 시간기록 셋하기..
  3472. * @
  3473. * @param :
  3474. * @return :
  3475. * @author : 2009.02.25. 이은영
  3476. * @---------------------------------------------------
  3477. */
  3478. function fOpenTimeRec()
  3479. {
  3480. ds_grd_timerec.enableevent = false;
  3481. // 시간기록 가져오기..
  3482. var dataRef = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  3483. //copyNodeset(dataRef, "/root/main/anstitem/item[linktype='S']", "replace", model, iv_anstprcp.model);
  3484. dataRef.filter("linktype=='S'");
  3485. ds_grd_timerec.copyData(dataRef, true);
  3486. dataRef.filter("");
  3487. var dataCnt = ds_grd_timerec.rowcount; //getNodesetCnt(model, dataRef);
  3488. for (var i = 0 ; i < dataCnt ; i++) {
  3489. var linktype = ds_grd_timerec.getColumn(i,"linktype");
  3490. if (linktype == "S") {
  3491. var linkcd = ds_grd_timerec.getColumn(i,"linkcd");
  3492. var fromdt = ds_grd_timerec.getColumn(i,"fromdt");
  3493. var dt = fromdt.substring(0,8);
  3494. var tm = fromdt.substring(8,12);
  3495. dsf_makeValue(ds_grd_timerec,"date","string", dt, i);
  3496. dsf_makeValue(ds_grd_timerec,"time","string", tm, i);
  3497. }
  3498. }
  3499. ds_grd_timerec.enableevent = true;
  3500. }
  3501. /**
  3502. * @desc : 시간기록 더하기..
  3503. * @
  3504. * @param :
  3505. * @return :
  3506. * @author : 2009.02.25. 이은영
  3507. * @---------------------------------------------------
  3508. */
  3509. function fSetTimeRec()
  3510. {
  3511. // 시간기록 가져오기..
  3512. //var dataRef = "/root/main/grd_timerec/item";
  3513. ds_grd_timerec.enableevent = false;
  3514. var dataCnt = ds_grd_timerec.rowcount; //getNodesetCnt(model, dataRef);
  3515. for (var i = 0 ; i < dataCnt ; i++) {
  3516. var linktype = ds_grd_timerec.getColumn(i,"linktype");
  3517. if (linktype == "S") {
  3518. var linkcd = ds_grd_timerec.getColumn(i,"linkcd");
  3519. if (!utlf_isNull(linkcd)) {
  3520. var rec = ds_timerec.lookup("tmreccd", linkcd ,"tmrecnm");
  3521. var dt = ds_grd_timerec.getColumn(i,"date");
  3522. var tm = ds_grd_timerec.getColumn(i,"time");
  3523. var fromdt = dt + tm;
  3524. //dsf_makeValue(ds_grd_timerec,"fromdt","string", fromdt,i);
  3525. //dsf_makeValue(ds_grd_timerec,"rec", "string",rec,i);
  3526. ds_grd_timerec.setColumn(i,"fromdt", fromdt);
  3527. ds_grd_timerec.setColumn(i,"rec" , rec);
  3528. }
  3529. }
  3530. }
  3531. ds_grd_timerec.enableevent = true;
  3532. fDisplayTimeRec();
  3533. }
  3534. /**
  3535. * @desc : 시작종료 심볼 표시하기
  3536. * @
  3537. * @param :
  3538. * @return :
  3539. * @author : 2009.02.25. 이은영
  3540. * @---------------------------------------------------
  3541. *
  3542. */
  3543. function fDisplayTimeRec()
  3544. {
  3545. // 그리드 컬럼 초기화
  3546. ds_grd_main.enableevent = false;
  3547. for (var i = col_fromdt ; i < parseInt(col_todt) + parseInt(col_fromdt) ; i++) {
  3548. ds_grd_main.setColumn(row_startend, lf_getBindCellName(grp_base.grd_main,i), "");
  3549. }
  3550. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다..
  3551. // 2008.10.04. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다..
  3552. var anstfromdt = utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd")) + utlf_transNullToEmpty(grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm"));
  3553. if (anstfromdt.length != 12) {
  3554. ds_grd_main.enableevent = true;
  3555. return;
  3556. }
  3557. var gridObj = grp_base.grd_main;
  3558. var linktype = "S";
  3559. // 처방목록에 시작시간, 종료시간 셋 해주자~
  3560. //var ref = "/root/main/grd_timerec/item";
  3561. var dataCnt = ds_grd_timerec.rowcount;
  3562. for (var i=0 ; i < dataCnt ; i++) {
  3563. var tmplinktype = ds_grd_timerec.getColumn(i,"linktype");
  3564. if (tmplinktype == linktype) {
  3565. var fromdt = ds_grd_timerec.getColumn(i,"fromdt");
  3566. var linkcd = ds_grd_timerec.getColumn(i,"linkcd");
  3567. var symbol = ds_timerec.lookup("tmreccd", linkcd, "tmrecnm");
  3568. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  3569. if (Number(fromdt) < Number(anstfromdt)) {
  3570. // fromdt = graph_fromdt;
  3571. }
  3572. for (var j = col_fromdt + 1 ; j < parseInt(col_todt) + parseInt(col_fromdt) + 1; j++) {
  3573. var colDate1 = ds_timeheader.getColumn(0,"t"+j) + ds_timeheader.getColumn(1,"t"+j);
  3574. var colDate2 = Number(colDate1) + 4;
  3575. if (colDate1 <= fromdt && fromdt <= colDate2) {
  3576. var colString = gridObj.getCellText(row_startend, j);
  3577. if (colString.length > 0) {
  3578. colString = colString + "," + symbol;
  3579. } else {
  3580. colString = symbol;
  3581. }
  3582. ds_grd_main.setColumn(row_startend, lf_getBindCellName(grp_base.grd_main,j), colString);
  3583. }
  3584. }
  3585. }
  3586. }
  3587. var gridObj = grp_base.swt_right.case_timerec.grd_timerec;
  3588. ds_grd_timerec.keystring="S:date+time"
  3589. //gridObj.colsort(gridObj.colref("date")) = "asc";
  3590. //gridObj.colsort(gridObj.colref("time")) = "asc";
  3591. //gridObj.sort(1, 1, gridObj.rows - 1, gridObj.cols - 1) = "usersort";
  3592. //gridObj.refresh();
  3593. //gridObj.gridToInstance();
  3594. //gridObj.refresh();
  3595. ds_grd_main.enableevent = true;
  3596. }
  3597. /**
  3598. * @desc : 시작종료 심볼 표시하기 && 인스턴스 추가 또는 업데이트
  3599. * @ 시작종료 심볼 적용
  3600. * @ - 01 : X
  3601. * @ - 02 : T
  3602. * @ - 03 : ⊙
  3603. * @ - 04 : XT
  3604. * @ - 05 : TX
  3605. * @ - 06 : Ton
  3606. * @ - 07 : Toff
  3607. * @param :
  3608. * @return :
  3609. * @---------------------------------------------------
  3610. *
  3611. */
  3612. function fSetGridTimeRec(nCol)
  3613. {
  3614. grup_startend.visible = false;
  3615. var symbol = grup_startend.grd_startend.getCellText(grup_startend.grd_startend.currentrow, grup_startend.grd_startend.currentcol);
  3616. //grup_startend.grd_startend.currentcol = 2;
  3617. grup_startend.grd_startend.setCellPos(2);
  3618. // 2009.02.24. 시간기록 추가..
  3619. var linkcd = ds_timerec.lookup("tmrecnm", symbol,"tmreccd");
  3620. var linktype = "S";
  3621. // 선택된 시작일시
  3622. var gridObj = this.grp_base.grd_main;
  3623. var j = gridObj.currentcol;
  3624. if( utlf_isNull(j) || j == -1 ) j = nCol;
  3625. var fromdt = utlf_transNullToEmpty(ds_timeheader.getColumn(0,"t"+j)) + utlf_transNullToEmpty(ds_timeheader.getColumn(1,"t"+j));
  3626. var todt = Number(fromdt) + 4;
  3627. if (utlf_isNull(linkcd)) {
  3628. linkcd = "00";
  3629. symbol = gridObj.getCellText(gridObj.currentrow, gridObj.currentcol);
  3630. }
  3631. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간보다 선택된 시작시간이 작으면 마취시작시간으로 저장한다..
  3632. // 2008.10.04. meeting time을 확인한다.. meeting time보다 선택된 시작시간이 작으면 meeting time으로 저장한다..
  3633. var anstfromdt = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingdd") + grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_anstinfo_5700.getColumn(0,"meetingtm");
  3634. if (anstfromdt.length != 12) {
  3635. return;
  3636. }
  3637. if (fromdt < anstfromdt) {
  3638. fromdt = anstfromdt;
  3639. }
  3640. // 선택된 시작일시
  3641. var j = gridObj.currentcol;
  3642. if( utlf_isNull(j) || j == -1 ) j = nCol;
  3643. var fromdt = utlf_transNullToEmpty(ds_timeheader.getColumn(0,"t"+j)) + utlf_transNullToEmpty(ds_timeheader.getColumn(1,"t"+j));
  3644. var todt = Number(fromdt) + 4;
  3645. // 시간기록 가져오기..
  3646. //var ref = "/root/main/grd_timerec/item";
  3647. var dataCnt = ds_grd_timerec.rowcount;
  3648. ds_grd_timerec.enableevent = false;
  3649. // 추가 또는 업데이트...
  3650. for (var i=0 ; i <= dataCnt ; i++) {
  3651. var tmplinktype = ds_grd_timerec.getColumn(i,"linktype");
  3652. var tmpfromdt = ds_grd_timerec.getColumn(i,"fromdt");
  3653. if (tmplinktype == linktype && fromdt <= tmpfromdt && tmpfromdt <= todt) {
  3654. if (utlf_isNull(symbol)) {
  3655. ds_grd_timerec.deleteRow(i);
  3656. break;
  3657. } else {
  3658. var tmplinkcd = ds_grd_timerec.getColumn(i,"linkcd");
  3659. if (tmplinkcd == linkcd) {
  3660. ds_grd_timerec.setColumn(i,"linkcd", linkcd);
  3661. ds_grd_timerec.setColumn(i,"rec", symbol);
  3662. break;
  3663. }
  3664. }
  3665. }
  3666. }
  3667. if (i > dataCnt) {
  3668. if (dataCnt > 0) {
  3669. var checkValue = ds_grd_timerec.getColumn(dataCnt-1, "linktype");
  3670. if (!utlf_isNull(checkValue)) {
  3671. dataCnt = ds_grd_timerec.addRow();
  3672. }
  3673. } else {
  3674. dataCnt = ds_grd_timerec.addRow();
  3675. }
  3676. ds_grd_timerec.setColumn(dataCnt,"linktype" , linktype);
  3677. ds_grd_timerec.setColumn(dataCnt,"linkcd" , linkcd);
  3678. ds_grd_timerec.setColumn(dataCnt,"linkseqno", "");
  3679. ds_grd_timerec.setColumn(dataCnt,"fromdt" , fromdt);
  3680. ds_grd_timerec.setColumn(dataCnt,"todt" , "");
  3681. ds_grd_timerec.setColumn(dataCnt,"rec" , symbol);
  3682. ds_grd_timerec.setColumn(dataCnt,"subrec" , "");
  3683. ds_grd_timerec.setColumn(dataCnt,"date" , fromdt.substring(0,8));
  3684. ds_grd_timerec.setColumn(dataCnt,"time" , fromdt.substring(8,12));
  3685. // var dt = ds_timeheader.getColumn(0,"t"+ gridObj.currentcol).substring(0,8) ;
  3686. // var tm = ds_timeheader.getColumn(0,"t"+ gridObj.currentcol).substring(8,2) + ds_timeheader.getColumn(1,"t"+ gridObj.currentcol);
  3687. // ds_grd_timerec.setColumn(dataCnt,"date" , dt);
  3688. // ds_grd_timerec.setColumn(dataCnt,"time" , tm);
  3689. }
  3690. ds_grd_timerec.enableevent = true;
  3691. fDisplayTimeRec();
  3692. }
  3693. /**
  3694. * @desc : 시작종료 심볼 표시하기 && 인스턴스 추가 또는 업데이트
  3695. * @ 시작종료 심볼 적용
  3696. * @ - 04 : XT (마취시작)
  3697. * @ - 05 : TX (마취종료)
  3698. * @ - 03 : ⊙ (수술시작,수술종료)
  3699. * @ - flag = 1 : 수술시작 , 2 : 수술종료
  3700. * @param :
  3701. * @return :
  3702. * @---------------------------------------------------
  3703. *
  3704. */
  3705. function fSetTimeRecAnstInfo(linkcd, fromdt, flag)
  3706. {
  3707. //grup_startend.grd_startend.currentcol = 2;
  3708. var i =0;
  3709. ds_timerec.selectRow(ds_timerec.rowposition);
  3710. grup_startend.grd_startend.setCellPos(2);
  3711. var linktype = "S";
  3712. // 2009.02.24. 시간기록 추가..
  3713. var symbol = ds_timerec.lookup("tmreccd", linkcd, "tmrecnm");
  3714. // 시간기록 가져오기..
  3715. var dataCnt = ds_grd_timerec.rowcount;
  3716. var cnt = 0;
  3717. if (utlf_isNull(flag)) { flag = "1"; }
  3718. // 추가 또는 업데이트...
  3719. for (i=0 ; i < dataCnt ; i++)
  3720. {
  3721. var tmplinktype = ds_grd_timerec.getColumn(i,"linktype");
  3722. var tmplinkcd = ds_grd_timerec.getColumn(i,"linkcd");
  3723. if (tmplinktype == linktype && tmplinkcd == linkcd)
  3724. {
  3725. cnt = cnt + 1;
  3726. if (cnt == flag) {
  3727. if (fromdt.length == 8){
  3728. ds_grd_timerec.deleteRow(i);
  3729. break;
  3730. } else {
  3731. ds_grd_timerec.setColumn(i,"linkcd", linkcd);
  3732. ds_grd_timerec.setColumn(i,"fromdt", fromdt);
  3733. ds_grd_timerec.setColumn(i,"todt" , "");
  3734. ds_grd_timerec.setColumn(i,"rec" , symbol);
  3735. ds_grd_timerec.setColumn(i,"subrec", "");
  3736. ds_grd_timerec.setColumn(i,"date" , fromdt.substring(0,8));
  3737. ds_grd_timerec.setColumn(i,"time" , fromdt.substring(8,12));
  3738. break;
  3739. }
  3740. }
  3741. }
  3742. }
  3743. if (i >= dataCnt)
  3744. {
  3745. if (dataCnt > 0)
  3746. {
  3747. var checkValue = ds_grd_timerec.getColumn(dataCnt-1, "linktype");
  3748. if (!utlf_isNull(checkValue)) {
  3749. dataCnt = ds_grd_timerec.addRow();
  3750. }
  3751. } else {
  3752. dataCnt = ds_grd_timerec.addRow();
  3753. }
  3754. ds_grd_timerec.setColumn(dataCnt,"linktype" , linktype);
  3755. ds_grd_timerec.setColumn(dataCnt,"linkcd" , linkcd);
  3756. ds_grd_timerec.setColumn(dataCnt,"linkseqno", "");
  3757. ds_grd_timerec.setColumn(dataCnt,"fromdt" , fromdt);
  3758. ds_grd_timerec.setColumn(dataCnt,"todt" , "");
  3759. ds_grd_timerec.setColumn(dataCnt,"rec" , symbol);
  3760. ds_grd_timerec.setColumn(dataCnt,"subrec" , "");
  3761. ds_grd_timerec.setColumn(dataCnt,"date" , fromdt.substring(0,8));
  3762. ds_grd_timerec.setColumn(dataCnt,"time" , fromdt.substring(8,12));
  3763. }
  3764. fDisplayTimeRec();
  3765. }
  3766. /**
  3767. * 선택한 셀의 행 및 열의 색깔변경
  3768. */
  3769. function fChangeHeader(chk){
  3770. //#ffffff 흰색
  3771. //#ff0000 빨강
  3772. //#4d4d4d 그리드의 글자색깔
  3773. //#ffccff 사용자 요청색깔
  3774. if(grp_base.grd_main.getCellText(-1,grp_base.grd_main.currentcol + 30) != ds_timeheader.getColumn(1,"t"+grp_base.grd_main.currentcol))
  3775. {
  3776. for(var i = col_fromdt + 30; i <= col_todt + 30; i++)
  3777. {
  3778. grp_base.grd_main.setCellProperty("Head", i, "color","#4d4d4d");
  3779. grp_base.grd_main.setCellProperty("Head", i, "font","");
  3780. }
  3781. grp_base.grd_main.setCellProperty("Head", grp_base.grd_main.currentcol + 29, "color","#ff0000");
  3782. grp_base.grd_main.setCellProperty("Head", grp_base.grd_main.currentcol + 29, "font","bold");
  3783. }
  3784. else
  3785. {
  3786. for(var i = col_fromdt + 31; i <= col_todt + 31; i++)
  3787. {
  3788. grp_base.grd_main.setCellProperty("Head", i, "color","#4d4d4d");
  3789. grp_base.grd_main.setCellProperty("Head", i, "font","");
  3790. }
  3791. grp_base.grd_main.setCellProperty("Head", grp_base.grd_main.currentcol + 30, "color","#ff0000");
  3792. grp_base.grd_main.setCellProperty("Head", grp_base.grd_main.currentcol + 30, "font","bold");
  3793. }
  3794. currentCell[0] = grp_base.grd_main.currentrow;
  3795. currentCell[1] = grp_base.grd_main.currentcol;
  3796. }
  3797. /**
  3798. * 초기화 버튼 클릭시 마취기록지의 내용 리셋
  3799. */
  3800. function fReset(){
  3801. var ret=sysf_messageBox("초기화 진행시 기록하신 모든 내용이 삭제됩니다.\n그래도 진행", "S001");
  3802. if(ret=="6"){
  3803. }else{
  3804. return;
  3805. }
  3806. ds_grd_main.enableevent = false;
  3807. var cols=grp_base.grd_main.getCellCount("Body");
  3808. //var rows=ds_grd_main.rowcount;
  3809. var rows = grp_base.grd_main.rowcount;
  3810. for(var i=2; i<rows; i++){
  3811. //if(grp_base.grd_main.getFormatRowSize(i)==0){
  3812. if(grp_base.grd_main.getRealRowSize(i)==0){
  3813. continue;
  3814. }
  3815. for(var j=grp_base.grd_main.getBindCellIndex("body","totalvol"); j<cols; j++){
  3816. if(j==grp_base.grd_main.getBindCellIndex("body","volunit")){
  3817. continue;
  3818. }
  3819. ds_grd_main.setColumn(i,lf_getBindCellName(grp_base.grd_main,j),"");
  3820. //grd_main.cellstyle("background-color", i, j)="#ffffff";
  3821. grp_base.grd_main.setCellProperty("body",j,"background","#ffffff");
  3822. }
  3823. }
  3824. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem.clearData();
  3825. var iv_cols=grp_base.sw_left.case_anstprcp.iv_anstprcp.grd_anstprcp.getCellCount("Head");
  3826. var iv_rows=grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.rowcount;
  3827. for(var m=0; m<=iv_rows; m++){
  3828. for(var n=1; n<=iv_cols; n++){
  3829. if(n!=grp_base.sw_left.case_anstprcp.iv_anstprcp.grd_anstprcp.getBindCellIndex("body","recvol")
  3830. && n!=grp_base.sw_left.case_anstprcp.iv_anstprcp.grd_anstprcp.getBindCellIndex("body","prcpvol")){
  3831. continue;
  3832. }else{
  3833. grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.setColumn(m,lf_getBindCellName(grp_base.sw_left.case_anstprcp.iv_anstprcp.grd_anstprcp,n),"0");
  3834. }
  3835. }
  3836. }
  3837. ds_grd_main.enableevent = true;
  3838. }
  3839. /**
  3840. * 서식 미비화면(SMMRI01800)에서 마취전 평가서 Open을 위한 함수
  3841. */
  3842. function fOpenAnstEvaluationSheet(){
  3843. if(!utlf_isNull(frmf_findPopup("SMMRI01800")) || !utlf_isNull(frmf_findPopup("SMMRI01700"))){
  3844. if(!utlf_isNull(frmf_findPopup("SMMRI01800")) || !utlf_isNull(frmf_findPopup("SMMRI01700"))){
  3845. if(sysf_getGlobalVariable("linked_formcd","emr") == "0900005261"){
  3846. this.grp_base.sw_left.case_anstinfo.iv_anstinfo.frmf_setParameter("SSMMR01100_formrecdd",sysf_getGlobalVariable("linked_formrecdd","emr"));
  3847. this.grp_base.sw_left.case_anstinfo.iv_anstinfo.fPreOpAssemRec();
  3848. }
  3849. }
  3850. }
  3851. }
  3852. /**
  3853. * 미비조회(SMMRI01800)에서 화면 호출시 미비 상태값 변경을 위한 함수
  3854. */
  3855. function fProcessIncompleteConfirmation(){
  3856. var wndobj = frmf_findPopup("SMMRI01800");
  3857. if(!utlf_isNull(wndobj)){
  3858. var pid = appf_getPatientId()
  3859. var formcd = "0000002022"; // 마취기록지 서식코드
  3860. var formrecdd = sysf_getGlobalVariable("linked_formrecdd","emr");
  3861. var unprepdrid = sysf_getUserId();
  3862. var unprepno = wndobj.frmf_getParameter("SMMMR03700_unprepno");
  3863. ds_send_incompleterecinfo.clearData();
  3864. ds_send_incompleterecinfo.addRow();
  3865. ds_send_incompleterecinfo.setColumn(0,"pid" , pid);
  3866. ds_send_incompleterecinfo.setColumn(0,"formcd" , formcd);
  3867. ds_send_incompleterecinfo.setColumn(0,"formrecdd" , formrecdd);
  3868. ds_send_incompleterecinfo.setColumn(0,"unprepdrid" , unprepdrid);
  3869. ds_send_incompleterecinfo.setColumn(0,"unprepno" , unprepno);
  3870. var oParam = {};
  3871. oParam.id = "TXMMR03714";
  3872. oParam.service = "anstrecapp.AnstRec";
  3873. oParam.method = "reqSetIncompleteConfirmation";
  3874. oParam.inds = "req=ds_send_incompleterecinfo";
  3875. oParam.outds = "";
  3876. oParam.async = false;
  3877. oParam.callback = "cf_TXMMR03714";
  3878. tranf_submit(oParam);
  3879. }
  3880. }
  3881. function cf_TXMMR03714(sSvcId, nErrorCode, sErrorMsg) {
  3882. if(nErrorCode < 0) return;
  3883. }
  3884. function fSetGrdbackgroundColor(currow,flag){
  3885. var linktype;
  3886. var linkcd;
  3887. var Achk=false;
  3888. var Dchk=false;
  3889. var Fchk=false;
  3890. var Hchk=false;
  3891. var color = "";
  3892. linktype= ds_grd_main.getColumn(currow,"linktype");
  3893. linkcd= ds_grd_main.getColumn(currow,"linkcd");
  3894. var totvolyn = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", linkcd, "totvolyn");
  3895. var clscd = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstprcp_item.lookup("prcpcd", linkcd, "clscd");
  3896. // 2008.10.20. 마취기록지 컬러 주기..
  3897. /*
  3898. 1. Agent - 구분이 01
  3899. @ Air -> 노란색
  3900. @ N2O -> 하늘색
  3901. @ O2 -> 녹색
  3902. @ 그밖의 마취가스 -> 주황색
  3903. 2. Agent - 그외 02,03,04 (토탈용량 기록여부에 따라)
  3904. @ 용량 -> 회색
  3905. @ 농도 -> 연노란색
  3906. 2. Drug -> 보라색
  3907. 3. Fluid -> 살구색
  3908. 4. Blood -> 연두색
  3909. */
  3910. color = "#ffffff";
  3911. if (linktype == "A" && Achk==false) {
  3912. if (totvolyn == "Y") {
  3913. color = "#c0c0c0";
  3914. } else {
  3915. color = "#ffff99";
  3916. }
  3917. if (clscd == "01") {
  3918. // 2008.10.20. 마취기록지 컬러 주기..
  3919. // 000000000274 Air -> 노란색
  3920. // Y10090001 N2O -> 하늘색
  3921. // Y80000001 O2 -> 녹색
  3922. // 그밖의 마취가스 -> 주황색
  3923. if (linkcd == "000000000274") {
  3924. color = "#ffcc00";
  3925. } else if (linkcd == "Y10090001") {
  3926. color = "#ffcc00";
  3927. } else if (linkcd == "Y80000001") {
  3928. color = "#ffcc00";
  3929. } else {
  3930. color = "#ffcc00";
  3931. }
  3932. }
  3933. Achk = true;
  3934. } else if (linktype == "D" && Dchk == false) {
  3935. color = "#e3c8ff";
  3936. } else if (linktype == "F" && Fchk == false) {
  3937. color = "#ffcc99";
  3938. } else if (linktype == "H" && Hchk == false) {
  3939. color = "#ccffcc";
  3940. }
  3941. Achk=false;
  3942. Dchk=false;
  3943. Fchk=false;
  3944. Hchk=false;
  3945. if( flag == 0 )
  3946. return color;
  3947. else if (flag == 2)
  3948. return ltype;
  3949. }
  3950. function fMake_SignData(){
  3951. /*
  3952. var objParam = new Object();
  3953. objParam.xml_data_XML1 = objDOM.documentElement.source;
  3954. Sign.addnode("/root/main/signSaveData",objParam.xml_data_XML1);
  3955. */
  3956. var arrSignPath = new Array();
  3957. arrSignPath[0] = "/signSaveData/anstinfo";
  3958. arrSignPath[1] = "/signSaveData/opinfo/item";
  3959. arrSignPath[2] = "/signSaveData/recmast/item";
  3960. arrSignPath[3] = "/signSaveData/prog/item";
  3961. arrSignPath[4] = "/signSaveData/prcp/item";
  3962. arrSignPath[5] = "/signSaveData/item/item";
  3963. arrSignPath[6] = "/signSaveData/vslist/item";
  3964. arrSignPath[7] = "/signSaveData/temp/item";
  3965. arrSignPath[8] = "/signSaveData/time/item";
  3966. var arrSignDs = new Array();
  3967. arrSignDs[0] = ds_signSaveData_anstinfo.saveXML();
  3968. arrSignDs[1] = ds_signSaveData_opinfo.saveXML();
  3969. arrSignDs[2] = ds_signSaveData_recmast.saveXML();
  3970. arrSignDs[3] = ds_signSaveData_prog.saveXML();
  3971. arrSignDs[4] = ds_signSaveData_prcp.saveXML();
  3972. arrSignDs[5] = ds_signSaveData_item.saveXML();
  3973. arrSignDs[6] = ds_signSaveData_vslist.saveXML();
  3974. arrSignDs[7] = ds_signSaveData_temp.saveXML();
  3975. arrSignDs[8] = ds_signSaveData_time.saveXML();
  3976. Sign.addnodeset(arrSignPath, arrSignDs);
  3977. }
  3978. function fSetGrdColor(){
  3979. var type;
  3980. var agchk=false;
  3981. var drchk=false;
  3982. var vschk=false;
  3983. var prchk=false;
  3984. var stchk=false;
  3985. ds_grd_main.enableevent = false;
  3986. for(var i=ds_grd_main.rowcount-1; i>=0; i--){
  3987. type=ds_grd_main.getColumn(i,"type");
  3988. if(type=="Progress" && prchk==false ){
  3989. ds_grd_main.setColumn(i,"line","Y");
  3990. prchk=true;
  3991. }else if(type=="시작종료" && stchk==false ){
  3992. ds_grd_main.setColumn(i,"line","Y");
  3993. stchk=true;
  3994. }else if(type=="V/S" && vschk==false ){
  3995. ds_grd_main.setColumn(i,"line","Y");
  3996. vschk=true;
  3997. }else if(type=="Agent" && agchk==false ){
  3998. ds_grd_main.setColumn(i,"line","Y");
  3999. agchk=true;
  4000. }else if(type=="Drug" && drchk==false ){
  4001. ds_grd_main.setColumn(i,"line","Y");
  4002. drchk=true;
  4003. }else{
  4004. ds_grd_main.setColumn(i,"line","N");
  4005. }
  4006. }
  4007. ds_grd_main.enableevent = true;
  4008. agchk=false;
  4009. drchk=false;
  4010. vschk=false;
  4011. prchk=false;
  4012. stchk=false;
  4013. }
  4014. function setline(currow,col)
  4015. {
  4016. var line = "1 solid #B0B0B0,1 solid #B0B0B0,1 solid #B0B0B0,1 solid #B0B0B0";
  4017. var Hline = ds_grd_main.getColumn(currow,"line");
  4018. var Vline = ds_timeheader.getColumn(1,"t"+col);
  4019. if(Vline == "25" || Vline == "55")
  4020. {
  4021. if (Hline == "Y")
  4022. {
  4023. line = "1 solid #B0B0B0,2 solid #99ccff,2 solid #99ccff,1 solid #B0B0B0";
  4024. }
  4025. else
  4026. {
  4027. line = "1 solid #B0B0B0,2 solid #99ccff,1 solid #B0B0B0,1 solid #B0B0B0";
  4028. }
  4029. }
  4030. else
  4031. {
  4032. if (Hline == "Y")
  4033. {
  4034. line = "1 solid #B0B0B0,1 solid #B0B0B0,2 solid #99ccff,1 solid #B0B0B0";
  4035. }
  4036. }
  4037. return line;
  4038. }
  4039. /****************************************************************************************
  4040. * Argument : preMeetingdt - 기입력된 Meeting Time
  4041. * Description : 기입력된 Meeting Time 존재 유무 체크
  4042. * return type : true / flase
  4043. ****************************************************************************************/
  4044. function lf_ChkVsData(postMeetingdt, preMeetingdt){
  4045. // 제어 기록 수
  4046. var recDs = grp_base.sw_left.case_anstprcp.iv_anstprcp.ds_anstitem;
  4047. var nRecCnt = 0;
  4048. var nProgCnt = 0;
  4049. // Meeting Time 을 기존 입력시간보다 앞시간으로 설정 시 0분 5분을 제외한 수일경우 제어로직 추가
  4050. if( postMeetingdt < preMeetingdt ){
  4051. var chkDt = preMeetingdt.substr(8, 12);
  4052. var val = parseInt(chkDt) % 5;
  4053. if( val != 0 ){
  4054. nRecCnt = recDs.getCaseCount("!utlf_isNull(rec) && fromdt == '" + preMeetingdt + "'");
  4055. nProgCnt = ds_grd_prog.getCaseCount("!utlf_isNull(progrec) && !utlf_isNull(progfromdt) && progfromdt == '" + preMeetingdt + "'");
  4056. }
  4057. }else{
  4058. nRecCnt = recDs.getCaseCount("!utlf_isNull(rec) && fromdt < '" + postMeetingdt + "'");
  4059. nProgCnt = ds_grd_prog.getCaseCount("!utlf_isNull(progrec) && !utlf_isNull(progfromdt) && progfromdt < '" + postMeetingdt + "'");
  4060. }
  4061. // 기록 작성 시점
  4062. var nOpcnfmdd = grp_base.sw_left.case_anstinfo.iv_anstinfo.ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  4063. if( utlf_isNull(nOpcnfmdd) || nOpcnfmdd.length != 8){
  4064. nOpcnfmdd = utlf_getCurrentDate();
  4065. }
  4066. // 공통코드 정보 조회
  4067. var nHardCd = ds_init_hardcd9975.getColumn(0, "hardcd");
  4068. var nHardNm = ds_init_hardcd9975.getColumn(0, "hardcdnm");
  4069. var bChk = false;
  4070. if( !utlf_isNull(nHardCd) && nHardCd == "Y"
  4071. && !utlf_isNull(nHardNm) && nHardNm.length == 8
  4072. && nOpcnfmdd >= nHardNm ){
  4073. bChk = true;
  4074. }
  4075. if( bChk == true && (nRecCnt > 0 || nProgCnt > 0) )
  4076. return false;
  4077. return true;
  4078. }]]></Script>