SMMNW040.xjs 167 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[var xRecInfo = "ds_main_recinfo";
  3. var xRecInfoDS = this.objects[xRecInfo];
  4. var xRecMasterPath = "ds_main_recgruplist"; //중증도기록마스터
  5. var xRecMasterPathDS = this.objects[xRecMasterPath];
  6. var xRecDetailPath = "ds_main_recdetailgruplist"; //중증도상세내역
  7. var xRecDetailPathDS = this.objects[xRecDetailPath];
  8. var xRecPntPath = "ds_main_recpntlist"; //중증도상세점수
  9. var xRecPntPathDS = this.objects[xRecPntPath];
  10. var xRecDetailBKPath = "ds_temp_histgrup"; //중증도상세내역 hidden
  11. var xRecDetailBKPathDS = this.objects[xRecDetailBKPath];
  12. var recMCurRow = 0; //기록마스터에 현재 선택된 row index
  13. var instUseYN = "N";//JCI적용여부 20100430 김홍점
  14. var instUseYNcdnm = "";//JCI적용여부 20100430 김홍점
  15. var patRow = "";
  16. var recRow = "";
  17. var sAllSignSave = false;
  18. //응급의료센터 관련 변수_경북대 (2011.03.14 Ahn)
  19. var eERDEPTCD = "";
  20. var eERFLAG = "";
  21. // 환자정보 그리드 관련 색 (2011.03.30)
  22. var red = "#ff0000";
  23. var yellow = "#ffff00";
  24. var indigo = "#333399";
  25. var white = "#ffffff";
  26. /**
  27. * @group :
  28. * @ver : 2007.12.04
  29. * @by : 신혁춘
  30. * @---------------------------------------------------
  31. * @type : function
  32. * @access : public
  33. * @desc : 중증도 시작시 병동, 병실, 환자정보 조회
  34. * @param :
  35. * @return :
  36. * @---------------------------------------------------
  37. */
  38. function fInit(){
  39. //사용자 직급구분에 따른 화면 제어 플래그 설정
  40. var sJobKindCD = sysf_getUserInfo("jobkindcd"); // 직급코드
  41. //---------(20101204) 경북대
  42. //추가
  43. var ssflag = "";
  44. if( sysf_getUserInfo("dutplceinstcd") != '032' && sysf_getUserInfo("dutplceinstcd") != '031') {
  45. //경북대가 아니면
  46. if( sJobKindCD == "0330" || sJobKindCD == "0310"){
  47. ssflag = "Y";
  48. } else {
  49. ssflag = "N";
  50. }
  51. } else if( sysf_getUserInfo("dutplceinstcd") == '032' || sysf_getUserInfo("dutplceinstcd") == '031') {
  52. //경북대이면 03%로 체크한다.
  53. if( sJobKindCD.substring(0, 2) == "03"){
  54. ssflag = "Y";
  55. } else {
  56. ssflag = "N";
  57. }
  58. }
  59. //----------------------------
  60. //응급의료센터 부서코드 추출_ 경북대 (2011.03.14 Ahn)
  61. ds_send.clear();
  62. ds_send.addColumn("cdgrupid", "string", 256);
  63. ds_send.addColumn("srchdd", "string", 256);
  64. var iRow = ds_send.addRow();
  65. ds_send.setColumn(iRow, "cdgrupid", "'002'");
  66. ds_send.setColumn(iRow, "srchdd" , utlf_getCurrentDate()); // 조회기준일자
  67. var oParam = {};
  68. oParam.id = "TRMNW00001";
  69. oParam.service = "wardcareapp.WardCareMngt";
  70. oParam.method = "reqGetNursHardCdInfo";
  71. oParam.inds = "req=ds_send";
  72. oParam.outds = "ds_code_codelist=codelist";
  73. oParam.async = false;
  74. oParam.callback = "cf_TRMNW00001";
  75. tranf_submit(oParam);
  76. if( arErrorCode.pop("TRMNW00001") > -1 ){
  77. eERDEPTCD = ds_code_codelist.lookup("cdgrupid", "002", "cdid");
  78. }
  79. //원본:의사의 경우만
  80. //if(sJobKindCD == "0330" || sJobKindCD == "0310" ){
  81. if(ssflag=="Y") {
  82. //---------(20101204) 경북대
  83. button4.visible = false;
  84. }else{
  85. button4.visible = true;
  86. }
  87. var pCode = "'199','055','W02','052','T49','T98'"; // 중증도위험사정에서 낙상 나이별 고위험군 지정 적용여부 FOR JCI
  88. fGetNursHardCdInfo(pCode, utlf_getCurrentDate());
  89. ds_code_codelist.copyData(ds_codelist);
  90. instUseYN = ds_code_codelist.lookupExpr("cdgrupid=='199' && cdnm=='Y'", "cdnm");//cdid 가 1: 낙상소아 2:낙상성인 (Morse Scale)
  91. var pid = "";
  92. var wardcd = "";
  93. var roomcd ="";
  94. // 응급실-구역정보 (2011.03.14 Ahn)
  95. var sectioncd ="";
  96. // 추가 (2011.03.29 Ahn)
  97. var sexage = "";
  98. var patnm = "";
  99. var age = "";
  100. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  101. ds_send.clear();
  102. ds_send.addColumn("wardcd", "string", 256);
  103. ds_send.addColumn("cdgpid", "string", 256);
  104. var oParam = {};
  105. oParam.id = "TRMNW04001";
  106. oParam.service = "carerecapp.AsesRec";
  107. oParam.method = "reqGetICUWardList";
  108. oParam.inds = "refCond=ds_send";
  109. oParam.outds = "ds_init_icucdgrup=icucdgruplist";
  110. oParam.async = false;
  111. //oParam.callback = "cf_TRMNW04001";
  112. tranf_submit(oParam);
  113. //라디오버튼 디폴트 선택
  114. wardcd = sysf_getUserInfo("dutplcecd");
  115. fChangeWardByRadio(wardcd);
  116. ipt_indate.value = utlf_getCurrentDate();// 수행일에 현재날짜(디폴트);
  117. ipt_time.value = utlf_getCurrentDateTime().substring(9,13);//수행시간
  118. // 상단정보 세팅
  119. var sPamInfo = sysf_getGlobalVariable("paminfo");
  120. if ( !utlf_isNull(sPamInfo) ){
  121. dsf_setCSVToDs("ds_main_paminfo",sPamInfo);
  122. if( utlf_isNull(ds_main_paminfo.getColumnInfo("sectioncd")) ){
  123. ds_main_paminfo.addColumn("sectioncd", "string");
  124. ds_main_paminfo.setColumn(0, "sectioncd", ds_main_paminfo.getColumn(0, "basetypecd"));
  125. }
  126. pid = ds_main_paminfo.getColumn(0, "pid");
  127. wardcd = ds_main_paminfo.getColumn(0, "wardcd");
  128. roomcd = ds_main_paminfo.getColumn(0, "roomcd");
  129. // 응급실 - 구역컬럼 추가 (2011.03.14 Ahn)
  130. sectioncd = ds_main_paminfo.getColumn(0, "sectioncd");
  131. // 추가 (2011.03.29 Ahn)
  132. sexage = ds_main_paminfo.getColumn(0, "sex") + "/" + ds_main_paminfo.getColumn(0, "age");
  133. patnm = ds_main_paminfo.getColumn(0, "hngnm2");
  134. age = ds_main_paminfo.getColumn(0, "age");
  135. }
  136. // 응급실일 경우 (2011.03.14 Ahn)
  137. fGetWardChngInfo("Y", wardcd, sectioncd);
  138. //상단정보있을때 병동, 병실, 환자명, pid 세팅
  139. if( !utlf_isNull(pid)){
  140. opt_pid.value = pid;
  141. // 추가 (2011.03.29 Ahn)
  142. opt_sexage.value = sexage;
  143. opt_patnm.value = patnm;
  144. opt_age.value = age;
  145. //상단환자가 퇴원환자일경우
  146. if( ds_main_paminfo.getColumn(0, "dschdd") != "99991231"){
  147. fGetICUList(); //중환자실리스트 조회
  148. fSetICUInOutFlag(pid, wardcd); //중환자실당일입퇴실여부
  149. ds_cond.setColumn(0, "patnm", patnm );
  150. ds_cond.setColumn(0, "sexage", sexage );
  151. ds_cond.setColumn(0, "age", age );
  152. //수행일시 초기화값 세팅
  153. ds_cond.setColumn(0, "execdd", utlf_getCurrentDate());
  154. ds_cond.setColumn(0, "exectm", utlf_getCurrentTime().substring(0, 4));
  155. ds_cond.setColumn(0, "execnm", sysf_getUserInfo("usernm"));
  156. xRecMasterPathDS.clearData(); //기록마스터리셋
  157. ds_main_recpntlist.clearData(); //상세점수리셋
  158. ds_main_recdetailgruplist.clearData(); //상세내역리셋
  159. fSearchPatList();//pid가 입력된 경우에는 중증도내역, 상세점수, 상세내역 모두조회
  160. return;
  161. } else {
  162. //20080827 dhkim 추가
  163. fGetICUList(); //중환자실리스트 조회
  164. fSetICUInOutFlag(pid, wardcd); //중환자실당일입퇴실여부
  165. }
  166. }
  167. //if(eERFLAG == "Y"){
  168. fGetWard(); //병동 조회
  169. ds_cond.setColumn(0, "wardcd", wardcd);
  170. fGetRoom(); //병실 검색
  171. fmisetting(); //내환자 세팅 조회
  172. if(eERFLAG == "Y"){ // 응급실 환자 조회 (2011.03.15 Ahn)
  173. fGetCareComPatList(group5.cmb_ward.value, group5.cmb_room.value, group5.cmb_zone.value);
  174. } else {
  175. fGetPatient(); //환자검색
  176. }
  177. //}else{
  178. //}
  179. //수행일시 초기화값 세팅
  180. ds_cond.setColumn(0, "execdd", utlf_getCurrentDate());
  181. ds_cond.setColumn(0, "exectm", utlf_getCurrentTime().substring(0, 4));
  182. ds_cond.setColumn(0, "execnm", sysf_getUserInfo("usernm"));
  183. xRecMasterPathDS.clearData(); //기록마스터리셋
  184. ds_main_recpntlist.clearData(); //상세점수리셋
  185. ds_main_recdetailgruplist.clearData(); //상세내역리셋
  186. fSearchPatList(); //pid가 입력된 경우에는 중증도내역, 상세점수, 상세내역 모두조회
  187. }
  188. function cf_TRMNW00001(sSvcId, nErrorCode, sErrorMsg) {
  189. arErrorCode.push(sSvcId, nErrorCode);
  190. }
  191. /**
  192. * 20080820
  193. * 분류가 선택될때마다 hidden으로 분류군정보를 로드함(인증저장시 필요함)
  194. */
  195. function fLoadBsPnt(totpnt){
  196. var clsflag = ds_cond.getColumn(0, "clsflag"); //분류구분
  197. var execdt = ds_cond.getColumn(0, "execdd"); //기록일자
  198. var maddchk01 = ds_cond.getColumn(0, "maddchk01");
  199. var maddchk02 = ds_cond.getColumn(0, "maddchk02");
  200. var maddchk03 = ds_cond.getColumn(0, "maddchk03");
  201. var maddchk04 = ds_cond.getColumn(0, "maddchk04");
  202. var haddchk = ds_cond.getColumn(0, "haddchk");
  203. var haddchk01 = ds_cond.getColumn(0, "haddchk01");
  204. var haddchk02 = ds_cond.getColumn(0, "haddchk02");
  205. var haddchk03 = ds_cond.getColumn(0, "haddchk03");
  206. var maddchk05 = ds_cond.getColumn(0, "maddchk05");
  207. var maddchk06 = ds_cond.getColumn(0, "maddchk06");
  208. var dinfo = maddchk01+maddchk02+maddchk03+maddchk04+haddchk+haddchk01+haddchk02+haddchk03+maddchk05+maddchk06;
  209. if( ds_cond.getColumn(0, "agechk") == "Y" ){
  210. bspntnm = instUseYNcdnm
  211. return bspntnm;
  212. }else {
  213. ds_send.clear();
  214. ds_send.addColumn("clsflag", "string", 256);
  215. ds_send.addColumn("execdt", "string", 256);
  216. ds_send.addColumn("totpnt", "string", 256);
  217. ds_send.addColumn("dinfo", "string", 256);
  218. var iRow = ds_send.addRow();
  219. ds_send.setColumn(iRow, 'clsflag', clsflag);
  220. ds_send.setColumn(iRow, 'execdt', execdt);
  221. ds_send.setColumn(iRow, 'totpnt', totpnt);
  222. ds_send.setColumn(iRow, 'dinfo', dinfo);
  223. var oParam = {};
  224. oParam.id = "TRMNW04014";
  225. oParam.service = "carerecapp.AsesRec";
  226. oParam.method = "reqGetMySignclsgrupkind";
  227. oParam.inds = "refCond=ds_send";
  228. oParam.outds = "ds_hidden_bspntinfo=bspntinfo";
  229. oParam.async = false;
  230. oParam.callback = "cf_TRMNW04014";
  231. tranf_submit(oParam);
  232. if( arErrorCode.pop("TRMNW04014") > -1 ){
  233. var bspntnm = ds_hidden_bspntinfo.getColumn(0, 'bspntnm');
  234. return bspntnm;
  235. }else{
  236. sysf_messageBox('중증군조회를', 'E009');
  237. return;
  238. }
  239. }
  240. }
  241. function cf_TRMNW04014(sSvcId, nErrorCode, sErrorMsg) {
  242. arErrorCode.push(sSvcId, nErrorCode);
  243. }
  244. /**
  245. * @author : dhkim
  246. * @create : 20080829
  247. * @desc :해당환자가 중환자실당일입실환자인지,
  248. 당일퇴실환자인지 여부에 따라 조회조건의 중증도 구분을 변경
  249. 1.중환자실환자인지 체크
  250. 2.중환자실 당일퇴실환자인지 체크(퇴원예고포함)
  251. 해당환자면 조회조건의 중증도구분을 중환자실퇴실로 선택상태변경
  252. 3.중환자실 당일입실환자인지 체크
  253. 해당환자면 조회조건의 중증도구분을 중환자실입실로 선택상태변경
  254. */
  255. function fSetICUInOutFlag(pid, wardcd){
  256. var icuYn = 'N';
  257. /*
  258. //중환자실 환자인지 여부를 조회
  259. for(var i = 0; i < icuArr.length; i++){
  260. if(wardcd == icuArr[i]){
  261. icuYn = 'Y';
  262. break;
  263. }
  264. }
  265. */
  266. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  267. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++ ){
  268. if( wardcd == ds_init_icucdgrup.getColumn(i, "wardcd") && ds_init_icucdgrup.getColumn(i, "clsflag") == '4'){
  269. icuYn = 'Y';
  270. break;
  271. }
  272. }
  273. //중환자실 환자일경우만 입퇴실여부체크
  274. if(icuYn == 'Y'){
  275. //입실, 퇴실여부
  276. ds_send.clear();
  277. ds_send.addColumn("pid", "string", 256);
  278. ds_send.addColumn("wardcd", "string", 256);
  279. var iRow = ds_send.addRow();
  280. ds_send.setColumn(iRow, 'pid', pid);
  281. ds_send.setColumn(iRow, 'wardcd', wardcd);
  282. var oParam = {};
  283. oParam.id = "TRMNW04015";
  284. oParam.service = "carerecapp.AsesRec";
  285. oParam.method = "reqGetICUYN";
  286. oParam.inds = "refCond=ds_send";
  287. oParam.outds = "ds_hidden_icuinoutinfo=icuinoutinfo";
  288. oParam.async = false;
  289. oParam.callback = "cf_TRMNW04015";
  290. tranf_submit(oParam);
  291. if( arErrorCode.pop("TRMNW04015") > -1 ){
  292. /*
  293. var icuOutYn = model.getValue('/root/hidden/icuinout/icuinoutinfo/outyn');
  294. var icuInYn = model.getValue('/root/hidden/icuinout/icuinoutinfo/inyn');
  295. if(icuOutYn == 'Y'){
  296. model.setValue('/root/cond/clsflag', '7');//중환자실퇴실
  297. }else if(icuInYn == 'Y'){
  298. model.setValue('/root/cond/clsflag', '6');//중환자실입실
  299. }else{
  300. model.setValue('/root/cond/clsflag', '4');//중환자실
  301. }
  302. */
  303. ds_cond.setColumn(0, 'clsflag', '4');//중환자실
  304. }
  305. }
  306. }
  307. function cf_TRMNW04015(sSvcId, nErrorCode, sErrorMsg) {
  308. arErrorCode.push(sSvcId, nErrorCode);
  309. }
  310. /**
  311. * @author : dhkim
  312. * @create : 20080827
  313. * @desc : 병동리스트중 중환자실리스트만 조회해 hidden시킴.
  314. * 중환자실 구분 없음.. 하드코딩 .. → '3060100000','3060200000','3060300000','3060400000','3060600000'
  315. */
  316. function fGetICUList(){
  317. var wardCnt = ds_hidden_wardcdgruplist.rowcount;//ward list 노드 갯수
  318. var wardcd, wardnm ;
  319. // model.removenode('/root/temp/signdata/recpntgrup/recpntlist');
  320. // model.makeNode('/root/temp/signdata/recpntgrup/recpntlist');
  321. var nodeCnt = 0;
  322. /*
  323. for(var j = 0; j < icuArr.length; j++){
  324. for(var i = 1; i <= wardCnt; i++){
  325. wardcd = model.getValue('/root/hidden/wardcdgrup/wardcdgruplist[' + i + ']/wardcd');
  326. wardnm = model.getValue('/root/hidden/wardcdgrup/wardcdgruplist[' + i + ']/wardnm');
  327. if(wardcd == icuArr[j]){
  328. nodeCnt += 1;
  329. model.makeValue('/root/hidden/icucdgrup/icucdgruplist[' + nodeCnt + ']/cd', wardcd);
  330. model.makeValue('/root/hidden/icucdgrup/icucdgruplist[' + nodeCnt + ']/nm', wardnm);
  331. }
  332. }
  333. }
  334. */
  335. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  336. for( var j = 0; j < ds_init_icucdgrup.rowcount; j++ ){
  337. for( var i = 0; i < wardCnt; i++){
  338. wardcd = ds_hidden_wardcdgruplist.getColumn(i, 'wardcd');
  339. wardnm = ds_hidden_wardcdgruplist.getColumn(i, 'wardnm');
  340. if( wardcd == ds_init_icucdgrup.getColumn(j, "wardcd") && ds_init_icucdgrup.getColumn(j, "clsflag") == '4'){
  341. var iRow = ds_hidden_icucdgrup.addRow();
  342. ds_hidden_icucdgrup.setColumn(iRow, 'cd', wardcd);
  343. ds_hidden_icucdgrup.setColumn(iRow, 'nm', wardnm);
  344. }
  345. }
  346. }
  347. }
  348. /**
  349. * @author : dhkim
  350. * @create : 20080827
  351. * @desc : 해당환자가 중환자실 환자인가?
  352. * @return : boolean (true/false)
  353. */
  354. function fIsICUPatient(wardcd){
  355. var ret = false;//icu 환자인지 여부 디폴트
  356. /*
  357. for(var i = 0; i < icuArr.length ; i++){
  358. if(wardcd == icuArr[i]){
  359. ret = true;
  360. return true;
  361. }
  362. }
  363. */
  364. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  365. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++){
  366. if( wardcd == ds_init_icucdgrup.getColumn(i, "wardcd") && ds_init_icucdgrup.getColumn(i, "clsflag") == '4'){
  367. ret = true;
  368. return true;
  369. }
  370. }
  371. return ret;
  372. }
  373. /**
  374. * @author : dhkim
  375. * @desc : 병동값 value changed 됐을때 병동별 분류구분 라디오버튼 변경(default)
  376. */
  377. function fChangeWardByRadio(wardcd){
  378. /*
  379. var clsflag = '1';
  380. switch (wardcd){
  381. case "3050122000" : clsflag = "5" ; break; //10층동병동(정신과병동)
  382. case "2110201000" : clsflag = "2" ; break; //신생아중환자실(신생아ICU)
  383. case "3060000000" : clsflag = "4" ; break; //중환자실
  384. case "3060600000" : clsflag = "4" ; break; //2층중환자실
  385. case "3060400000" : clsflag = "4" ; break; //순환기계중환자실
  386. case "3060300000" : clsflag = "4" ; break; //신경외과중환자실
  387. case "3060200000" : clsflag = "4" ; break; //외과중환자실
  388. case "3060100000" : clsflag = "4" ; break; //내과중환자실
  389. default : clsflag = "1" //default는 일반병동임.
  390. }
  391. */
  392. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  393. var clsflag = "1";
  394. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++){
  395. if( wardcd == ds_init_icucdgrup.getColumn(i, "wardcd")){ // 중환자실이면
  396. if( wardcd == ds_init_icucdgrup.lookup("cdgrupid", "052", "cdid")){ // 신생아중환자실이면
  397. clsflag = '2';
  398. } else {
  399. clsflag = ds_init_icucdgrup.getColumn(i, "clsflag");
  400. }
  401. }
  402. }
  403. if( clsflag == '1' ) {
  404. if( wardcd == ds_code_codelist.lookup("cdgrupid", "W02", "cdid")){ // 302병동이면
  405. clsflag = '5'
  406. } else if( wardcd == ds_code_codelist.lookup("cdgrupid", "055", "cdid")){ // 인공신장실이면
  407. clsflag = '3'
  408. } else {
  409. clsflag = '1';
  410. }
  411. }
  412. //인공신장실에서 메뉴 띄울 경우 혈액투석 셋팅_20090211_SMY추가
  413. //인공신장실 혈액투석간호기록에서 화면 연동시 parma추가-kys-20100412
  414. if( frmf_getMenuParam() == "SMMND" || opener.frmf_getParameter("SMMND00700_param_dial") == "dialrec"){
  415. clsflag = "3";
  416. }
  417. ds_cond.setColumn(0, 'recflag', '1');
  418. ds_cond.setColumn(0, 'clsflag', clsflag);
  419. }
  420. /**
  421. * @group :
  422. * @ver : 2007.12.04
  423. * @by : 신혁춘
  424. * @---------------------------------------------------
  425. * @type : function
  426. * @access : public
  427. * @desc : 중증도 병동 검색
  428. * @param :
  429. * @return :
  430. * @---------------------------------------------------
  431. */
  432. function fGetWard(){
  433. ds_send.clear();
  434. //병동 조회
  435. var oParam = {};
  436. oParam.id = "TRMNW04003";
  437. oParam.service = "carerecapp.AsesRec";
  438. oParam.method = "reqGetWardList";
  439. oParam.inds = "refCond=ds_send";
  440. oParam.outds = "ds_hidden_wardcdgruplist=wardcdgruplist";
  441. oParam.async = false;
  442. //oParam.callback = "cf_TRMNW04003";
  443. tranf_submit(oParam);
  444. }
  445. /**
  446. * @group :
  447. * @ver : 2007.12.04
  448. * @by : 신혁춘
  449. * @---------------------------------------------------
  450. * @type : function
  451. * @access : public
  452. * @desc : 중증도 병실 검색
  453. * @param :
  454. * @return :
  455. * @---------------------------------------------------
  456. */
  457. function fGetRoom(flag){
  458. ds_send.clear();
  459. ds_send.addColumn("wardcd", "string", 256);
  460. var iRow = ds_send.addRow();
  461. ds_send.setColumn(iRow, "wardcd", ds_cond.getColumn(0, "wardcd"));
  462. var setchk = ds_cond.getColumn(0, "settingrnid");
  463. //병실 조회
  464. var oParam = {};
  465. oParam.id = "TRMNW04008";
  466. oParam.service = "carerecapp.AsesRec";
  467. oParam.method = "reqGetRoomList";
  468. oParam.inds = "refCond=ds_send";
  469. oParam.outds = "ds_hidden_roomcdgruplist=roomcdgruplist";
  470. oParam.async = false;
  471. //oParam.callback = "cf_TRMNW04008";
  472. tranf_submit(oParam);
  473. dsf_addDsItem(ds_hidden_roomcdgruplist, "roomcd", "roomnm", "전체", "", "above");
  474. }
  475. /**
  476. * @group :
  477. * @ver : 2007.12.04
  478. * @by : 신혁춘
  479. * @---------------------------------------------------
  480. * @type : function
  481. * @access : public
  482. * @desc : 중증도 환자 검색
  483. * @param :
  484. * @return :
  485. * @---------------------------------------------------
  486. */
  487. function fGetPatient(){
  488. ds_send.clear();
  489. ds_send.addColumn("wardcd", "string", 256);
  490. ds_send.addColumn("roomcd", "string", 256);
  491. ds_send.addColumn("pid", "string", 256);
  492. var iRow = ds_send.addRow();
  493. ds_send.setColumn(iRow, "wardcd", ds_cond.getColumn(0, "wardcd"));
  494. ds_send.setColumn(iRow, "roomcd", ds_cond.getColumn(0, "roomcd"));
  495. ds_send.setColumn(iRow, "pid", ds_cond.getColumn(0, "pid"));
  496. //환자 조회
  497. var oParam = {};
  498. oParam.id = "TRMNW04009";
  499. oParam.service = "carerecapp.AsesRec";
  500. oParam.method = "reqGetPatientListCombo";
  501. oParam.inds = "refCond=ds_send";
  502. oParam.outds = "ds_data_patientgruplist=patientgruplist";
  503. oParam.async = false;
  504. //oParam.callback = "cf_TRMNW04009";
  505. tranf_submit(oParam);
  506. }
  507. /**
  508. * @ver : 2008.06.20
  509. * @author : dhkim
  510. * @---------------------------------------------------
  511. * @type : function
  512. * @access : public
  513. * @param :
  514. * @return :
  515. * @desc : 그리드 환자정보 리스트 조회
  516. * @---------------------------------------------------
  517. */
  518. function fSearchPatList(flag){
  519. var wardcd = ds_cond.getColumn(0, "wardcd");
  520. var roomcd = ds_cond.getColumn(0, "roomcd");
  521. var pid = "";
  522. var sWardcd = ds_cond.getColumn(0, "wardcd"); //181108_AYS_조회버튼 클릭 시_중증도 구분항목 자동선택(특수병동 302, NICU 등)
  523. if(flag != "Srch"){
  524. if(eERFLAG=="Y"){ // 응급실 (2011.03.15 Ahn)
  525. pid = group5.cmb_erpat.value;
  526. }else{
  527. pid = ds_cond.getColumn(0, "pid");
  528. }
  529. }
  530. var onlyPatSrch = "N";
  531. if (flag == "Srch"){
  532. // 구분 값 동기화 조회구분 -> 라디오구분(2011.04.01 Ahn)
  533. var recsrchflag = ds_cond.getColumn(0, 'recsrchflag');
  534. var selRecFlag = fGetMinSrchFlag(recsrchflag); // 분류구분 중 우선순위 값 가져오기
  535. if(selRecFlag == 1){
  536. //ds_cond.setColumn(0, "clsflag", 1);
  537. ds_cond.setColumn(0, "recflag", 1);
  538. //181108_AYS_조회버튼 클릭 시_중증도 구분항목 자동선택(특수병동 302, NICU 등)
  539. if( sWardcd == ds_code_codelist.lookup("cdgrupid", "W02", "cdid")){ // (본원)302병동이면
  540. ds_cond.setColumn(0, "clsflag", '5');
  541. } else if( sWardcd == ds_code_codelist.lookup("cdgrupid", "055", "cdid")){ // 인공신장실이면
  542. ds_cond.setColumn(0, "clsflag", '3');
  543. } else {
  544. ds_cond.setColumn(0, "clsflag", '1');
  545. }
  546. } else if(selRecFlag == 2){
  547. ds_cond.setColumn(0, "clsflag", 9);
  548. ds_cond.setColumn(0, "recflag", 2);
  549. } else if(selRecFlag == 3){
  550. ds_cond.setColumn(0, "clsflag", 10);
  551. ds_cond.setColumn(0, "recflag", 3);
  552. } else if(selRecFlag == 4) {
  553. ds_cond.setColumn(0, "clsflag", 11);
  554. ds_cond.setColumn(0, "recflag", 4);
  555. } else {
  556. ds_cond.setColumn(0, "clsflag", "");
  557. onlyPatSrch = "Y";
  558. }
  559. }else if (flag == "Sel"){
  560. // 구분 값 동기화 라디오 구분 -> 조회구분
  561. var selClsFlag = ds_cond.getColumn(0, 'clsflag');
  562. if(parseInt(selClsFlag) < 8){
  563. ds_cond.setColumn(0, "recsrchflag", 1);
  564. ds_cond.setColumn(0, "recflag", 1);
  565. group5.rdo_recflag.setCheckAll(false);
  566. fn_setRecsrchflag();
  567. //recflag = "1";//중증도
  568. }else if(parseInt(selClsFlag) >= 8 && parseInt(selClsFlag) < 10){
  569. ds_cond.setColumn(0, "recsrchflag", 2);
  570. ds_cond.setColumn(0, "recflag", 2);
  571. group5.rdo_recflag.setCheckAll(false);
  572. fn_setRecsrchflag();
  573. //recflag = "2";//낙상
  574. }else if(parseInt(selClsFlag) == 10){
  575. ds_cond.setColumn(0, "recsrchflag", 3);
  576. ds_cond.setColumn(0, "recflag", 3);
  577. group5.rdo_recflag.setCheckAll(false);
  578. fn_setRecsrchflag();
  579. //recflag = "3";//욕창
  580. }else if(parseInt(selClsFlag) == 11){
  581. ds_cond.setColumn(0, "recsrchflag", 4);
  582. ds_cond.setColumn(0, "recflag", 4);
  583. group5.rdo_recflag.setCheckAll(false);
  584. fn_setRecsrchflag();
  585. }
  586. }
  587. var clsflag = ds_cond.getColumn(0, 'clsflag');
  588. var recflag = ds_cond.getColumn(0, 'recflag');
  589. var settingrnid = ds_cond.getColumn(0, 'settingrnid');//내환자
  590. //20080820 주석처리
  591. //var bloodioflag = model.getValue('/root/cond/bloodioflag');//혈액투석외래입원구분 2008.08.07 dhkim 추가
  592. //default 세팅
  593. if( utlf_isNull(wardcd) ){
  594. //wardcd = ""; //20090319_SMY_주석처리함
  595. }
  596. if( utlf_isNull(recflag) ){
  597. recflag = '1';
  598. }
  599. if( utlf_isNull(clsflag) ){
  600. clsflag = '1';
  601. }
  602. //캡션을 라디오 구분에 따라 변경
  603. fChangeCaption(clsflag);
  604. //환자정보 그리드의 컬럼을 라디오구분에 따라 변경
  605. fChangeGridColumn(clsflag);
  606. //혈액투석선택일 경우 조회조건clear
  607. if(clsflag == '3'){
  608. wardcd = '';
  609. roomcd = '';
  610. //pid = '';
  611. /* 20080820 주석처리
  612. if(bloodioflag == ''){
  613. bloodioflag = 'I';//default
  614. model.setValue('/root/cond/bloodioflag', bloodioflag);
  615. }
  616. */
  617. }
  618. //선택된 분류구분 라디오버튼 코드에 따라 실제 입력할 clsflag, recflag 값을 설정해준다.
  619. if(Number(clsflag) < 8){
  620. recflag = '1';//중증도
  621. }else if(Number(clsflag) >= 8 && Number(clsflag) < 10){
  622. recflag = '2';//낙상
  623. if( ds_cond.getColumn(0, "agechk") == "Y" ){
  624. ds_cond.getColumn(0, "agechk", "N" );
  625. }
  626. }else if(Number(clsflag) == 10){
  627. recflag = '3';//욕창
  628. }else if(Number(clsflag) == 11){ // 통증 추가 (2011.03.31 Ahn)
  629. recflag = '4';//통증
  630. }else{
  631. recflag = '1';//default
  632. }
  633. //조회조건의 recflag, clsflag값을 재설정한다.
  634. ds_cond.setColumn(0, 'wardcd', wardcd);
  635. ds_cond.setColumn(0, 'roomcd', roomcd);
  636. //조회전 instance 설정
  637. ds_send.clear();
  638. ds_send.copyData(ds_cond);
  639. var cretno = "";
  640. var dschdd ="";
  641. if ( !utlf_isNull(pid) && pid == ds_main_paminfo.getColumn(0, "pid") ){
  642. cretno = ds_main_paminfo.getColumn(0, "cretno");
  643. dschdd = ds_main_paminfo.getColumn(0, "dschdd")
  644. }else if( !utlf_isNull(pid) && !utlf_isNull(ds_data_patientgruplist.lookup("pid", pid, "dschdd") ) ){
  645. cretno = ds_data_patientgruplist.findRow("pid", pid, "cretno")
  646. dschdd = ds_data_patientgruplist.findRow("pid", pid, "dschdd");
  647. }else {
  648. dschdd = "99991231";
  649. }
  650. ds_send.addColumn("cretno", "string", 256);
  651. ds_send.addColumn("dschdd", "string", 256);
  652. ds_send.setColumn(0, 'cretno', cretno);
  653. ds_send.setColumn(0, 'dschdd', dschdd);
  654. ds_main_patinfo.clearData();
  655. //중증마스터, 상세점수, 상세내역, 상세설명의 현재instance를 remove한다.
  656. ds_main_recgruplist.clearData();
  657. ds_main_recinfo.clearData();
  658. ds_main_recpntlist.clearData();
  659. ds_main_pnttitlgruplist.clearData();
  660. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  661. // 응급실 환자정보 flag 삽입 (2011.03.15 ahn)
  662. ds_send.addColumn("erflag", "string", 256);
  663. ds_send.setColumn(0, 'erflag', eERFLAG);
  664. // 응급실 환자 구역정보 삽입 (2011.03.15 ahn)
  665. ds_send.addColumn("zonecd", "string", 256);
  666. ds_send.setColumn(0, 'zonecd', group5.cmb_zone.value);
  667. grdf_clearSort(grd_patinfo);
  668. //환자정보 그리드 리스트 조회
  669. var oParam = {};
  670. oParam.id = "TRMNW04004";
  671. oParam.service = "carerecapp.AsesRec";
  672. oParam.method = "reqGetPatientList";
  673. oParam.inds = "refCond=ds_send";
  674. oParam.outds = "ds_main_patinfo=patlist";
  675. oParam.async = false;
  676. oParam.callback = "cf_TRMNW04004";
  677. tranf_submit(oParam);
  678. if( arErrorCode.pop("TRMNW04004") < 0 ){
  679. sysf_messageBox('환자정보 조회를', 'E009');//실패하였습니다.
  680. return;
  681. }else{
  682. //기록마스터리셋
  683. xRecMasterPathDS.clearData();
  684. //상세점수리셋
  685. ds_main_recpntlist.clearData();
  686. //상세내역리셋
  687. ds_main_recdetailgruplist.clearData();
  688. //2008.08.05 dhkim 추가
  689. //pid가 입력된 경우에는 환자정보에 해당 pid의 환자에 포커스 이동과 동시에 중증도 내역 자동조회
  690. if( !utlf_isNull(pid) ){
  691. for( var i = 0; i < ds_main_patinfo.rowcount; i++ ){
  692. if( ds_main_patinfo.getColumn(i, 'pid') == pid ){
  693. grd_patinfo.row = i+1;
  694. break;
  695. }
  696. }
  697. // 조회구분이 아무것도 선택되지 않은 경우
  698. if(onlyPatSrch != "Y"){
  699. //중증도/낙상/욕창 내역 조회(grd_recmaster)
  700. fSearchRecMaster(ds_main_patinfo.rowposition, recflag);
  701. }
  702. }
  703. }
  704. // 그리드 재구성 (2011.03.30 Ahn)
  705. fSetPatGrid("ds_main_patinfo", "grd_patinfo", "Pat");
  706. if( !utlf_isNull(pid)){
  707. if( dschdd != "99991231"){
  708. //otp_dsch.visible = true;
  709. group5.cmb_pid.visible = false;
  710. group5.cmb_ward.enable = false;
  711. group5.cmb_room.enable = false;
  712. group5.cmb_erpat.visible = false;
  713. }
  714. }
  715. /*
  716. // 환자가 한명일 경우 row 선택 해제 (색깔 관련)
  717. if(grd_patinfo.row == 2){
  718. grd_patinfo.row = 0;
  719. }
  720. */
  721. }
  722. function cf_TRMNW04004(sSvcId, nErrorCode, sErrorMsg) {
  723. arErrorCode.push(sSvcId, nErrorCode);
  724. ds_main_patinfo.addColumn("chk", "string");
  725. //ds_main_patinfo.addColumn("color", "string");
  726. }
  727. /**
  728. * @group :
  729. * @ver : 2007.12.05 신혁춘
  730. * 2008.06.09 dhkim 수정
  731. * @by : dhkim
  732. * @---------------------------------------------------
  733. * @type : function
  734. * @access : public
  735. * @param : curRow - 현재 선택된 그리드의 행 인덱스, pFlag : save 저장후 재조회할경우 상단 수행일자는 첫번째행의 날짜로 세팅한다.
  736. * @return :
  737. * @desc : 환자정보 그리드 더블클릭 이벤트 발생시 호출됨
  738. * 중증도 구분에 따른 중증도/낙상/욕창 내역 조회
  739. * [임의 코드 부여 clsflag]
  740. * (1) 중증도 구분
  741. * 1: 일반병동
  742. * 2: 신생아 ICU
  743. * 3: 혈액투석
  744. * 4: 중환자실
  745. * 5: 정신과병동
  746. * 10: 중환자실입실(실제 flag는 4(중환자실)로 넘기나 당일 중환자실 입실환자만 조회
  747. * 11: 중환자실퇴실(실제 flag는 4(중환자실)로 넘기나 당일 중환자실 퇴실환자만 조회
  748. * (2) 낙상위험사정구분
  749. * 7: 소아
  750. * 8: 성인 -> Morse Scale
  751. * (3) 욕창위험사정구분 (욕창 -> Braden Scale)
  752. * 9: 욕창(욕창위험사정구분)
  753. *
  754. * *2008.08.05 dhkim 추가
  755. * 해당환자의 입원일자 이전으로 수행일자를 기록하려고 할때에는 blocking처리
  756. * @---------------------------------------------------
  757. */
  758. function fSearchRecMaster(curRow,pFlag){
  759. //혈액투석의 경우 입원환자 더블클릭 할때에 조회조건에 기본 조회값을 세팅해야함.
  760. //혈액투석의 경우 외래환자 더블클릭은 조회조건 비활성화
  761. var clsflag = ds_cond.getColumn(0, 'clsflag');//분류구분
  762. var recflag = ds_cond.getColumn(0, 'recflag');//기록구분
  763. var ioflag = ds_main_patinfo.getColumn(curRow, "ioflag"); //외래/입원구분
  764. var pid = ds_main_patinfo.getColumn(curRow, "pid"); //등록번호
  765. var indd = ds_main_patinfo.getColumn(curRow, "indd"); //입원일자
  766. var histstat = ds_main_patinfo.getColumn(curRow, "histstat"); //이력상태
  767. var cretno = ds_main_patinfo.getColumn(curRow, "cretno"); //생성번호
  768. var seqno = ds_main_patinfo.getColumn(curRow, "seqno"); //이력번호
  769. var hngnm = ds_main_patinfo.getColumn(curRow, "hngnm"); //환자명
  770. var execdd = ds_cond.getColumn(0, 'execdd'); //수행일자
  771. var exectm = ds_cond.getColumn(0, 'exectm'); //수행시간
  772. if( utlf_isNull(execdd) ){
  773. execdd = utlf_getCurrentDate();
  774. }
  775. if( utlf_isNull(exectm) ){
  776. exectm = utlf_getCurrentTime().substring(0, 4);
  777. }
  778. //20081014 i/o조건값 cond 노드에 setting
  779. ds_cond.setColumn(0, 'ioflag', ioflag);
  780. //혈액투석외래환자의 경우 조회조건을 비활성화 처리
  781. fDisabledSearchArea(clsflag, ioflag);
  782. /********************************************************
  783. //화면 오픈시 상단에 환자 셋팅하지 않은 경우 저장 후에도 환자정보가 전체리스트로 조회되어야 함_중증도 조회조건에 셋팅하지 않음_20090211_SMY
  784. if(clsflag == '3'){
  785. //혈액투석외래환자의 경우 조회조건에 pid만 세팅, 입원환자의 경우 wardcd, roomcd, pid 세팅
  786. fSetSearchCondition(clsflag, ioflag);//조회조건 세팅
  787. }
  788. **********************************************************/
  789. //중증도 마스터내역을 조회한다.
  790. ds_send.clear();
  791. ds_send.addColumn("clsflag", "string", 256);
  792. ds_send.addColumn("recflag", "string", 256);
  793. ds_send.addColumn("execdd", "string", 256);
  794. ds_send.addColumn("exectm", "string", 256);
  795. ds_send.addColumn("pid", "string", 256);
  796. ds_send.addColumn("indd", "string", 256);
  797. ds_send.addColumn("histstat", "string", 256);
  798. ds_send.addColumn("cretno", "string", 256);
  799. ds_send.addColumn("seqno", "string", 256);
  800. ds_send.addColumn("hngnm", "string", 256);
  801. ds_send.addColumn("ioflag", "string", 256);
  802. var iRow = ds_send.addRow();
  803. ds_send.setColumn(iRow, "clsflag", clsflag);
  804. ds_send.setColumn(iRow, "recflag", recflag);
  805. ds_send.setColumn(iRow, "execdd", execdd);
  806. ds_send.setColumn(iRow, "exectm", exectm);
  807. ds_send.setColumn(iRow, "pid", pid);
  808. ds_send.setColumn(iRow, "indd", indd);
  809. ds_send.setColumn(iRow, "histstat", histstat);
  810. ds_send.setColumn(iRow, "cretno", cretno);
  811. ds_send.setColumn(iRow, "seqno", seqno);
  812. ds_send.setColumn(iRow, "hngnm", hngnm);
  813. ds_send.setColumn(iRow, "ioflag", ioflag);
  814. // 조회구분 추가 (2011.03.31 Ahn)
  815. var recsrchflag = ds_cond.getColumn(0, "recsrchflag");
  816. ds_send.addColumn("recsrchflag", "string", 256);
  817. ds_send.setColumn(iRow, "recsrchflag", recsrchflag);
  818. // 분류구분 중 우선순위 값 가져오기 (2011.03.31 ahn)
  819. var selRecFlag = fGetMinSrchFlag(recsrchflag);
  820. ds_send.addColumn("selrecflag", "string", 256);
  821. ds_send.setColumn(iRow, "selrecflag", selRecFlag);
  822. ds_main_recgruplist.clearData();
  823. ds_main_recinfo.clearData();
  824. //상세점수, 상세내역, 상세설명의 현재instance를 remove한다.
  825. ds_main_recpntlist.clearData();
  826. ds_main_pnttitlgruplist.clearData();
  827. ds_main_recdetailgruplist.clearData();
  828. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  829. //중증도내역 마스터 조회 후 기록정보 조회
  830. var oParam = {};
  831. oParam.id = "TRMNW04011";
  832. oParam.service = "carerecapp.AsesRec";
  833. oParam.method = "reqGetRecListFlagSelect";
  834. oParam.inds = "refCond=ds_send";
  835. oParam.outds = "ds_main_recinfo=recinfo ds_main_recgruplist=recgruplist";
  836. oParam.async = false;
  837. oParam.callback = "cf_TRMNW04011";
  838. tranf_submit(oParam);
  839. if( arErrorCode.pop("TRMNW04011") < 0 ){
  840. sysf_messageBox('중증도내역의 조회를', 'E009');
  841. return;
  842. } else {
  843. //조회갯수 0일때 조회 후 수행일자, 수행시간, 최근 저장일을 세팅
  844. //var execdd = model.getValue('/root/cond/execdd');
  845. var execdd = ds_cond.getColumn(0, 'copyexecdd');
  846. var exectm = ds_cond.getColumn(0, 'exectm');
  847. if(pFlag != "4"){
  848. //중증도 마스터를 조회후 수행일자에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
  849. fSetRecMaster(exectm, execdd, pFlag);
  850. //환자정보에 선택한 로우정보 set
  851. //grd_patinfo.row = curRow;
  852. //grd_patinfo.topRow = curRow;
  853. //중증도 상세점수조회
  854. fSearchRecPnt();
  855. }
  856. }
  857. }
  858. function cf_TRMNW04011(sSvcId, nErrorCode, sErrorMsg) {
  859. arErrorCode.push(sSvcId, nErrorCode);
  860. }
  861. /************************************************************************************************************************
  862. * 중증도 마스터를 조회후 가장 우선수행일자, 기록순번에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
  863. ************************************************************************************************************************/
  864. function fSetRecMaster(exectm, execdd, pFlag){
  865. //trace(xRecInfoDS.name);
  866. //trace(xRecMasterPathDS.name);
  867. var indx = -1;
  868. for( var i = 0; i < xRecMasterPathDS.rowcount; i++ ){
  869. if((xRecInfoDS.getColumn(0, "recflag") == xRecMasterPathDS.getColumn(i, "recflag")) &&
  870. (xRecInfoDS.getColumn(0, "clsflag") == xRecMasterPathDS.getColumn(i, "clsflag")) ){
  871. indx = i;
  872. break;
  873. }
  874. }
  875. //if(grd_recmaster.rows > 1){
  876. if (indx >= 0){ // 기록 내역이 존재할 경우 (2011.03.31 Ahn)
  877. ds_main_recgruplist.rowposition = indx;
  878. if ( pFlag =="save" ){
  879. if(ds_cond.getColumn(0, "nextyn") == 'Y'){
  880. ds_cond.setColumn(0, "execdd", utlf_getCurrentDate());
  881. } else {
  882. var cRow = ds_main_recgruplist.rowposition;
  883. ds_cond.setColumn(0, "execdd", ds_main_recgruplist.getColumn(cRow, "execdd"));
  884. }
  885. }
  886. } else {
  887. //기록된 내역이 한건도 없을때 신규행을 추가
  888. ds_main_recgruplist.addRow();
  889. fSetNewRowRecMaster();
  890. }
  891. if ( instUseYN == "Y" && grp_agechk.visible == true ){
  892. var curRow = xRecMasterPathDS.rowposition;
  893. ds_cond.setColumn(0, "agechk", xRecMasterPathDS.getColumn(curRow, "agechk"));
  894. }else {
  895. ds_cond.setColumn(0, "agechk", "N");
  896. }
  897. }
  898. /**
  899. * @group :
  900. * @ver : 2008.06.23
  901. * @by : dhkim
  902. * @---------------------------------------------------
  903. * @type : function
  904. * @access : public
  905. * @desc : 기록마스터에 행추가후 값 세팅
  906. * @param :
  907. * @return :
  908. * @---------------------------------------------------
  909. */
  910. function fSetNewRowRecMaster(){
  911. var curRow = ds_main_recgruplist.rowposition;
  912. xRecMasterPathDS.setColumn(curRow, "execdd", ds_cond.getColumn(0, 'execdd'));//수행일자
  913. xRecMasterPathDS.setColumn(curRow, "exectm", ds_cond.getColumn(0, 'exectm'));//수행시간
  914. if( xRecInfoDS.getColumn(0, 'recflag') == '1') var recflagnm = "중증도";
  915. else if ( xRecInfoDS.getColumn(0, 'recflag') == '2') var recflagnm = "낙상";
  916. else if ( xRecInfoDS.getColumn(0, 'recflag') == '3') var recflagnm = "욕창";
  917. else if ( xRecInfoDS.getColumn(0, 'recflag') == '4') var recflagnm = "통증";
  918. xRecMasterPathDS.setColumn(curRow, 'recflagnm', recflagnm);//기록 분류구분명 추가 (2011.04.01 Ahn)
  919. xRecMasterPathDS.setColumn(curRow, 'totpnt', 0); //총점
  920. xRecMasterPathDS.setColumn(curRow, 'execnm', sysf_getUserName());//수행자명
  921. xRecMasterPathDS.setColumn(curRow, 'pid', xRecInfoDS.getColumn(0, 'pid'));//등록번호
  922. xRecMasterPathDS.setColumn(curRow, 'hngnm', xRecInfoDS.getColumn(0, 'hngnm'));//환자명
  923. xRecMasterPathDS.setColumn(curRow, 'recflag', xRecInfoDS.getColumn(0, 'recflag'));//기록구분
  924. xRecMasterPathDS.setColumn(curRow, 'clsflag', xRecInfoDS.getColumn(0, 'clsflag'));//분류구분
  925. xRecMasterPathDS.setColumn(curRow, 'execkind', 0);//분류구분
  926. xRecMasterPathDS.setColumn(curRow, 'execid', sysf_getUserId());//수행자ID
  927. xRecMasterPathDS.setColumn(curRow, 'indd', xRecInfoDS.getColumn(0, 'indd'));//입원일자
  928. xRecMasterPathDS.setColumn(curRow, 'histstat', xRecInfoDS.getColumn(0, 'histstat'));//이력상태
  929. xRecMasterPathDS.setColumn(curRow, 'cretno', xRecInfoDS.getColumn(0, 'cretno'));//생성번호
  930. xRecMasterPathDS.setColumn(curRow, 'seqno', xRecInfoDS.getColumn(0, 'seqno'));//이력일련번호
  931. xRecMasterPathDS.setColumn(curRow, 'stat', 'i');//그리드상태
  932. xRecMasterPathDS.setColumn(curRow, 'agechk', 'N');//그리드상태
  933. }
  934. /**
  935. * @group :
  936. * @ver : 2007.12.06
  937. * @by : 신혁춘
  938. * @---------------------------------------------------
  939. * @type : function
  940. * @access : public
  941. * @desc : 상세점수조회 셋팅
  942. * @param :
  943. * @return :
  944. * @---------------------------------------------------
  945. */
  946. function fSearchRecPnt(selflag){
  947. ds_cond.setColumn(0, "maddchk01","");
  948. ds_cond.setColumn(0, "maddchk02","");
  949. ds_cond.setColumn(0, "maddchk03","");
  950. ds_cond.setColumn(0, "maddchk04","");
  951. ds_cond.setColumn(0, "haddchk","");
  952. ds_cond.setColumn(0, "maddchk99","");
  953. ds_cond.setColumn(0, "haddchk01","");
  954. ds_cond.setColumn(0, "haddchk02","");
  955. ds_cond.setColumn(0, "haddchk03","");
  956. ds_cond.setColumn(0, "maddchk05","");
  957. ds_cond.setColumn(0, "maddchk06","");
  958. var curRow = ds_main_recgruplist.rowposition;
  959. var clsflag = "";
  960. var recflag = "";
  961. if(selflag == "Sel"){
  962. clsflag = ds_main_recgruplist.getColumn(curRow, 'clsflag');
  963. recflag = ds_main_recgruplist.getColumn(curRow, 'recflag');
  964. if(recflag == '1'){
  965. ds_cond.setColumn(0, "clsflag", clsflag); // 중증도구분 중 선택
  966. }else if((recflag == '2') && (clsflag == '2')){
  967. ds_cond.setColumn(0, "clsflag", 9); // 낙상 - Morse Scale 선택
  968. }else if((recflag == '2') && (clsflag == '1')){
  969. ds_cond.setColumn(0, "clsflag", 8); // 낙상 - Humpty Dumpty 선택
  970. }else if((recflag == '3') && (clsflag == '1')){
  971. ds_cond.setColumn(0, "clsflag", 10); // 욕창 선택
  972. }else if(recflag == '4'){
  973. sysf_messageBox('통증관리기록 메뉴를 사용하십시오', 'I');
  974. return;
  975. }
  976. fChangeCaption(ds_cond.getColumn(0, "clsflag")); // 선택된 구분으로 캡션 변경 (2011.04.19 ahn)
  977. //중증도 상세점수 조회처리시 오류 수정
  978. //clsflag = ds_main_recinfo.getColumn(0, "clsflag");
  979. //recflag = ds_main_recinfo.getColumn(0, "recflag");
  980. } else {
  981. clsflag = ds_main_recinfo.getColumn(0, "clsflag");
  982. recflag = ds_main_recinfo.getColumn(0, "recflag");
  983. }
  984. // 상단 라디오 선택
  985. //마스터가 암것도 없을때나 행추가 상태일때는 조회안하고 바로 리턴한다.
  986. if( ds_main_recgruplist.rowcount < 1 || ds_main_recdetailgruplist.getColumn(curRow, "stat") == "i" ){
  987. ds_main_recpntlist.clearData;// 중증도 상세점수 클리어
  988. }
  989. var maddchk01 = ds_main_recgruplist.getColumn(curRow, "maddchk01");
  990. var maddchk02 = ds_main_recgruplist.getColumn(curRow, "maddchk02");
  991. var maddchk03 = ds_main_recgruplist.getColumn(curRow, "maddchk03");
  992. var maddchk04 = ds_main_recgruplist.getColumn(curRow, "maddchk04");
  993. var haddchk = ds_main_recgruplist.getColumn(curRow, "haddchk");
  994. var haddchk01 = ds_main_recgruplist.getColumn(curRow, "haddchk01");
  995. var haddchk02 = ds_main_recgruplist.getColumn(curRow, "haddchk02");
  996. var haddchk03 = ds_main_recgruplist.getColumn(curRow, "haddchk03");
  997. var maddchk05 = ds_main_recgruplist.getColumn(curRow, "maddchk05");
  998. var maddchk06 = ds_main_recgruplist.getColumn(curRow, "maddchk06");
  999. var dinfo = maddchk01+maddchk02+maddchk03+maddchk04+haddchk+haddchk01+haddchk02+haddchk03+maddchk05+maddchk06;
  1000. //중증도내역 선택했던 로우정보(수행일자)를 저장한다.
  1001. ds_send.clear();
  1002. ds_send.addColumn("pid", "string", 256);
  1003. ds_send.addColumn("indd", "string", 256);
  1004. ds_send.addColumn("cretno", "string", 256);
  1005. ds_send.addColumn("execdd", "string", 256);
  1006. ds_send.addColumn("recseq", "BIGDECIMAL", 256);
  1007. ds_send.addColumn("clsflag", "string", 256);
  1008. ds_send.addColumn("recflag", "string", 256);
  1009. ds_send.addColumn("dinfo", "string", 256);
  1010. var iRow = ds_send.addRow();
  1011. ds_send.setColumn(iRow, "pid" ,ds_main_recgruplist.getColumn(curRow, "pid"));
  1012. ds_send.setColumn(iRow, "indd" ,ds_main_recgruplist.getColumn(curRow, "indd"));
  1013. ds_send.setColumn(iRow, "cretno" ,ds_main_recgruplist.getColumn(curRow, "cretno"));
  1014. ds_send.setColumn(iRow, "execdd" ,ds_main_recgruplist.getColumn(curRow, "execdd"));
  1015. ds_send.setColumn(iRow, "recseq" ,ds_main_recgruplist.getColumn(curRow, "recseq"));
  1016. ds_send.setColumn(iRow, "clsflag" ,clsflag);
  1017. ds_send.setColumn(iRow, "recflag" ,recflag);
  1018. if( utlf_isNull(dinfo) ){
  1019. dinfo = "";
  1020. }
  1021. ds_send.setColumn(iRow, "dinfo" ,dinfo);
  1022. //상세내역, 상세설명의 현재instance를 remove한다.
  1023. ds_main_recdetailgruplist.clearData();
  1024. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  1025. //상세점수그리드조회
  1026. var oParam = {};
  1027. oParam.id = "TRMNW04007";
  1028. oParam.service = "carerecapp.AsesRec";
  1029. oParam.method = "reqGetRecHistPntList";
  1030. oParam.inds = "refCond=ds_send";
  1031. oParam.outds = "ds_main_recpntlist=recpntlist ds_main_pnttitlgruplist=pnttitlgruplist ds_main_serdiaghislist=serdiagchklist";
  1032. oParam.async = false;
  1033. oParam.callback = "cf_TRMNW04007";
  1034. tranf_submit(oParam);
  1035. if( arErrorCode.pop("TRMNW04007") < 0 ){//상세점수조회
  1036. sysf_messageBox('상세점수조회를', 'E009');
  1037. return;
  1038. }else{
  1039. //상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
  1040. fColLqidtys();
  1041. }
  1042. //중증기록 detail 상세내역 그리드리스트를 조회한다.
  1043. fSearchRecDetail();
  1044. addchk();
  1045. }
  1046. function cf_TRMNW04007(sSvcId, nErrorCode, sErrorMsg) {
  1047. arErrorCode.push(sSvcId, nErrorCode);
  1048. }
  1049. /**
  1050. * @group :
  1051. * @ver : 2007.12.05
  1052. * @by : 신혁춘
  1053. * @---------------------------------------------------
  1054. * @type : function
  1055. * @access : public
  1056. * @desc : 선택된 중증도 내역에 따른 중증도 상세내역을 조회한다.
  1057. * @param :
  1058. * @return :
  1059. * @---------------------------------------------------
  1060. */
  1061. function fSearchRecDetail(){
  1062. var curRow = ds_main_recgruplist.rowposition;
  1063. ds_main_recdetailgruplist.clearData();
  1064. ds_send.clear();
  1065. ds_send.addColumn("pid", "string", 256);
  1066. ds_send.addColumn("cretno", "string", 256);
  1067. ds_send.addColumn("indd", "string", 256);
  1068. ds_send.addColumn("seqno", "string", 256);
  1069. ds_send.addColumn("recseq", "BIGDECIMAL", 256);
  1070. ds_send.addColumn("clsflag", "string", 256);
  1071. ds_send.addColumn("recflag", "string", 256);
  1072. ds_send.addColumn("execdd", "string", 256);
  1073. ds_send.addColumn("newexecdd", "string", 256);
  1074. var iRow = ds_send.addRow();
  1075. ds_send.setColumn(iRow, "pid", xRecMasterPathDS.getColumn(curRow, "pid"));
  1076. ds_send.setColumn(iRow, "cretno", xRecMasterPathDS.getColumn(curRow, "cretno"));
  1077. ds_send.setColumn(iRow, "indd", xRecMasterPathDS.getColumn(curRow, "indd"));
  1078. ds_send.setColumn(iRow, "seqno", xRecMasterPathDS.getColumn(curRow, "seqno"));
  1079. ds_send.setColumn(iRow, "recseq", xRecMasterPathDS.getColumn(curRow, "recseq"));
  1080. ds_send.setColumn(iRow, "clsflag", xRecMasterPathDS.getColumn(curRow, "clsflag"));
  1081. ds_send.setColumn(iRow, "recflag", xRecMasterPathDS.getColumn(curRow, "recflag"));
  1082. ds_send.setColumn(iRow, "execdd", xRecMasterPathDS.getColumn(curRow, "execdd"));
  1083. ds_send.setColumn(iRow, "newexecdd", ds_cond.getColumn(0, "execdd"));
  1084. //상세설명의 현재instance를 remove한다.
  1085. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  1086. //중증도 상세내역 조회
  1087. var oParam = {};
  1088. oParam.id = "TRMNW04006";
  1089. oParam.service = "carerecapp.AsesRec";
  1090. oParam.method = "reqGetRecDetailList";
  1091. oParam.inds = "refCond=ds_send";
  1092. oParam.outds = "ds_main_recdetailgruplist=recdetailgruplist";
  1093. oParam.async = false;
  1094. oParam.callback = "cf_TRMNW04006";
  1095. tranf_submit(oParam);
  1096. if( arErrorCode.pop("TRMNW04006") > -1 ){
  1097. ds_temp_patinfo.copyData(ds_main_patinfo);
  1098. ds_temp_paminfo.copyData(ds_main_paminfo);
  1099. ds_temp_recgruplist.copyData(ds_main_recgruplist);
  1100. ds_temp_recinfo.copyData(ds_main_recinfo);
  1101. ds_temp_recpntlist.copyData(ds_main_recpntlist);
  1102. ds_temp_pnttitlgruplist.copyData(ds_main_pnttitlgruplist);
  1103. ds_temp_serdiaghislist.copyData(ds_main_serdiaghislist);
  1104. ds_temp_recdetailgruplist.copyData(ds_main_recdetailgruplist);
  1105. ds_temp_tar_desccnts.copyData(ds_main_tar_desccnts);
  1106. //2019.03.15_낙상 조회시 해당항목 조회가능하게 수정(KDG)
  1107. ds_cond.setColumn(0,"maddchk01",ds_main_recgruplist.getColumn(curRow,"maddchk01"));
  1108. ds_cond.setColumn(0,"maddchk02",ds_main_recgruplist.getColumn(curRow,"maddchk02"));
  1109. ds_cond.setColumn(0,"maddchk03",ds_main_recgruplist.getColumn(curRow,"maddchk03"));
  1110. ds_cond.setColumn(0,"maddchk04",ds_main_recgruplist.getColumn(curRow,"maddchk04"));
  1111. ds_cond.setColumn(0,"haddchk",ds_main_recgruplist.getColumn(curRow,"haddchk"));
  1112. ds_cond.setColumn(0,"haddchk01",ds_main_recgruplist.getColumn(curRow,"haddchk01"));
  1113. ds_cond.setColumn(0,"haddchk02",ds_main_recgruplist.getColumn(curRow,"haddchk02"));
  1114. ds_cond.setColumn(0,"haddchk03",ds_main_recgruplist.getColumn(curRow,"haddchk03"));
  1115. ds_cond.setColumn(0,"maddchk05",ds_main_recgruplist.getColumn(curRow,"maddchk05"));
  1116. ds_cond.setColumn(0,"maddchk06",ds_main_recgruplist.getColumn(curRow,"maddchk06"));
  1117. //end
  1118. fShowTreeRecDetailGrup();
  1119. //trace("1 : " + ds_main_recgruplist.getColumn(curRow,"recflag"));
  1120. //trace("2 : " + ds_main_recgruplist.getColumn(curRow,"clsflag"));
  1121. if( (ds_main_recgruplist.getColumn(curRow,"recflag") =="2" && ds_main_recgruplist.getColumn(curRow,"clsflag") =="1") ||
  1122. (ds_main_recgruplist.getColumn(curRow,"recflag") =="2" && ds_main_recgruplist.getColumn(curRow,"clsflag") =="2")
  1123. ){
  1124. fChkTF("Y","N");
  1125. }
  1126. }
  1127. }
  1128. function cf_TRMNW04006(sSvcId, nErrorCode, sErrorMsg) {
  1129. arErrorCode.push(sSvcId, nErrorCode);
  1130. ds_main_recdetailgruplist.addColumn("bkflag", "string", 256);
  1131. ds_main_recdetailgruplist.addColumn("bktimsval", "string", 256);
  1132. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  1133. ds_main_recdetailgruplist.setColumn(i, "bkflag", ds_main_recdetailgruplist.getColumn(i, "flag"));
  1134. ds_main_recdetailgruplist.setColumn(i, "bktimsval", ds_main_recdetailgruplist.getColumn(i, "timsval"));
  1135. }
  1136. ds_main_recdetailgruplist.addColumn("color", "string", 256);
  1137. ds_main_recdetailgruplist.addColumn("chkTrue", "string", 256);
  1138. if( utlf_isNull(ds_main_recdetailgruplist.getColumnInfo("basepnt_multi")) ){
  1139. ds_main_recdetailgruplist.addColumn("basepnt_multi", "string");
  1140. }
  1141. }
  1142. /**
  1143. * @group :
  1144. * @ver : 2008.06.25
  1145. * @by : dhkim
  1146. * @---------------------------------------------------
  1147. * @type : function
  1148. * @access : public
  1149. * @param : selRow 현재 선택한 그리드 row idx
  1150. * selCol 현재 선택한 그리드 col idx
  1151. * _supcd 현재 선택한 그리드 row의 상위코드값
  1152. * @desc : 횟수입력시 입력여부가 N이면 값을 원래 값으로 리턴
  1153. * col = 1 (구분체크박스), col=5 (횟수)
  1154. * @return :
  1155. * @---------------------------------------------------
  1156. */
  1157. function fChangeTimsValValue(selRow, selCol, _supcd){
  1158. if(_supcd == '00000000'){
  1159. return;
  1160. }
  1161. if(selCol == 6){//횟수변경 (횟수입력여부가 Y인것만 입력 가능함)
  1162. var flag = xRecDetailPathDS.getColumn(selRow, 'flag');
  1163. var timsinptyn = xRecDetailPathDS.getColumn(selRow, 'timsinptyn');//횟수입력가능여부
  1164. if(timsinptyn == 'N'){
  1165. return;
  1166. }else if(timsinptyn == 'Y'){//횟수 입력가능상태
  1167. if(flag == 'N'){
  1168. //체크상태가 아닌 데이터에 횟수 입력시 원래상태로 back
  1169. xRecDetailPathDS.setColumn(selRow, "timsval", xRecDetailPathDS.getColumn(selRow, "bktimsval"));
  1170. }
  1171. }
  1172. }
  1173. }
  1174. /**
  1175. * @group :
  1176. * @ver : 2008.06.25
  1177. * @by : dhkim
  1178. * @---------------------------------------------------
  1179. * @type : function
  1180. * @access : public
  1181. * @param : selRow 현재 선택한 그리드 row idx
  1182. * selCol 현재 선택한 그리드 col idx
  1183. * _supcd 현재 선택한 그리드 row의 상위코드값
  1184. * @desc : 체크박스 변경에 따른 선택된 같은 그룹내의 체크박스 값 변경
  1185. * col = 1 (구분체크박스)
  1186. * @return :
  1187. * @---------------------------------------------------
  1188. */
  1189. function fChangeCheckboxValue(selRow, selCol, _supcd){
  1190. var curFlag = xRecDetailPathDS.getColumn(selRow, "flag");//현재선택한 체크값
  1191. var clsflag = ds_cond.getColumn(0, "clsflag");
  1192. if(_supcd == '00000000'){
  1193. return;
  1194. }
  1195. if(selCol == 1){//체크값 변경
  1196. //2008.08.07 dhkim 추가
  1197. //중증도중환자실(중환자실입실, 중환자실퇴실 포함), 신생아ICU는 multi 체크이므로 기존에 체크된 데이터를 해제하지 않는다.
  1198. //일반병동, 정신과병동, 혈액투석, 낙상성인(Morse Scale), 욕창은 single 체크임
  1199. var isMulti = false;
  1200. if(clsflag == '4' || clsflag == '6' ||clsflag == '7' || clsflag == '2'){
  1201. isMulti = true;
  1202. }
  1203. var supcd, flag;
  1204. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  1205. supcd = ds_main_recdetailgruplist.getColumn(i, "supcd");
  1206. flag = ds_main_recdetailgruplist.getColumn(i, "flag");
  1207. if(!isMulti){
  1208. //같은 그룹내에서 비교
  1209. if(supcd != '00000000' && supcd == _supcd && (flag == "1" || flag == "Y") ){//기존 체크데이터를 해제
  1210. //원래 체크되어있던 값을 해제, 상태 삭제로
  1211. ds_main_recdetailgruplist.setColumn(i, "flag", "0");
  1212. }
  1213. }
  1214. }
  1215. //현재 체크한 값을 선택, 상태 신규로
  1216. if( curFlag == '1' || curFlag == "Y" ){
  1217. xRecDetailPathDS.setColumn(selRow, "flag", 'Y');
  1218. //20080827
  1219. //횟수값이 입력가능 항목이면 항목에 체크되었을때 횟수필드를 노랑으로 변경
  1220. if( !utlf_isNull(xRecDetailPathDS.getColumn(selRow, "timsval")) ){
  1221. xRecDetailPathDS.setColumn(selRow, "color", "#FCFF00");//노랑
  1222. }
  1223. }else if(curFlag == '0' || curFlag == "N" ){
  1224. xRecDetailPathDS.setColumn(selRow, "flag", 'N');
  1225. //20080827
  1226. //횟수값이 입력가능 항목이면 항목에 체크해제되었을때 횟수필드를 하냥으로 변경
  1227. if( !utlf_isNull(xRecDetailPathDS.getColumn(selRow, "timsval")) ){
  1228. xRecDetailPathDS.setColumn(selRow, "color", "#FFFFFF");//하양
  1229. }
  1230. }
  1231. }
  1232. }
  1233. /**
  1234. * @group :
  1235. * @ver : 2008.06.25
  1236. * @by : dhkim
  1237. * @-------------------------------------------------------------------------------------------------------
  1238. * @type : function
  1239. * @access : public
  1240. * @param :
  1241. * @return :
  1242. * @desc : 저장하기전 전체그리드의 변경된 내역에 따른 그리드 상태값을 변경한다.
  1243. * (1) 체크박스 선택여부에 따른 상태값 변경
  1244. * 1. 원래값이 Y, 현재Y이면 stat은 '-'
  1245. * 2. 원래값이 Y, 현재N이면 stat은 'd'
  1246. * 3. 원래값이 N, 현재N이면 stat은 '-'
  1247. * 4. 원래값이 N, 현재Y이면 stat은 'i'
  1248. * (2) 횟수 입력에 따른 상태값 변경
  1249. * 1. 현재 chkbox가 Y이고 timsinptyn(횟수입력여부)이 Y일때만 입력가능함.
  1250. * 2. 원래 chkbox가 Y, 현재Y, 현재timsval과 원래 bktimsval값이 다르면 상태값은 'u'로
  1251. * 3. 현재 chkbox가 N인 것에 timsval값이 입력되면 timsval값을 원래상태(원래상태값:bkimsval)로 복구
  1252. * @-------------------------------------------------------------------------------------------------------
  1253. */
  1254. function fChangeGridStat(){
  1255. var bkflag, bktimsval; //원래 체크박스값, 원래횟수값
  1256. var flag, timsval; //변경한체크박스값, 변경한횟수값
  1257. var timsinptyn; //횟수입력여부
  1258. var stat = '-'; //변경할 그리드 상태값
  1259. var pntstat = '-'; //상세점수의 stat
  1260. var recmasterrow = 0;
  1261. for( var idx = 0; idx < ds_main_recgruplist.rowcount; idx++ ){
  1262. if ( xRecDetailPathDS.getColumn(0, "pid") == xRecMasterPathDS.getColumn(idx, "pid")
  1263. && xRecDetailPathDS.getColumn(0, "execdd") == xRecMasterPathDS.getColumn(idx, "execdd")
  1264. && xRecDetailPathDS.getColumn(0, "recseq") == xRecMasterPathDS.getColumn(idx, "recseq")
  1265. ){
  1266. recmasterrow = idx;
  1267. ds_main_recgruplist.rowposition = recmasterrow;
  1268. break;
  1269. }
  1270. }
  1271. if ( recmasterrow < 0 ){
  1272. sysf_messageBox( capt_master.text + " 선택" ,"I008");
  1273. return;
  1274. }
  1275. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  1276. flag = xRecDetailPathDS.getColumn(i, "flag"); //현재체크박스값
  1277. timsval = xRecDetailPathDS.getColumn(i, "timsval"); //현재횟수값
  1278. bkflag = xRecDetailPathDS.getColumn(i, "bkflag"); //원래체크박스값
  1279. bktimsval = xRecDetailPathDS.getColumn(i, "bktimsval"); //원래횟수값
  1280. timsinptyn= xRecDetailPathDS.getColumn(i, "timsinptyn"); //횟수입력여부
  1281. if(bkflag == 'Y' && flag == 'Y'){
  1282. if(timsinptyn == 'Y' && (timsval != bktimsval)){
  1283. stat = 'u';
  1284. pntstat = 'u';
  1285. }else{
  1286. stat = '-';
  1287. }
  1288. }else if(bkflag == 'Y' && flag == 'N'){
  1289. stat = 'd';
  1290. pntstat = 'u';
  1291. }else if(bkflag == 'N' && flag == 'N'){
  1292. stat = '-';
  1293. }else if(bkflag == 'N' && flag == 'Y'){
  1294. stat = 'i';
  1295. pntstat = 'u';
  1296. }
  1297. xRecDetailPathDS.setColumn(i, "stat", stat);
  1298. }
  1299. //상세내역이 변경되면 상세점수와 중증도마스터의 stat을 변경상태로 설정한다.
  1300. if(pntstat == 'u'){
  1301. //중증도점수그리드
  1302. //grd_recpnt.addStatus(2, 'update');
  1303. grdf_setStatus(grd_recpnt, "U", grdf_getSelectedRows(grd_recpnt));
  1304. //중증도 마스터그리드
  1305. if( ds_main_recgruplist.getRowType(recmasterrow) != "2" ){//상태가 신규상태가 아니면 u로 변경
  1306. grdf_setStatus(grd_recpnt, "U", [recmasterrow]);
  1307. xRecMasterPathDS.setColumn(recmasterrow, "stat", 'u');
  1308. }
  1309. }else{
  1310. //중증도점수그리드
  1311. //grd_recpnt.removeStatus(2, 'update');
  1312. grdf_setStatus(grd_recpnt, "", [0]);
  1313. //중증도 마스터그리드
  1314. if( ds_main_recgruplist.getRowType(recmasterrow) != "2" ){//상태가 신규상태가 아니면 u로 변경
  1315. grdf_setStatus(grd_recpnt, "", [recmasterrow]);
  1316. xRecMasterPathDS.setColumn(recmasterrow, "stat", '-');
  1317. }
  1318. }
  1319. }
  1320. /**
  1321. * @group :
  1322. * @ver : 2011.03.14
  1323. * @by : 안도영
  1324. * @---------------------------------------------------
  1325. * @type : function
  1326. * @access : public
  1327. * @desc : 구역정보 조회 및 내환자정보 숨기기 (응급실인 경우)
  1328. * @param :
  1329. * @param :
  1330. * @return :
  1331. * @---------------------------------------------------
  1332. */
  1333. function fGetWardChngInfo(initFlag, wardCd, sectionCd){
  1334. if(initFlag=="Y") {
  1335. var sWardCD = wardCd;
  1336. }
  1337. else{
  1338. var sWardCD = ds_cond.getColumn(0, "wardcd");
  1339. }
  1340. if ( sWardCD == eERDEPTCD) {
  1341. eERFLAG = "Y";
  1342. }else{
  1343. eERFLAG = "";
  1344. }
  1345. //응급실인 경우 구역정보 추가조회
  1346. if(eERFLAG == "Y"){ // 응급실
  1347. fGetZoneList();
  1348. var age = ds_main_paminfo.getColumn(0, "age"); //190523_AYS_응급실 중증도 프로그램 오픈 시 낙상 Default
  1349. trace("age : " + age);
  1350. ds_temp2_zoneinfo.copyData(ds_temp_zoneinfo_zonelist);
  1351. group5.cmb_room.visible = false;
  1352. group5.cmb_zone.visible = true;
  1353. if(initFlag=="Y"){ // 처음 상단 정보로 화면 열릴 때
  1354. ds_cond.setColumn(0, "zonecd", (sectionCd == "") ? "-" : sectionCd);
  1355. }else{
  1356. ds_cond.setColumn(0, "zonecd", "-"); // 'All'로 default
  1357. }
  1358. //190523_AYS_응급실 중증도 프로그램 오픈 시 낙상 Default
  1359. //190605_AYS_칠곡 응급실 적용
  1360. //if(sysf_getUserInfo("dutplceinstcd") == '031'){
  1361. ds_cond.setColumn(0, 'recflag', '2');
  1362. ds_cond.setColumn(0, 'clsflag', parseInt(age) < 15 ? "8" : "9");
  1363. //}
  1364. }else{
  1365. group5.cmb_room.visible = true;
  1366. group5.cmb_zone.visible = false;
  1367. ds_cond.setColumn(0, "zonecd", "");
  1368. }
  1369. }
  1370. /**
  1371. * @group :
  1372. * @ver : 2007.12.06
  1373. * @by : 신혁춘
  1374. * @---------------------------------------------------
  1375. * @type : function
  1376. * @access : public
  1377. * @desc : 내환자 정보를 조회한다.
  1378. * @param :
  1379. * @return :
  1380. * @---------------------------------------------------
  1381. */
  1382. function fmisetting(){
  1383. var setid = sysf_getUserId();
  1384. var setdeptcd = sysf_getUserInfo("dutplcecd");
  1385. ds_send.clear();
  1386. ds_hidden_settingrn.clearData();
  1387. ds_send.addColumn("wardcd", "string", 256);
  1388. var iRow = ds_send.addRow();
  1389. //인공신장실 혈액투석간호기록에서 화면 연동시 parma추가-kys-20100412
  1390. if(frmf_getMenuParam() == "SMMND" || opener.frmf_getParameter("SMMND00700_param_dial") == "dialrec"){
  1391. ds_send.setColumn(iRow, "wardcd", setdeptcd);
  1392. } else {
  1393. ds_send.setColumn(iRow, "wardcd", ds_cond.getColumn(0, "wardcd"));
  1394. }
  1395. //내환자세팅한 간호사 조회
  1396. var oParam = {};
  1397. oParam.id = "TRMNW04012";
  1398. oParam.service = "carerecapp.AsesRec";
  1399. oParam.method = "reqGetMyPatientSetList";
  1400. oParam.inds = "refCond=ds_send";
  1401. oParam.outds = "ds_hidden_settingrn=settingrn";
  1402. oParam.async = false;
  1403. oParam.callback = "cf_TRMNW04012";
  1404. tranf_submit(oParam);
  1405. if( arErrorCode.pop("TRMNW04012") > -1 ){
  1406. //병동 변경시 내환자 정보 셋팅됨_2009-02-09_SMY수정
  1407. ds_cond.setColumn(0, "settingrnid", "");
  1408. for( var i = 0; i < ds_hidden_settingrn.rowcount; i++ ) {
  1409. if( ds_hidden_settingrn.getColumn(i, "settingrnid") == setid) {
  1410. ds_cond.setColumn(0, "settingrnid", setid);
  1411. }
  1412. }
  1413. /*
  1414. var pid = model.getValue("/root/main/paminfo/pamlist/pid");//상단정보
  1415. var setid = getUserId();
  1416. var setCnt = getNodesetCount('/root/hidden/setting/settingrn');
  1417. var setRow = 0;
  1418. for(var i = 1; i < setCnt; i++){
  1419. if(model.getValue('/root/hidden/setting/settingrn[" + i + "]/settingrnid') == setid){
  1420. setRow = i-1;
  1421. break;
  1422. }
  1423. }
  1424. if(setRow > 0 && pid == ''){//상단정보 설정안되어 있을때
  1425. model.setValue('/root/cond/settingrnid', setid);//세션의 간호사로 아이디세팅
  1426. } else {
  1427. model.setValue('/root/cond/settingrnid', '-');//없으면 default
  1428. }
  1429. */
  1430. }
  1431. return;
  1432. }
  1433. function cf_TRMNW04012(sSvcId, nErrorCode, sErrorMsg) {
  1434. arErrorCode.push(sSvcId, nErrorCode);
  1435. }
  1436. function addchk(){
  1437. var wardcd = ds_cond.getColumn(0, "wardcd");
  1438. var age = ds_cond.getColumn(0, "age");
  1439. if( ds_cond.getColumn(0, "clsflag") == "8"){
  1440. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++ ){
  1441. if(wardcd == ds_init_icucdgrup.getColumn(i, "wardcd")){ // 중환자실이면
  1442. ds_cond.setColumn(0, "haddchk01", "Y");
  1443. fChkTF("Y","N");
  1444. }
  1445. }
  1446. if(age < 3){
  1447. ds_cond.setColumn(0, "haddchk", "Y");
  1448. fChkTF("Y","N");
  1449. }
  1450. //190523_AYS_응급실 환자일 경우 고위험 항목(응급실환자) 체크 활성화
  1451. /*
  1452. if(eERDEPTCD == wardcd){
  1453. ds_cond.setColumn(0, "maddchk05", "Y");
  1454. }
  1455. */
  1456. }else if(ds_cond.getColumn(0, "clsflag") == "9"){
  1457. for( var j = 0; j < ds_init_icucdgrup.rowcount; j++) {
  1458. if( wardcd == ds_init_icucdgrup.getColumn(j, "wardcd")){ // 중환자실이면
  1459. ds_cond.setColumn(0, "maddchk01", "Y");
  1460. fChkTF("Y","N");
  1461. }
  1462. }
  1463. if(age >= 70){
  1464. ds_cond.setColumn(0, "maddchk02", "Y");
  1465. fChkTF("Y","N");
  1466. }
  1467. //190523_AYS_응급실 환자일 경우 고위험 항목(응급실환자) 체크 활성화
  1468. /*
  1469. if(eERDEPTCD == wardcd){
  1470. ds_cond.setColumn(0, "maddchk05", "Y");
  1471. }
  1472. */
  1473. }
  1474. }
  1475. /**
  1476. * @ver : 2008.06.09
  1477. * @author : dhkim
  1478. * @------------------------------------------------------------------------------
  1479. * @access : public
  1480. * @type : function
  1481. * @param :
  1482. * @desc : 선택된 병동에 따라 중증도/낙상/욕창 구분을 default선택한다.
  1483. * @--------------------------------------------------------------------------------
  1484. */
  1485. function fSelectDefaultRdoCond(clsseting){
  1486. /*
  1487. switch (clsseting){
  1488. case "3050122000" : rdo_clsflaga.value = "5" ; break; //10층동병동(정신과병동)
  1489. case "2110201000" : rdo_clsflaga.value = "2" ; break; //신생아중환자실(신생아ICU)
  1490. case "3060000000" : rdo_clsflaga.value = "4" ; break; //중환자실
  1491. case "3060600000" : rdo_clsflaga.value = "4" ; break; //2층중환자실
  1492. case "3060400000" : rdo_clsflaga.value = "4" ; break; //순환기계중환자실
  1493. case "3060300000" : rdo_clsflaga.value = "4" ; break; //신경외과중환자실
  1494. case "3060200000" : rdo_clsflaga.value = "4" ; break; //외과중환자실
  1495. case "3060100000" : rdo_clsflaga.value = "4" ; break; //내과중환자실
  1496. default : rdo_clsflaga.value = "1" //default는 일반병동임.
  1497. }
  1498. */
  1499. var setflag = "1";
  1500. //중증도 기록에서 사용하는 부서코드 조회_20090414_SMY추가
  1501. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++ ){
  1502. if( clsseting == ds_init_icucdgrup.getColumn(i, "wardcd") ){ // 중환자실이면
  1503. if( clsseting == ds_code_codelist.lookup("cdgrupid", "052", "cdid")){ // 신생아중환자실이면
  1504. setflag = '2';
  1505. } else {
  1506. setflag = ds_init_icucdgrup.getColumn(i, "clsflag");
  1507. }
  1508. }
  1509. }
  1510. if(setflag == '1'){
  1511. if(clsseting == ds_code_codelist.lookup("cdgrupid", "W02", "cdid")){ // 302병동이면
  1512. setflag = '5'
  1513. } else if(clsseting == ds_code_codelist.lookup("cdgrupid", "055", "cdid")){ // 인공신장실이면
  1514. setflag = '3'
  1515. } else {
  1516. setflag = '1';
  1517. }
  1518. }
  1519. ds_cond.setColumn(0, "clsflag", setflag);
  1520. }
  1521. /**
  1522. * @group :
  1523. * @ver : 2007.12.06
  1524. * @by : 신혁춘
  1525. * @---------------------------------------------------
  1526. * @type : function
  1527. * @access : public
  1528. * @desc : 중증도 상세내역 트리구조로 변환
  1529. * @param :
  1530. * @return :
  1531. * @---------------------------------------------------
  1532. */
  1533. function fShowTreeRecDetailGrup(){
  1534. var iRow = grd_recdetail.rows;
  1535. var timsval, flag;
  1536. ds_main_recdetailgruplist.enableevent = false;
  1537. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  1538. timsval = ds_main_recdetailgruplist.getColumn(i, "timsval");
  1539. flag = ds_main_recdetailgruplist.getColumn(i, "flag");
  1540. //입력필드가 아닐때 점수를 회색으로 보여준다.
  1541. if( utlf_isNull(ds_main_recdetailgruplist.getColumn(i, "timsval")) ) {
  1542. ds_main_recdetailgruplist.setColumn(i, "color", "#C0C0C0");//회색
  1543. }
  1544. //20080827 구분에 체크되어있고 입력필드일 때 횟수값이 0이면 배경을 노랑색으로 보여준다.
  1545. else if( flag == 'Y' && timsval != '' && (timsval == '0' || timsval == 0) ){
  1546. ds_main_recdetailgruplist.setColumn(i, "color", "#FCFF00");//노랑
  1547. }
  1548. if( ds_main_recdetailgruplist.getColumn(i, "supcd") == "00000000" ){//level이 상위레벨일때
  1549. //그리드 체크박스 readonly true로 변경
  1550. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  1551. }else{
  1552. //그리드 체크박스 readonly false로 변경
  1553. if( ds_cond.getColumn(0, "agechk") =="Y" ){
  1554. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  1555. } else {
  1556. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "0");
  1557. }
  1558. }
  1559. var timsinptyn = ds_main_recdetailgruplist.getColumn(i, "timsinptyn");//횟수입력여부
  1560. //그리드 Expr에 적용...추민수
  1561. // if(timsinptyn == 'Y'){
  1562. // //그리드 체크박스 readonly false로 변경
  1563. // if( ds_cond.getColumn(0, "agechk") =="Y" ){
  1564. // //ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  1565. // } else {
  1566. // //ds_main_recdetailgruplist.setColumn(i, "chkTrue", "0");//횟수입력필드 readonly true로 변경
  1567. // }
  1568. //
  1569. // }else if(timsinptyn == 'N'){
  1570. // //ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");//횟수입력필드 readonly false로 변경
  1571. // }
  1572. }
  1573. ds_main_recdetailgruplist.enableevent = true;
  1574. }
  1575. /**
  1576. * @group :
  1577. * @ver : 2007.12.06
  1578. * @by : 신혁춘
  1579. * @---------------------------------------------------
  1580. * @type : function
  1581. * @access : public
  1582. * @desc : 중증도 상세내역의 설명을 조회한다.
  1583. * @param :
  1584. * @return :
  1585. * @---------------------------------------------------
  1586. */
  1587. function fHistDescs(){
  1588. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  1589. var iRow = ds_main_recdetailgruplist.rowposition;
  1590. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", ds_main_recdetailgruplist.getColumn(iRow, "desccnts"));
  1591. }
  1592. /**
  1593. * @group :
  1594. * @ver : 2007.12.06
  1595. * 2008.06.23 dhkim 수정
  1596. * @by : 신혁춘
  1597. * @---------------------------------------------------
  1598. * @type : function
  1599. * @access : public
  1600. * @desc : 상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
  1601. * @param :
  1602. * @return :
  1603. * @---------------------------------------------------
  1604. */
  1605. function fColLqidtys() {
  1606. //trace("그리드");
  1607. var cnt = ds_main_recpntlist.getColumn(0, "cnt");
  1608. if(Number(cnt) > 0 ){
  1609. for( var j = 3; j < grd_recpnt.getCellCount("Body"); j++ ){
  1610. grd_recpnt.setFormatColProperty(j, "size", 0);
  1611. }
  1612. var fdx = 0;
  1613. var hngnm;
  1614. var idx = 0;
  1615. fdx = Number(grd_recpnt.getBindCellIndex("Body", "hngnm"));
  1616. for( var i = 0; i < cnt; i++ ) {
  1617. hngnm = ds_main_pnttitlgruplist.getColumn(i, "hngnm");
  1618. idx = Number(fdx) + Number(i) + 1;
  1619. grd_recpnt.setFormatColProperty(idx, "size", 50); // 컬럼사이즈 fix
  1620. //그리드의 타이틀필드값에 상세내역의 타이틀을 세팅
  1621. grd_recpnt.setCellProperty("Head", idx, "text", hngnm);
  1622. }
  1623. grd_recpnt.setFormatColProperty(grd_recpnt.getBindCellIndex("body", "totpnt"), "size", 50);
  1624. grd_recpnt.setFormatColProperty(grd_recpnt.getBindCellIndex("body", "resultcd"), "size", 50);
  1625. ds_main_recpntlist.updatecontrol = false;
  1626. ds_main_recpntlist.addColumn("pid", "string", 256);
  1627. ds_main_recpntlist.addColumn("hngnm", "string", 256);
  1628. var cRow = ds_main_recgruplist.rowposition;
  1629. ds_main_recpntlist.setColumn(0, "pid", ds_main_recgruplist.getColumn(cRow, "pid"));
  1630. ds_main_recpntlist.setColumn(0, "hngnm", ds_main_recgruplist.getColumn(cRow, "hngnm"));
  1631. ds_main_recpntlist.updatecontrol = true;
  1632. }
  1633. }
  1634. /**
  1635. * 중증도/낙상/욕창 (recflag) 선택여부에 따라 캡션을 변경
  1636. */
  1637. function fChangeCaption(clsflag){
  1638. ds_cond.setColumn(0, "agechk", "N" );
  1639. //중증도/낙상/욕창 선택여부에 따라 텍스트를 변경
  1640. if(clsflag == "1" ){
  1641. capt_pnt.text = "일반병동 중증도상세점수";
  1642. capt_detail.text = "일반병동 중증도상세내역";
  1643. capt_bedsore.visible=false;
  1644. grp_agechk.visible = false;
  1645. group2.visible = false;
  1646. group4.visible = false;
  1647. //grd_recdetail.setRealRowSize .setFormatColProperty(switch1.case1.grd_daylist.getBindCellIndex("body", "item29"), "size", 40);
  1648. grd_recdetail.position.height = 525;
  1649. }else if(clsflag == "2" ){
  1650. capt_pnt.text = "신생아 ICU 중증도상세점수";
  1651. capt_detail.text = "신생아 ICU 중증도상세내역";
  1652. capt_bedsore.visible = false;
  1653. grp_agechk.visible = false;
  1654. group2.visible = false;
  1655. group4.visible = false;
  1656. grd_recdetail.position.height = 525;
  1657. }else if(clsflag == "3" ){
  1658. //capt_master.attribute("text") = "혈액투석 중증도내역";
  1659. capt_pnt.text = "혈액투석 중증도상세점수";
  1660. capt_detail.text = "혈액투석 중증도상세내역";
  1661. capt_bedsore.visible=false;
  1662. grp_agechk.visible = false;
  1663. group2.visible = false;
  1664. group4.visible = false;
  1665. grd_recdetail.position.height = 525;
  1666. }else if(clsflag == "4" || clsflag == "6" || clsflag == "7"){
  1667. //capt_master.attribute("text") = "중환자실 중증도내역";
  1668. capt_pnt.text = "중환자실 중증도상세점수";
  1669. capt_detail.text = "중환자실 중증도상세내역";
  1670. capt_bedsore.visible=false;
  1671. grp_agechk.visible = false;
  1672. group2.visible = false;
  1673. group4.visible = false;
  1674. grd_recdetail.position.height = 525;
  1675. }else if(clsflag == "5"){
  1676. //capt_master.attribute("text") = "정신과병동 중증도내역";
  1677. capt_pnt.text = "정신과병동 중증도상세점수";
  1678. capt_detail.text = "정신과병동 중증도상세내역";
  1679. capt_bedsore.visible=false;
  1680. grp_agechk.visible = false;
  1681. group2.visible = false;
  1682. group4.visible = false;
  1683. grd_recdetail.position.height = 525;
  1684. }else if(clsflag == "8"){
  1685. //capt_master.attribute("text") = "낙상위험사정구분(아동)내역";
  1686. //capt_pnt.text = "낙상위험사정구분(Humpty Dumpty Scale)상세점수";
  1687. //capt_detail.text = "낙상위험사정구분(Humpty Dumpty Scale)상세내역";
  1688. capt_pnt.text = "낙상위험평가(Humpty Dumpty Fall Scale)결과";
  1689. capt_detail.text = "낙상위험평가(Humpty Dumpty Fall Scale)상세내역";
  1690. capt_bedsore.visible=false;
  1691. group2.visible = false;
  1692. group4.visible = true;
  1693. grd_recdetail.position.height = 409;
  1694. /*
  1695. if ( instUseYN == "Y" ){
  1696. grp_agechk.visible = true;
  1697. cap_agemsg.attribute("text") = "낙상사정 제외 고위험군입니다";
  1698. }else {
  1699. grp_agechk.visible = false;
  1700. }
  1701. */
  1702. }else if(clsflag == "9"){
  1703. //capt_master.attribute("text") = "낙상위험사정구분(Morse Scale)내역";
  1704. //capt_pnt.text = "낙상위험사정구분(Morse Scale)상세점수";
  1705. //capt_detail.text = "낙상위험사정구분(Morse Scale)상세내역";
  1706. capt_pnt.text = "낙상위험평가(Morse Fall Scale)결과";
  1707. capt_detail.text = "낙상위험평가(Morse Fall Scale) 상세내역";
  1708. capt_bedsore.visible=false;
  1709. group2.visible = true;
  1710. group4.visible = false;
  1711. grd_recdetail.position.height = 409;
  1712. /*
  1713. if ( instUseYN == "Y" ){
  1714. grp_agechk.visible = true;
  1715. cap_agemsg.attribute("text") = "낙상사정 제외 고위험군입니다";//20100514 khj 소경화itc 요청에의한 메시지 수정
  1716. }else {
  1717. grp_agechk.visible = false;
  1718. }
  1719. */
  1720. }else if(clsflag == "10"){
  1721. // capt_master.attribute("text") = "욕창위험사정구분(욕창)내역";
  1722. capt_pnt.text = "욕창위험평가(Braden Scale)결과";
  1723. capt_detail.text = "욕창위험평가(Braden Scale)상세내역";
  1724. //capt_bedsore.visible=true;
  1725. capt_bedsore.visible=false;
  1726. grp_agechk.visible = false;
  1727. group2.visible = false;
  1728. group4.visible = false;
  1729. grd_recdetail.position.height = 525;
  1730. }
  1731. }
  1732. /**
  1733. * @ver : 2008.06.09
  1734. * @author : dhkim
  1735. * @------------------------------------------------------------------------------
  1736. * @access : public
  1737. * @type : function
  1738. * @param :
  1739. * @desc : 혈액투석의 경우 환자정보 그리드의 구조를 변경
  1740. * @--------------------------------------------------------------------------------
  1741. */
  1742. function fChangeGridColumn(clsflag){
  1743. if(clsflag == '3'){
  1744. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "ioflagnm"), "size", 33); //구분
  1745. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "pid"), "size", 80); //등록번호
  1746. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "roomcd"), "size", 0); //병실
  1747. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "indd"), "size", 0); //입원일
  1748. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "maintepatrgstdd"), "size", 68); //유지환자등록일자
  1749. //20080820 주석처리 rdo_bloodioflag.attribute("visibility") = "visible";//외래입원구분
  1750. }else{
  1751. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "ioflagnm"), "size", 0); //구분
  1752. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "pid"), "size", 0); //등록번호
  1753. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "roomcd"), "size", 53); //병실
  1754. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "indd"), "size", 0); //입원일
  1755. grd_patinfo.setFormatColProperty(grd_patinfo.getBindCellIndex("body", "maintepatrgstdd"), "size", 0); //유지환자등록일자
  1756. //20080820 주석처리 rdo_bloodioflag.attribute("visibility") = "hidden";//외래입원구분
  1757. //20080820 주석처리 rdo_bloodioflag.value = '';
  1758. }
  1759. }
  1760. //input수행일자에 해당하는 기록일이 있는지 조회
  1761. //신규데이터가 아닌것중..(stat != 'i')
  1762. //@param : iptExecdd 입력하고자 하는 수행일자(input 컴포넌트)
  1763. //@return : arr[0] - 기록여부 (true/false)
  1764. // arr[1] - signno (기록여부가 true일때 해당기록의 signno를 할당)
  1765. // 20080820 - array로 변경
  1766. function fIsRecorded(iptExecdd){
  1767. var retArr = new Array(1);
  1768. var recorded = false;
  1769. var signno = "";
  1770. var execdd;
  1771. var stat;
  1772. for( var i = 0; i < ds_main_recgruplist.rowcount; i++ ){
  1773. execdd = ds_main_recgruplist.getColumn(i, "execdd");
  1774. stat = ds_main_recgruplist.getColumn(i, "stat");
  1775. if( !utlf_isNull(execdd) && iptExecdd == execdd && stat != "i"){
  1776. signno = ds_main_recgruplist.getColumn(i, "signno");
  1777. recorded = true;
  1778. retArr[0] = recorded;
  1779. retArr[1] = signno;
  1780. return retArr;
  1781. }
  1782. }
  1783. retArr[0] = recorded;
  1784. retArr[1] = signno;
  1785. return retArr;
  1786. }
  1787. /**
  1788. * @group :
  1789. * @ver : 2008.06.25
  1790. * @by : dhkim
  1791. * @-------------------------------------------------------------------------------------------------------
  1792. * @type : function
  1793. * @access : public
  1794. * @param :
  1795. * @return :
  1796. * @desc : 중증도 마스터와 상세내역을 저장하기 전 데이터의 유효성을 체크한다.
  1797. * - 상세내역에 미체크 내역이 있는지 확인한다.
  1798. * - 2008.08.06 dhkim 요구사항 추가
  1799. * [모든항목 필수체크하는경우]
  1800. * 1) 중증도 : 일반병동, 정신과병동(DT, ECT항목은 필수아님), 혈액투석
  1801. * 2) 욕창
  1802. * clsflag = 1, 3, 5, 10(화면내부)
  1803. *
  1804. * [모든항목 필수체크아닌경우]
  1805. * 1) 중증도 : 중환자실, 신생아ICU
  1806. * 2) 낙상 : 성인, 소아
  1807. * clsflag = 2, 4, 8, 9(화면내부)
  1808. * - 2008.08.20 dhkim 요구사항 추가
  1809. * 낙상의 경우 나이를 체크할것.
  1810. * 낙상 소아 : 만 12세 미만 clsflag = 8
  1811. * 낙상 성인 : 만 13세 이상 clsflag = 9
  1812. * - 2008.08.27 dhkim 요구사항 추가
  1813. * 체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
  1814. * @-------------------------------------------------------------------------------------------------------
  1815. */
  1816. function fIsValid(){
  1817. var supcd;
  1818. var _supcd, _flag, _hngnm, _timsval;
  1819. var isChecked = false;
  1820. var clsflag = ds_cond.getColumn(0, "clsflag");
  1821. var curRow = ds_main_patinfo.rowposition;
  1822. var age = ds_main_patinfo.getColumn(curRow, "sexage").split('/')[1];
  1823. //환자가 선택되지 않은경우 기록을 입력할수 없다.
  1824. var pid = ds_main_recpntlist.getColumn(0, "pid"); //20080917 수정
  1825. if( utlf_isNull(pid) ){
  1826. sysf_messageBox('기록하려는 환자정보가 존재하지 않습니다. 환자를 먼저 선택하신 후 기록을 작성하세요.', 'E');
  1827. return false;
  1828. }
  1829. //20080827
  1830. //체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
  1831. for( var j = 0; j < ds_main_recdetailgruplist.rowcount; j++ ){
  1832. _flag = ds_main_recdetailgruplist.getColumn(j, "flag");
  1833. _timsval = ds_main_recdetailgruplist.getColumn(j, "timsval");
  1834. _hngnm = ds_main_recdetailgruplist.getColumn(j, "hngnm");
  1835. //20080827
  1836. //체크된 항목에 대해 횟수 입력필드가 0이면 횟수입력하라는 메세지 띄울것
  1837. if(_flag == 'Y' && !utlf_isNull(_timsval) && (_timsval == '0' || _timsval == 0)){
  1838. sysf_messageBox('[' + _hngnm + ']의 횟수가 입력되지 않았습니다. 횟수를', 'C001');
  1839. grd_recdetail.vscrollbar.pos = j;
  1840. return false;
  1841. }
  1842. }
  1843. //20080923 dhkim 2차리허설 요구사항 (소아청소년과의 경우 13세 이상이라도 입원할 경우가 있기때문에 나이제한을 두지 말아야 한다.)
  1844. /*
  1845. //낙상성인, 낙상소아의 경우 환자 나이를 체크함
  1846. if(clsflag == '8'){//낙상소아
  1847. if(age > 13){
  1848. messageBox('해당 환자의 나이가 ' + age + '세이므로 아동 낙상위험사정 기록을', 'E001');
  1849. return false;
  1850. }
  1851. }else if(clsflag == '9'){//낙상성인
  1852. if(age < 13){
  1853. messageBox('해당 환자의 나이가 ' + age + '세이므로 성인 낙상위험사정 기록을', 'E001');
  1854. return false;
  1855. }
  1856. }
  1857. */
  1858. //낙상성인 (Morse Scale), 낙상소아, 중증도 중환자실, 신생아ICU 은 필수체크 안함
  1859. if(clsflag == '2' || clsflag == '4' || clsflag == '6' || clsflag == '7' || clsflag == '8' || clsflag == '9'){
  1860. return true;
  1861. }
  1862. var testhngnm = '';
  1863. //상세내역의 미체크 내역이 있는지 확인한다.
  1864. //정신과병동 선택했을때 항목중 DT(<clstlcd>00000440</clstlcd>), ECT(<clstlcd>00000447</clstlcd>)는 필수아님
  1865. for(var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  1866. supcd = ds_main_recdetailgruplist.getColumn(i, "supcd");
  1867. if( i == (ds_main_recdetailgruplist.rowcount-1) ){
  1868. if(isChecked == false){//마지막 row의 그룹은 비교할 데이터가 없으므로 체크값이false이면 blocking건다.(20080825)
  1869. //2008.08.07 dhkim 추가
  1870. //정신과병동 선택했을때 항목중 DT, ECT는 필수아님
  1871. if((clsflag == '5' && hngnm == 'DT')||(clsflag == '5' && hngnm == 'ECT')){
  1872. //skip
  1873. }else{
  1874. sysf_messageBox(hngnm + '(이)가 선택되지 않았습니다.' + hngnm + '(를)을', 'C001');//선택하십시오.
  1875. grd_recdetail.vscrollbar.pos = i;
  1876. return false;
  1877. }
  1878. }
  1879. }
  1880. if(supcd == '00000000'){
  1881. hngnm = ds_main_recdetailgruplist.getColumn(i, "hngnm");
  1882. for( var j = i + 1; j < ds_main_recdetailgruplist.rowcount; j++ ){
  1883. _supcd = ds_main_recdetailgruplist.getColumn(j, "supcd");
  1884. //alert('상위 : ' + hngnm + ', 하위 : ' + model.getValue(xRecDetailPath + '[' + j + ']/hngnm') );
  1885. if(supcd == _supcd){
  1886. if(isChecked == false){//다른그룹으로 변경됐을때 isChecked가 false이면 리턴하면서 해당 row를 젤 위로 가도록 보여줌-_-;
  1887. //2008.08.07 dhkim 추가
  1888. //정신과병동 선택했을때 항목중 DT, ECT는 필수아님
  1889. if((clsflag == '5' && hngnm == 'DT')||(clsflag == '5' && hngnm == 'ECT')){
  1890. //skip
  1891. }else{
  1892. sysf_messageBox(hngnm + '(이)가 선택되지 않았습니다.' + hngnm + '(를)을', 'C001');//선택하십시오.
  1893. grd_recdetail.vscrollbar.pos = i;
  1894. return false;
  1895. }
  1896. }
  1897. isChecked = false;
  1898. j = ds_main_recdetailgruplist.rowcount-1;
  1899. //break;
  1900. }else{
  1901. _flag = ds_main_recdetailgruplist.getColumn(j, "flag");
  1902. if(_flag == 'Y'){
  1903. isChecked = true;
  1904. }
  1905. }
  1906. }
  1907. }
  1908. }
  1909. return true;
  1910. }
  1911. /**
  1912. * @group :
  1913. * @ver : 2008.08.20
  1914. * @by : dhkim
  1915. * @-------------------------------------------------------------------------------------------------------
  1916. * @type : function
  1917. * @access : public
  1918. * @param :
  1919. * @return :
  1920. * @desc : 상세내역 체크한 점수를 항목별로 합산하여 상세점수 노드에 set한다.
  1921. * 0. 항목의 index값을 임시저장
  1922. * 1. 항목에 해당하는 명칭 get (pnttitlgruplist)
  1923. * 2. 1의 명칭에 해당하는 clstlcd get (recdetailgruplist)
  1924. * 3. supcd가 2인 그룹의 첫번째 index를 찾는다.
  1925. * 4. 3부터 detail값을 반복하여 supcd가 2인 그룹의 점수를 합산 (recdetailgruplist)
  1926. * 5. 상세점수에 0번째 timsval+0 노드에 3값을 세팅 (recpntlist)
  1927. */
  1928. function fSetRecDetailPnt(){
  1929. var recpntTitlCnt = ds_main_pnttitlgruplist.rowcount;
  1930. var titlhngnm;
  1931. var clstlcd;
  1932. var detlFidx;
  1933. var basepnt = 0;
  1934. var totpnt = 0;
  1935. var flag;
  1936. if ( ds_cond.getColumn(0, "agechk") == "Y" ){
  1937. return;
  1938. }
  1939. for( var i = 0; i < recpntTitlCnt; i++ ){
  1940. //1. 항목에 해당하는 명칭 get (pnttitlgruplist)
  1941. titlhngnm = ds_main_pnttitlgruplist.getColumn(i, "hngnm");
  1942. //2. 1의 명칭에 해당하는 clstlcd get (recdetailgruplist)
  1943. clstlcd = ds_main_recdetailgruplist.lookup("hngnm", titlhngnm, "clstlcd");
  1944. //3. supcd가 2인 그룹의 첫번째 index를 찾는다.
  1945. detlFidx = ds_main_recdetailgruplist.findRow("supcd", clstlcd);
  1946. //4. 3부터 detail값을 반복하여 supcd가 2인 그룹의 점수를 합산 (recdetailgruplist)
  1947. for( var j = detlFidx; j < ds_main_recdetailgruplist.rowcount; j++ ){
  1948. var supcd = ds_main_recdetailgruplist.getColumn(j, "supcd");
  1949. flag = ds_main_recdetailgruplist.getColumn(j, "flag");
  1950. if(supcd == clstlcd){
  1951. if(flag == 'Y'){//체크된 데이터만 합산한다.
  1952. if( ds_main_recdetailgruplist.getColumn(j, "timsinptyn") == "Y" ){//횟수입력여부
  1953. basepnt = Number(ds_main_recdetailgruplist.getColumn(j, "basepnt")) * Number(ds_main_recdetailgruplist.getColumn(j, "timsval"));
  1954. } else {
  1955. basepnt = Number(ds_main_recdetailgruplist.getColumn(j, "basepnt"));
  1956. }
  1957. ds_main_recdetailgruplist.addColumn("basepnt_multi", "string", 256);
  1958. ds_main_recdetailgruplist.setColumn(j, "basepnt_multi",basepnt);
  1959. totpnt += Number(basepnt);
  1960. }
  1961. }else{
  1962. j = ds_main_recdetailgruplist.rowcount;//for루프를 멈춘다.
  1963. }
  1964. }
  1965. //5. 상세점수에 i번째 timsval+i 노드에 3값을 세팅 (recpntlist)
  1966. if(i < 9){
  1967. colno = '0' + (i + 1);
  1968. }else{
  1969. colno = (i + 1);
  1970. }
  1971. if( utlf_isNull(ds_main_recpntlist.getColumnInfo("timsval" + colno)) ){
  1972. ds_main_recpntlist.addColumn("timsval" + colno, "string");
  1973. }
  1974. ds_main_recpntlist.setColumn(0, "timsval" + colno, totpnt);
  1975. totpnt = 0; //초기화
  1976. basepnt=0;
  1977. }
  1978. }
  1979. /**
  1980. * @group :
  1981. * @ver : 2008.06.25
  1982. * @by : dhkim
  1983. * @-------------------------------------------------------------------------------------------------------
  1984. * @type : function
  1985. * @access : public
  1986. * @param :
  1987. * @return : totpnt 총점
  1988. * @desc : 상세내역 체크된 내역의 점수를 합산한다.
  1989. * @-------------------------------------------------------------------------------------------------------
  1990. */
  1991. function fSumPnt(){
  1992. var flag, timsval;
  1993. var totPnt = 0;
  1994. if( ds_cond.getColumn(0, "agechk") == "Y" ){
  1995. return "";
  1996. }
  1997. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++){
  1998. flag = ds_main_recdetailgruplist.getColumn(i, "flag");
  1999. if(flag == 'Y'){
  2000. if( ds_main_recdetailgruplist.getColumn(i, "timsinptyn") == "Y" ){//횟수입력여부
  2001. timsval = Number(ds_main_recdetailgruplist.getColumn(i, "basepnt")) * Number(ds_main_recdetailgruplist.getColumn(i, "timsval"));
  2002. } else {
  2003. timsval = Number(ds_main_recdetailgruplist.getColumn(i, "basepnt"));
  2004. }
  2005. totPnt += Number(timsval);
  2006. }
  2007. }
  2008. return totPnt;
  2009. }
  2010. /**
  2011. * @group :
  2012. * @ver : 2008.06.25
  2013. * @by : dhkim
  2014. * @-------------------------------------------------------------------------------------------------------
  2015. * @type : function
  2016. * @access : public
  2017. * @param :
  2018. * @return :
  2019. * @desc : [인증저장]
  2020. * 중증도 마스터와 상세내역을 인증저장한다.
  2021. * - 저장전 중증도 상세내역 점수의 유효성을 체크한다.
  2022. * - 상세내역의 체크된 내역 점수를 합산하여 기록마스터의 totpnt에 set한다.
  2023. * - 이미 기록이 입력되어 있는 경우에 -> grd_recmaster에 상태값이 'u'임.
  2024. * 기록된 날짜가 조회조건의 수행일자와 같으면 db에 update처리하고
  2025. * 기록된 날짜와 조회조건의 수행일자가 다르면 신규로 insert처리한다.(메세지로 알려줄것)
  2026. * @-------------------------------------------------------------------------------------------------------
  2027. */
  2028. function fSignSave(){
  2029. //과거기록에 대한 임시 추가 기능
  2030. if(ds_cond.getColumn(0, "clsflag") == "8" || ds_cond.getColumn(0, "clsflag") =="9"){
  2031. if( (ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"recflag") =="2" && ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"clsflag") =="1") ||
  2032. (ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"recflag") =="2" && ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"clsflag") =="2")
  2033. ){
  2034. if(ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition, "execdd") < "20190402" ){ //
  2035. trace("과거 기록 최신로직 적용");
  2036. fPreChkTrue(); //과거기록에 대한 임시 추가 기능
  2037. //fChkTF("N", "N");
  2038. }
  2039. }
  2040. }
  2041. //과거기록에 대한 임시 추가 기능
  2042. //debugger;
  2043. sAllSignSave = false;
  2044. var dschdd = ds_main_paminfo.getColumn(0, "dschdd"); //퇴원일자
  2045. var indd = ds_main_paminfo.getColumn(0, "indd"); //입원일자
  2046. var execdd = ds_cond.getColumn(0, "execdd"); //수행일자
  2047. if( !utlf_isValidDateTime((ds_cond.getColumn(0, "execdd")), "YYYYMMDD")){
  2048. sysf_messageBox("입력한 수행일자는 유효하지 않습니다.","E");
  2049. return;
  2050. }
  2051. if( !utlf_isValidDateTime((ds_cond.getColumn(0, "exectm")), "hhmm")){
  2052. sysf_messageBox("입력한 수행시간은 유효하지 않습니다.","E");
  2053. return;
  2054. }
  2055. if( indd == null ) {
  2056. if((execdd < indd) || (execdd > dschdd)) { //입원,퇴원일자 사이의 수행일자만 입력하도록 블러킹
  2057. sysf_messageBox("수행하려는 일자는 입원일자(" +indd.substring(0,4) + "-" + indd.substring(4, 6) + "-" + indd.substring(6) + ")이전 또는 퇴원일자("+dschdd.substring(0,4) + "-" + dschdd.substring(4, 6) + "-" + dschdd.substring(6)+")이후의 일자가 될 수","I004");
  2058. return;
  2059. }
  2060. }
  2061. var recmasterrow = 0;
  2062. for( var idx = 0; idx < ds_main_recgruplist.rowcount; idx++ ){
  2063. if( ds_main_recdetailgruplist.getColumn(0, "pid") == ds_main_recgruplist.getColumn(idx, "pid")
  2064. && ds_main_recdetailgruplist.getColumn(0, "execdd") == ds_main_recgruplist.getColumn(idx, "execdd")
  2065. && ds_main_recdetailgruplist.getColumn(0, "recseq") == ds_main_recgruplist.getColumn(idx, "recseq") ){
  2066. recmasterrow = idx;
  2067. ds_main_recgruplist.rowposition = recmasterrow;
  2068. break;
  2069. }
  2070. }
  2071. if( recmasterrow < 0 ){
  2072. sysf_messageBox( capt_master.text + " 선택" ,"I008");
  2073. return;
  2074. }
  2075. var currRow = ds_main_recgruplist.rowposition;
  2076. var recMasterStat = ds_main_recgruplist.getColumn(currRow, "stat"); //기록마스터의 상태값
  2077. /*
  2078. //1. 신규등록
  2079. // 1) 저장된 기록이 하나도 없을때 최초등록의 경우 insert
  2080. // 2) input에 수행일자가 해당 기록에 없는 경우... 이미 기록된 내역을 해당 수행일자로 insert
  2081. // 2008.08.27 수정요청사항
  2082. // 3) input에 수행일자가 해당 기록에 있는 경우... 수정된 내역을 수행일시는 현재일자+현재시간 으로 insert
  2083. //recMasterStat이 '-'이라도 저장할 수행일자가 기록내역에 없으면 신규 insert
  2084. //--------------------------------------------------------------------------------------------
  2085. //2008.08.27 수정요청사항 (기록수정은 진행하지 않는다.)
  2086. //2. 수정등록 (사용안함)
  2087. // 1) 해당기록의 항목을 선택하여 수정하는 경우 수정한 항목을 update
  2088. // 2) input에 수행일자가 해당 기록에 있는 경우... 수정된 내역을 해당수행일자로 update
  2089. // (저장할 수행일자가 기록내역에 있으면 이미 저장된 기록내역이 있습니다 메세지 뿌려줄것)
  2090. */
  2091. //2008.08.27 사용안함-->input수행일자에 해당되는 기록이 이미 입력되어 있는 경우에 db에 update처리
  2092. //2008.08.27 변경됨-->input수행일자에 해당되는 기록이 이미 입력되어 있는 경우에 db에 insert처리, 단, 수행일시는 무조건 현재일시로 저장
  2093. //input수행일자에 해당되는 기록이 저장되어있지 않은경우 db에 insert처리
  2094. var execdd = ds_cond.getColumn(0, 'execdd');//조회조건의 수행일자
  2095. var exectm = ds_cond.getColumn(0, 'exectm');//조회조건의 수행시간
  2096. //수행일시 필수입력 체크_20090122_SMY추가
  2097. if( utlf_isNull(execdd) ){
  2098. sysf_messageBox("수행일자를 입력하세요","I");
  2099. ipt_indate.setFocus();
  2100. return;
  2101. }
  2102. if( utlf_isNull(exectm) ){
  2103. sysf_messageBox("수행시간을 입력하세요","I");
  2104. ipt_time.setFocus();
  2105. return;
  2106. }
  2107. var recdd = ds_main_recgruplist.getColumn(currRow, "execdd");//기록된 일자
  2108. var isRecordedArr = fIsRecorded(execdd);//input수행일자에 해당되는 기록이 있는지 여부
  2109. //20080820 array로 변경
  2110. //arr[0]은 기록여부 true/false
  2111. //arr[1]은 기록여부 true일때의 signno
  2112. var signno = '';//인증번호
  2113. var siflag = 'N';//default 는 N. 기존의 데이터를 그대로 신규로 insert하는경우flag값
  2114. // Y인경우 : 1.다른일자의 기록내역은 있으나 input의 수행일자에 해당되는 기록이 없을때..
  2115. // 2. input의 수행일자에 해당되는 기록이 있을때..
  2116. //저장전 유효성을 체크한다.
  2117. if(fIsValid()){
  2118. //상세내역의 체크점수를 합산하여 마스터와 상세점수의 totpnt에 set한다.
  2119. var totPnt = fSumPnt();
  2120. ds_main_recgruplist.setColumn(currRow, "totpnt", totPnt);//마스터의 총점
  2121. ds_main_recpntlist.setColumn(0, "totpnt", totPnt);//상세점수의 총점
  2122. //총점에 해당하는 분류군을 조회한후 마스터와 상세점수의 분류군에 set한다.
  2123. var bspntnm = fLoadBsPnt(totPnt);
  2124. ds_main_recgruplist.setColumn(currRow, "resultnm", bspntnm);//마스터의 분류군
  2125. ds_main_recpntlist.setColumn(0, "resultcd", bspntnm);//상세점수의 총점
  2126. var maddchk01 = ds_cond.getColumn(0, "maddchk01");
  2127. var maddchk02 = ds_cond.getColumn(0, "maddchk02");
  2128. var maddchk03 = ds_cond.getColumn(0, "maddchk03");
  2129. var maddchk04 = ds_cond.getColumn(0, "maddchk04");
  2130. var haddchk = ds_cond.getColumn(0, "haddchk");
  2131. var maddchk99 = ds_cond.getColumn(0, "maddchk99");
  2132. var haddchk01 = ds_cond.getColumn(0, "haddchk01");
  2133. var haddchk02 = ds_cond.getColumn(0, "haddchk02");
  2134. var haddchk03 = ds_cond.getColumn(0, "haddchk03");
  2135. var maddchk05 = ds_cond.getColumn(0, "maddchk05");
  2136. var maddchk06 = ds_cond.getColumn(0, "maddchk06");
  2137. ds_main_recgruplist.setColumn(currRow, "maddchk01", maddchk01);
  2138. ds_main_recgruplist.setColumn(currRow, "maddchk02", maddchk02);
  2139. ds_main_recgruplist.setColumn(currRow, "maddchk03", maddchk03);
  2140. ds_main_recgruplist.setColumn(currRow, "maddchk04", maddchk04);
  2141. ds_main_recgruplist.setColumn(currRow, "haddchk", haddchk);
  2142. ds_main_recgruplist.setColumn(currRow, "maddchk99", maddchk99);
  2143. ds_main_recgruplist.setColumn(currRow, "haddchk01", haddchk01);
  2144. ds_main_recgruplist.setColumn(currRow, "haddchk02", haddchk02);
  2145. ds_main_recgruplist.setColumn(currRow, "haddchk03", haddchk03);
  2146. ds_main_recgruplist.setColumn(currRow, "maddchk05", maddchk05);
  2147. ds_main_recgruplist.setColumn(currRow, "maddchk06", maddchk06);
  2148. //2019.03.15_낙상 고위험군 기준변경에 따른 수정(KDG)
  2149. /*
  2150. if( ds_cond.getColumn(0, "clsflag") == "9" ){
  2151. if( utlf_isNull(maddchk01) && utlf_isNull(maddchk02) && utlf_isNull(maddchk03) && utlf_isNull(maddchk04) && utlf_isNull(maddchk99) ){
  2152. sysf_messageBox("기타 항목은 반드시 하나 이상 체크 하셔야 합니다.","I");
  2153. return;
  2154. }
  2155. }
  2156. */
  2157. //상세내역 체크한 점수를 항목별로 합산하여 상세점수 노드에 set한다.
  2158. fSetRecDetailPnt();
  2159. var msgStr;
  2160. if(isRecordedArr[0]){
  2161. var execStr = execdd.substring(0, 4) + '-' + execdd.substring(4, 6) + '-' + execdd.substring(6, 8);
  2162. msgStr = '이미 저장된 기록 내역(' + execStr + ')이 있습니다. 다시'; //db insert (수행일시를 현재일시로)
  2163. //20080827 주석처리 signno = isRecordedArr[1];//해당기록의 signno를 할당해 db에 update한다.(사용안함)
  2164. signno = '';//신규이기때문에 signno를 새로딴다.
  2165. }else{//신규등록및 이미기록되었으나 기록일자와 수행일자가 같을때..
  2166. //msgStr = '중증도 및 위험사정의 기록내역을';
  2167. msgStr = ""; // 메시지는 '저장하시겠습니까?' 로 통일 (2011.04.18 Ahn)
  2168. }
  2169. //recMasterStat이 '-'경우 'u'로 넘김.
  2170. //중증도점수그리드
  2171. grdf_setStatus(grd_recpnt, "U", grdf_getSelectedRows(grd_recpnt));
  2172. //중증도 마스터그리드
  2173. //20080827 상태가 신규가 아니면 u 상태로 db에 복사해 insert로 변경됨...
  2174. var cRow = ds_main_recpntlist.rowposition;
  2175. if( ds_main_recpntlist.getRowType(cRow) != 2 ){//상태가 신규상태가 아니면 u로 변경
  2176. ds_main_recpntlist.setRowType(cRow, "U");
  2177. ds_main_recgruplist.setColumn(ds_main_recgruplist.rowposition, "stat", 'u');
  2178. siflag = 'Y';//기존데이터를 복사해 insert하는 경우 Y아니면 N
  2179. }
  2180. var msg = sysf_messageBox(msgStr, 'Q002');//저장하시겠습니까?
  2181. if(Number(msg) == 6){//예
  2182. ds_send.clear();
  2183. ds_send.addColumn("sch_execdd", "string", 256);
  2184. ds_send.addColumn("sch_exectm", "string", 256);
  2185. ds_send.addColumn("siflag", "string", 256);
  2186. ds_send.addColumn("ioflag", "string", 256);
  2187. var addRow = ds_send.addRow();
  2188. ds_send.setColumn(addRow, "sch_execdd", execdd);//조회조건에 있는 수행일자
  2189. ds_send.setColumn(addRow, "sch_exectm", exectm);//조회조건에 있는 수행시간
  2190. ds_send.setColumn(addRow, "siflag", siflag);//기존데이터를 복사해 insert하는 경우 Y아니면 N
  2191. ds_send.setColumn(addRow, "ioflag", ds_cond.getColumn(0, 'ioflag'));//외래입원구분
  2192. var patRow = ds_main_patinfo.rowposition;
  2193. var pid = ds_main_recgruplist.getColumn(0, "pid");
  2194. var orddd = ds_main_patinfo.getColumn(patRow, "indd");//입원일/진료일
  2195. var cretno = ds_main_patinfo.getColumn(patRow, "cretno");//생성번호
  2196. var orddeptcd = ds_main_patinfo.getColumn(patRow, "orddeptcd");//진료과
  2197. var orddrid = ds_main_patinfo.getColumn(patRow, "medispclid");//진료의
  2198. var ioflag = ds_main_patinfo.getColumn(patRow, "ioflag"); //외래/입원구분
  2199. /* [각 구분별 기록서식코드]
  2200. * 중증도_일반병동 : 0000002439
  2201. * 중증도_신생아 ICU : 0000002440
  2202. * 중증도_혈액투석 : 0000002441
  2203. * 중증도_중환자실 : 0000002442
  2204. * 중증도_정신과병동 : 0000002444
  2205. * 낙상사정_아동 : 0000002447
  2206. * 낙상사정_성인(Morse Scale) : 0000002449
  2207. * 욕창사정(Braden Scale) : 0000002450
  2208. */
  2209. var recflag = ds_cond.getColumn(0, 'recflag');
  2210. var clsflag = ds_cond.getColumn(0, 'clsflag');
  2211. var formcd;//기록서식코드
  2212. var formnm;//서식명
  2213. if(clsflag == '1'){
  2214. formcd = '0000002439'; //중증도_일반병동
  2215. formnm = '중증도사정(일반병동)';
  2216. recflag = '1';
  2217. clsflag = '1';
  2218. }else if(clsflag == '2'){
  2219. formcd = '0000002440'; //중증도_신생아 ICU
  2220. formnm = '중증도사정(신생아 ICU)';
  2221. recflag = '1';
  2222. clsflag = '2';
  2223. }else if(clsflag == '5'){
  2224. formcd = '0000002444'; //중증도_정신과병동
  2225. formnm = '중증도사정(정신과병동)';
  2226. recflag = '1';
  2227. clsflag = '5';
  2228. }else if(clsflag == '4' || clsflag == '6' || clsflag == '7'){
  2229. formcd = '0000002442'; //중증도_중환자실
  2230. formnm = '중증도사정(중환자실)';
  2231. recflag = '1';
  2232. clsflag = '4';
  2233. }else if(clsflag == '3'){
  2234. formcd = '0000002441'; //중증도_혈액투석
  2235. formnm = '중증도사정(혈액투석)';
  2236. recflag = '1';
  2237. clsflag = '3';
  2238. }else if(clsflag == '8'){
  2239. formcd = '0000002447'; //낙상사정_아동
  2240. formnm = '낙상위험사정(Humpty Dumpty Scale)';
  2241. recflag = '2';
  2242. clsflag = '1';
  2243. }else if(clsflag == '9'){
  2244. formcd = '0000002449'; //낙상사정_성인 (Morse Scale)
  2245. formnm = '낙상위험사정(Morse Scale)'; // 성인 -> Morse Scale 변경 (2011.03.17 ahn)
  2246. recflag = '2';
  2247. clsflag = '2';
  2248. }else if(clsflag == '10'){
  2249. formcd = '0000002450'; //욕창
  2250. formnm = '욕창위험사정(Braden Scale)'; // 욕창 -> Braden Scale 변경 (2011.04.13 ahn)
  2251. recflag = '3';
  2252. clsflag = '1';
  2253. }
  2254. //상세점수내역 노드를 만들어서 보낸다.
  2255. ds_temp_signdata_detailinfo.clear();
  2256. ds_temp_signdata_recpntlist.clear();
  2257. //중증기록구분을 한글명으로 노드를 만들어서 내보낸다.
  2258. ds_temp_signdata_detailinfo.addColumn("formnm", "string", 256);
  2259. ds_temp_signdata_detailinfo.addColumn("recflag", "string", 256);
  2260. ds_temp_signdata_detailinfo.addColumn("clsflag", "string", 256);
  2261. var detail_addRow = ds_temp_signdata_detailinfo.addRow();
  2262. ds_temp_signdata_detailinfo.setColumn(detail_addRow, 'formnm', formnm);
  2263. ds_temp_signdata_detailinfo.setColumn(detail_addRow, 'recflag', recflag);
  2264. ds_temp_signdata_detailinfo.setColumn(detail_addRow, 'clsflag', clsflag);
  2265. ds_temp_signdata_recpntlist.addColumn("timsval", "string", 256);
  2266. ds_temp_signdata_recpntlist.addColumn("hngnm", "string", 256);
  2267. var recpntCnt = ds_main_pnttitlgruplist.rowcount;
  2268. var timsval, hngnm;
  2269. var colno = "";
  2270. for( var i = 0; i < recpntCnt; i++ ){
  2271. if(i < 10){
  2272. colno = '0' + (i + 1);
  2273. }else{
  2274. colno = (i + 1);
  2275. }
  2276. if( utlf_isNull(ds_main_recpntlist.getColumnInfo('timsval' + colno)) ){
  2277. timsval = "";
  2278. }else{
  2279. timsval = ds_main_recpntlist.getColumn(0, 'timsval' + colno);
  2280. }
  2281. hngnm = ds_main_pnttitlgruplist.getColumn(i, 'hngnm');
  2282. var recpnt_addRow = ds_temp_signdata_recpntlist.addRow();
  2283. ds_temp_signdata_recpntlist.setColumn(recpnt_addRow, 'timsval', timsval);
  2284. ds_temp_signdata_recpntlist.setColumn(recpnt_addRow, 'hngnm', hngnm);
  2285. }
  2286. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
  2287. // 인증 로직 호출
  2288. if(Sign.signprocess() == true){ // ▶ 전자인증 관련 환자 인적 정보를 보내줌.
  2289. //alert(Sign.signedInfos[1]);
  2290. ds_send_signinfo.setColumn(0, "pid" , pid); // 01 등록번호
  2291. ds_send_signinfo.setColumn(0, "orddd" , orddd); // 02 입원일자(입원,응급)/진료일자(외래)
  2292. ds_send_signinfo.setColumn(0, "cretno" , cretno); // 03 생성번호
  2293. ds_send_signinfo.setColumn(0, "signno" , signno); // 04 서명번호(인증번호)
  2294. ds_send_signinfo.setColumn(0, "recdd" , utlf_getCurrentDate()); // 05 실제 기록이 이루어진 기록일자
  2295. ds_send_signinfo.setColumn(0, "rectm" , utlf_getCurrentTime()); // 06 실제 기록이 이루어진 기록시간
  2296. ds_send_signinfo.setColumn(0, "recsaveflag" , "Y"); // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  2297. ds_send_signinfo.setColumn(0, "signflag" , "02"); // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  2298. ds_send_signinfo.setColumn(0, "signgenrflag", ioflag); // 09 외래/입원구분(코드정의서 M0010 참조)
  2299. ds_send_signinfo.setColumn(0, "formcd" , formcd); // 10 각 기록지별 서식코드 (emr.mrfmform)
  2300. ds_send_signinfo.setColumn(0, "orddeptcd" , orddeptcd); // 11 진료부서코드
  2301. ds_send_signinfo.setColumn(0, "orddrid" , orddrid); // 12 진료의사ID
  2302. ds_send_signinfo.setColumn(0, "signbfcnts" , Sign.signedInfos[1]); // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  2303. ds_send_signinfo.setColumn(0, "signaftcnts" , Sign.signedInfos[2]); // 14 ▶ 공인인증 처리후 데이터
  2304. ds_send_signinfo.setColumn(0, "screenid" , frmf_getScreenID()); // 15 ▶ 화면아이디
  2305. ds_send_signinfo.setColumn(0, "certflag" , "C"); // 16 ▶ 인증여부( T : 임시저장, C : 인증저장)
  2306. } else {
  2307. return ;
  2308. }
  2309. // ds_send_recmaster.clear();
  2310. // var oDsUpdate = grdf_getGridUpdateData(grd_recmaster, "i");
  2311. // grdf_setStatusColumn(oDsUpdate, "m");
  2312. ds_send_recmaster.copyData(ds_main_recgruplist, true);
  2313. for( var idx = 0; idx < ds_main_recdetailgruplist.rowcount; idx++ ){
  2314. if( Number(ds_main_recdetailgruplist.getColumn(idx, "basepnt_multi")) > 0 ){
  2315. ds_main_recdetailgruplist.setColumn(idx, "basepnt", ds_main_recdetailgruplist.getColumn(idx, "basepnt_multi"));
  2316. }
  2317. if( ds_main_recdetailgruplist.getColumn(idx, "flag") == "1" ){
  2318. ds_main_recdetailgruplist.setColumn(idx, "flag", "Y");
  2319. }else if( ds_main_recdetailgruplist.getColumn(idx, "flag") == "0" ){
  2320. ds_main_recdetailgruplist.setColumn(idx, "flag", "N");
  2321. }
  2322. }
  2323. ds_send_recdetail.clear();
  2324. //grd_recdetail.updateToDataset();
  2325. var detail_oDsUpdate = grdf_getGridUpdateData(grd_recdetail, "i");
  2326. grdf_setStatusColumn(detail_oDsUpdate, "m");
  2327. ds_send_recdetail.copyData(detail_oDsUpdate, true);
  2328. //var test_2 = grd_recdetail.getUpdateDataAll('i'); // 150114 - AYS
  2329. fLoadFallPnt(recflag, clsflag, bspntnm);
  2330. var oParam = {};
  2331. oParam.id = "TXMNW04001";
  2332. oParam.service = "carerecapp.AsesRec";
  2333. oParam.method = "reqExeSerDiagGrupInfo";
  2334. oParam.inds = "cond=ds_send recMaster=ds_send_recmaster recDetail=ds_send_recdetail signinfo=ds_send_signinfo";
  2335. oParam.outds = "ds_hidden_hiddeninfo=retdata";
  2336. oParam.async = false;
  2337. oParam.callback = "cf_TXMNW04001";
  2338. tranf_submit(oParam);
  2339. if( arErrorCode.pop("TXMNW04001") < 0 ){
  2340. sysf_messageBox('저장을', 'E009');
  2341. return;
  2342. }else{
  2343. ds_cond.setColumn(0, "copyexecdd", "");
  2344. var condparam = '';
  2345. var i = ds_main_patinfo.rowposition;
  2346. if( ds_cond.getColumn(0, "nextyn")=='Y' ){
  2347. if( ds_main_patinfo.rowcount-1 > i){
  2348. i = i+1 ;
  2349. }else if( ds_main_patinfo.rowcount-1 == i){
  2350. sysf_messageBox('다음 환자가 없습니다.', 'E');
  2351. }
  2352. }
  2353. if( ds_main_paminfo.getColumn(0, "dschdd") == "99991231"){ //퇴원환자가 아닌경우
  2354. if( ds_main_patinfo.getColumn(i, 'ioflag') =="O" ) {
  2355. //외래환자 상단정보 등록
  2356. condparam = "O"+"▦" + ds_main_patinfo.getColumn(i, "pid")
  2357. + "▦" + ds_main_patinfo.getColumn(i, "indd")
  2358. + "▦" + ds_main_patinfo.getColumn(i, "cretno")
  2359. + "▦" + sysf_getUserInfo("dutplceinstcd")
  2360. + "▦" + utlf_getCurrentDate();
  2361. }
  2362. // 응급실 추가 2011.03.15 (Ahn)
  2363. else if( ds_main_patinfo.getColumn(i, "ioflag") =="E" ) {
  2364. //응급환자 상단정보 등록
  2365. condparam = "E"+"▦" + ds_main_patinfo.getColumn(i, "pid")
  2366. + "▦" + ds_main_patinfo.getColumn(i, "indd")
  2367. + "▦" + ds_main_patinfo.getColumn(i, "cretno")
  2368. + "▦" + sysf_getUserInfo("dutplceinstcd")
  2369. + "▦" + utlf_getCurrentDate();
  2370. }else{
  2371. //재원환자 상단정보 등록
  2372. condparam = "I"+"▦" + ds_main_patinfo.getColumn(i, "pid")
  2373. + "▦" + ds_main_patinfo.getColumn(i, "indd")
  2374. + "▦" + ds_main_patinfo.getColumn(i, "cretno")
  2375. + "▦" + sysf_getUserInfo("dutplceinstcd")
  2376. + "▦" + utlf_getCurrentDate();
  2377. }
  2378. }else { //퇴원환자인 경우
  2379. if( ds_main_patinfo.getColumn(i, "ioflag") =="O" ) {
  2380. //외래환자 상단정보 등록
  2381. condparam = "O"+"▦" + ds_main_patinfo.getColumn(i, "pid")
  2382. + "▦" + ds_main_patinfo.getColumn(i, "indd")
  2383. + "▦" + ds_main_patinfo.getColumn(i, "cretno")
  2384. + "▦" + sysf_getUserInfo("dutplceinstcd")
  2385. + "▦" + ds_main_paminfo.getColumn(0, "dschdd");
  2386. }// 응급실 추가 2011.03.15 (Ahn)
  2387. else if( ds_main_patinfo.getColumn(i, "ioflag") =="E" ) {
  2388. //응급환자 상단정보 등록
  2389. condparam = "E"+"▦" + ds_main_patinfo.getColumn(i, "pid")
  2390. + "▦" + ds_main_patinfo.getColumn(i, "indd")
  2391. + "▦" + ds_main_patinfo.getColumn(i, "cretno")
  2392. + "▦" + sysf_getUserInfo("dutplceinstcd")
  2393. + "▦" + ds_main_paminfo.getColumn(0, "dschdd");
  2394. }else{
  2395. //재원환자 상단정보 등록
  2396. condparam = "I"+"▦" + ds_main_patinfo.getColumn(i, "pid")
  2397. + "▦" + ds_main_patinfo.getColumn(i, "indd")
  2398. + "▦" + ds_main_patinfo.getColumn(i, "cretno")
  2399. + "▦" + sysf_getUserInfo("dutplceinstcd")
  2400. + "▦" + ds_main_paminfo.getColumn(0, "dschdd");
  2401. }
  2402. }
  2403. // frmf_setParameter("condparam", condparam);
  2404. // frmf_modal("SPMMO08900", "SPMMO08900", null, null, null, null, null, null, null, null, null, null, "M");
  2405. appf_initPatientInfo(condparam); //상단정보 셋팅
  2406. //조회조건 clear
  2407. ds_cond.setColumn(0, 'pid', '');
  2408. //환자정보 표시 clear (2011.03.29 Ahn)
  2409. ds_cond.setColumn(0, 'patnm', '');
  2410. ds_cond.setColumn(0, 'sexage', '');
  2411. ds_cond.setColumn(0, 'age', '');
  2412. // 해당 환자 pid 임시 저장
  2413. var patPid = ds_main_patinfo.getColumn(i, "pid");
  2414. var patIdx = "";
  2415. //환자정보 조회
  2416. fSearchPatList(); // 환자정보 재조회 (2011.03.30 Ahn)
  2417. // 해당 환자정보 재 표시
  2418. ds_cond.setColumn(0, "pid", ds_main_patinfo.lookup("pid", patPid , "pid"));
  2419. ds_cond.setColumn(0, "patnm", ds_main_patinfo.lookup("pid", patPid, "hngnm"));
  2420. ds_cond.setColumn(0, "sexage", ds_main_patinfo.lookup("pid", patPid, "sexage"));
  2421. ds_cond.setColumn(0, "age", ds_main_patinfo.lookup("pid", patPid, "age"));
  2422. // 해당 환자 인덱스 선택 재 지정
  2423. for( i = 0; i < ds_main_patinfo.rowcount; i++ ){
  2424. if(patPid == ds_main_patinfo.getColumn(i, "pid")){
  2425. grd_patinfo.setFocus();
  2426. patIdx = i;
  2427. break;
  2428. }
  2429. }
  2430. ds_main_patinfo.selectRow(patIdx);
  2431. ds_main_patinfo.rowposition = patIdx;
  2432. //중증도/낙상/욕창 내역 조회(grd_recmaster)
  2433. fSearchRecMaster(patIdx, "save");
  2434. //환자 넘기기시 성인 소아 처리 (테스트 더 필요)
  2435. /*
  2436. if( ds_cond.getColumn(0, "nextyn")=='Y' ){
  2437. if(ds_cond.getColumn(0, "clsflag") == "8" || ds_cond.getColumn(0, "clsflag") =="9"){
  2438. frmf_inputEnterKey("rdo_clsflagb", "onitemchanged", new ItemChangeEventInfo);
  2439. }
  2440. }
  2441. */
  2442. }
  2443. }else if(Number(msg) == 7){//아니오
  2444. return;
  2445. }
  2446. }
  2447. }
  2448. function cf_TXMNW04001(sSvcId, nErrorCode, sErrorMsg) {
  2449. arErrorCode.push(sSvcId, nErrorCode);
  2450. }
  2451. /******************************************************************
  2452. * Argument :
  2453. * Description : 중증도 일괄저장
  2454. ******************************************************************/
  2455. function fAllSignSave(){
  2456. var chk = "1";
  2457. var totcnt = 0;
  2458. var succnt = 0;
  2459. var failcnt = 0;
  2460. grp_allsign.cap_succnt.value = 0;
  2461. grp_allsign.cap_failcnt.value = 0;
  2462. grp_allsign.cap_totcnt.value = 0;
  2463. ds_temp.clear();
  2464. ds_temp.copyData(ds_main_patinfo);
  2465. ds_temp.filter("chk == '"+ chk +"'");
  2466. var cnt = ds_temp.rowcount;
  2467. if(cnt < 1){
  2468. sysf_messageBox('일괄저장 할 환자를', 'C002');
  2469. return;
  2470. }
  2471. var msg = sysf_messageBox(cnt+'명의 중증도 항목을 일괄 인증저장 하시겠습니까?', 'Q');
  2472. if(Number(msg) != 6){
  2473. return;
  2474. }
  2475. sAllSignSave = true;
  2476. var chkN = "N";
  2477. var totcnt = ds_main_patinfo.rowcount;
  2478. for( patRow = 0; patRow < totcnt; patRow++) {
  2479. chk = ds_main_patinfo.getColumn(patRow, "chk");
  2480. if(chk != "1"){
  2481. continue;
  2482. }
  2483. grp_allsign.cap_totcnt.text = cnt;
  2484. var dschdd = ds_main_patinfo.getColumn(patRow, "dschdd"); //퇴원일자
  2485. var indd = ds_main_patinfo.getColumn(patRow, "indd"); //입원일자
  2486. var hngnm = ds_main_patinfo.getColumn(patRow, "hngnm"); //환자이름
  2487. var execdd = ds_cond.getColumn(0, "execdd"); //수행일자
  2488. ds_cond.setColumn(0, "pid", ds_main_patinfo.getColumn(patRow, "pid"));
  2489. ds_cond.setColumn(0, "patnm", ds_main_patinfo.getColumn(patRow, "hngnm"));
  2490. ds_cond.setColumn(0, "sexage", ds_main_patinfo.getColumn(patRow, "sexage"));
  2491. ds_cond.setColumn(0, "age", ds_main_patinfo.getColumn(patRow, "age"));
  2492. if( indd != "" || utlf_isNull(indd) ) {
  2493. if((execdd < indd) || (execdd > dschdd)) { //입원,퇴원일자 사이의 수행일자만 입력하도록 블러킹
  2494. sysf_messageBox("수행하려는 일자는 입원일자(" +indd.substring(0,4) + "-" + indd.substring(4, 6) + "-" + indd.substring(6) + ")이전 또는 퇴원일자("+dschdd.substring(0,4) + "-" + dschdd.substring(4, 6) + "-" + dschdd.substring(6)+")이후의 일자가 될 수","I004");
  2495. return;
  2496. }
  2497. }
  2498. fSearchRecMasterAll(patRow);
  2499. var recmasterrow = -1;
  2500. for( var idx = 0; idx < ds_main_recgruplist.rowcount; idx++ ){
  2501. if ( ds_main_recdetailgruplist.getColumn(0, "pid") == ds_main_recgruplist.getColumn(idx, "pid")
  2502. && ds_main_recdetailgruplist.getColumn(0, "execdd") == ds_main_recgruplist.getColumn(idx, "execdd")
  2503. && ds_main_recdetailgruplist.getColumn(0, "recseq") == ds_main_recgruplist.getColumn(idx, "recseq")
  2504. ){
  2505. recmasterrow = idx;
  2506. recRow = idx;
  2507. break;
  2508. }
  2509. }
  2510. if ( recmasterrow == -1 ){
  2511. //var hngnm = model.getValue("/root/main/patinfo/patlist[" + (patRow) + "]/hngnm");
  2512. sysf_messageBox(hngnm + ' 환자는 저장 이력이 없습니다. 개별 인증저장 하십시오.', "I008");
  2513. //messageBox( capt_master.attribute("text") + " 선택" ,"I008");
  2514. failcnt++;
  2515. grp_allsign.cap_failcnt.text = failcnt;
  2516. continue;
  2517. }
  2518. if( !addallchk() ){
  2519. //messageBox(hngnm + '낙상 구분을 재 선택하여 개별 인증저장 하십시오.', "I008");
  2520. failcnt++;
  2521. grp_allsign.cap_failcnt.text = failcnt;
  2522. continue;
  2523. }
  2524. var recMasterStat = ds_main_recgruplist.getColumn(recmasterrow, "stat");//기록마스터의 상태값
  2525. var execdd = ds_cond.getColumn(0, "execdd");//조회조건의 수행일자
  2526. var exectm = ds_cond.getColumn(0, "exectm");//조회조건의 수행시간
  2527. //수행일시 필수입력 체크_20090122_SMY추가
  2528. if( utlf_isNull(execdd) ){
  2529. sysf_messageBox("수행일자를 입력하세요","I");
  2530. ipt_indate.setFocus();
  2531. return;
  2532. }
  2533. if( utlf_isNull(exectm) ){
  2534. sysf_messageBox("수행시간을 입력하세요","I");
  2535. ipt_time.setFocus();
  2536. return;
  2537. }
  2538. var recdd = ds_main_recgruplist.getColumn(recmasterrow, "execdd");//기록된 일자
  2539. var isRecordedArr = fIsRecordedAll(execdd);//input수행일자에 해당되는 기록이 있는지 여부
  2540. //20080820 array로 변경
  2541. //arr[0]은 기록여부 true/false
  2542. //arr[1]은 기록여부 true일때의 signno
  2543. var signno = '';//인증번호
  2544. var siflag = 'N';//default 는 N. 기존의 데이터를 그대로 신규로 insert하는경우flag값
  2545. // Y인경우 : 1.다른일자의 기록내역은 있으나 input의 수행일자에 해당되는 기록이 없을때..
  2546. // 2. input의 수행일자에 해당되는 기록이 있을때..
  2547. var msgStr;
  2548. if( isRecordedArr[0] ){
  2549. var execStr = execdd.substring(0, 4) + '-' + execdd.substring(4, 6) + '-' + execdd.substring(6, 8);
  2550. var hngnm = ds_main_patinfo.getColumn(patRow, "hngnm");
  2551. msgStr = hngnm + '환자는 이미 저장된 기록 내역(' + execStr + ')이 있습니다. 다시'; //db insert (수행일시를 현재일시로)
  2552. var msg = sysf_messageBox(msgStr, 'Q002');//저장하시겠습니까?
  2553. if(Number(msg) != 6){//예
  2554. failcnt++;
  2555. grp_allsign.cap_failcnt.text = failcnt;
  2556. continue;
  2557. }
  2558. //20080827 주석처리 signno = isRecordedArr[1];//해당기록의 signno를 할당해 db에 update한다.(사용안함)
  2559. signno = '';//신규이기때문에 signno를 새로딴다.
  2560. }else{//신규등록및 이미기록되었으나 기록일자와 수행일자가 같을때..
  2561. //msgStr = '중증도 및 위험사정의 기록내역을';
  2562. msgStr = ""; // 메시지는 '저장하시겠습니까?' 로 통일 (2011.04.18 Ahn)
  2563. }
  2564. var mstat = ds_main_recgruplist.getColumn(recRow, "stat");
  2565. if(mstat != 'i' || mstat != 'I'){
  2566. ds_main_recgruplist.setColumn(recRow, "stat", 'u');
  2567. siflag = 'Y'; //기존데이터를 복사해 insert하는 경우 Y아니면 N
  2568. }
  2569. ds_send.clear();
  2570. ds_send.addColumn("sch_execdd", "string", 256);
  2571. ds_send.addColumn("sch_exectm", "string", 256);
  2572. ds_send.addColumn("siflag", "string", 256);
  2573. ds_send.addColumn("ioflag", "string", 256);
  2574. var iRow = ds_send.addRow();
  2575. ds_send.setColumn(iRow, 'sch_execdd', execdd);//조회조건에 있는 수행일자
  2576. ds_send.setColumn(iRow, 'sch_exectm', exectm);//조회조건에 있는 수행시간
  2577. ds_send.setColumn(iRow, 'siflag', siflag);//기존데이터를 복사해 insert하는 경우 Y아니면 N
  2578. ds_send.setColumn(iRow, 'ioflag', ds_cond.getColumn(0, "ioflag"));//외래입원구분
  2579. var pid = ds_main_recgruplist.getColumn(0, "pid");
  2580. var orddd = ds_main_patinfo.getColumn(patRow, "indd");//입원일/진료일
  2581. var cretno = ds_main_patinfo.getColumn(patRow, "cretno");//생성번호
  2582. var orddeptcd = ds_main_patinfo.getColumn(patRow, "orddeptcd");//진료과
  2583. var orddrid = ds_main_patinfo.getColumn(patRow, "medispclid");//진료의
  2584. var ioflag = ds_main_patinfo.getColumn(patRow, "ioflag"); //외래/입원구분
  2585. /* [각 구분별 기록서식코드]
  2586. * 중증도_일반병동 : 0000002439
  2587. * 중증도_신생아 ICU : 0000002440
  2588. * 중증도_혈액투석 : 0000002441
  2589. * 중증도_중환자실 : 0000002442
  2590. * 중증도_정신과병동 : 0000002444
  2591. * 낙상사정_아동 : 0000002447
  2592. * 낙상사정_성인(Morse Scale) : 0000002449
  2593. * 욕창사정(Braden Scale) : 0000002450
  2594. */
  2595. var recflag = ds_cond.getColumn(0, "recflag");
  2596. var clsflag = ds_cond.getColumn(0, "clsflag");
  2597. var formcd;//기록서식코드
  2598. var formnm;//서식명
  2599. if(clsflag == '1'){
  2600. formcd = '0000002439'; //중증도_일반병동
  2601. formnm = '중증도사정(일반병동)';
  2602. recflag = '1';
  2603. clsflag = '1';
  2604. }else if(clsflag == '2'){
  2605. formcd = '0000002440'; //중증도_신생아 ICU
  2606. formnm = '중증도사정(신생아 ICU)';
  2607. recflag = '1';
  2608. clsflag = '2';
  2609. }else if(clsflag == '5'){
  2610. formcd = '0000002444'; //중증도_정신과병동
  2611. formnm = '중증도사정(정신과병동)';
  2612. recflag = '1';
  2613. clsflag = '5';
  2614. }else if(clsflag == '4' || clsflag == '6' || clsflag == '7'){
  2615. formcd = '0000002442'; //중증도_중환자실
  2616. formnm = '중증도사정(중환자실)';
  2617. recflag = '1';
  2618. clsflag = '4';
  2619. }else if(clsflag == '3'){
  2620. formcd = '0000002441'; //중증도_혈액투석
  2621. formnm = '중증도사정(혈액투석)';
  2622. recflag = '1';
  2623. clsflag = '3';
  2624. }else if(clsflag == '8'){
  2625. formcd = '0000002447'; //낙상사정_아동
  2626. formnm = '낙상위험사정(Humpty Dumpty Scale)';
  2627. recflag = '2';
  2628. clsflag = '1';
  2629. }else if(clsflag == '9'){
  2630. formcd = '0000002449'; //낙상사정_성인 (Morse Scale)
  2631. formnm = '낙상위험사정(Morse Scale)'; // 성인 -> Morse Scale 변경 (2011.03.17 ahn)
  2632. recflag = '2';
  2633. clsflag = '2';
  2634. }else if(clsflag == '10'){
  2635. formcd = '0000002450'; //욕창
  2636. formnm = '욕창위험사정(Braden Scale)'; // 욕창 -> Braden Scale 변경 (2011.04.13 ahn)
  2637. recflag = '3';
  2638. clsflag = '1';
  2639. }
  2640. //상세점수내역 노드를 만들어서 보낸다.
  2641. ds_temp_signdata_recpntlist.clear();
  2642. ds_temp_signdata_recpntlist.addColumn("timsval", "string", 256);
  2643. ds_temp_signdata_recpntlist.addColumn("hngnm", "string", 256);
  2644. //중증기록구분을 한글명으로 노드를 만들어서 내보낸다.
  2645. ds_temp_signdata_detailinfo.clear();
  2646. ds_temp_signdata_detailinfo.addColumn("formnm", "string", 256);
  2647. ds_temp_signdata_detailinfo.addColumn("recflag", "string", 256);
  2648. ds_temp_signdata_detailinfo.addColumn("clsflag", "string", 256);
  2649. var addRow = ds_temp_signdata_detailinfo.addRow();
  2650. ds_temp_signdata_detailinfo.setColumn(addRow, "formnm", formnm);
  2651. ds_temp_signdata_detailinfo.setColumn(addRow, "recflag", recflag);
  2652. ds_temp_signdata_detailinfo.setColumn(addRow, "clsflag", clsflag);
  2653. var recpntCnt = ds_main_pnttitlgruplist.rowcount;
  2654. var timsval = "";
  2655. var hngnm;
  2656. var colno;
  2657. for(var i = 0; i < recpntCnt; i++){
  2658. if(i < 10){
  2659. colno = '0' + (i+1);
  2660. }else{
  2661. colno = (i+1);
  2662. }
  2663. if( !utlf_isNull(ds_main_recpntlist.getColumnInfo("timsval"+colno)) && !utlf_isNull(ds_main_recpntlist.getColumn(0, "timsval" + colno)) ){
  2664. timsval = ds_main_recpntlist.getColumn(0, "timsval" + colno);
  2665. }
  2666. hngnm = ds_main_pnttitlgruplist.getColumn(i, "hngnm");
  2667. var iRow = ds_temp_signdata_recpntlist.addRow()
  2668. ds_temp_signdata_recpntlist.setColumn(iRow, "timsval", timsval);
  2669. ds_temp_signdata_recpntlist.setColumn(iRow, "hngnm", hngnm);
  2670. }
  2671. if(ds_cond.getColumn(0, "clsflag") == "8" || ds_cond.getColumn(0, "clsflag") =="9"){
  2672. //과거기록에 대한 임시 추가 기능
  2673. if( (ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"recflag") =="2" && ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"clsflag") =="1") ||
  2674. (ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"recflag") =="2" && ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"clsflag") =="2")
  2675. ){
  2676. if(ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition, "execdd") < "20190402" ){ //
  2677. trace("과거 기록 최신로직 적용");
  2678. fPreChkTrue(); //과거기록에 대한 임시 추가 기능
  2679. //fChkTF("N", "N");
  2680. }
  2681. }
  2682. //과거기록에 대한 임시 추가 기능
  2683. }
  2684. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
  2685. // 인증 로직 호출
  2686. if(Sign.signprocess() == true){ // ▶ 전자인증 관련 환자 인적 정보를 보내줌.
  2687. var wSigninfo = ""
  2688. ds_send_signinfo.setColumn(0, "pid", pid); // 01 등록번호
  2689. ds_send_signinfo.setColumn(0, "orddd", orddd); // 02 입원일자(입원,응급)/진료일자(외래)
  2690. ds_send_signinfo.setColumn(0, "cretno", cretno); // 03 생성번호
  2691. ds_send_signinfo.setColumn(0, "signno", signno); // 04 서명번호(인증번호)
  2692. ds_send_signinfo.setColumn(0, "recdd", utlf_getCurrentDate()); // 05 실제 기록이 이루어진 기록일자
  2693. ds_send_signinfo.setColumn(0, "rectm", utlf_getCurrentTime()); // 06 실제 기록이 이루어진 기록시간
  2694. ds_send_signinfo.setColumn(0, "recsaveflag", "Y"); // 07 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  2695. ds_send_signinfo.setColumn(0, "signflag", "02"); // 08 서명자료구분(01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  2696. ds_send_signinfo.setColumn(0, "signgenrflag", ioflag); // 09 외래/입원구분(코드정의서 M0010 참조)
  2697. ds_send_signinfo.setColumn(0, "formcd", formcd); // 10 각 기록지별 서식코드 0000002473 N57 간호 수술간호기록
  2698. ds_send_signinfo.setColumn(0, "orddeptcd", orddeptcd); // 11 진료부서코드
  2699. ds_send_signinfo.setColumn(0, "orddrid", orddrid); // 12 진료의사ID (집도의)
  2700. ds_send_signinfo.setColumn(0, "signbfcnts", Sign.signedInfos[1]); // 13 ▶ 인증할 데이터 정보(미기록 노드 제거된 정보)
  2701. ds_send_signinfo.setColumn(0, "signaftcnts", Sign.signedInfos[2]); // 14 ▶ 공인인증 처리후 데이터
  2702. ds_send_signinfo.setColumn(0, "screenid", frmf_getScreenID()); // 15 ▶ 화면아이디
  2703. ds_send_signinfo.setColumn(0, "certflag", "C"); // 16 ▶ 인증여부( T : 임시저장, C : 인증저장)
  2704. } else {
  2705. return ;
  2706. }
  2707. ds_send_recmaster.clearData();
  2708. if( utlf_isNull(ds_send_recmaster.getColumnInfo("rownum")) ){
  2709. ds_send_recmaster.addColumn("rownum", "string");
  2710. }
  2711. if( utlf_isNull(ds_send_recdetail.getColumnInfo("rownum")) ){
  2712. ds_send_recdetail.addColumn("rownum", "string");
  2713. }
  2714. var sRecData = "";
  2715. for( i = 0; i < ds_main_recgruplist.rowcount; i++ ){
  2716. var nRow = ds_send_recmaster.addRow();
  2717. ds_send_recmaster.setColumn(nRow, "m", "i");
  2718. ds_send_recmaster.setColumn(nRow, "rownum", i+1);
  2719. ds_send_recmaster.setColumn(nRow, "execdd", ds_main_recgruplist.getColumn(i, "execdd"));
  2720. ds_send_recmaster.setColumn(nRow, "exectm", ds_main_recgruplist.getColumn(i, "exectm"));
  2721. ds_send_recmaster.setColumn(nRow, "recflagnm", ds_main_recgruplist.getColumn(i, "recflagnm"));
  2722. ds_send_recmaster.setColumn(nRow, "totpnt", ds_main_recgruplist.getColumn(i, "totpnt"));
  2723. ds_send_recmaster.setColumn(nRow, "resultnm", ds_main_recgruplist.getColumn(i, "resultnm"));
  2724. ds_send_recmaster.setColumn(nRow, "execnm", ds_main_recgruplist.getColumn(i, "execnm"));
  2725. ds_send_recmaster.setColumn(nRow, "pid", ds_main_recgruplist.getColumn(i, "pid"));
  2726. ds_send_recmaster.setColumn(nRow, "hngnm", ds_main_recgruplist.getColumn(i, "hngnm"));
  2727. ds_send_recmaster.setColumn(nRow, "recseq", ds_main_recgruplist.getColumn(i, "recseq"));
  2728. ds_send_recmaster.setColumn(nRow, "recflag", ds_main_recgruplist.getColumn(i, "recflag"));
  2729. ds_send_recmaster.setColumn(nRow, "clsflag", ds_main_recgruplist.getColumn(i, "clsflag"));
  2730. ds_send_recmaster.setColumn(nRow, "execkind", ds_main_recgruplist.getColumn(i, "execkind"));
  2731. ds_send_recmaster.setColumn(nRow, "execid", ds_main_recgruplist.getColumn(i, "execid"));
  2732. ds_send_recmaster.setColumn(nRow, "indd", ds_main_recgruplist.getColumn(i, "indd"));
  2733. ds_send_recmaster.setColumn(nRow, "histstat", ds_main_recgruplist.getColumn(i, "histstat"));
  2734. ds_send_recmaster.setColumn(nRow, "cretno", ds_main_recgruplist.getColumn(i, "cretno"));
  2735. ds_send_recmaster.setColumn(nRow, "seqno", ds_main_recgruplist.getColumn(i, "seqno"));
  2736. ds_send_recmaster.setColumn(nRow, "resultcd", ds_main_recgruplist.getColumn(i, "resultcd"));
  2737. ds_send_recmaster.setColumn(nRow, "signno", ds_main_recgruplist.getColumn(i, "signno"));
  2738. ds_send_recmaster.setColumn(nRow, "stat", ds_main_recgruplist.getColumn(i, "stat"));
  2739. ds_send_recmaster.setColumn(nRow, "agechk", ds_main_recgruplist.getColumn(i, "agechk"));
  2740. ds_send_recmaster.setColumn(nRow, "maddchk01", ds_main_recgruplist.getColumn(i, "maddchk01"));
  2741. ds_send_recmaster.setColumn(nRow, "maddchk02", ds_main_recgruplist.getColumn(i, "maddchk02"));
  2742. ds_send_recmaster.setColumn(nRow, "maddchk03", ds_main_recgruplist.getColumn(i, "maddchk03"));
  2743. ds_send_recmaster.setColumn(nRow, "maddchk04", ds_main_recgruplist.getColumn(i, "maddchk04"));
  2744. ds_send_recmaster.setColumn(nRow, "maddchk99", ds_main_recgruplist.getColumn(i, "maddchk99"));
  2745. ds_send_recmaster.setColumn(nRow, "haddchk", ds_main_recgruplist.getColumn(i, "haddchk"));
  2746. ds_send_recmaster.setColumn(nRow, "haddchk02", ds_main_recgruplist.getColumn(i, "haddchk02"));
  2747. ds_send_recmaster.setColumn(nRow, "haddchk03", ds_main_recgruplist.getColumn(i, "haddchk03"));
  2748. ds_send_recmaster.setColumn(nRow, "maddchk05", ds_main_recgruplist.getColumn(i, "maddchk05"));
  2749. ds_send_recmaster.setColumn(nRow, "maddchk06", ds_main_recgruplist.getColumn(i, "maddchk06"));
  2750. }
  2751. for( var idx = 0 ; idx < ds_main_recdetailgruplist.rowcount; idx++ ){
  2752. if( Number(ds_main_recdetailgruplist.getColumn(idx, "basepnt_multi")) > 0 ){
  2753. ds_main_recdetailgruplist.setColumn(idx, "basepnt", ds_main_recdetailgruplist.getColumn(idx, "basepnt_multi"));
  2754. }
  2755. }
  2756. ds_send_recdetail.clearData();
  2757. var sDetailData = "";
  2758. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  2759. var nRow = ds_send_recdetail.addRow();
  2760. ds_send_recdetail.setColumn(nRow, "m", "i");
  2761. ds_send_recdetail.setColumn(nRow, "rownum", i+1);
  2762. ds_send_recdetail.setColumn(nRow, "stat", ds_main_recdetailgruplist.getColumn(i, "stat"));
  2763. ds_send_recdetail.setColumn(nRow, "flag", ds_main_recdetailgruplist.getColumn(i, "flag"));
  2764. ds_send_recdetail.setColumn(nRow, "clstlcd", ds_main_recdetailgruplist.getColumn(i, "clstlcd"));
  2765. ds_send_recdetail.setColumn(nRow, "hngnm", ds_main_recdetailgruplist.getColumn(i, "hngnm"));
  2766. ds_send_recdetail.setColumn(nRow, "basepnt", ds_main_recdetailgruplist.getColumn(i, "basepnt"));
  2767. ds_send_recdetail.setColumn(nRow, "timsval", ds_main_recdetailgruplist.getColumn(i, "timsval"));
  2768. ds_send_recdetail.setColumn(nRow, "cnfmyn", ds_main_recdetailgruplist.getColumn(i, "cnfmyn"));
  2769. ds_send_recdetail.setColumn(nRow, "cmtinptyn", ds_main_recdetailgruplist.getColumn(i, "cmtinptyn"));
  2770. ds_send_recdetail.setColumn(nRow, "grupmulti", ds_main_recdetailgruplist.getColumn(i, "grupmulti"));
  2771. ds_send_recdetail.setColumn(nRow, "engnm", ds_main_recdetailgruplist.getColumn(i, "engnm"));
  2772. ds_send_recdetail.setColumn(nRow, "refseq", ds_main_recdetailgruplist.getColumn(i, "refseq"));
  2773. ds_send_recdetail.setColumn(nRow, "deptcd", ds_main_recdetailgruplist.getColumn(i, "deptcd"));
  2774. ds_send_recdetail.setColumn(nRow, "supcd", ds_main_recdetailgruplist.getColumn(i, "supcd"));
  2775. ds_send_recdetail.setColumn(nRow, "todd", ds_main_recdetailgruplist.getColumn(i, "todd"));
  2776. ds_send_recdetail.setColumn(nRow, "depth", ds_main_recdetailgruplist.getColumn(i, "depth"));
  2777. ds_send_recdetail.setColumn(nRow, "grupflag", ds_main_recdetailgruplist.getColumn(i, "grupflag"));
  2778. ds_send_recdetail.setColumn(nRow, "clsflag", ds_main_recdetailgruplist.getColumn(i, "clsflag"));
  2779. ds_send_recdetail.setColumn(nRow, "recflag", ds_main_recdetailgruplist.getColumn(i, "recflag"));
  2780. ds_send_recdetail.setColumn(nRow, "sortseq", ds_main_recdetailgruplist.getColumn(i, "sortseq"));
  2781. ds_send_recdetail.setColumn(nRow, "bktimsval", ds_main_recdetailgruplist.getColumn(i, "bktimsval"));
  2782. ds_send_recdetail.setColumn(nRow, "desccnts", ds_main_recdetailgruplist.getColumn(i, "desccnts"));
  2783. ds_send_recdetail.setColumn(nRow, "pid", ds_main_recdetailgruplist.getColumn(i, "pid"));
  2784. ds_send_recdetail.setColumn(nRow, "execdd", ds_main_recdetailgruplist.getColumn(i, "execdd"));
  2785. ds_send_recdetail.setColumn(nRow, "recseq", ds_main_recdetailgruplist.getColumn(i, "recseq"));
  2786. ds_send_recdetail.setColumn(nRow, "wardcd", ds_main_recdetailgruplist.getColumn(i, "wardcd"));
  2787. ds_send_recdetail.setColumn(nRow, "roomcd", ds_main_recdetailgruplist.getColumn(i, "roomcd"));
  2788. }
  2789. var oParam = {};
  2790. oParam.id = "TXMNW04001";
  2791. oParam.service = "carerecapp.AsesRec";
  2792. oParam.method = "reqExeSerDiagGrupInfo";
  2793. oParam.inds = "cond=ds_send recMaster=ds_send_recmaster recDetail=ds_send_recdetail signinfo=ds_send_signinfo";
  2794. oParam.outds = "ds_hidden_hiddeninfo=retdata";
  2795. oParam.async = false;
  2796. oParam.callback = "cf_TXMNW04001";
  2797. tranf_submit(oParam);
  2798. if( arErrorCode.pop("TXMNW04001") < 0 ){
  2799. return;
  2800. } else {
  2801. ds_cond.setColumn(0, "copyexecdd", "");
  2802. //조회조건 clear
  2803. ds_cond.setColumn(0, "pid", '');
  2804. //환자정보 표시 clear (2011.03.29 Ahn)
  2805. ds_cond.setColumn(0, "patnm", '');
  2806. ds_cond.setColumn(0, "sexage", '');
  2807. ds_cond.setColumn(0, "age", '');
  2808. ds_send.clear();
  2809. ds_main_recgruplist.clearData();
  2810. ds_main_recinfo.clearData();
  2811. ds_main_recpntlist.clearData();
  2812. ds_main_pnttitlgruplist.clearData();
  2813. ds_main_recdetailgruplist.clearData();
  2814. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  2815. succnt++;
  2816. grp_allsign.cap_succnt.text = succnt;
  2817. }
  2818. }
  2819. ds_cond.setColumn(0, "pid", '');
  2820. ds_cond.setColumn(0, "patnm", '');
  2821. ds_cond.setColumn(0, "sexage", '');
  2822. ds_cond.setColumn(0, "age", '');
  2823. ds_send.clear();
  2824. ds_main_recgruplist.clearData();
  2825. ds_main_recinfo.clearData();
  2826. ds_main_recpntlist.clearData();
  2827. ds_main_pnttitlgruplist.clearData();
  2828. ds_main_recdetailgruplist.clearData();
  2829. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  2830. fSearchPatList();
  2831. sysf_messageBox( succnt + " 명의 환자 일괄저장이", "I001");
  2832. }
  2833. function cf_TXMNW04001(sSvcId, nErrorCode, sErrorMsg) {
  2834. arErrorCode.push(sSvcId, nErrorCode);
  2835. }
  2836. /******************************************************************
  2837. * Argument : fMake_SignData()
  2838. * Description : 인증데이터 생성함수 만들기
  2839. ******************************************************************/
  2840. function fMake_SignData(){
  2841. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  2842. if(sAllSignSave == true){
  2843. ds_hidden_patinfo.clear();
  2844. dsf_copyColInfo(ds_hidden_patinfo, ds_main_patinfo);
  2845. var hAddRow = ds_hidden_patinfo.addRow();
  2846. ds_hidden_patinfo.copyRow(hAddRow, ds_main_patinfo, patRow);
  2847. ds_hidden_recgruplist.clear();
  2848. dsf_copyColInfo(ds_hidden_recgruplist, ds_main_recgruplist);
  2849. var addRow = ds_hidden_recgruplist.addRow();
  2850. ds_hidden_recgruplist.copyRow(addRow, ds_main_recgruplist, recRow);
  2851. if( ds_hidden_patinfo.rowcount == 0 || ds_hidden_recgruplist.rowcount == 0 ){
  2852. trace(ds_hidden_patinfo.saveXML());
  2853. trace(ds_hidden_recgruplist.saveXML());
  2854. }
  2855. var arrSignPath = new Array();
  2856. arrSignPath[0] = "/cond";
  2857. arrSignPath[1] = "/patlist";
  2858. arrSignPath[2] = "/recgruplist";
  2859. arrSignPath[3] = "/detailinfo";
  2860. var arrSignDs = new Array();
  2861. arrSignDs[0] = ds_cond.saveXML();
  2862. arrSignDs[1] = ds_hidden_patinfo.saveXML();
  2863. arrSignDs[2] = ds_hidden_recgruplist.saveXML();
  2864. arrSignDs[3] = ds_temp_signdata_detailinfo.saveXML();
  2865. Sign.addnodeset(arrSignPath, arrSignDs);
  2866. arrSignPath = new Array();
  2867. arrSignPath[0] = "/recdetailgrup/recdetailgruplist";
  2868. arrSignDs = new Array();
  2869. arrSignDs[0] = ds_main_recdetailgruplist.saveXML();
  2870. Sign.addnodeset(arrSignPath, arrSignDs);
  2871. arrSignPath = new Array();
  2872. arrSignPath[0] = "/recpntgrup/recpntlist";
  2873. arrSignDs = new Array();
  2874. arrSignDs[0] = ds_temp_signdata_recpntlist.saveXML();
  2875. Sign.addnodeset(arrSignPath, arrSignDs);
  2876. } else{
  2877. ds_hidden_patinfo.clear();
  2878. dsf_copyColInfo(ds_hidden_patinfo, ds_main_patinfo);
  2879. var hAddRow = ds_hidden_patinfo.addRow();
  2880. var patCRow = ds_main_patinfo.rowposition;
  2881. ds_hidden_patinfo.copyRow(hAddRow, ds_main_patinfo, patCRow);
  2882. ds_hidden_recgruplist.clear();
  2883. dsf_copyColInfo(ds_hidden_recgruplist, ds_main_recgruplist);
  2884. var addRow = ds_hidden_recgruplist.addRow();
  2885. var curRow = ds_main_recgruplist.rowposition;
  2886. ds_hidden_recgruplist.copyRow(addRow, ds_main_recgruplist, curRow);
  2887. if( ds_hidden_patinfo.rowcount == 0 || ds_hidden_recgruplist.rowcount == 0 ){
  2888. trace(ds_hidden_patinfo.saveXML());
  2889. trace(ds_hidden_recgruplist.saveXML());
  2890. trace(ds_cond.saveXML());
  2891. trace(ds_temp_signdata_detailinfo.saveXML());
  2892. trace(ds_temp_signdata_recpntlist.saveXML());
  2893. }
  2894. var arrSignPath = new Array();
  2895. arrSignPath[0] = "/cond";
  2896. arrSignPath[1] = "/patlist";
  2897. arrSignPath[2] = "/recgruplist";
  2898. arrSignPath[3] = "/detailinfo";
  2899. var arrSignDs = new Array();
  2900. arrSignDs[0] = ds_cond.saveXML();
  2901. arrSignDs[1] = ds_hidden_patinfo.saveXML();
  2902. arrSignDs[2] = ds_hidden_recgruplist.saveXML();
  2903. arrSignDs[3] = ds_temp_signdata_detailinfo.saveXML();
  2904. Sign.addnodeset(arrSignPath, arrSignDs);
  2905. arrSignPath = new Array();
  2906. arrSignPath[0] = "/recdetailgrup/recdetailgruplist";
  2907. arrSignDs = new Array();
  2908. arrSignDs[0] = ds_main_recdetailgruplist.saveXML();
  2909. Sign.addnodeset(arrSignPath, arrSignDs);
  2910. arrSignPath = new Array();
  2911. arrSignPath[0] = "/recpntgrup/recpntlist";
  2912. arrSignDs = new Array();
  2913. arrSignDs[0] = ds_temp_signdata_recpntlist.saveXML();
  2914. Sign.addnodeset(arrSignPath, arrSignDs);
  2915. }
  2916. }
  2917. /**
  2918. * @group :
  2919. * @ver : 2011.03.30
  2920. * @by : 안도영
  2921. * @---------------------------------------------------
  2922. * @type : function
  2923. * @access : public
  2924. * @desc : 그리드 조회 시 분류구분에 따른 재구성
  2925. * @param :
  2926. * @param :
  2927. * @return :
  2928. * @---------------------------------------------------
  2929. */
  2930. function fSetPatGrid(dataSet, grid, flag){
  2931. var grdID = this.components[grid];
  2932. var dataSetDS = this.objects[dataSet];
  2933. switch (flag){
  2934. case "Pat" :
  2935. var arrColIdx = new Array();
  2936. arrColIdx[0] = grdID.getBindCellIndex("body", "resultnm1"); // 각 위험군 콜 인덱스
  2937. arrColIdx[1] = grdID.getBindCellIndex("body", "resultnm2");
  2938. arrColIdx[2] = grdID.getBindCellIndex("body", "resultnm3");
  2939. arrColIdx[3] = grdID.getBindCellIndex("body", "resultnm4");
  2940. var sExprColor = "EXPR(";
  2941. var sExprbgColor = "EXPR(";
  2942. var sExprbgColor2 = "EXPR(";
  2943. var sExprColor3 = "EXPR(";
  2944. var sExprbgColor3 = "EXPR(";
  2945. var jvalue;
  2946. var jvalue2;
  2947. var jvalue3;
  2948. // 값이 있는 위험군 셀 색 넣기( 그리드에 직접 설정)
  2949. for( var i = 0; i < dataSetDS.rowcount; i++){ // 행
  2950. for( var j = 0; j < arrColIdx.length; j++ ){
  2951. if( !utlf_isNull(eval(grid).getCellValue(i, arrColIdx[j])) ){
  2952. if(2 == (j+1)) { // 낙상
  2953. if("Y" == eval(grid).getCellValue(i, grd_patinfo.getBindCellIndex("body","coloryn2")) ){
  2954. //sysf_trace(dataSetDS.saveXML());
  2955. // '고위험군' 만 색 표시 (2011.04.13 ahn)
  2956. sExprColor += "currow == "+i+" ? '#ff0000' :";
  2957. sExprbgColor += "currow == "+i+" ? '#ffff00' :";
  2958. jvalue= arrColIdx[j];
  2959. //dataSetDS.setColumn(i, "color", "1");
  2960. }
  2961. }else if(3 == (j+1)) { // 욕창
  2962. if("Y" == eval(grid).getCellValue(i, grd_patinfo.getBindCellIndex("body","coloryn3")) ){ // '정상' 제외한 군 색 표시 (2011.04.19 ahn)
  2963. sExprbgColor2 += "currow == "+i+" ? '#ff0000' :";
  2964. jvalue2= arrColIdx[j];
  2965. //dataSetDS.setColumn(i, "color", "2");
  2966. }
  2967. }else if(4 == (j+1)) { // 통증
  2968. if(4 <= parseInt(eval(grid).getCellValue(i, arrColIdx[j]) ) ){ // 통증 점수가 4점 이상인 경우만 색 표시 (2011.04.13 ahn)
  2969. sExprColor3 += "currow == "+i+" ? '#ffffff' :";
  2970. sExprbgColor3 += "currow == "+i+" ? '#333399' :";
  2971. jvalue3= arrColIdx[j];
  2972. //dataSetDS.setColumn(i, "color", "3");
  2973. }
  2974. }
  2975. }
  2976. }
  2977. }
  2978. sExprColor += "'')";
  2979. sExprbgColor += "'')";
  2980. sExprbgColor2 += "'')";
  2981. sExprColor3 += "'')";
  2982. sExprbgColor3 += "'')";
  2983. grd_patinfo.setCellProperty("Body", jvalue, "color", sExprColor);
  2984. grd_patinfo.setCellProperty("Body", jvalue, "background", sExprbgColor);
  2985. grd_patinfo.setCellProperty("Body", jvalue, "background2", sExprbgColor);
  2986. grd_patinfo.setCellProperty("Body", jvalue2, "background", sExprbgColor2);
  2987. grd_patinfo.setCellProperty("Body", jvalue2, "background2", sExprbgColor2);
  2988. grd_patinfo.setCellProperty("Body", jvalue3, "color", sExprColor3);
  2989. grd_patinfo.setCellProperty("Body", jvalue3, "background", sExprbgColor3);
  2990. grd_patinfo.setCellProperty("Body", jvalue3, "background2", sExprbgColor3);
  2991. // 조회 구분대로 환자정보 그리드 구성
  2992. var grdID = this.components[grid];
  2993. var tmp = ds_cond.getColumn(0, "recsrchflag");
  2994. var recSrchFlag = tmp.replace("^","");
  2995. var cnt = 0;
  2996. if( grid == "grd_patinfo" ){
  2997. cnt = 4;
  2998. } else {
  2999. cnt = 5;
  3000. }
  3001. for( var k = 1; k <= cnt; k++ ){ // 분류 수
  3002. var resultnm = "resultnm" + k;
  3003. var execnm = "execnm" + k;
  3004. var execdd = "execdd" + k;
  3005. grdID.setFormatColProperty(grdID.getBindCellIndex("body", resultnm), "size", 0);
  3006. grdID.setFormatColProperty(grdID.getBindCellIndex("body", execnm), "size", 0);
  3007. if( grdID.getBindCellIndex("body", execdd) != -1 )
  3008. grdID.setFormatColProperty(grdID.getBindCellIndex("body", execdd), "size", 0);
  3009. for( var j = 0; j < recSrchFlag.length; j++){
  3010. if( k == recSrchFlag.charAt(j) ){
  3011. var resultnm = "resultnm" + recSrchFlag.charAt(j);
  3012. var execnm = "execnm" + recSrchFlag.charAt(j);
  3013. var execdd = "execdd" + recSrchFlag.charAt(j);
  3014. grdID.setFormatColProperty(grdID.getBindCellIndex("body", resultnm), "size", 60);
  3015. grdID.setFormatColProperty(grdID.getBindCellIndex("body", execnm), "size", 68);
  3016. if( grdID.getBindCellIndex("body", execdd) != -1 )
  3017. grdID.setFormatColProperty(grdID.getBindCellIndex("body", execdd), "size", 68);
  3018. break;
  3019. }
  3020. }
  3021. }
  3022. break;
  3023. }
  3024. }
  3025. /**
  3026. * @group :
  3027. * @ver : 2011.03.31
  3028. * @by : 안도영
  3029. * @---------------------------------------------------
  3030. * @type : function
  3031. * @access : public
  3032. * @desc : 조회 분류별 정렬 (가장 작은 값 찾기)
  3033. * @param :
  3034. * @param :
  3035. * @return :
  3036. * @---------------------------------------------------
  3037. */
  3038. function fGetMinSrchFlag(srchflag){
  3039. var arrRecSrFlag = new Array();
  3040. var recsrchflag = srchflag.setReplaceWord("^", "");
  3041. for( var i = 0; i < recsrchflag.length; i++ ){
  3042. arrRecSrFlag[i] = recsrchflag.charAt(i);
  3043. }
  3044. for(var j = 0; j < arrRecSrFlag.length; j++){
  3045. for(i = j+ 1; i < arrRecSrFlag.length; i++){
  3046. if(arrRecSrFlag[i] < arrRecSrFlag[j])
  3047. {
  3048. var tmp = arrRecSrFlag[j];
  3049. arrRecSrFlag[j] = arrRecSrFlag[i];
  3050. arrRecSrFlag[i] = tmp;
  3051. }
  3052. }
  3053. }
  3054. return arrRecSrFlag[0]; // 가장 작은 값 return
  3055. }
  3056. /**
  3057. * @ver : 2008.06.09
  3058. * @author : dhkim
  3059. * @------------------------------------------------------------------------------
  3060. * @access : public
  3061. * @type : function
  3062. * @param : clsflag 중증도/낙상/욕창 구분(라디오버튼)
  3063. * ioflag 외래/입원구분
  3064. * @desc : 환자정보 더블클릭할때
  3065. * 혈액투석의 경우 외래환자는 조회조건을 clear하고 비활성화처리한다.
  3066. * @--------------------------------------------------------------------------------
  3067. */
  3068. function fDisabledSearchArea(clsflag, ioflag){
  3069. //구분이 혈액투석, 외래환자일때 조회조건 clear, 비활성화처리
  3070. if(clsflag == '3' && ioflag == 'O'){
  3071. group5.caption35.visible = true;
  3072. group5.cmb_ward.value = true;
  3073. // 응급실이 아닐 경우만 보임 (2011.03.15 Ahn)
  3074. if(eERFLAG != "Y"){
  3075. group5.cmb_room.visible = true;
  3076. //cmb_pid.attribute('visibility') = 'visible'; // 환자리스트 콤보 숨기기 (2011.03.29 Ahn)
  3077. }
  3078. group5.cmb_ward.enable = false;
  3079. group5.cmb_room.enable = false;
  3080. group5.cmb_pid.enable = false;
  3081. ds_cond.setColumn(0, "wardcd", "");
  3082. ds_cond.setColumn(0, "roomcd", "");
  3083. } else {
  3084. group5.caption35.visible = true; // Room 캡션 활성화
  3085. group5.cmb_ward.visible = true; // 병동선택 라디오 버튼 활성화
  3086. if(eERFLAG != "Y"){
  3087. group5.cmb_room.visible = true;// 병실선택 활성화
  3088. //cmb_pid.attribute('visibility') = 'visible'; // 환자리스트 콤보 숨기기 (2011.03.29 Ahn)
  3089. }
  3090. if( ds_main_paminfo.getColumn(0, "dschdd") == "99991231"){
  3091. group5.caption35.enable = true;
  3092. group5.cmb_ward.enable = true;
  3093. group5.cmb_room.enable = true;
  3094. group5.cmb_pid.enable = true;
  3095. }
  3096. }
  3097. }
  3098. /**
  3099. * @group :
  3100. * @ver : 2010.05.03
  3101. * @by : khj
  3102. * @---------------------------------------------------
  3103. * @type : function
  3104. * @access : public
  3105. * @desc : JCI용 : 낙상은 7세 미만 혹은 65세 이상인 경우 고위험군체크되면 상세내역 선택할수 없고 디폴트로 고위험군임.
  3106. * @param : pFlag = Y : check, N : uncheck
  3107. * @return :
  3108. * @---------------------------------------------------
  3109. */
  3110. function fJCISettingAgeChk(pFlag){
  3111. var clsflag = ds_cond.getColumn(0, "clsflag");
  3112. if ( clsflag != "8" && clsflag != "9" ) return;
  3113. var clsflag_modify = (clsflag == "8" ? "1" : "2");
  3114. instUseYNcdnm = ds_code_codelist.lookupExpr("cdgrupid=='199' && cdnm=='Y' && cdid=='"+ clsflag_modify +"'", "grupdetldesc");
  3115. if ( pFlag =="Y" ){
  3116. var cRow = ds_main_recpntlist.rowposition;
  3117. grdf_setStatus(grd_recpnt, "U", grdf_getSelectedRows(grd_recpnt));
  3118. ds_main_recpntlist.setColumn(cRow, "resultcd", instUseYNcdnm);
  3119. //grd_recpnt.valueMatrix(grd_recpnt.fixedRows,grd_recpnt.colRef("resultcd") ) = instUseYNcdnm;
  3120. for( var jdx = grd_recpnt.getBindCellIndex("Body", "timsval01"); jdx <= grd_recpnt.getBindCellIndex("Body", "totpnt"); jdx++ ){
  3121. ds_main_recpntlist.setColumn(cRow, jdx, "");
  3122. //grd_recpnt.valueMatrix(grd_recpnt.fixedRows, jdx ) = "";
  3123. }
  3124. var recGroupRow = ds_main_recgruplist.rowposition;
  3125. if( ds_main_recgruplist.getRowType(recGroupRow) != 2 ){//상태가 신규상태가 아니면 u로 변경
  3126. grdf_setStatus(grd_recmaster, "U", grdf_getSelectedRows(grd_recmaster));
  3127. ds_main_recgruplist.setColumn(recGroupRow, "stat", "u");
  3128. }
  3129. ds_main_recgruplist.setColumn(recGroupRow, "resultnm", instUseYNcdnm);
  3130. ds_main_recgruplist.setColumn(recGroupRow, "totpnt", "");
  3131. ds_main_recgruplist.setColumn(recGroupRow, "agechk", "Y" );
  3132. for( var idx = 0; idx < ds_main_recdetailgruplist.rowcount; idx++ ){
  3133. ds_main_recdetailgruplist.setColumn(idx, "flag", "N");
  3134. ds_main_recdetailgruplist.setColumn(idx, "timsval", "");
  3135. grd_recdetail.isReadonly(idx, grd_recdetail.colRef("flag"), idx, grd_recdetail.colRef("timsval")) = true;
  3136. }
  3137. }else {
  3138. //중증도 마스터그리드
  3139. var recGroupRow = ds_main_recgruplist.rowposition;
  3140. if( ds_main_recgruplist.getRowType(recGroupRow) != 2 ){//상태가 신규상태가 아니면 u로 변경
  3141. grdf_setStatus(grd_recmaster, "U", grdf_getSelectedRows(grd_recmaster));
  3142. ds_main_recgruplist.setColumn(recGroupRow, "stat", '-');
  3143. }
  3144. ds_main_recgruplist.setColumn(recGroupRow, "agechk", "N" );
  3145. fSearchRecPnt();
  3146. ds_main_recgruplist.setColumn(ds_main_recgruplist.rowposition, "resultnm", ds_main_recpntlist.getColumn(0, "resultcd"));
  3147. ds_main_recgruplist.setColumn(ds_main_recgruplist.rowposition, "totpnt", ds_main_recpntlist.getColumn(0, "totpnt"));
  3148. }
  3149. }
  3150. /**
  3151. * @group :
  3152. * @ver : 2011.04.19
  3153. * @by : 안도영
  3154. * @---------------------------------------------------
  3155. * @type : function
  3156. * @access : public
  3157. * @desc : 라디오 선택 시 재조회
  3158. * @param :
  3159. * @param :
  3160. * @return :
  3161. * @---------------------------------------------------
  3162. */
  3163. function patReSrch(flag){
  3164. // 해당 환자 pid 임시 저장
  3165. var patPid = ds_cond.getColumn(0, "pid");
  3166. var patIdx = "";
  3167. //조회조건 clear
  3168. ds_cond.setColumn(0, "pid", '');
  3169. //환자정보 표시 clear (2011.03.29 Ahn)
  3170. ds_cond.setColumn(0, "patnm", '');
  3171. ds_cond.setColumn(0, "sexage", '');
  3172. ds_cond.setColumn(0, "age", '');
  3173. //환자정보 조회
  3174. fSearchPatList(flag);
  3175. if( !utlf_isNull(patPid) ){
  3176. // 해당 환자정보 재 표시
  3177. ds_cond.setColumn(0, "pid", patPid);
  3178. ds_cond.setColumn(0, "patnm", ds_main_patinfo.lookup("pid", patPid, "hngnm"));
  3179. ds_cond.setColumn(0, "sexage", ds_main_patinfo.lookup("pid", patPid, "sexage"));
  3180. ds_cond.setColumn(0, "age", ds_main_patinfo.lookup("pid", patPid, "age"));
  3181. // 해당 환자 인덱스 선택 재 지정
  3182. for( i = 0; i < ds_main_patinfo.rowcount; i++ ){
  3183. if( patPid == ds_main_patinfo.getColumn(i, "pid") ){
  3184. patIdx = i;
  3185. break;
  3186. }
  3187. }
  3188. ds_main_patinfo.rowposition = patIdx;
  3189. //중증도/낙상/욕창 내역 조회(grd_recmaster)
  3190. fSearchRecMaster(patIdx);
  3191. }
  3192. }
  3193. function fSearchRecMasterAll(patRow,pFlag){
  3194. //혈액투석의 경우 입원환자 더블클릭 할때에 조회조건에 기본 조회값을 세팅해야함.
  3195. //혈액투석의 경우 외래환자 더블클릭은 조회조건 비활성화
  3196. var clsflag = ds_cond.getColumn(0, "clsflag");//분류구분
  3197. var recflag = ds_cond.getColumn(0, "recflag");//기록구분
  3198. var ioflag = ds_main_patinfo.getColumn(patRow, "ioflag"); //외래/입원구분
  3199. var pid = ds_main_patinfo.getColumn(patRow, "pid"); //등록번호
  3200. var indd = ds_main_patinfo.getColumn(patRow, "indd"); //입원일자
  3201. var histstat = ds_main_patinfo.getColumn(patRow, "histstat"); //이력상태
  3202. var cretno = ds_main_patinfo.getColumn(patRow, "cretno"); //생성번호
  3203. var seqno = ds_main_patinfo.getColumn(patRow, "seqno"); //이력번호
  3204. var hngnm = ds_main_patinfo.getColumn(patRow, "hngnm"); //환자명
  3205. var execdd = ds_cond.getColumn(0, "execdd"); //수행일자
  3206. var exectm = ds_cond.getColumn(0, "exectm"); //수행시간
  3207. if( utlf_isNull(execdd) ){
  3208. execdd = utlf_getCurrentDate();
  3209. }
  3210. if( utlf_isNull(exectm) ){
  3211. exectm = utlf_getCurrentTime().substring(0, 4);
  3212. }
  3213. //20081014 i/o조건값 cond 노드에 setting
  3214. ds_cond.setColumn(0, "ioflag", "");
  3215. ds_cond.setColumn(0, "ioflag", ioflag);
  3216. //중증도 마스터내역을 조회한다.
  3217. ds_send.clear();
  3218. ds_send.addColumn("clsflag", "string", 256);
  3219. ds_send.addColumn("recflag", "string", 256);
  3220. ds_send.addColumn("execdd", "string", 256);
  3221. ds_send.addColumn("exectm", "string", 256);
  3222. ds_send.addColumn("pid", "string", 256);
  3223. ds_send.addColumn("indd", "string", 256);
  3224. ds_send.addColumn("histstat", "string", 256);
  3225. ds_send.addColumn("cretno", "string", 256);
  3226. ds_send.addColumn("seqno", "string", 256);
  3227. ds_send.addColumn("hngnm", "string", 256);
  3228. ds_send.addColumn("ioflag", "string", 256);
  3229. var addRow = ds_send.addRow();
  3230. ds_send.setColumn(addRow, "clsflag", clsflag);
  3231. ds_send.setColumn(addRow, "recflag", recflag);
  3232. ds_send.setColumn(addRow, "execdd", execdd);
  3233. ds_send.setColumn(addRow, "exectm", exectm);
  3234. ds_send.setColumn(addRow, "pid", pid);
  3235. ds_send.setColumn(addRow, "indd", indd);
  3236. ds_send.setColumn(addRow, "histstat", histstat);
  3237. ds_send.setColumn(addRow, "cretno", cretno);
  3238. ds_send.setColumn(addRow, "seqno", seqno);
  3239. ds_send.setColumn(addRow, "hngnm", hngnm);
  3240. ds_send.setColumn(addRow, "ioflag", ioflag);
  3241. // 조회구분 추가 (2011.03.31 Ahn)
  3242. var recsrchflag = ds_cond.getColumn(0, "recsrchflag");
  3243. ds_send.addColumn("recsrchflag", "string", 256);
  3244. ds_send.setColumn(addRow, "recsrchflag", recsrchflag);
  3245. // 분류구분 중 우선순위 값 가져오기 (2011.03.31 ahn)
  3246. var selRecFlag = fGetMinSrchFlag(recsrchflag);
  3247. ds_cond.setColumn(0, "recflag", selRecFlag); // 상단 라디오체크 분류 set
  3248. ds_main_recgruplist.clearData();
  3249. ds_main_recinfo.clearData();
  3250. //상세점수, 상세내역, 상세설명의 현재instance를 remove한다.
  3251. ds_main_recpntlist.clearData();
  3252. ds_main_pnttitlgruplist.clearData();
  3253. ds_main_serdiaghislist.clearData();
  3254. ds_main_recdetailgruplist.clearData();
  3255. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  3256. //중증도내역 마스터 조회 후 기록정보 조회
  3257. var oParam = {};
  3258. oParam.id = "TRMNW04011";
  3259. oParam.service = "carerecapp.AsesRec";
  3260. oParam.method = "reqGetRecListFlagSelect";
  3261. oParam.inds = "refCond=ds_send";
  3262. oParam.outds = "ds_main_recinfo=recinfo ds_main_recgruplist=recgruplist";
  3263. oParam.async = false;
  3264. oParam.callback = "cf_TRMNW04011";
  3265. tranf_submit(oParam);
  3266. if( arErrorCode.pop("TRMNW04011") < 0 ){
  3267. sysf_messageBox('중증도내역의 조회를', 'E009');
  3268. return;
  3269. }else{
  3270. //조회갯수 0일때 조회 후 수행일자, 수행시간, 최근 저장일을 세팅
  3271. //var execdd = model.getValue('/root/cond/execdd');
  3272. var execdd = ds_cond.getColumn(0, "copyexecdd");
  3273. var exectm = ds_cond.getColumn(0, "exectm");
  3274. if(pFlag != "4"){
  3275. //중증도 마스터를 조회후 수행일자에 해당하는 내역이 없으면 행추가, 있으면 해당 row select
  3276. if(!fSetRecMasterAll(exectm, execdd, pFlag)){
  3277. return;
  3278. } else{
  3279. //환자정보에 선택한 로우정보 set
  3280. //grd_patinfo.row = curRow;
  3281. //grd_patinfo.topRow = curRow;
  3282. //중증도 상세점수조회
  3283. fSearchRecPntAll();
  3284. }
  3285. }
  3286. }
  3287. }
  3288. function cf_TRMNW04011(sSvcId, nErrorCode, sErrorMsg) {
  3289. arErrorCode.push(sSvcId, nErrorCode);
  3290. }
  3291. function fSetRecMasterAll(exectm, execdd, pFlag){
  3292. var indx = -1;
  3293. for( var i = 0; i < ds_main_recgruplist.rowcount; i++ ){
  3294. if( (ds_main_recinfo.getColumn(0, "recflag") == ds_main_recgruplist.getColumn(i, "recflag") ) &&
  3295. (ds_main_recinfo.getColumn(0, "clsflag") == ds_main_recgruplist.getColumn(i, "clsflag")) ){
  3296. indx = i;
  3297. break;
  3298. }
  3299. }
  3300. if (indx > -1){ // 기록 내역이 존재할 경우 (2011.03.31 Ahn)
  3301. recRow = indx;
  3302. } else{
  3303. //기록된 내역이 한건도 없을때
  3304. //var hngnm = model.getValue("/root/main/patinfo/patlist[" + (patRow) + "]/hngnm");
  3305. //var msgStr = '(' + hngnm + ') 환자는 중증도 저장 이력이 없습니다. 개별 인증저장 하십시오.';
  3306. //messageBox(msgStr,"I");
  3307. return false;
  3308. }
  3309. if ( instUseYN == "Y" && grp_agechk.visible == true ){
  3310. ds_cond.setColumn(0, "agechk", ds_main_recgruplist.getColumn(recRow, "agechk"));
  3311. }else {
  3312. ds_cond.setColumn(0, "agechk", "N");
  3313. }
  3314. return true;
  3315. }
  3316. function fSearchRecPntAll(selflag){
  3317. ds_cond.setColumn(0, "maddchk01",''); // 집중치료실 환자 체크(Morse)
  3318. ds_cond.setColumn(0, "maddchk02",''); // 만70세 이상 환자 체크(Morse)
  3319. ds_cond.setColumn(0, "maddchk03",''); // 진정 및 이완 약물투여 환자 체크(Morse)
  3320. ds_cond.setColumn(0, "maddchk04",''); // 음주 환자 체크(Morse)
  3321. ds_cond.setColumn(0, "maddchk99",''); // 해당사항 없음 체크(Morse)
  3322. ds_cond.setColumn(0, "haddchk",''); // 3세 미만 소아 체크(Humpty Dumpty)
  3323. ds_cond.setColumn(0, "haddchk01",''); // 집충치료실 환자 체크(Humpty Dumpty)
  3324. ds_cond.setColumn(0, "haddchk02",''); // 집충치료실 환자 체크(Humpty Dumpty)
  3325. ds_cond.setColumn(0, "haddchk03",''); // 집충치료실 환자 체크(Humpty Dumpty)
  3326. ds_cond.setColumn(0, "maddchk05",''); // 집충치료실 환자 체크(Humpty Dumpty)
  3327. ds_cond.setColumn(0, "maddchk06",''); // 집충치료실 환자 체크(Humpty Dumpty)
  3328. var clsflag = "";
  3329. var recflag = "";
  3330. if(selflag == "Sel"){
  3331. clsflag = ds_main_recgruplist.getColumn(recRow, "clsflag");
  3332. recflag = ds_main_recgruplist.getColumn(recRow, "recflag");
  3333. if(recflag == '1'){
  3334. ds_cond.setColumn(0, "clsflag", clsflag); // 중증도구분 중 선택
  3335. }else if((recflag == '2') && (clsflag == '2')){
  3336. ds_cond.setColumn(0, "clsflag", 9); // 낙상 - Morse Scale 선택
  3337. }else if((recflag == '2') && (clsflag == '1')){
  3338. ds_cond.setColumn(0, "clsflag", 8); // 낙상 - Humpty Dumpty 선택
  3339. }else if((recflag == '3') && (clsflag == '1')){
  3340. ds_cond.setColumn(0, "clsflag", 10); // 욕창 선택
  3341. }else if(recflag == '4'){
  3342. //model.setValue("/root/cond/clsflag", 11); // 통증 선택
  3343. //alert("통증관련 개발중입니다.");
  3344. //messageBox('관련 화면 준비중', 'I009');
  3345. sysf_messageBox('통증관리기록 메뉴를 사용하십시오', 'I');
  3346. //modal("SMMNW04800",1); //통증관리기록 화면 호출
  3347. return;
  3348. }
  3349. fChangeCaption(ds_cond.getColumn(0, "clsflag")); // 선택된 구분으로 캡션 변경 (2011.04.19 ahn)
  3350. }else{
  3351. clsflag = ds_main_recinfo.getColumn(0, "clsflag");
  3352. recflag = ds_main_recinfo.getColumn(0, "recflag");
  3353. }
  3354. var maddchk01 = ds_main_recgruplist.getColumn(recRow, "maddchk01");
  3355. var maddchk02 = ds_main_recgruplist.getColumn(recRow, "maddchk02");
  3356. var maddchk03 = ds_main_recgruplist.getColumn(recRow, "maddchk03");
  3357. var maddchk04 = ds_main_recgruplist.getColumn(recRow, "maddchk04");
  3358. var haddchk = ds_main_recgruplist.getColumn(recRow, "haddchk");
  3359. var haddchk02 = ds_main_recgruplist.getColumn(recRow, "haddchk02");
  3360. var haddchk03 = ds_main_recgruplist.getColumn(recRow, "haddchk03");
  3361. var maddchk05 = ds_main_recgruplist.getColumn(recRow, "maddchk05");
  3362. var maddchk06 = ds_main_recgruplist.getColumn(recRow, "maddchk06");
  3363. var dinfo = maddchk01+maddchk02+maddchk03+maddchk04+haddchk+haddchk02+haddchk03+maddchk05+maddchk06;
  3364. //중증도내역 선택했던 로우정보(수행일자)를 저장한다.
  3365. ds_send.clear();
  3366. ds_send.addColumn("pid", "string", 256);
  3367. ds_send.addColumn("indd", "string", 256);
  3368. ds_send.addColumn("cretno", "string", 256);
  3369. ds_send.addColumn("execdd", "string", 256);
  3370. ds_send.addColumn("recseq", "string", 256);
  3371. ds_send.addColumn("clsflag", "string", 256);
  3372. ds_send.addColumn("recflag", "string", 256);
  3373. ds_send.addColumn("dinfo", "string", 256);
  3374. var addRow = ds_send.addRow();
  3375. ds_send.setColumn(addRow, "pid", ds_main_recgruplist.getColumn(recRow, "pid"));
  3376. ds_send.setColumn(addRow, "indd", ds_main_recgruplist.getColumn(recRow, "indd"));
  3377. ds_send.setColumn(addRow, "cretno", ds_main_recgruplist.getColumn(recRow, "cretno"));
  3378. ds_send.setColumn(addRow, "execdd", ds_main_recgruplist.getColumn(recRow, "execdd"));
  3379. ds_send.setColumn(addRow, "recseq", ds_main_recgruplist.getColumn(recRow, "recseq"));
  3380. ds_send.setColumn(addRow, "clsflag",clsflag);
  3381. ds_send.setColumn(addRow, "recflag",recflag);
  3382. ds_send.setColumn(addRow, "dinfo", dinfo);
  3383. //상세내역, 상세설명의 현재instance를 remove한다.
  3384. ds_main_recdetailgruplist.clearData();
  3385. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  3386. //상세점수그리드조회
  3387. var oParam = {};
  3388. oParam.id = "TRMNW04007";
  3389. oParam.service = "carerecapp.AsesRec";
  3390. oParam.method = "reqGetRecHistPntList";
  3391. oParam.inds = "refCond=ds_send";
  3392. oParam.outds = "ds_main_recpntlist=recpntlist ds_main_pnttitlgruplist=pnttitlgruplist ds_main_serdiaghislist=serdiagchklist";
  3393. oParam.async = false;
  3394. oParam.callback = "cf_TRMNW04007";
  3395. tranf_submit(oParam);
  3396. if( arErrorCode.pop("TRMNW04007") < 0 ) {//상세점수조회
  3397. sysf_messageBox('상세점수조회를', 'E009');
  3398. return;
  3399. }else{
  3400. //상세점수그리드의 컬럼을 조회한 내역의 갯수만큼 화면에 보여준다.
  3401. //fColLqidtys(); // 삭제해도 무방하지 않을까? 그리드 참조부분 - AYS
  3402. }
  3403. //중증기록 detail 상세내역 그리드리스트를 조회한다.
  3404. fSearchRecDetailAll();
  3405. //addchk();
  3406. }
  3407. function cf_TRMNW04007(sSvcId, nErrorCode, sErrorMsg) {
  3408. arErrorCode.push(sSvcId, nErrorCode);
  3409. }
  3410. function fSearchRecDetailAll(){
  3411. ds_main_recdetailgruplist.clearData();
  3412. ds_send.clear();
  3413. ds_send.addColumn("pid", "string", 256);
  3414. ds_send.addColumn("cretno", "string", 256);
  3415. ds_send.addColumn("indd", "string", 256);
  3416. ds_send.addColumn("seqno", "string", 256);
  3417. ds_send.addColumn("recseq", "string", 256);
  3418. ds_send.addColumn("clsflag", "string", 256);
  3419. ds_send.addColumn("recflag", "string", 256);
  3420. ds_send.addColumn("execdd", "string", 256);
  3421. ds_send.addColumn("newexecdd", "string", 256);
  3422. var addRow = ds_send.addRow();
  3423. ds_send.setColumn(addRow, "pid", ds_main_recgruplist.getColumn(recRow, "pid"));
  3424. ds_send.setColumn(addRow, "cretno", ds_main_recgruplist.getColumn(recRow, "cretno"));
  3425. ds_send.setColumn(addRow, "indd", ds_main_recgruplist.getColumn(recRow, "indd"));
  3426. ds_send.setColumn(addRow, "seqno", ds_main_recgruplist.getColumn(recRow, "seqno"));
  3427. ds_send.setColumn(addRow, "recseq", ds_main_recgruplist.getColumn(recRow, "recseq"));
  3428. ds_send.setColumn(addRow, "clsflag", ds_main_recgruplist.getColumn(recRow, "clsflag"));
  3429. ds_send.setColumn(addRow, "recflag", ds_main_recgruplist.getColumn(recRow, "recflag"));
  3430. ds_send.setColumn(addRow, "execdd", ds_main_recgruplist.getColumn(recRow, "execdd"));
  3431. ds_send.setColumn(addRow, "newexecdd", ds_cond.getColumn(0, "execdd"));
  3432. //상세설명의 현재instance를 remove한다.
  3433. ds_main_tar_desccnts.setColumn(0, "tar_desccnts", "");
  3434. //model.refresh();
  3435. //중증도 상세내역 조회
  3436. var oParam = {};
  3437. oParam.id = "TRMNW04006";
  3438. oParam.service = "carerecapp.AsesRec";
  3439. oParam.method = "reqGetRecDetailList";
  3440. oParam.inds = "refCond=ds_send";
  3441. oParam.outds = "ds_main_recdetailgruplist=recdetailgruplist";
  3442. oParam.async = false;
  3443. oParam.callback = "cf_TRMNW04006";
  3444. tranf_submit(oParam);
  3445. }
  3446. function fIsRecordedAll(iptExecdd){
  3447. var retArr = new Array(1);
  3448. var recorded = false;
  3449. var signno = '';
  3450. var execdd;
  3451. var stat;
  3452. for( var i = 0; i < ds_main_recgruplist.rowcount; i++ ){
  3453. execdd = ds_main_recgruplist.getColumn(i, "execdd");
  3454. stat = ds_main_recgruplist.getColumn(i, "stat");
  3455. if( !utlf_isNull(execdd) && iptExecdd == execdd && stat != 'i'){
  3456. signno = ds_main_recgruplist.getColumn(i, "signno");
  3457. recorded = true;
  3458. retArr[0] = recorded;
  3459. retArr[1] = signno;
  3460. return retArr;
  3461. }
  3462. }
  3463. retArr[0] = recorded;
  3464. retArr[1] = signno;
  3465. return retArr;
  3466. }
  3467. function addallchk(){
  3468. var wardcd = ds_cond.getColumn(0, "wardcd");
  3469. var patnm = ds_main_patinfo.getColumn(patRow, "hngnm");
  3470. var age = ds_main_patinfo.getColumn(patRow, "age");
  3471. var maddchk01 = ds_main_recgruplist.getColumn(recRow, "maddchk01");
  3472. var maddchk02 = ds_main_recgruplist.getColumn(recRow, "maddchk02");
  3473. var maddchk03 = ds_main_recgruplist.getColumn(recRow, "maddchk03");
  3474. var maddchk04 = ds_main_recgruplist.getColumn(recRow, "maddchk04");
  3475. var maddchk99 = ds_main_recgruplist.getColumn(recRow, "maddchk99");
  3476. var haddchk = ds_main_recgruplist.getColumn(recRow, "haddchk");
  3477. var haddchk01 = ds_main_recgruplist.getColumn(recRow, "haddchk01");
  3478. var haddchk02 = ds_main_recgruplist.getColumn(recRow, "haddchk02");
  3479. var haddchk03 = ds_main_recgruplist.getColumn(recRow, "haddchk03");
  3480. var maddchk05 = ds_main_recgruplist.getColumn(recRow, "maddchk05");
  3481. var maddchk06 = ds_main_recgruplist.getColumn(recRow, "maddchk06");
  3482. if( ds_cond.getColumn(0, "clsflag") == "8" ){
  3483. if(parseInt(age) >= 15){
  3484. sysf_messageBox(patnm + " 환자는 15세 이상입니다. Morse scale을 사용해야 합니다.","E");
  3485. //messageBox("낙상 위험 사정은 15세 이상 - Morse scale을 사용해야 합니다.","E");
  3486. return false;
  3487. }else{
  3488. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++ ){
  3489. if( wardcd == ds_init_icucdgrup.getColumn(i, "wardcd")){ // 중환자실이면
  3490. haddchk01 = 'Y';
  3491. ds_main_recgruplist.setColumn(recRow, "haddchk01", haddchk01);
  3492. }
  3493. }
  3494. if( parseInt(age) < 3 ){
  3495. //chk_haddchk.value = 'Y';
  3496. haddchk = 'Y';
  3497. ds_main_recgruplist.setColumn(recRow, "haddchk", haddchk);
  3498. }
  3499. //190523_AYS_응급실 환자일 경우 고위험 항목(응급실환자) 체크 활성화
  3500. /*
  3501. if( eERDEPTCD == wardcd ){
  3502. maddchk05 = 'Y';
  3503. ds_main_recgruplist.setColumn(recRow, "maddchk05", maddchk05);
  3504. }
  3505. */
  3506. }
  3507. }else if( ds_cond.getColumn(0, "clsflag") == "9" ){
  3508. if( parseInt(age) < 15 ){
  3509. sysf_messageBox(patnm + " 환자는 15세 미만입니다. Humpty Dumpty scale을 사용해야 합니다.","E");
  3510. return false;
  3511. }else{
  3512. for( var i = 0; i < ds_init_icucdgrup.rowcount; i++ ){
  3513. if( wardcd == ds_init_icucdgrup.getColumn(i, "wardcd")){ // 중환자실이면
  3514. //chk_maddchk01.value = 'Y';
  3515. maddchk01 = 'Y';
  3516. ds_main_recgruplist.setColumn(recRow, "maddchk01", maddchk01);
  3517. }
  3518. }
  3519. }
  3520. if( parseInt(age) >= 70 ){
  3521. //chk_maddchk02.value = 'Y';
  3522. maddchk02 = 'Y';
  3523. ds_main_recgruplist.setColumn(recRow, "maddchk02", maddchk02);
  3524. }
  3525. //190523_AYS_응급실 환자일 경우 고위험 항목(응급실환자) 체크 활성화
  3526. /*
  3527. if( eERDEPTCD == wardcd ){
  3528. maddchk05 = 'Y';
  3529. ds_main_recgruplist.setColumn(recRow, "maddchk05", maddchk05);
  3530. }
  3531. */
  3532. if( utlf_isNull(maddchk01) && utlf_isNull(maddchk02) && utlf_isNull(maddchk03) && utlf_isNull(maddchk04) && utlf_isNull(maddchk99) ){
  3533. maddchk99 = 'Y';
  3534. ds_main_recgruplist.setColumn(recRow, "maddchk99", maddchk99);
  3535. }
  3536. }
  3537. ds_cond.setColumn(0, "maddchk01" , maddchk01);
  3538. ds_cond.setColumn(0, "maddchk02" , maddchk02);
  3539. ds_cond.setColumn(0, "maddchk03" , maddchk03);
  3540. ds_cond.setColumn(0, "maddchk04" , maddchk04);
  3541. ds_cond.setColumn(0, "maddchk99" , maddchk99);
  3542. ds_cond.setColumn(0, "haddchk" , haddchk);
  3543. ds_cond.setColumn(0, "haddchk01" , haddchk01);
  3544. ds_cond.setColumn(0, "haddchk02" , haddchk02);
  3545. ds_cond.setColumn(0, "haddchk03" , haddchk03);
  3546. ds_cond.setColumn(0, "maddchk05" , maddchk05);
  3547. ds_cond.setColumn(0, "maddchk06" , maddchk06);
  3548. return true;
  3549. }
  3550. function fLoadFallPnt(recflag, clsflag, bspntnm){
  3551. //debugger;
  3552. var spid = eval(xRecMasterPath).getColumn(0, "pid");
  3553. var sorddd = ds_main_patinfo.getColumn(ds_main_patinfo.rowposition, "indd");
  3554. var sioflag = ds_main_patinfo.getColumn(ds_main_patinfo.rowposition, "ioflag");
  3555. var scretno = ds_main_patinfo.getColumn(ds_main_patinfo.rowposition, "cretno");
  3556. var sexecdd = ds_cond.getColumn(0, "execdd");
  3557. var sfromcd = "";
  3558. var sprntyn = "";
  3559. // var left = event.screenX;
  3560. // var top = event.screenY;
  3561. var snowdate = utlf_getCurrentDate();
  3562. if(recflag == '2' && clsflag == '1'){ //Humpty Dumpty(소아)
  3563. sfromcd = '1600017757';
  3564. sprntyn = 'Y';
  3565. } else if(recflag == '2' && clsflag == '2'){ // Morse Scale(성인)
  3566. sfromcd = '1600017756';
  3567. sprntyn = 'Y';
  3568. } else{
  3569. sfromcd = '';
  3570. sprntyn = 'N';
  3571. }
  3572. ds_send2_req.setColumn(0, "pid", spid);
  3573. ds_send2_req.setColumn(0, "indd", sorddd);
  3574. ds_send2_req.setColumn(0, "cretno", scretno);
  3575. ds_send2_req.setColumn(0, "formcd", sfromcd);
  3576. if(sysf_getUserInfo("dutplceinstcd") == '032' && sprntyn == 'Y' && bspntnm == '고위험군' && snowdate == sexecdd && sysf_getUserInfo("dutplcecd") != '3062300000' && sysf_getUserInfo("dutplcecd") != '2110201000' && sysf_getUserInfo("dutplcecd") != '2364601000' && eERFLAG != 'Y') {
  3577. var oParam = {};
  3578. oParam.id = "TRMNW15101";
  3579. oParam.service = "wardcareapp.WardDschCareRec";
  3580. oParam.method = "reqGetDupPrntCheck";
  3581. oParam.inds = "req=ds_send2_req";
  3582. oParam.outds = "ds_duplocrprnt_msginfo_list=prntinfo";
  3583. oParam.async = false;
  3584. oParam.callback = "cf_TRMNW15101";
  3585. tranf_submit(oParam);
  3586. if (arErrorCode.pop("TRMNW15101") > -1){
  3587. if(ds_duplocrprnt_msginfo_list.rowcount > 0 ) { // 출력했던 건인 경우
  3588. if(ds_duplocrprnt_msginfo_list.getColumn(0, "scanyn") == "N"){ // 스캔된건이 없는경우
  3589. if(ds_duplocrprnt_msginfo_list.getColumn(0, "statcd") == "D" || ds_duplocrprnt_msginfo_list.getColumn(0, "statcd") == "CP"){ // 삭제/출력취소 된 건인 경우
  3590. //신규출력
  3591. fOCRPrint(spid, sorddd, scretno, sioflag, sfromcd);
  3592. //fOCRPrint(left, top, spid, sorddd, scretno, sioflag, sfromcd);
  3593. }
  3594. }
  3595. }else{
  3596. // 신규출력
  3597. fOCRPrint(spid, sorddd, scretno, sioflag, sfromcd);
  3598. //fOCRPrint(left, top, spid, sorddd, scretno, sioflag, sfromcd);
  3599. }
  3600. }
  3601. }
  3602. }
  3603. function cf_TRMNW15101(sSvcId, nErrorCode, sErrorMsg) {
  3604. arErrorCode.push(sSvcId, nErrorCode);
  3605. }
  3606. function fOCRPrint(spid, sorddd, scretno, sioflag, sformcd){
  3607. //ivwiewer 를 nonvisible 로 올려두고 진행
  3608. var formcd = sformcd;
  3609. var pid = spid;
  3610. var orddd = sorddd;
  3611. var cretno = scretno;
  3612. var ordtype = sioflag;
  3613. var formtypecls = "3";
  3614. var ocrtagprntyn = "Y";
  3615. ivw_ocrprnt.url = "emr_formmngtxp::SSMRF03800_OCR뷰어.xfdl";
  3616. ivw_ocrprnt.fGetOCRInfo(formcd, pid, orddd, cretno, ordtype, formtypecls, ocrtagprntyn);
  3617. ivw_ocrprnt.fPrint();
  3618. }
  3619. //
  3620. function fChkTF(inChk, actChk){ //inChk : 조회된데이터 여부, actChk : 이벤트 수행여부(버튼눌렀때)
  3621. //fChkTF("N", "Y"); : 이벤트처리 호출
  3622. //fChkTF("Y", "N"); : 조회 호출
  3623. //fChkTF("N", "N"); : 일괄저장(인증저장)
  3624. //fChkTF("Y", "Y"); : 인증저장
  3625. //ds_main_recdetailgruplist.updatecontrol = false;
  3626. //ds_main_recdetailgruplist.enableevent = false;
  3627. //return;
  3628. //안쓰는 항목 초기화후 저장(진정 및 이완치료약물 치료/ 음주환자)
  3629. ds_cond.setColumn(0,"maddchk03","");
  3630. ds_cond.setColumn(0,"maddchk04","");
  3631. if(ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition, "execdd") < "20190402" && inChk =="Y" && actChk =="N" ){
  3632. return;
  3633. }
  3634. //trace("처리");
  3635. if(ds_cond.getColumn(ds_cond.rowposition,"maddchk01") =="Y" ||
  3636. ds_cond.getColumn(ds_cond.rowposition,"maddchk02") =="Y" ||
  3637. //ds_cond.getColumn(ds_cond.rowposition,"maddchk03") =="Y" ||
  3638. //ds_cond.getColumn(ds_cond.rowposition,"maddchk04") =="Y" ||
  3639. ds_cond.getColumn(ds_cond.rowposition,"maddchk05") =="Y" ||
  3640. ds_cond.getColumn(ds_cond.rowposition,"maddchk06") =="Y" ||
  3641. ds_cond.getColumn(ds_cond.rowposition,"haddchk") =="Y" ||
  3642. ds_cond.getColumn(ds_cond.rowposition,"haddchk01") =="Y" ||
  3643. ds_cond.getColumn(ds_cond.rowposition,"haddchk02") =="Y" ||
  3644. ds_cond.getColumn(ds_cond.rowposition,"haddchk03") =="Y"
  3645. ){
  3646. //ds_main_recdetailgruplist.updatecontrol = false;
  3647. ds_main_recdetailgruplist.enableevent = false;
  3648. if( ds_main_recdetailgruplist.rowcount > 0){
  3649. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  3650. //trace(ds_main_recdetailgruplist.getColumn(i,"basepnt"));
  3651. //trace(ds_main_recdetailgruplist.getColumn(i,"basepnt"));
  3652. if( !utlf_isNull(ds_main_recdetailgruplist.getColumn(i,"basepnt")) ){
  3653. if(ds_main_recdetailgruplist.getColumn(i,"basepnt") == 0){
  3654. ds_main_recdetailgruplist.setColumn(i,"flag","Y");
  3655. ds_main_recdetailgruplist.setColumn(i,"grupmulti","0");
  3656. }else{
  3657. ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3658. if(actChk !="N"){ //일괄저장이 아닐때
  3659. ds_main_recdetailgruplist.setColumn(i,"grupmulti","");
  3660. }
  3661. }
  3662. }
  3663. /*
  3664. if( ds_main_recdetailgruplist.getColumn(i, "supcd") != "00000000" ){//level이 상위레벨일때
  3665. ds_main_recdetailgruplist.setColumn(i,"flag","Y");
  3666. }else{
  3667. ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3668. }
  3669. */
  3670. //ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3671. //
  3672. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  3673. }
  3674. }
  3675. //ds_main_recdetailgruplist.updatecontrol = true;
  3676. ds_main_recdetailgruplist.enableevent = true;
  3677. }else{
  3678. if(inChk !="Y" && actChk !="N"){ // N Y 일때
  3679. if( ds_main_recdetailgruplist.rowcount > 0){
  3680. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  3681. ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3682. if( ds_main_recdetailgruplist.getColumn(i, "supcd") == "00000000" ){//level이 상위레벨일때
  3683. //그리드 체크박스 readonly true로 변경
  3684. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  3685. }else{
  3686. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "0");
  3687. }
  3688. }
  3689. }
  3690. }
  3691. }
  3692. //ds_main_recdetailgruplist.updatecontrol = true;
  3693. //ds_main_recdetailgruplist.enableevent = true;
  3694. }
  3695. //과거기록에 대한 최신적용 임시 개발
  3696. function fPreChkTrue(){
  3697. //ds_main_recdetailgruplist.enableevent = false;
  3698. if(ds_cond.getColumn(ds_cond.rowposition,"maddchk01") =="Y" ||
  3699. ds_cond.getColumn(ds_cond.rowposition,"maddchk02") =="Y" ||
  3700. //ds_cond.getColumn(ds_cond.rowposition,"maddchk03") =="Y" ||
  3701. //ds_cond.getColumn(ds_cond.rowposition,"maddchk04") =="Y" ||
  3702. ds_cond.getColumn(ds_cond.rowposition,"maddchk05") =="Y" ||
  3703. ds_cond.getColumn(ds_cond.rowposition,"maddchk06") =="Y" ||
  3704. ds_cond.getColumn(ds_cond.rowposition,"haddchk") =="Y" ||
  3705. ds_cond.getColumn(ds_cond.rowposition,"haddchk01") =="Y" ||
  3706. ds_cond.getColumn(ds_cond.rowposition,"haddchk02") =="Y" ||
  3707. ds_cond.getColumn(ds_cond.rowposition,"haddchk03") =="Y"
  3708. ){
  3709. if( ds_main_recdetailgruplist.rowcount > 0){
  3710. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  3711. //trace(ds_main_recdetailgruplist.getColumn(i,"basepnt"));
  3712. //trace(ds_main_recdetailgruplist.getColumn(i,"basepnt"));
  3713. if( !utlf_isNull(ds_main_recdetailgruplist.getColumn(i,"basepnt")) ){
  3714. if(ds_main_recdetailgruplist.getColumn(i,"basepnt") == 0){
  3715. ds_main_recdetailgruplist.setColumn(i,"flag","Y");
  3716. ds_main_recdetailgruplist.setColumn(i,"grupmulti","0");
  3717. }else{
  3718. ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3719. ds_main_recdetailgruplist.setColumn(i,"grupmulti","");
  3720. }
  3721. }
  3722. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  3723. }
  3724. }
  3725. }
  3726. //ds_main_recdetailgruplist.enableevent = true;
  3727. }
  3728. function fChkTrue(){
  3729. trace(ds_main_recgruplist.getColumn(ds_main_recgruplist.rowposition,"maddchk01"));
  3730. if( ds_main_recdetailgruplist.rowcount > 0){
  3731. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  3732. //trace(ds_main_recdetailgruplist.getColumn(i,"basepnt"));
  3733. if( !utlf_isNull(ds_main_recdetailgruplist.getColumn(i,"basepnt")) ){
  3734. if(ds_main_recdetailgruplist.getColumn(i,"basepnt") == 0){
  3735. ds_main_recdetailgruplist.setColumn(i,"flag","Y");
  3736. }else{
  3737. ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3738. }
  3739. }
  3740. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "1");
  3741. }
  3742. }
  3743. }
  3744. function fChkFalse(){
  3745. if( ds_main_recdetailgruplist.rowcount > 0){
  3746. for( var i = 0; i < ds_main_recdetailgruplist.rowcount; i++ ){
  3747. ds_main_recdetailgruplist.setColumn(i,"flag","N");
  3748. ds_main_recdetailgruplist.setColumn(i, "chkTrue", "0");
  3749. }
  3750. }
  3751. }
  3752. ]]></Script>