SMMNW4700.xjs 151 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. (SMMNW04700.xfm - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - Desc : 피부욕창상처기록및 피부욕창 팝업이미지 에서 사용하는 스크립트
  7. - 가정간호에서 팝업띄워 기록및 조회
  8. */
  9. /******************************************************************************************************************************************************/
  10. /****************************************************** 피부욕창기록에서 사용하는 펑션 시작************************************************************/
  11. /******************************************************************************************************************************************************/
  12. var xCondPath = "/root/cond"; // 조회조건 xPath
  13. var xBedsoreGridPath = ds_main_detlgrup_detlgruplist; // 그리드 xPath
  14. var xClsListBKPath = ds_hidden_main_detlgrup_detlgruplist; // 그리드 hidden xPath
  15. var xPamInfoPath = 'ds_temp_paminfo';
  16. var xSearchPamInfoPath = ds_main_patinfo_patinfolist;
  17. //가정간호 parameter를 global variable로 선언
  18. var HC_homecarecd = '';
  19. var HC_ioflag = '';
  20. var HC_isHomeCare = '';
  21. var HC_gCareFlag = '';
  22. var HC_gInptDt = '';
  23. //통합기록조회
  24. var ViewFunc = "sign"; //sign : 기록인증용, view : view인증용
  25. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  26. //+++++++++++++++++++++++++++++++++++++++++++ 조회관련 펑션 모음 시작 ++++++++++++++++++++++++++++++++++++++++++++++//
  27. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  28. /**
  29. * @group :
  30. * @ver : 2007.09. 06
  31. * : 2008.05.28 dhkim 수정
  32. * @by : 정찬성
  33. * @----------------------------------------------------------------------------------------------------------------------------------------------------
  34. * @type : function
  35. * @access : public
  36. * @desc : 화면을 초기화한다. 화면로딩이 끝난 시점에 호출된다.
  37. * @param :
  38. * @return :
  39. * @----------------------------------------------------------------------------------------------------------------------------------------------------
  40. */
  41. function finit(){
  42. //조회조건을 세팅한다.
  43. ds_cond.setColumn(0, "indsch", "1");
  44. ds_cond.setColumn(0, "stdradio", "2"); // 종료전(최근입력만) 선택
  45. ds_cond.setColumn(0, "genrdd", utlf_getCurrentDate()); // 기준일에 현재날짜(디폴트)
  46. ds_cond.setColumn(0, "genrtm", utlf_getCurrentDateTime().substring(9,13)); // 기준시간 셋팅
  47. fGetNursHardCdInfo("'002','U30','R11'", utlf_getCurrentDate()); // '002' 응급의료센터 여부 조회, 160512_AYS_발생장소(원내) 제어코드(R11)추가 //ds_codelist를 받아옴
  48. ds_cond.setColumn(0, "wardcd", sysf_getUserInfo("dutplcecd"));
  49. var useyn = ds_codelist.getColumn(ds_codelist.findRow("cdgrupid", "U30"), "cdid");
  50. if(useyn == "N") {
  51. group5.grd_detlgrup.setRealColSize(group5.grd_detlgrup.getBindCellIndex("body", "pushyn")-1, 0);
  52. } else {
  53. group5.grd_detlgrup.setRealColSize(group5.grd_detlgrup.getBindCellIndex("body", "pushyn")-1, group5.grd_detlgrup.getFormatColSize(group5.grd_detlgrup.getBindCellIndex("body", "pushyn")));
  54. }
  55. //상단정보를 가져온다.
  56. var isOpener = fSetPatInfo();
  57. //가정간호 parameter 세팅
  58. if( frmf_checkOpener() ){
  59. HC_isHomeCare = fSetHomeCareParamter();
  60. }
  61. //병동 조회
  62. var oParam = {};
  63. oParam.id = "TRMNW04705";
  64. oParam.service = "wardcareapp.WardCareMngt";
  65. oParam.method = "reqGetWMInitData";
  66. oParam.inds = "reqcond=ds_cond";
  67. oParam.outds = "ds_init_ward=ward ds_init_settinginfo_settingrn=settingrn";
  68. oParam.async = false;
  69. oParam.callback = "cf_TRMNW04705";
  70. tranf_submit(oParam);
  71. if( arErrorCode.pop("TRMNW04705") < 0 ){
  72. sysf_messageBox('화면 초기화를', 'E009');
  73. return;
  74. }
  75. //그리드에 들어갈 공통코드리스트 조회
  76. var oParam = {};
  77. oParam.id = "TRMNW04701";
  78. oParam.service = "wardcareapp.WardCareRec";
  79. oParam.method = "reqGetObsBaseDataComboList";
  80. oParam.inds = "refCond=ds_cond";
  81. oParam.outds = "ds_hidden_codelist_getVOCause=getVOCause ds_hidden_codelist_getVOStage=getVOStage ds_hidden_codelist_getVOColor=getVOColor ds_hidden_codelist_getVOState=getVOState ds_hidden_codelist_getVOAmount=getVOAmount ds_hidden_codelist_getVOSympTom=getVOSympTom ds_hidden_codelist_getVOAngle=getVOAngle ds_hidden_codelist_getVODressing=getVODressing";
  82. oParam.async = false;
  83. oParam.callback = "cf_TRMNW04701";
  84. tranf_submit(oParam);
  85. if( arErrorCode.pop("TRMNW04701") < 0 ){
  86. sysf_messageBox('화면 초기화를', 'E009');
  87. return;
  88. }
  89. var indschacptstat = ds_temp_paminfo.getColumn(0, "indschacptstat");
  90. if( utlf_isNull(HC_homecarecd)) {
  91. fGetZoneList(); //CareCom.js 응급실구역정보조회
  92. fnZoneDisp();
  93. fSettingnurid();
  94. if( utlf_isNull(indschacptstat) || indschacptstat == "A" ){
  95. fGetWardPatList();
  96. }
  97. }else{
  98. group5.grp_sea.ctn_pid.visible = true;
  99. group5.grp_sea.cmb_patientnm.visible = true;
  100. group5.grp_sea.ipt_pid.visible = true;
  101. }
  102. //상단정보가 있으면 바로 조회
  103. if( isOpener || HC_isHomeCare ){
  104. var pid = ds_temp_paminfo.getColumn(0, "pid");
  105. fSetInDsch(indschacptstat);
  106. if( !utlf_isNull(pid) ){
  107. if( ds_temp_paminfo.getColumn(0, "ioflag") != "E" && ds_temp_paminfo.getColumn(0, "careinrmdd") == "-" ){
  108. sysf_messageBox("아직 입실확인하지 않은 환자입니다.", "I");
  109. //return;
  110. }
  111. ds_main_wardpatinfo_wardpatlist.rowposition = ds_main_wardpatinfo_wardpatlist.findRow("pid", pid);
  112. fSearch();
  113. }
  114. }
  115. }
  116. function cf_TRMNW04705(sSvcId, nErrorCode, sErrorMsg) {
  117. arErrorCode.push(sSvcId, nErrorCode);
  118. }
  119. function cf_TRMNW04701(sSvcId, nErrorCode, sErrorMsg) {
  120. arErrorCode.push(sSvcId, nErrorCode);
  121. }
  122. /**
  123. * @ver : 2008.06.12
  124. * @author : dhkim
  125. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  126. * @type : function
  127. * @access : public
  128. * @param :
  129. * @return : true/false (true는 가정간호 parameter정상 세팅/ false는 리턴)
  130. * @desc : 가정간호의 parameter를 넘겨받은 경우에는 조회조건에 parameter값을 setting한다.
  131. * 입원의 경우에는 병동, 병실정보, 등록번호, 환자명을 조회영역에 세팅한다.
  132. * 외래의 경우에는 병동, 병실정보 및 중증도점수 조회영역을 hidden시키고 등록번호, 환자명을 조회영역에 세팅한다.
  133. * [가정간호에서 받아오는 parameter]
  134. * - homecarecd : 3090100000 (가정간호를 구분하기 위한 부서코드)
  135. * - ioflag : I/O (I:입원, O:외래)
  136. * - pid : 등록번호
  137. * - hngnm : 환자명
  138. * - wardcd : 병동코드
  139. * - roomcd : 병실코드
  140. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  141. */
  142. function fSetHomeCareParamter(){
  143. //가정간호 parameter를 가져온다.
  144. ds_hidden_homecareparam.clearData();
  145. HC_homecarecd = opener.frmf_getParameter('homecarecd');//'3090100000';//'3090100000';//
  146. HC_ioflag = opener.frmf_getParameter('ioflag');//'O';//'I';//
  147. var pid = opener.frmf_getParameter('pid'); //'551121110';//'11524296';//
  148. var hngnm = opener.frmf_getParameter('hngnm'); //'김미연';//'이상월';//
  149. var wardcd = opener.frmf_getParameter('wardcd');//'';//'3050107000';//
  150. var roomcd = opener.frmf_getParameter('roomcd');//'';//'4003';//
  151. var orddd = opener.frmf_getParameter('orddd');
  152. var cretno = opener.frmf_getParameter('cretno');
  153. var orddrid = opener.frmf_getParameter('orddrid');
  154. var orddeptcd = opener.frmf_getParameter('orddeptcd');
  155. HC_gCareFlag = opener.frmf_getParameter('careflag');
  156. HC_gInptDt = opener.frmf_getParameter('inptdt');
  157. // alert('homcarecd :' + HC_homecarecd + ', hc_ioflag :' + HC_ioflag + ', pid : ' + pid + ', hngnm : ' + hngnm + ', wardcd : ' + wardcd + ', roomcd : ' + roomcd);
  158. //외래/입원의 경우에 따라 조회영역을 visible/hidden처리
  159. fHiddenRoomWard(HC_ioflag);
  160. //가정간호구분자가 널이면 리턴
  161. if( !utlf_isNull(HC_homecarecd) ){
  162. if( utlf_isNull(pid) ){
  163. sysf_messageBox('필수정보가 없으므로 기록을 조회할 수', 'I004');
  164. return false;
  165. }else{
  166. ds_data_patientgruplist.clearData();
  167. ds_data_patientgruplist.addRow();
  168. ds_data_patientgruplist.setColumn(0, "patientnm", hngnm);
  169. ds_data_patientgruplist.setColumn(0, "pid", pid);
  170. ds_data_patientgruplist.setColumn(0, "indd", orddd);
  171. ds_data_patientgruplist.setColumn(0, "cretno", cretno);
  172. ds_data_patientgruplist.setColumn(0, "orddrid", orddrid);
  173. ds_data_patientgruplist.setColumn(0, "orddeptcd", orddeptcd);
  174. ds_data_patientgruplist.setColumn(0, "ordtype", HC_ioflag);
  175. ds_cond.setColumn(0, "patientnm", pid);
  176. ds_cond.setColumn(0, "pid", pid);
  177. // if(HC_ioflag == 'O'){
  178. // //환자명 combonode, input pid set
  179. // model.removenode('/root/patientgrup/patientgruplist');
  180. // model.makeValue('/root/patientgrup/patientgruplist/patientnm', hngnm);
  181. // model.makeValue('/root/patientgrup/patientgruplist/pid' , pid);
  182. // model.makeValue('/root/patientgrup/patientgruplist/indd' , orddd);
  183. // model.makeValue('/root/patientgrup/patientgruplist/cretno' , cretno);
  184. // model.makeValue('/root/patientgrup/patientgruplist/orddrid' , orddrid);
  185. // model.makeValue('/root/patientgrup/patientgruplist/orddeptcd', orddeptcd);
  186. // model.makeValue('/root/patientgrup/patientgruplist/ordtype', HC_ioflag);
  187. // model.setValue(cmb_patientnm.attribute('ref') , pid);
  188. // model.setValue(ipt_pid.attribute('ref') , pid);
  189. // model.refresh();
  190. // }else if(HC_ioflag == 'I'){
  191. // //pid를 가지고 병실, 병동 정보를 찾는다.
  192. // fSetWardRoomPidInfo(wardcd, roomcd, pid);
  193. // }
  194. return true;
  195. }
  196. }else{
  197. return false;
  198. }
  199. }
  200. /**
  201. * @ver : 2008.06.12
  202. * @author : dhkim
  203. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  204. * @type : function
  205. * @access : public
  206. * @param : ioflag I/O (I:입원, O:외래)
  207. * @return :
  208. * @desc : 입원의 경우에는 병동, 병실정보, 등록번호, 환자명을 조회영역에 visible.
  209. * 외래의 경우에는 병동, 병실정보 및 중증도점수 조회영역을 hidden.
  210. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  211. */
  212. function fHiddenRoomWard(ioflag){
  213. if( !utlf_isNull(HC_homecarecd) ){
  214. group5.grp_sea.grp_icupnt.visible = false;
  215. group5.grp_sea.ctn_ward.visible = false;
  216. group5.grp_sea.cmb_wardcd.visible = false;
  217. group5.grp_sea.ctn_room.visible = false;
  218. group5.grp_sea.cmb_roomcd.visible = false;
  219. group5.grp_sea.cap_Zone.visible = false;
  220. group5.grp_sea.cmb_Zone.visible = false;
  221. group5.grp_sea.cap_settingrn.visible = false;
  222. group5.grp_sea.cmb_settingrn.visible = false;
  223. group5.grp_sea.btn_patSearch.visible = true;
  224. group5.grp_sea.ctn_searchflag.position.top = 14;
  225. group5.grp_sea.rdo_stdradio.position.top = 14;
  226. group5.grd_wardpatlist.visible = false;
  227. group5.grd_detlgrup.position.left = 0;
  228. group5.grd_detlgrup.position.width = 1195;
  229. group1.rdo_indsch.visible = false;
  230. }else{
  231. if( ioflag == 'O' ){
  232. group5.grp_sea.grp_icupnt.visible = false;
  233. group5.grp_sea.ctn_ward.visible = false;
  234. group5.grp_sea.cmb_wardcd.visible = false;
  235. group5.grp_sea.ctn_room.visible = false;
  236. group5.grp_sea.cmb_roomcd.visible = false;
  237. group5.grp_sea.cap_Zone.visible = false;
  238. group5.grp_sea.cmb_Zone.visible = false;
  239. group5.grp_sea.cap_settingrn.visible = false;
  240. group5.grp_sea.cmb_settingrn.visible = false;
  241. group5.grp_sea.btn_patSearch.visible = true;
  242. group5.grp_sea.ctn_searchflag.position.top = 14;
  243. group5.grp_sea.rdo_stdradio.position.top = 14;
  244. group5.grd_wardpatlist.visible = false;
  245. group5.grd_detlgrup.position.left = 0;
  246. group5.grd_detlgrup.position.width = 1195;
  247. group1.rdo_indsch.visible = false;
  248. }else{
  249. group5.grp_sea.grp_icupnt.visible = true;
  250. group5.grp_sea.ctn_ward.visible = true;
  251. group5.grp_sea.cmb_wardcd.visible = true;
  252. group5.grp_sea.ctn_room.visible = false;
  253. group5.grp_sea.cmb_roomcd.visible = false;
  254. group5.grp_sea.cap_Zone.visible = false;
  255. group5.grp_sea.cmb_Zone.visible = false;
  256. group5.grp_sea.cap_settingrn.visible = true;
  257. group5.grp_sea.cmb_settingrn.visible = true;
  258. group5.grp_sea.btn_patSearch.visible = false;
  259. group5.grp_sea.ctn_searchflag.position.top = 47;
  260. group5.grp_sea.rdo_stdradio.position.top = 47;
  261. group5.grd_wardpatlist.visible = true;
  262. group5.grd_detlgrup.position.left = 215;
  263. group5.grd_detlgrup.position.width = 980;
  264. group1.rdo_indsch.visible = true;
  265. }
  266. }
  267. }
  268. /**
  269. * @ver : 2008.06.12
  270. * @author : dhkim
  271. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  272. * @type : function
  273. * @access : public
  274. * @param : wardcd 병동코드
  275. * @param : roomcd 병실코드
  276. * @param : pid 등록번호
  277. * @return :
  278. * @desc : pid를 가지고 병실, 병동 정보를 찾아서 조회영역에 병동, 병실, 환자명, 등록번호를 세팅한다.
  279. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  280. */
  281. function fSetWardRoomPidInfo(wardcd, roomcd, pid){
  282. group5.grp_sea.cmb_wardcd.value = wardcd; //병동코드 세팅
  283. fSearchRoomcd(wardcd); //병동에 해당되는 병실조회
  284. group5.grp_sea.cmb_roomcd.value = roomcd; //병실코드 세팅
  285. fSearchPatInfo(wardcd, roomcd); //병실에 해당되는 환자조회
  286. var hngnm = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "hngnm") : appf_getPatientInfoDetail('hngnm') );
  287. var indd = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "indd") : appf_getPatientInfoDetail('indd') );
  288. var cretno = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "cretno") : appf_getPatientInfoDetail('cretno') );
  289. var orddeptcd = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "orddeptcd") : appf_getPatientInfoDetail('orddeptcd') );
  290. var medispclid = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "medispclid") : appf_getPatientInfoDetail('medispclid') );
  291. var ordtype = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "ordtype") : appf_getPatientInfoDetail('ioflag') );
  292. var dschdd = ( appf_getPatientInfoDetail('pid')== false ? xSearchPamInfoPath.getColumn(0, "dschdd") : appf_getPatientInfoDetail('dschdd') );
  293. //퇴원환자의 경우 환자이름에 조회되지 않으므로 콤보아이템을 추가
  294. if( utlf_isNull(ds_data_patientgruplist.getColumn(ds_data_patientgruplist.findRow("pid", pid), "patientnm")) ){
  295. frmf_addComboItem("group5.grp_sea.cmb_patientnm", hngnm, pid, "above");
  296. ds_cond.setColumn(0, "patientnm", pid);
  297. ds_cond.setColumn(0, "pid", pid);
  298. dsf_makeValue(ds_data_patientgruplist, "patientnm", "string", hngnm, 0);
  299. dsf_makeValue(ds_data_patientgruplist, "indd", "string", indd, 0);
  300. dsf_makeValue(ds_data_patientgruplist, "cretno", "string", cretno, 0);
  301. dsf_makeValue(ds_data_patientgruplist, "orddeptcd", "string", orddeptcd, 0);
  302. dsf_makeValue(ds_data_patientgruplist, "orddrid", "string", medispclid, 0);
  303. dsf_makeValue(ds_data_patientgruplist, "ordtype", "string", ordtype, 0);
  304. dsf_makeValue(ds_data_patientgruplist, "dschdd", "string", dschdd, 0);
  305. // cmb_patientnm.disabled = true;
  306. }else{
  307. // cmb_patientnm.value = pid; //등록번호 세팅
  308. // cmb_patientnm.disabled = false;
  309. }
  310. group5.grp_sea.ipt_pid.value = pid; //등록번호 세팅
  311. }
  312. /**
  313. * @ver : 2008.06.12
  314. * @author : dhkim
  315. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  316. * @type : function
  317. * @access : public
  318. * @param : pid - 등록번호
  319. * @return :
  320. * @desc : 등록번호만 입력된 상태일때는 병동, 병실정보를 알수 없으므로
  321. * 해당 등록번호의 환자의 병동정보를 조회해온다.
  322. * @----------------------------------------------------------------------------------------------------------------------------------------------------------
  323. */
  324. function fGetPidWardInfo(pid){
  325. if( HC_isHomeCare ){
  326. sysf_messageBox('가정간호대상 환자입니다. 환자정보 조회를', 'E001');
  327. return;
  328. }
  329. if( !utlf_isNull(pid) ){
  330. ds_main_patinfo_patinfolist.clearData();
  331. ds_send.setColumn(0, "pid", ds_cond.getColumn(0, "pid"));
  332. if( appf_getPatientInfoDetail('indschacptstat') == "D"
  333. || appf_getPatientInfoDetail('indschacptstat') == "T" ){
  334. ds_send.setColumn(0, "indd", appf_getPatientInfoDetail('indd'));
  335. }
  336. var oParam = {};
  337. oParam.id = "TRMNW04707";
  338. oParam.service = "wardcareapp.WardCareRec";
  339. oParam.method = "reqGetPatWardInfo";
  340. oParam.inds = "req=ds_cond";
  341. oParam.outds = "ds_main_patinfo_patinfolist=patinfolist";
  342. oParam.async = false;
  343. oParam.callback = "cf_TRMNW04707";
  344. tranf_submit(oParam);
  345. if( arErrorCode.pop("TRMNW04707") < 0 ){
  346. sysf_messageBox('환자정보 조회를', 'E009');
  347. return;
  348. }else{
  349. var wardcd = ds_main_patinfo_patinfolist.getColumn(0, "wardcd"); //병동코드,
  350. var roomcd = ds_main_patinfo_patinfolist.getColumn(0, "roomcd"); //병실코드
  351. var pid = ds_main_patinfo_patinfolist.getColumn(0, "pid"); //등록번호
  352. //가정간호의 경우는 상단정보가 아닌 parameter에서 받아온다
  353. //가정간호에서 팝업을 띄운 환자의 경우엔 skip한다. 20091006 김홍점 병동병실정보 세팅 불필요
  354. // if(HC_isHomeCare){
  355. // wardcd = opener.javascript.getParameter('wardcd');
  356. // roomcd = opener.javascript.getParameter('roomcd');
  357. // pid = opener.javascript.getParameter('pid');
  358. // }
  359. //pid를 가지고 병실, 병동 정보를 찾는다.
  360. fSetWardRoomPidInfo(wardcd, roomcd, pid);
  361. }
  362. }
  363. }
  364. function cf_TRMNW04707(sSvcId, nErrorCode, sErrorMsg) {
  365. arErrorCode.push(sSvcId, nErrorCode);
  366. }
  367. /**
  368. * @group :
  369. * @ver : 2008.05.27
  370. * @by : dhkim
  371. * @------------------------------------------------------------------------------------------------------------------------------------------------
  372. * @type : function
  373. * @access : public
  374. * @desc : 상단정보를 세팅한다.
  375. * @param :
  376. * @return : true/false - 상단정보 있을때 true, 없을때 false
  377. * @------------------------------------------------------------------------------------------------------------------------------------------------
  378. */
  379. function fSetPatInfo(){
  380. ds_temp_paminfo.clearData();
  381. var paminfo = sysf_getGlobalVariable("paminfo");
  382. var pid = "";
  383. var wardcd = "";
  384. if( utlf_transNullToEmpty(paminfo).length > 0 ){
  385. dsf_setCSVToDs("ds_temp_paminfo", paminfo); //환자정보내리기
  386. if( utlf_isNull(ds_temp_paminfo.getColumnInfo("sectioncd")) ){
  387. ds_temp_paminfo.addColumn("sectioncd", "string");
  388. ds_temp_paminfo.setColumn(0, "sectioncd", ds_temp_paminfo.getColumn(0, "basetypecd"));
  389. }
  390. }
  391. var node = appf_getPatientInfoDetails(xPamInfoPath) ;
  392. if( utlf_isNull(ds_temp_paminfo.getColumnInfo("diag")) ){
  393. ds_temp_paminfo.addColumn("diag", "string");
  394. }
  395. var pid = '';
  396. var hngnm = '';
  397. var wardcd = '';
  398. var roomcd = '';
  399. var isOpener = false;
  400. if( frmf_checkOpener() ){
  401. pid = appf_getPatientInfoDetail('pid');
  402. hngnm = appf_getPatientInfoDetail('hngnm');
  403. wardcd = appf_getPatientInfoDetail('wardcd');
  404. roomcd = appf_getPatientInfoDetail('roomcd');
  405. if( !utlf_isNull(pid) ){
  406. isOpener = true;
  407. }
  408. }
  409. if( !utlf_isNull(pid) && !utlf_isNull(hngnm) && !utlf_isNull(wardcd) && !utlf_isNull(roomcd) ){
  410. //콤보에서 끌고 오기 위한 병실, 환자정보 조회
  411. fSearchRoomcd(wardcd);
  412. fSearchPatInfo(wardcd, roomcd);
  413. //상단정보를 세팅
  414. ds_cond.setColumn(0, "wardcd", wardcd);
  415. ds_cond.setColumn(0, "roomcd", roomcd);
  416. //퇴원환자의 경우 환자이름에 조회되지 않으므로 콤보아이템을 추가
  417. if( utlf_isNull(ds_data_patientgruplist.getColumn(ds_data_patientgruplist.findRow("pid", pid), "patientnm")) ){
  418. frmf_addComboItem("group5.grp_sea.cmb_patientnm", appf_getPatientInfoDetail('hngnm'), pid, "above");
  419. ds_cond.setColumn(0, "patientnm", pid);
  420. ds_cond.setColumn(0, "pid", pid);
  421. dsf_makeValue(ds_data_patientgruplist, "indd", "string", appf_getPatientInfoDetail('indd'), 0);
  422. dsf_makeValue(ds_data_patientgruplist, "cretno", "string", appf_getPatientInfoDetail('cretno'), 0);
  423. dsf_makeValue(ds_data_patientgruplist, "orddeptcd", "string", appf_getPatientInfoDetail('orddeptcd'), 0);
  424. dsf_makeValue(ds_data_patientgruplist, "orddrid", "string", appf_getPatientInfoDetail('medispclid'), 0);
  425. dsf_makeValue(ds_data_patientgruplist, "ordtype", "string", appf_getPatientInfoDetail('ioflag'), 0);
  426. //cmb_patientnm.disabled = true;
  427. }else{
  428. ds_cond.setColumn(0, "patientnm", pid);
  429. ds_cond.setColumn(0, "pid", pid);
  430. //cmb_patientnm.disabled = false;
  431. }
  432. ds_cond.setColumn(0, "pid", pid);
  433. }
  434. return isOpener;
  435. }
  436. /**
  437. * @group :
  438. * @ver : 2008.05.27
  439. * @by : dhkim
  440. * @------------------------------------------------------------------------------------------------------------------------------------------------
  441. * @type : function
  442. * @access : public
  443. * @desc : 병동코드에 해당되는 병실정보 조회
  444. * @param :
  445. * @return :
  446. * @------------------------------------------------------------------------------------------------------------------------------------------------
  447. */
  448. function fSearchRoomcd(wardcd){
  449. //병실정보 clear
  450. ds_cond.setColumn(0, "roomcd", "");
  451. ds_data_roomcdgruplist.clearData();
  452. //해당 병실 환자정보 clear
  453. ds_cond.setColumn(0, "patientnm", "");
  454. ds_cond.setColumn(0, "pid", "");
  455. ds_data_patientgruplist.clearData();
  456. //cmb_patientnm.disabled = false;
  457. //선택한 병동에 해당되는 병실 조회
  458. if( utlf_isNull(wardcd) ){
  459. wardcd = ds_cond.getColumn(0, "wardcd");
  460. eval(xPamInfoPath).clearData();
  461. fInitTopInfo();
  462. }
  463. fGetCareComRoomList(wardcd); //ds_roomcdgrup_roomcdgruplist => ds_data_roomcdgruplist
  464. }
  465. /**
  466. * @group :
  467. * @ver : 2008.05.27
  468. * @by : dhkim
  469. * @------------------------------------------------------------------------------------------------------------------------------------------------
  470. * @type : function
  471. * @access : public
  472. * @desc : 병실코드에 해당되는 환자정보 조회
  473. * @param :
  474. * @return :
  475. * @------------------------------------------------------------------------------------------------------------------------------------------------
  476. */
  477. function fSearchPatInfo(wardcd, roomcd){
  478. //해당 병실 환자정보 clear
  479. ds_cond.setColumn(0, "patientnm", "");
  480. ds_cond.setColumn(0, "pid", "");
  481. ds_data_patientgruplist.clearData();
  482. //선택한 병동, 병실에 해당되는 환자 조회
  483. if( utlf_isNull(wardcd) ){
  484. wardcd = ds_cond.getColumn(0, "wardcd");
  485. //cmb_patientnm..disabled = false;
  486. eval(xPamInfoPath).clearData();
  487. fInitTopInfo();
  488. }
  489. if( utlf_isNull(roomcd) ) roomcd = ds_cond.getColumn(0, "roomcd");
  490. fGetCareComPatList(wardcd, roomcd); //ds_patientgrup_patientgruplist => ds_data_patientgruplist
  491. }
  492. /**
  493. * @group :
  494. * @ver : 2007.09.06
  495. * : 2008.05.28 dhkim 수정
  496. * @by : 정찬성
  497. * @------------------------------------------------------------------------------------------------------------------------------------------------
  498. * @type : function
  499. * @access : public
  500. * @desc : 조회버튼
  501. * @param :
  502. * @return :
  503. * @------------------------------------------------------------------------------------------------------------------------------------------------
  504. */
  505. function fSearch(Pram){
  506. var pid = "";
  507. var condparam = "";
  508. var indschacptstat = "";
  509. indschacptstat = ds_main_patindschinfo_patindschlist.getColumn(0, "indschacptstat");
  510. if( utlf_isNull(HC_homecarecd) ){
  511. if( Pram == "" || Pram == "click" ){
  512. // 상단정보 올림
  513. condparam = ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "ordtype")
  514. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "pid")
  515. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "indd")
  516. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "cretno")
  517. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "instcd")
  518. + "▦" + ds_cond.getColumn(0, "genrdd");
  519. // frmf_setParameter("condparam", condparam);
  520. //
  521. // frmf_modal("SPMMO08900","SPMMO08900",null,"",1,"","","","","","","","M");
  522. appf_initPatientInfo(condparam); //상단정보 셋팅
  523. }
  524. fSetPatInfo();
  525. pid = ds_cond.getColumn(0, "pid");
  526. if( Pram == "click" ){
  527. //욕창발생부위 추가시 등록번호 필수
  528. if( utlf_isNull(pid) ){
  529. sysf_messageBox("등록번호를 ","C001");
  530. group5.grp_sea.ipt_pid.setFocus();
  531. return false;
  532. }else{
  533. fGetPidWardInfo(pid);
  534. }
  535. ds_cond.setColumn(0, "patientnm", pid);
  536. ds_cond.setColumn(0, "pid", pid);
  537. }
  538. fSearchRecInfo();
  539. //중증도사정및 욕창위험사정 점수조회
  540. if( !HC_isHomeCare ){
  541. var oParam = {};
  542. oParam.id = "TRMNW04703";
  543. oParam.service = "wardcareapp.WardCareRec";
  544. oParam.method = "reqGetBedSorePntList";
  545. oParam.inds = "refCond=ds_send";
  546. oParam.outds = "ds_main_sriusgrup=sriusgrup";
  547. oParam.async = false;
  548. oParam.callback = "cf_TRMNW04703";
  549. tranf_submit(oParam);
  550. if( arErrorCode.pop("TRMNW04703") < 0 ){
  551. sysf_messageBox('중증도사정및 욕창위험사정 점수의 조회를', 'E009');
  552. return false;
  553. }
  554. }
  555. }else{
  556. pid = ds_cond.getColumn(0, "patientnm");
  557. if( utlf_isNull(pid) ){
  558. pid = ds_cond.getColumn(0, "pid");
  559. }else{
  560. //병실내 환자정보 선택시 환자등록번호 setting
  561. ds_cond.setColumn(0, "pid", pid);
  562. }
  563. //욕창발생부위 추가시 등록번호 필수
  564. if( utlf_isNull(pid) ){
  565. sysf_messageBox("등록번호를 ","C001");
  566. group5.grp_sea.ipt_pid.setFocus();
  567. return false;
  568. }
  569. ds_cond.setColumn(0, "patientnm", pid);
  570. ds_cond.setColumn(0, "pid", pid);
  571. fSearchRecInfo();
  572. }
  573. //조회후 그리드의 욕창발생부위, 발생일자를 머지
  574. fMergeGenrAreaDD();
  575. return true;
  576. }
  577. function cf_TRMNW04703(sSvcId, nErrorCode, sErrorMsg) {
  578. arErrorCode.push(sSvcId, nErrorCode);
  579. }
  580. function fSearchRecInfo() {
  581. //조회조건값 세팅
  582. var pid = ds_cond.getColumn(0, "pid");
  583. ds_send.setColumn(0, "pid", ds_cond.getColumn(0, "pid")); //등록번호
  584. ds_send.setColumn(0, "indd", ds_data_patientgruplist.getColumn(ds_data_patientgruplist.findRow("pid", pid), "indd")); //등록번호
  585. ds_send.setColumn(0, "cretno", ds_data_patientgruplist.getColumn(ds_data_patientgruplist.findRow("pid", pid), "cretno")); //등록번호
  586. ds_send.setColumn(0, "homecare", (HC_isHomeCare == true ? "Y" : "")); //가정간호대상자
  587. ds_send.setColumn(0, "careflag", HC_gCareFlag); //가정간호대상자
  588. ds_send.setColumn(0, "inptdt", HC_gInptDt); //가정간호대상자
  589. ds_send.setColumn(0, "genrdd", ds_cond.getColumn(0, "genrdd")); //기준일자(발생일자)
  590. ds_send.setColumn(0, "genrtm", ds_cond.getColumn(0, "genrtm")); //기준시간(발생시간)
  591. ds_send.setColumn(0, "stdradio", ds_cond.getColumn(0, "stdradio")); //조회조건의라디오(전체/종료전(전체)/종료전(최근입력만))
  592. //피부욕창관찰기록 조회
  593. ds_main_detlgrup_detlgruplist.clearData();
  594. var oParam = {};
  595. oParam.id = "TRMNW04702";
  596. oParam.service = "wardcareapp.WardCareRec";
  597. oParam.method = "reqGetObsList";
  598. oParam.inds = "refCond=ds_send";
  599. oParam.outds = "ds_main_detlgrup_detlgruplist=getVO";
  600. oParam.async = false;
  601. oParam.callback = "cf_TRMNW04702";
  602. tranf_submit(oParam);
  603. if( utlf_isNull(ds_main_detlgrup_detlgruplist.getColumnInfo("totpnt")) ){
  604. ds_main_detlgrup_detlgruplist.addColumn("totpnt", "string");
  605. }
  606. if( utlf_isNull(ds_main_detlgrup_detlgruplist.getColumnInfo("clsgrupkind")) ){
  607. ds_main_detlgrup_detlgruplist.addColumn("clsgrupkind", "string");
  608. }
  609. if( utlf_isNull(ds_main_detlgrup_detlgruplist.getColumnInfo("fileimg")) ){
  610. ds_main_detlgrup_detlgruplist.addColumn("fileimg", "string");
  611. }
  612. if( utlf_isNull(ds_main_detlgrup_detlgruplist.getColumnInfo("orddd")) ){
  613. ds_main_detlgrup_detlgruplist.addColumn("orddd", "string");
  614. }
  615. ds_main_detlgrup_detlgruplist.enableevent = false;
  616. ds_main_detlgrup_detlgruplist.updatecontrol = false;
  617. for( var i=0 ; i<ds_main_detlgrup_detlgruplist.rowcount ; i++ ){
  618. if( ds_main_detlgrup_detlgruplist.getColumn(i, "pushyn") == "Y" ){
  619. ds_main_detlgrup_detlgruplist.setColumn(i, "pushyn", "1");
  620. }else{
  621. ds_main_detlgrup_detlgruplist.setColumn(i, "pushyn", "0");
  622. }
  623. if( ds_main_detlgrup_detlgruplist.getColumn(i, "rptsmsflag") == "true" ){
  624. ds_main_detlgrup_detlgruplist.setColumn(i, "rptsmsflag", "1");
  625. }else{
  626. ds_main_detlgrup_detlgruplist.setColumn(i, "rptsmsflag", "0");
  627. }
  628. if( ds_main_detlgrup_detlgruplist.getColumn(i, "rptconfirmflag") == "true" ){
  629. ds_main_detlgrup_detlgruplist.setColumn(i, "rptconfirmflag", "1");
  630. }else{
  631. ds_main_detlgrup_detlgruplist.setColumn(i, "rptconfirmflag", "0");
  632. }
  633. if( ds_main_detlgrup_detlgruplist.getColumn(i, "sel") == "true" ){
  634. ds_main_detlgrup_detlgruplist.setColumn(i, "sel", "1");
  635. }else{
  636. ds_main_detlgrup_detlgruplist.setColumn(i, "sel", "0");
  637. }
  638. }
  639. ds_main_detlgrup_detlgruplist.rowposition = -1;
  640. if( arErrorCode.pop("TRMNW04702") > -1 ){
  641. if( ds_main_detlgrup_detlgruplist.rowcount > 0 ){
  642. for( var i=0 ; i<ds_main_detlgrup_detlgruplist.rowcount ; i++ ){
  643. if( utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substring(0, 10) == "(anterior)" ){
  644. ds_main_detlgrup_detlgruplist.setColumn(i, "obspartnm", "Ant."+utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substr(10));
  645. }
  646. if( utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substring(0,11) == "(posterior)" ){
  647. ds_main_detlgrup_detlgruplist.setColumn(i, "obspartnm", "Post."+utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substr(11));
  648. }
  649. }
  650. }
  651. //그리드변경시 update상태파악위한 노드백업
  652. ds_hidden_main_detlgrup_detlgruplist.assign(ds_main_detlgrup_detlgruplist);
  653. //첨부파일이 존재할때에 그리드에 표시
  654. var fileCnt = 0;
  655. var sExprBack = "expr:";
  656. for( var i=0 ; i<ds_main_detlgrup_detlgruplist.rowcount ; i++ ){
  657. fileCnt = ds_main_detlgrup_detlgruplist.getColumn(i, "addfile");
  658. ds_main_detlgrup_detlgruplist.setColumn(i, "fileimg", "");
  659. if( fileCnt > 0 ){
  660. sExprBack += "currow == "+i+" ? 'IMG::emr/MR/icon_list.gif' : ";
  661. }
  662. }
  663. ds_main_detlgrup_detlgruplist.updatecontrol = true;
  664. ds_main_detlgrup_detlgruplist.enableevent = true;
  665. sExprBack += "''";
  666. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "fileimg"), "expr", sExprBack);
  667. }
  668. }
  669. function cf_TRMNW04702(sSvcId, nErrorCode, sErrorMsg) {
  670. arErrorCode.push(sSvcId, nErrorCode);
  671. }
  672. /**
  673. * @group :
  674. * @ver : 2008.05.28
  675. * @by : dhkim
  676. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  677. * @type : function
  678. * @access : public
  679. * @desc : 조회후 욕창발생부위, 발생일자가 같으면 머지한다.
  680. * @param :
  681. * @return :
  682. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  683. */
  684. function fMergeGenrAreaDD(){
  685. //그리드 property에서 처리
  686. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("obspartnm")) = true;
  687. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("genrdd")) = true;
  688. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("genrtm")) = true;
  689. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("genrplce")) = true; //발생장소추가_20090220_SMY
  690. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("cause")) = true;
  691. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("rptsmsflag")) = false;
  692. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("rptconfirmflag")) = false;
  693. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("sel")) = false;
  694. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("flag")) = true;
  695. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("recdd")) = false;
  696. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("rectm")) = false;
  697. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("sizewidth")) = false;
  698. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("sizeheight")) = false;
  699. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("sizedepth")) = false;
  700. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("stage")) = false;
  701. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("restage")) = false;
  702. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("tissue")) = false;
  703. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("color")) = false;
  704. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("state")) = false;
  705. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("amount")) = false;
  706. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("symptom")) = false;
  707. //
  708. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("underangle")) = false;
  709. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("underdepth")) = false;
  710. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("underangleunit")) = false; //undermining단위추가_20090203_SMY
  711. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("underdepthunit")) = false; //undermining단위추가_20090203_SMY
  712. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("dressing")) = false;
  713. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("addfile")) = false;
  714. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("fileimg")) = false;
  715. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("etc")) = false;
  716. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("recrnm")) = false; //기록자정보추가_20090203_SMY
  717. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("recrid")) = false; //기록자정보추가_20090203_SMY
  718. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("genrplceid")) = false; //발생장소추가_20090220_SMY
  719. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("causeid")) = false;
  720. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("colorid")) = false;
  721. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("symptomid")) = false;
  722. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("underangleid")) = false;
  723. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("dressingid")) = false;
  724. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("pid")) = false;
  725. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("grupcd")) = false;
  726. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("instcd")) = false;
  727. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("obsrecseq")) = false;
  728. // grd_detlgrup.mergeCol(grd_detlgrup.colRef("genrplcewardcd")) = true;
  729. }
  730. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  731. //+++++++++++++++++++++++++++++++++++++++++++ 조회관련 펑션 모음 끝 ++++++++++++++++++++++++++++++++++++++++++++++//
  732. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  733. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  734. //+++++++++++++++++++++++++++++++ 욕창관련 팝업호출관련 펑션모음 시작 ++++++++++++++++++++++++++++++++++++++++++++++//
  735. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  736. /////////////////팝업 오픈 시작////////////////////
  737. /**
  738. * @group :
  739. * @ver : 2008.05.28
  740. * @by : dhkim
  741. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  742. * @type : function
  743. * @access : public
  744. * @desc : 첨부파일팝업을 호출
  745. * @param :
  746. * @return :
  747. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  748. */
  749. function fOpenFilePopup(){
  750. var iRow = group5.grd_detlgrup.currentrow;
  751. var cdColIdx = 0;
  752. var mergeyn = 0;
  753. var pid = xBedsoreGridPath.getColumn(iRow, "pid");
  754. var obsrecseq = xBedsoreGridPath.getColumn(iRow, "obsrecseq");
  755. var grupcd = xBedsoreGridPath.getColumn(iRow, "grupcd");
  756. //수정된 내역이 있으면 피부욕창기록을 먼저 저장하신 후 첨부하세요.
  757. var stat = '';
  758. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  759. stat = xBedsoreGridPath.getColumn(i, "stat");
  760. if( stat != '-' ){
  761. sysf_messageBox('입력하신 피부욕창관찰기록을 먼저 저장하신 후 첨부파일을', 'C002');
  762. return;
  763. }
  764. }
  765. if( !utlf_isNull(obsrecseq) ){
  766. frmf_setParameter('pid', pid);
  767. frmf_setParameter('grupcd', grupcd);
  768. frmf_setParameter('obsrecseq', obsrecseq);
  769. frmf_modal("SPMNW04703","SPMNW04703",null,"",1,100,100,"","","","","","M");
  770. var nHScroll = group5.grd_detlgrup.hscrollbar.pos;
  771. fSearch();
  772. group5.grd_detlgrup.hscrollbar.pos = nHScroll;
  773. }else{
  774. sysf_messageBox('입력하신 피부욕창관찰기록내역을 먼저 저장하신 후', 'C001');
  775. return ;
  776. }
  777. }
  778. /**
  779. * @group :
  780. * @ver : 2008.08.08
  781. * @by : dhkim
  782. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  783. * @desc : undermining팝업 호출
  784. * @type : function
  785. * @access : public
  786. * @param :
  787. * @return :
  788. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  789. */
  790. function fPopupUndermining(){
  791. var iRow = group5.grd_detlgrup.currentrow;
  792. var cdColIdx = 0;
  793. var mergeyn = 0;
  794. var pid = xBedsoreGridPath.getColumn(iRow, "pid");
  795. var obsrecseq = xBedsoreGridPath.getColumn(iRow, "obsrecseq");
  796. var grupcd = xBedsoreGridPath.getColumn(iRow, "grupcd");
  797. //수정된 내역이 있으면 피부욕창기록을 먼저 저장하신 후 기록하세요.
  798. var stat = '';
  799. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  800. stat = xBedsoreGridPath.getColumn(i, "stat");
  801. if( stat != '-' ){
  802. sysf_messageBox('입력하신 피부욕창관찰기록을 먼저 저장하신 후', 'C002');
  803. return;
  804. }
  805. }
  806. if( !utlf_isNull(obsrecseq) ){
  807. frmf_setParameter('pid', pid);
  808. frmf_setParameter('grupcd', grupcd);
  809. frmf_setParameter('obsrecseq', obsrecseq);
  810. frmf_modal("SPMNW04701","SPMNW04701",null,"",1,100,100,"","","","","","M");
  811. var nColPos = group5.grd_detlgrup.hscrollbar.pos;
  812. fSearch();
  813. group5.grd_detlgrup.hscrollbar.pos = nColPos;
  814. }else{
  815. sysf_messageBox('입력하신 피부욕창관찰기록내역을 먼저 저장하신 후', 'C001');
  816. return ;
  817. }
  818. /*
  819. //기준자료 팝업을 호출하기 전 parameter setting
  820. //var preCd = model.getValue(xBedsoreGridPath+'['+(iRow-1)+']/'+colNm+'id');//기존저장되어있던 코드값
  821. //var preNm = model.getValue(xBedsoreGridPath+'['+(iRow-1)+']/'+colNm);//기존저장되어있던 명칭값
  822. var iRow = grd_detlgrup.row;
  823. var cdColIdx = 0;
  824. var mergeyn = 0;
  825. var pid = model.getValue(xBedsoreGridPath + '[' + (iRow-1) + ']/pid');
  826. var obsrecseq = model.getValue(xBedsoreGridPath + '[' + (iRow-1) + ']/obsrecseq');
  827. var grupcd = model.getValue(xBedsoreGridPath + '[' + (iRow-1) + ']/grupcd');
  828. //수정된 내역이 있으면 피부욕창기록을 먼저 저장하신 후 등록하세요.
  829. var stat = '';
  830. for(var i = 2 ; i < grd_detlgrup.rows; i++){
  831. stat = model.getValue(xBedsoreGridPath + '[' + (i - 1) + ']/stat');
  832. if(stat != '-'){
  833. messageBox('입력하신 피부욕창관찰기록을 먼저 저장하신 후', 'C002');
  834. return;
  835. }
  836. }
  837. //신규로 입력한 경우에 피부욕창관찰기록내역을 먼저 저아하신 후 등록하세요.
  838. if(obsrecseq == "") {
  839. messageBox('입력하신 피부욕창관찰기록내역을 먼저 저장하신 후', 'C001');
  840. return ;
  841. }
  842. /*********************************************************************************** /
  843. //미구현내역 =====undermining입력시 multi체크할때에 행추가로 보여지면서 merge되도록할것**** /
  844. /* type - 1 : undermining 팝업
  845. - 2 : multi select 팝업
  846. * /
  847. //multi팝업과 undermining팝업을 구분
  848. setParameter("type", "1");
  849. //undermining기준자료팝업 호출
  850. modal("SPMNW04701",1, event.screenX-200, event.screenY+50);
  851. var retClosParam = getParameter("returnnull");
  852. var retCDParam = '';
  853. var retNMParam = '';
  854. if(retClosParam != "close"){
  855. if(model.getValue(xBedsoreGridPath +"[" + (iRow-1) + "]/stat") != "i") {
  856. model.setValue(xBedsoreGridPath +"[" + (iRow-1) + "]/stat","u");
  857. }
  858. retNMParam = getParameter("underanglecdnm");
  859. retCDParam = getParameter("underanglecd");
  860. } else {
  861. return ;
  862. }
  863. alert(retNMParam + ' ' + retCDParam);
  864. model.makeNode("/root/tmp/griddata");
  865. model.copyNode("/root/tmp/griddata", xBedsoreGridPath +"[" + (iRow-1) + "]");
  866. var arr = retNMParam.split(",");
  867. arr2 = retCDParam.split(",");
  868. //선택한 젤 첫번째 row는 insert안 하고
  869. model.setValue(xBedsoreGridPath + "[" + (iRow+i) + "]/stat2", "i")
  870. for(var i = 0; i < (arr.length -1); i++) {
  871. //팝업에서 선택한 것 만큼 행추가
  872. grd_detlgrup.insertRow(iRow + i, "below");
  873. //그리드 인서트 상태에 마스터 내용을 뿌려줌.
  874. model.copyNode(xBedsoreGridPath +"[" + (iRow+i) + "]", "/root/tmp/griddata");
  875. //undermining 상태 적용 (무조건 신규)-->서버단에서 해당그룹 모두 삭제후 다시 insert
  876. model.setValue(xBedsoreGridPath + "[" + (iRow+i) + "]/stat2", "i");
  877. }
  878. grd_detlgrup.refresh();
  879. */
  880. }
  881. /**
  882. * @group :
  883. * @ver : 2008.05.28
  884. * @by : dhkim
  885. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  886. * @type : function
  887. * @access : public
  888. * @desc : 욕창발생부위 팝업호출
  889. * @param :
  890. * @return :
  891. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  892. */
  893. function fPopupBedSoreImg(){
  894. var iRow = group5.grd_detlgrup.currentrow;
  895. var iCol = group5.grd_detlgrup.currentcol;
  896. var obsrecseq = xBedsoreGridPath.getColumn(xBedsoreGridPath.rowposition, "obsrecseq");
  897. //팝업창에 부위 값이 있으면 기존값 셋팅
  898. //이미저장되어있으면 수정하지 못하도록 확인버튼을 막아주는 flag를 set한다.
  899. if( !utlf_isNull(group5.grd_detlgrup.getCellText(iRow, 2)) ){
  900. frmf_setParameter("partall", group5.grd_detlgrup.getCellText(iRow, 3));
  901. if(obsrecseq > 0){
  902. frmf_setParameter('editable', 'f');
  903. }
  904. }else{
  905. frmf_setParameter('editable', 't');
  906. }
  907. // 환자 기록부분 선택 팝업
  908. frmf_modal("SMMNW04701","SMMNW04701",null,"",1,system.clientToScreenX(this, this.position.left)-200,system.clientToScreenY(this, this.position.top)+50,"","","","","","M"); //이미지호출 //yjh1
  909. //팝업에서 아무것도 선택하지 않고 close를 눌렀을때..
  910. if( frmf_getParameter("returnnull") == "close" ){
  911. return ;
  912. } else {
  913. //욕창발생부위 값을 grid에 set
  914. var retStr = frmf_getParameter('retStr');
  915. xBedsoreGridPath.setColumn(iRow, "obspartnm", retStr);
  916. //그리드 상태값 변경
  917. var stat = xBedsoreGridPath.getColumn(xBedsoreGridPath.rowposition, "stat");
  918. if( stat != "i" ){
  919. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "stat", "u");
  920. } else {
  921. //욕창발생부위의 추가시 해당 부위에 대해
  922. //동일한 발생부위+발생일자+발생시간+원인의 '종료'가 없으면
  923. //그 부위를 추가할수 없도록 메세지 리턴
  924. if( group5.grd_detlgrup.rowcount > 1 ){
  925. var returnArr = fIsExistEndData(group5.grd_detlgrup.currentrow, true);
  926. if( !utlf_isNull(returnArr[3]) && !returnArr[3] ){
  927. sysf_messageBox('선택하신 발생부위는 이미 등록되어 있으며, 종료된 사정이 아니므로 재등록 하실 수 ', 'I004');
  928. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "obspartnm", "");
  929. return ;
  930. }
  931. }
  932. }
  933. }
  934. }
  935. /**
  936. * @group :
  937. * @ver : 2008.05.28
  938. * @by : dhkim
  939. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  940. * @desc : 욕창기준자료(원인, 기저부, 상처감염증상, dressing)팝업 호출
  941. * @type : function
  942. * @access : public
  943. * @param : colNm 그리드의 col ref
  944. * @param : iRow 그리드에서 현재 선택되어있는 row 인덱스
  945. * @param : nmColIdx 찾으려는 코드명칭의 col 인덱스
  946. * @param : cdColIdx 찾으려는 코드의 col 인덱스
  947. * @return :
  948. * __________________________________________________________________________
  949. * |column | cd |cdIdx| nm |nmIdx |
  950. * |________________________________________________________|__________|______|
  951. * |발생장소 |genrplceid | |genrplce | |
  952. * |________________________________________________________|__________|______|
  953. * |원인 |causeid | 5 |cause | 23 |
  954. * |________________________________________________________|__________|______|
  955. * |기저부색 |colorid | 14 |color | 24 |
  956. * |________________________________________________________|__________|______|
  957. * |상처감염증상 |symptomid | 17 |symptom | 25 |
  958. * |________________________________________________________|__________|______|
  959. * |Undermining방향 |underangleid | 18 |underangle| 26 |
  960. * |________________________________________________________|__________|______|
  961. * |Dressing |dressingid | 20 |dressing | 27 |
  962. * |________________________________________________________|__________|______|
  963. * |단계 |stageid | |stage | |
  964. |__________________________________________________________________________|
  965. |삼출물상태 |stateid | |state | |
  966. |__________________________________________________________________________|
  967. |삼출물양 |amountid | |amount | |
  968. |__________________________________________________________________________|
  969. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  970. */
  971. function fPopupBedSoreData(iRow){
  972. var curCol = group5.grd_detlgrup.currentcol;
  973. var dressCd = xBedsoreGridPath.getColumn(iRow, "dressingid"); //기존저장되어있던 코드값
  974. var dressNm = xBedsoreGridPath.getColumn(iRow, "dressing"); //기존저장되어있던 명칭값
  975. var flag = xBedsoreGridPath.getColumn(iRow, "flag"); //구분
  976. var stat = xBedsoreGridPath.getColumn(iRow, "stat"); //상태
  977. //욕창기준자료 (발생장소, 원인, 기저부, 상처감염증상,dressing)저장되어 있던 그리드의 값을 팝업에 세팅
  978. fSetPopupData(iRow, "genrplce");// (발생장소)_20090220_SMY추가
  979. fSetPopupData(iRow, "cause"); // (원인)
  980. fSetPopupData(iRow, "color"); // (기저부)
  981. fSetPopupData(iRow, "stage"); // (단계)
  982. fSetPopupData(iRow, "symptom"); // (상처감염증상)
  983. fSetPopupData(iRow, "state"); // (삼출물상태)
  984. fSetPopupData(iRow, "amount"); // (삼출물양)
  985. fSetPopupData(iRow, "dressing");// (dressing)
  986. fSetPopupData(iRow, "tissue");// 조직의 종류
  987. frmf_setParameter("type", "2");
  988. frmf_setParameter("flag", flag);
  989. frmf_setParameter("stat", stat);
  990. frmf_modal("SPMNW04702","SPMNW04702",null,"",1,system.clientToScreenX(this, this.position.left)-200,system.clientToScreenY(this, this.position.top)+50,"","","","","","M"); //기준자료호출 //yjh1
  991. //팝업에서 가져온 return parameter를 그리드에 세팅
  992. var retClosParam = frmf_getParameter("returnnull");
  993. fGetPopupData(iRow, "genrplce", retClosParam); //발생장소
  994. fGetPopupData(iRow, "cause", retClosParam); //원인
  995. fGetPopupData(iRow, "color", retClosParam); //기저부색
  996. fGetPopupData(iRow, "stage", retClosParam); //단계
  997. fGetPopupData(iRow, "symptom", retClosParam); //감염증상
  998. fGetPopupData(iRow, "state", retClosParam); //삼출물상태
  999. fGetPopupData(iRow, "amount", retClosParam); //삼출물양
  1000. fGetPopupData(iRow, "dressing", retClosParam); //드레싱
  1001. fGetPopupData(iRow, "tissue", retClosParam); //조직의 종류
  1002. //alert(getParameterPath());
  1003. //parameters clear
  1004. //model.removenode(getParameterPath());
  1005. frmf_setParameter("type", "");
  1006. frmf_setParameter("flag", "");
  1007. frmf_setParameter("stat", "");
  1008. frmf_setParameter("stagecdid", "");
  1009. frmf_setParameter("genrplceEtcStr", "");
  1010. frmf_setParameter("genrplceEtcExist", "");
  1011. frmf_setParameter("causeEtcStr", "");
  1012. frmf_setParameter("causeEtcExist", "");
  1013. frmf_setParameter("stageEtcStr", "");
  1014. frmf_setParameter("stageEtcExist", "");
  1015. frmf_setParameter("colorEtcStr", "");
  1016. frmf_setParameter("colorEtcExist", "");
  1017. frmf_setParameter("stateEtcStr", "");
  1018. frmf_setParameter("stateEtcExist", "");
  1019. frmf_setParameter("amountEtcStr", "");
  1020. frmf_setParameter("amountEtcExist", "");
  1021. frmf_setParameter("symptomEtcStr", "");
  1022. frmf_setParameter("symptomEtcExist", "");
  1023. frmf_setParameter("dressingEtcStr", "");
  1024. frmf_setParameter("dressingEtcExist", "");
  1025. frmf_setParameter("dressingStr", "");
  1026. frmf_setParameter("genrplcecdid", "");
  1027. frmf_setParameter("causecdid", "");
  1028. frmf_setParameter("stagecdid", "");
  1029. frmf_setParameter("colorcdid", "");
  1030. frmf_setParameter("statecdid", "");
  1031. frmf_setParameter("amountcdid", "");
  1032. frmf_setParameter("symptomcdid", "");
  1033. frmf_setParameter("dressingcdid", "");
  1034. frmf_setParameter("tissuecdid", "");
  1035. var genrplcesplit = utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(iRow, "genrplceid")).split(",");
  1036. var genrplceh = 0;
  1037. for( var i=0 ; i<genrplcesplit.length ; i++ ){
  1038. if( genrplcesplit[i] == "61" ){ // 61 : 원내
  1039. genrplceh++;
  1040. }
  1041. }
  1042. if( genrplceh == 0 ){
  1043. xBedsoreGridPath.setColumn(iRow, "genrplcewardcd", "");
  1044. }
  1045. }
  1046. /////////////////팝업데이터 세팅 시작////////////////////
  1047. /**
  1048. * @group :
  1049. * @ver : 2008.08.08
  1050. * @by : dhkim
  1051. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1052. * @desc : 욕창기준자료저장되어 있던 그리드의 값을 팝업에 세팅
  1053. * genrplce, genrplceid //20090220_SMY추가
  1054. cause, causeid,
  1055. * stage, stageid,
  1056. * color, colorid,
  1057. * state, stateid,
  1058. * amount, amountid,
  1059. * symptom, symptomid,
  1060. * dressing, dressingid
  1061. * @type : function
  1062. * @access : public
  1063. * @param :
  1064. * @return :
  1065. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  1066. */
  1067. function fSetPopupData(iRow, str) {
  1068. var cd;
  1069. var nm = '';
  1070. //if(str == "stage" || str=="state" || str=="amount") {
  1071. if( str=="state" || str=="amount" ) {
  1072. //단계, 삼출물상태, 삼출물양 (combo로 들어가는 값)
  1073. cd = xBedsoreGridPath.getColumn(iRow, str);//기존저장되어있던 코드값
  1074. } else {
  1075. cd = xBedsoreGridPath.getColumn(iRow, str + 'id');//기존저장되어있던 코드값 ;
  1076. nm = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(iRow, str));//기존저장되어있던 명칭값 ;
  1077. }
  1078. if( !utlf_isNull(cd) ){
  1079. frmf_setParameter(str + "cdnm", "");
  1080. frmf_setParameter(str + "cd", "");
  1081. frmf_setParameter(str + "cdid", cd);
  1082. //기타가 선택되어진 상태일때 freetext를 파라메터로 set한다.
  1083. if( nm.indexOf('기타') > -1 ){
  1084. var etcStr = nm.split(')')[0].split('(')[1];
  1085. frmf_setParameter(str + 'EtcExist', true);
  1086. frmf_setParameter(str + 'EtcStr', etcStr);
  1087. }
  1088. if( str == "dressing" ){
  1089. frmf_setParameter("dressingStr", nm);
  1090. }
  1091. }
  1092. }
  1093. /**
  1094. * 발생장소 원인, 기저부, 상처감염증상,dressing 공통 팝업의 선택결과를 그리드에 세팅
  1095. */
  1096. function fGetPopupData(iRow, str, retClosParam) {
  1097. var retCDParam = '';
  1098. var retNMParam = '';
  1099. var oldCDParam;
  1100. if( retClosParam != "close" ){
  1101. if( xBedsoreGridPath.getColumn(iRow, "stat") != "i" ){
  1102. xBedsoreGridPath.setColumn(iRow, "stat", "u");
  1103. }
  1104. retNMParam = frmf_getParameter(str + "cdnm");
  1105. retCDParam = frmf_getParameter(str +"cd");
  1106. } else {
  1107. return ;
  1108. }
  1109. //if(str == "stage" || str=="state" || str=="amount") {
  1110. if( str=="state" || str=="amount" ){
  1111. xBedsoreGridPath.setColumn(iRow, str, retCDParam);
  1112. } else {
  1113. xBedsoreGridPath.setColumn(iRow, str, retNMParam);
  1114. xBedsoreGridPath.setColumn(iRow, str + 'id', retCDParam);
  1115. }
  1116. frmf_clearParameter(str + "cdnm");
  1117. frmf_clearParameter(str + "cd");
  1118. frmf_clearParameter(str + "cdid");
  1119. frmf_clearParameter(str + "Str");
  1120. frmf_clearParameter(str + "etcExist");
  1121. frmf_clearParameter(str + "etcStr");
  1122. }
  1123. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  1124. //+++++++++++++++++++++++++++++++ 욕창관련 팝업호출관련 펑션모음 종료 ++++++++++++++++++++++++++++++++++++++++++++++//
  1125. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  1126. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  1127. //++++++++++++++++++++++++++++++++++++++++ 저장 관련 펑션 모음 시작 ++++++++++++++++++++++++++++++++++++++++++++++//
  1128. //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  1129. /**
  1130. * @group :
  1131. * @ver : 2008.05.28
  1132. * @by : dhkim
  1133. * @------------------------------------------------------------------------------------------------------------------------------------------------
  1134. * @type : function
  1135. * @access : public
  1136. * @desc : 욕창관찰기록 저장하기전에 유효성을 체크한다.
  1137. * @param :
  1138. * @return :
  1139. * @------------------------------------------------------------------------------------------------------------------------------------------------
  1140. */
  1141. function fIsValid(){
  1142. //그리드 저장데이터 존재여부 체크(default rows = 2)
  1143. if( group5.grd_detlgrup.rowcount < 1 ){
  1144. sysf_messageBox("저장할 내역이","I004");
  1145. return false;
  1146. }
  1147. //-----------------------------------------------------------------------------------------------
  1148. //수정 데이터 존재여부 체크
  1149. /*var sflag = '';
  1150. for(var i = 2; i < grd_detlgrup.rows; i++){
  1151. //alert(grd_detlgrup.getUpdateData());
  1152. alert(i);
  1153. alert(grd_detlgrup.getUpdateData("insert"));
  1154. sflag = getArrayData(grd_detlgrup.getUpdateDataAll("i"), i-1, 0);
  1155. if(sflag == ''){
  1156. messageBox("신규등록/수정사항이","I004");
  1157. return false;
  1158. }
  1159. }*/
  1160. var sflag = '';
  1161. var cnts = 0;
  1162. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  1163. /*if(model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") != "-"
  1164. && model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") != ""
  1165. && model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") != null) {*/
  1166. if( ds_main_detlgrup_detlgruplist.getRowType(i) != 1 ){
  1167. cnts ++;
  1168. }
  1169. }
  1170. if( cnts < 1 ){
  1171. sysf_messageBox("신규등록/수정사항이","I004");
  1172. return false;
  1173. }
  1174. //--------------------------------------------------------------------------------------------------
  1175. var dschdd = (appf_getPatientInfoDetail('pid') == false ? xSearchPamInfoPath.getColumn(0, "dschdd") : appf_getPatientInfoDetail('dschdd'));
  1176. var cnt = 0; // 욕창보고 체크 갯수 count용
  1177. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  1178. //욕창발생부위 입력여부 체크
  1179. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "obspartnm")) || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "obspartnm")).length <= 0 ) {
  1180. sysf_messageBox("욕창발생부위는","I003");
  1181. return false;
  1182. }
  1183. //20130318 이후 기록만 점검
  1184. if( xBedsoreGridPath.getColumn(i, "recdd") > "20130318" ){
  1185. //가로 세로 크기 입력을 필수로 처리 2013.03.18
  1186. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "sizewidth"))
  1187. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "sizewidth")).length <= 0
  1188. || utlf_isNull(xBedsoreGridPath.getColumn(i, "sizeheight"))
  1189. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "sizeheight")).length <= 0 ){
  1190. sysf_messageBox("크기(가로, 세로)는","I003");
  1191. return false;
  1192. }
  1193. //삼출물의 양 필수 처리 2013.03.19
  1194. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "amount")) || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "amount")).length <= 0 ){
  1195. sysf_messageBox("삼출물의 양은","I003");
  1196. return false;
  1197. }
  1198. //조직의 종류 처리 2013.03.19
  1199. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "tissue")) || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "tissue")).length <= 0 ){
  1200. sysf_messageBox("조직의 종류는","I003");
  1201. return false;
  1202. }
  1203. //사정 및 종료일 때는 재사정 단계 필수 처리 2013.03.19
  1204. if( xBedsoreGridPath.getColumn(i, "flag") != "00"
  1205. && (utlf_isNull(xBedsoreGridPath.getColumn(i, "restage")) || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "restage")).length <= 0) ){
  1206. sysf_messageBox("재사정 단계는","I003");
  1207. return false;
  1208. }
  1209. //발생장소가 원내일 경우 발생장소(원내) 필수항목 지정_칠곡인증평가 관련_2016.05.12_AYS
  1210. if( ds_codelist.lookup("cdgrupid", "R11", "cdid") == 'Y'
  1211. && xBedsoreGridPath.getColumn(i, "genrplce") == "원내"
  1212. && utlf_isNull(xBedsoreGridPath.getColumn(i, "genrplcewardcd")) ){
  1213. sysf_messageBox("발생장소(원내) 선택은","I003");
  1214. return false;
  1215. }
  1216. }
  1217. if( HC_isHomeCare == false ){
  1218. if( dschdd < "99991231"
  1219. && (xBedsoreGridPath.getColumn(i, "recdd") > dschdd || xBedsoreGridPath.getColumn(i, "genrdd") > dschdd) ){
  1220. sysf_messageBox((i-1) + "번째에 기록일자 와 발생일자는 퇴원일 "+dschdd+" 이전이어야 합니다" ,"I007");
  1221. return false;
  1222. }
  1223. }
  1224. //필드값 필수입력여부 체크
  1225. var valiStr = '';
  1226. valiStr += xBedsoreGridPath.getColumn(i, "cause"); //원인
  1227. valiStr += xBedsoreGridPath.getColumn(i, "stage"); //단계
  1228. valiStr += xBedsoreGridPath.getColumn(i, "color"); //기저부색
  1229. valiStr += xBedsoreGridPath.getColumn(i, "state"); //삼출물상태
  1230. valiStr += xBedsoreGridPath.getColumn(i, "amount"); //삼출물양
  1231. valiStr += xBedsoreGridPath.getColumn(i, "symptom"); //상처감염증상
  1232. valiStr += xBedsoreGridPath.getColumn(i, "underangle"); //undermining방향
  1233. valiStr += xBedsoreGridPath.getColumn(i, "underdepth"); //undermining깊이
  1234. valiStr += xBedsoreGridPath.getColumn(i, "dressing"); //dressing
  1235. if( utlf_isNull(valiStr) ){
  1236. sysf_messageBox((i-1) + "번째에 항목을 1개 이상","C002");
  1237. return false;
  1238. }
  1239. // 욕창보고 체크가 2개 이상 체크될 시 Blocking (2011.04.19 Ahn)
  1240. if( "1" == xBedsoreGridPath.getColumn(i, "rptsmsflag") ){
  1241. if( 1 < ++cnt) {
  1242. sysf_messageBox("SMS전송은 한 건만 가능합니다." ,"I");
  1243. return false;
  1244. }
  1245. }
  1246. }
  1247. return true;
  1248. }
  1249. /**
  1250. * @group :
  1251. * @ver : 2007.09.06
  1252. * : 2008.05.28 dhkim 수정
  1253. * @by : 정찬성
  1254. * @------------------------------------------------------------------------------------------------------------------------------------------------
  1255. * @type : function
  1256. * @access : public
  1257. * @desc : 욕창관찰기록 저장
  1258. * @param :
  1259. * @return :
  1260. * @------------------------------------------------------------------------------------------------------------------------------------------------
  1261. */
  1262. function fSave(){
  1263. if(fIsValid()){
  1264. //저장여부 메세지박스
  1265. if(messageBox("","Q002") != 6)
  1266. return false;
  1267. model.removenode("/root/send/savedata");
  1268. model.makeValue("/root/send/savedata/detlgrup", grd_detlgrup.getupdatedataAll('i'));
  1269. model.makeValue("/root/send/savedata/pid", model.getValue("/root/cond/patientgrupInfo/patientgruplistInfo/pid"));
  1270. if(submit("TXMNW04710")){
  1271. model.copyNode("/root/hidden/main/detlgrup", "/root/main/detlgrup");
  1272. fSearch();
  1273. }
  1274. }
  1275. }
  1276. var SIGN_ROW = 0;//for돌때 해당 그리드만 인증데이터로 만들어주기 위해 global variable로 선언
  1277. //인증저장
  1278. function fSignSave(){
  1279. if( fIsValid() ){
  1280. /*//2009-01-29_SMY_주석처리
  1281. var retMsg = messageBox("인증저장을", "Q004"); // 실행 하시겠습니까? yes=6, no=7
  1282. if(retMsg != "6") {
  1283. return ;
  1284. }
  1285. */
  1286. /* 환자정보 가져오는 노드 변경_20090205_SMY
  1287. var pid = model.getValue(xBedsoreGridPath + "/pid");
  1288. var indd = model.getValue(xBedsoreGridPath + "/indd");
  1289. var cretno = model.getValue(xBedsoreGridPath + "/cretno");
  1290. var orddeptcd = model.getValue(xBedsoreGridPath + "/orddeptcd");
  1291. var orddrid = model.getValue(xBedsoreGridPath + "/orddrid");
  1292. var signno = '';//model.getValue("/root/main/endsummary/endsummaryrecord/signno");
  1293. */
  1294. var pid = ds_cond.getColumn(0, "pid");
  1295. var indd = ds_data_patientgruplist.lookup("pid", pid, "indd");
  1296. var cretno = ds_data_patientgruplist.lookup("pid", pid, "cretno");
  1297. var orddeptcd = ds_data_patientgruplist.lookup("pid", pid, "orddeptcd");
  1298. var orddrid = ds_data_patientgruplist.lookup("pid", pid, "orddrid");
  1299. var ordtype = ds_data_patientgruplist.lookup("pid", pid, "ordtype");
  1300. var signno = ''; //model.getValue("/root/main/endsummary/endsummaryrecord/signno");
  1301. // 저장 데이터 세팅
  1302. var iRows = group5.grd_detlgrup.rowcount;
  1303. for( var i=0 ; i<iRows ; i++ ){
  1304. if( utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substring(0,4) == "Ant." ){
  1305. ds_main_detlgrup_detlgruplist.setColumn(i, "obspartnm", "(anterior)"+utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substr(4));
  1306. }
  1307. if( utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substring(0,5) == "Post." ){
  1308. ds_main_detlgrup_detlgruplist.setColumn(i, "obspartnm", "(posterior)"+utlf_transNullToEmpty(ds_main_detlgrup_detlgruplist.getColumn(i, "obspartnm")).substr(5));
  1309. }
  1310. }
  1311. /*
  1312. var stat = "", obspartnm = "", genrdd = "", genrtm = "", genrplce = "", cause = "", flag = "",
  1313. recdd = "", rectm = "", sel = "", sizewidth = "", sizeheight = "", sizedepth = "", stage = "",
  1314. color = "", state = "", amount = "", symptom = "", underangle = "", underdepth = "", dressing = "",
  1315. photimg = "", etc = "", genrplceid = "", causeid = "", colorid = "", symptomid = "", underangleid = "",
  1316. dressingid = "", pid = "", grupcd = "", obsrecseq = "", instcd = "", signno = "";
  1317. var iRows = grd_detlgrup.rows;
  1318. var iPath = "/root/main/detlgrup/detlgruplist";
  1319. var detlgruplist = "m▦rownum▦stat▦obspartnm▦genrdd▦genrtm▦genrplce▦cause▦flag▦recdd▦rectm▦sel▦sizewidth▦sizeheight▦sizedepth▦stage▦color▦state▦amount▦symptom▦underangle▦underdepth▦dressing▦▦photimg▦etc▦genrplceid▦causeid▦colorid▦symptomid▦underangleid▦dressingid▦pid▦grupcd▦obsrecseq▦instcd▦signno";
  1320. ▦▦▦▦▦▦▦▦▦▦▦▦etc▦genrplceid
  1321. ▦causeid▦colorid▦symptomid▦underangleid▦dressingid▦pid▦grupcd▦obsrecseq▦instcd▦signno;
  1322. for(var i=1;i<iRows; i++) {
  1323. stat = model.getValue(iPath+"["+i+"]/stat");
  1324. if(model.getValue("/root/main/detlgrup/detlgruplist["+i+"]/obspartnm").substring(0,4) == "Ant."){
  1325. obspartnm = "(anterior)"+model.getValue("/root/main/detlgrup/detlgruplist["+i+"]/obspartnm").substring(4))
  1326. }
  1327. if(model.getValue("/root/main/detlgrup/detlgruplist["+i+"]/obspartnm").substring(0,5) == "Post."){
  1328. obspartnm = "(posterior)"+model.getValue("/root/main/detlgrup/detlgruplist["+i+"]/obspartnm").substring(5))
  1329. }
  1330. genrdd = model.getValue(iPath+"["+i+"]/genrdd");
  1331. genrtm = model.getValue(iPath+"["+i+"]/genrtm");
  1332. genrplce = model.getValue(iPath+"["+i+"]/genrplce");
  1333. cause = model.getValue(iPath+"["+i+"]/cause");
  1334. flag = model.getValue(iPath+"["+i+"]/flag");
  1335. sel = model.getValue(iPath+"["+i+"]/sel");
  1336. sizewidth = model.getValue(iPath+"["+i+"]/sizewidth");
  1337. sizedepth = model.getValue(iPath+"["+i+"]/sizedepth");
  1338. stage = model.getValue(iPath+"["+i+"]/stage");
  1339. color = model.getValue(iPath+"["+i+"]/color");
  1340. state = model.getValue(iPath+"["+i+"]/state");
  1341. amount = model.getValue(iPath+"["+i+"]/amount");
  1342. symptom = model.getValue(iPath+"["+i+"]/symptom");
  1343. underangle = model.getValue(iPath+"["+i+"]/underangle");
  1344. underdepth = model.getValue(iPath+"["+i+"]/underdepth");
  1345. dressing = model.getValue(iPath+"["+i+"]/dressing");
  1346. flag = model.getValue(iPath+"["+i+"]/flag");
  1347. flag = model.getValue(iPath+"["+i+"]/flag");
  1348. detlgruplist = detlgruplist + "▩" + "i" + "▦" + i + "▦" + stat + "▦" + obspartnm
  1349. + "▦" + genrdd + "▦" + genrtm + "▦" + genrplce + "▦" + cause
  1350. + "▦" + flag + "▦" + sel + "▦" + sizewidth + "▦" + sizedepth
  1351. + "▦" + stage + "▦" + state + "▦" + amount + "▦" + symptom
  1352. + "▦" + underangle + "▦" + underdepth + "▦" + dressing + "▦" + photimg
  1353. + "▦" + updtflag + "▦" + chkflag + "▦" + wardtel + "▦" + trno
  1354. + "▦" + updtflag + "▦" + chkflag + "▦" + wardtel + "▦" + trno
  1355. + "▦" + updtflag + "▦" + chkflag + "▦" + wardtel + "▦" + trno
  1356. + "▦" + updtflag + "▦" + chkflag + "▦" + wardtel + "▦" + trno;
  1357. }
  1358. */
  1359. //------------------------------------------------------------------------------------------------------
  1360. ds_send_savedata_detlgrup.copyData(ds_main_detlgrup_detlgruplist);
  1361. ds_send_savedata_detlgrup.enableevent = false;
  1362. ds_send_savedata_detlgrup.updatecontrol = false;
  1363. for( var i=0 ; i<ds_send_savedata_detlgrup.rowcount ; i++ ){
  1364. ds_send_savedata_detlgrup.setRowType(i, 2);
  1365. if( ds_send_savedata_detlgrup.getColumn(i, "pushyn") == "1" ){
  1366. ds_send_savedata_detlgrup.setColumn(i, "pushyn", "Y");
  1367. }else{
  1368. ds_send_savedata_detlgrup.setColumn(i, "pushyn", "N");
  1369. }
  1370. if( ds_send_savedata_detlgrup.getColumn(i, "rptsmsflag") == "1" ){
  1371. ds_send_savedata_detlgrup.setColumn(i, "rptsmsflag", "true");
  1372. }else{
  1373. ds_send_savedata_detlgrup.setColumn(i, "rptsmsflag", "false");
  1374. }
  1375. if( ds_send_savedata_detlgrup.getColumn(i, "rptconfirmflag") == "1" ){
  1376. ds_send_savedata_detlgrup.setColumn(i, "rptconfirmflag", "true");
  1377. }else{
  1378. ds_send_savedata_detlgrup.setColumn(i, "rptconfirmflag", "false");
  1379. }
  1380. if( ds_send_savedata_detlgrup.getColumn(i, "sel") == "1" ){
  1381. ds_send_savedata_detlgrup.setColumn(i, "sel", "true");
  1382. }else{
  1383. ds_send_savedata_detlgrup.setColumn(i, "sel", "false");
  1384. }
  1385. }
  1386. ds_send_savedata_detlgrup.updatecontrol = true;
  1387. ds_send_savedata_detlgrup.enableevent = true;
  1388. //model.makeValue("/root/send/savedata/pid", pid);
  1389. //------------------------------------------------------------------------------------------------------
  1390. /*var sHeader = "stat▦obspartnm▦genrdd▦genrtm▦genrplce▦cause▦flag"
  1391. + "▦recdd▦rectm▦rptsmsflag▦sel▦sizewidth▦sizeheight▦sizedepth"
  1392. + "▦stageid▦color▦state▦amount▦symptom▦underangle▦underdepth▦dressing"
  1393. + "▦photimg▦etc▦genrplceid▦causeid▦colorid▦symptomid▦underangleid"
  1394. + "▦dressingid▦pid▦grupcd▦obsrecseq▦instcd▦signno▩";
  1395. var sData = "";
  1396. for(i = grd_detlgrup.fixedRows; i < grd_detlgrup.rows; i++) {
  1397. if(model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") != "-"
  1398. && model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") != ""
  1399. && model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") != null) {
  1400. sData += model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stat") + "▦"
  1401. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/obspartnm") + "▦"
  1402. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/genrdd") + "▦"
  1403. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/genrtm") + "▦"
  1404. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/genrplce") + "▦"
  1405. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/cause") + "▦"
  1406. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/flag") + "▦"
  1407. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/recdd") + "▦"
  1408. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/rectm") + "▦"
  1409. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/rptsmsflag") + "▦"
  1410. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/sel") + "▦"
  1411. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/sizewidth") + "▦"
  1412. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/sizeheight") + "▦"
  1413. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/sizedepth") + "▦"
  1414. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/stageid") + "▦"
  1415. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/color") + "▦"
  1416. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/state") + "▦"
  1417. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/amount") + "▦"
  1418. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/symptom") + "▦"
  1419. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/underangle") + "▦"
  1420. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/underdepth") + "▦"
  1421. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/dressing") + "▦"
  1422. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/photimg") + "▦"
  1423. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/etc") + "▦"
  1424. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/genrplceid") + "▦"
  1425. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/causeid") + "▦"
  1426. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/colorid") + "▦"
  1427. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/symptomid") + "▦"
  1428. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/underangleid") + "▦"
  1429. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/dressingid") + "▦"
  1430. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/pid") + "▦"
  1431. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/grupcd") + "▦"
  1432. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/obsrecseq") + "▦"
  1433. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/instcd") + "▦"
  1434. + model.getValue("/root/main/detlgrup/detlgruplist[" + i + "]/signno") + "▩" ;
  1435. }
  1436. }
  1437. model.makeValue("/root/send/savedata/detlgrup", sHeader+sData)*/
  1438. //-----------------------------------------------------------------------------------------------
  1439. //------------------------------------------------------------------------------------------------------
  1440. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  1441. ds_send_savedata_signlist.clearData();
  1442. //for를 돌면서 각 욕창기록정보의 노드를 복사 한다.
  1443. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  1444. SIGN_ROW = i;
  1445. ds_send_savedata_signlist.addRow();
  1446. signno = xBedsoreGridPath.getColumn(i, "signno");
  1447. // 인증 로직 호출
  1448. ViewFunc = "sign";
  1449. if( Sign.signprocess() == true ){
  1450. //alert(Sign.signedInfos[1]);
  1451. ds_send_savedata_signlist.setColumn(SIGN_ROW, "pid", pid); // 등록번호
  1452. ds_send_savedata_signlist.setColumn(SIGN_ROW, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  1453. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  1454. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signno", signno); // 서명번호
  1455. ds_send_savedata_signlist.setColumn(SIGN_ROW, "cretno" , cretno); // 생성번호
  1456. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recdd", utlf_getCurrentDate()); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  1457. ds_send_savedata_signlist.setColumn(SIGN_ROW, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  1458. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  1459. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signflag" , (HC_isHomeCare == true ? "20" : "02")); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  1460. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signgenrflag", (HC_isHomeCare == true ? ordtype : "I")); // 외래/입원구분 (코드정의서 M0010 참조)
  1461. ds_send_savedata_signlist.setColumn(SIGN_ROW, "formcd", "0000002461"); // 각 기록지별 서식코드(0000002461 피부욕창(상처)기록)
  1462. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddeptcd", orddeptcd); // 진료부서코드
  1463. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddrid" , orddrid); // 진료의사ID
  1464. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  1465. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  1466. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  1467. ds_send_savedata_signlist.setColumn(SIGN_ROW, "screenid" , frmf_getScreenID());
  1468. ds_send_savedata_signlist.setColumn(SIGN_ROW, "dispyn", "N"); // 인증저장용 data(view용 인증데이터는 따로 생성함)_20090204_SMY추가
  1469. } else {
  1470. return ;
  1471. }
  1472. }
  1473. //------------------------------------------------------------------------------------------------------
  1474. // 욕창보고 컬럼이 체크된 행 추출 (2011.04.20 ahn)
  1475. var rptSMSRow = "";
  1476. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  1477. if( ds_main_detlgrup_detlgruplist.getColumn(i, "rptsmsflag") == "1" ){
  1478. rptSMSRow = i;
  1479. //alert("욕창보고가 선택된 행 : " + rptSMSRow);
  1480. break;
  1481. }
  1482. }
  1483. if( !utlf_isNull(rptSMSRow) ){
  1484. // 환자정보 및 욕창보고 컬럼이 체크된 행 데이터 복사 (2011.04.20 ahn)
  1485. //model.removenode("/root/temp");
  1486. //model.makeNode("/root/temp");
  1487. ds_temp_detlgrup_detlgruplist.copyRow(0, ds_main_detlgrup_detlgruplist, rptSMSRow);
  1488. ds_temp_sriusgrup.copyData(ds_main_sriusgrup);
  1489. // 진단명 set
  1490. ds_temp_paminfo.setColumn(0, "diag", ds_data_patientgruplist.lookup("pid", pid, "diag"));
  1491. // 병동코드 set
  1492. //model.makeValue("/root/temp/paminfo/wardcd", model.getValue("/root/patinfo/patinfolist/wardcd"));
  1493. }
  1494. ds_send_savedata_detlgrup.updateColID("clsgrupkind", "bspntnm");
  1495. var oParam = {};
  1496. oParam.id = "TXMNW04710";
  1497. oParam.service = "wardcareapp.WardCareRec";
  1498. oParam.method = "reqInsObsRec";
  1499. oParam.inds = "detlgrup=ds_send_savedata_detlgrup signdata=ds_send_savedata_signlist";
  1500. oParam.outds = "ds_temp_obsrecseqinfo_obsrecseqlist=obsrecseqlist";
  1501. oParam.async = false;
  1502. oParam.callback = "cf_TXMNW04710";
  1503. tranf_submit(oParam);
  1504. if( arErrorCode.pop("TXMNW04710") > -1 ){
  1505. // 인증 저장이 성공하면 '욕창발생보고 및 sms전송' 팝업 화면 띄우고 복사해놓은 인스턴스 copy (욕창보고 체크된 행 데이터)
  1506. // 2011.04.20 Ahn
  1507. //debugger;
  1508. if( !utlf_isNull(rptSMSRow) ){
  1509. //alert(model.getValue("/root/temp/obsrecseqinfo/obsrecseqlist/obsrecseq"));
  1510. // obsrecseq(욕창관찰기록 seq) set
  1511. ds_temp_detlgrup_detlgruplist.setColumn(0, "obsrecseq", ds_temp_obsrecseqinfo_obsrecseqlist.getColumn(0, "obsrecseq"));
  1512. ds_temp_detlgrup_detlgruplist.setColumn(0, "obsrecrptseq", ds_temp_obsrecseqinfo_obsrecseqlist.getColumn(0, "obsrecrptseq"));
  1513. ds_temp_detlgrup_detlgruplist.setColumn(0, "genrplcewardnm", group5.grd_detlgrup.getCellText(rptSMSRow, group5.grd_detlgrup.getBindCellIndex("body", "genrplcewardcd")));
  1514. frmf_setParameter("ScreenId", "SMMNW04700");
  1515. if( ds_cond.getColumn(0, "indsch") == "1" ){ // 재원환자일때만 sms발생보고
  1516. var objArg = new Object();
  1517. objArg.args_ds_init_paminfo = ds_temp_paminfo;
  1518. objArg.args_ds_init_detlgruplist = ds_temp_detlgrup_detlgruplist;
  1519. objArg.args_init_sriusgrup = ds_temp_sriusgrup;
  1520. frmf_modal("SPMNW04704","SPMNW04704",objArg,"",100,100,100,"","","","","","M");
  1521. //function modal(id,monNo,xPos,yPos,wid,ref,resultref,userProp,prevPos, authCode, resizeType)
  1522. }
  1523. }
  1524. ds_hidden_main_detlgrup_detlgruplist.copyData(ds_main_detlgrup_detlgruplist);
  1525. fMakeViewData(); //통합기록view용 데이터생성
  1526. if( !utlf_isNull(HC_homecarecd)) {
  1527. fSearch();
  1528. }else{
  1529. finit();
  1530. }
  1531. }
  1532. }
  1533. }
  1534. function cf_TXMNW04710(sSvcId, nErrorCode, sErrorMsg) {
  1535. arErrorCode.push(sSvcId, nErrorCode);
  1536. }
  1537. // 인증데이터 만들기.
  1538. function fMake_SignData(){
  1539. if( ViewFunc == "sign" ){
  1540. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  1541. ds_signdata_main_detlgrup_detlgruplist.copyRow(0, ds_main_detlgrup_detlgruplist, SIGN_ROW);
  1542. var xDeltGrupPath = ds_signdata_main_detlgrup_detlgruplist;
  1543. var flag;
  1544. var stage;
  1545. var state;
  1546. var amount;
  1547. var underangle;
  1548. //구분
  1549. flag = xDeltGrupPath.getColumn(0, "flag");
  1550. if( !utlf_isNull(flag) ){
  1551. xDeltGrupPath.setColumn(0, "flag", utlf_transNullToEmpty(group5.grd_detlgrup.getCellText(SIGN_ROW, group5.grd_detlgrup.getBindCellIndex("body", "flag"))));
  1552. }
  1553. //단계 - 2014.02.17 불필요한 로직 삭제
  1554. //stage = model.getValue(xDeltGrupPath + "/stage");
  1555. //if(stage != "") {
  1556. // model.setValue(xDeltGrupPath + "/stage", grd_detlgrup.labelMatrix(SIGN_ROW+1, grd_detlgrup.colRef("stage")));
  1557. //}
  1558. //삼출물(상태)
  1559. state = xDeltGrupPath.getColumn(0, "state");
  1560. if( !utlf_isNull(state) ){
  1561. xDeltGrupPath.setColumn(0, "state", utlf_transNullToEmpty(group5.grd_detlgrup.getCellText(SIGN_ROW, group5.grd_detlgrup.getBindCellIndex("body", "state"))));
  1562. }
  1563. //삼출물(양)
  1564. amount = xDeltGrupPath.getColumn(0, "amount");
  1565. if( !utlf_isNull(amount) ){
  1566. xDeltGrupPath.setColumn(0, "amount", utlf_transNullToEmpty(group5.grd_detlgrup.getCellText(SIGN_ROW, group5.grd_detlgrup.getBindCellIndex("body", "amount"))));
  1567. }
  1568. //Undermining(방향)
  1569. underangle = xDeltGrupPath.getColumn(0, "underangle");
  1570. if( !utlf_isNull(underangle) ){
  1571. xDeltGrupPath.setColumn(0, "underangle", utlf_transNullToEmpty(group5.grd_detlgrup.getCellText(SIGN_ROW, group5.grd_detlgrup.getBindCellIndex("body", "underangle"))));
  1572. }
  1573. ds_signdata_main_detlgrup_detlgruplist.enableevent = false;
  1574. ds_signdata_main_detlgrup_detlgruplist.updatecontrol = false;
  1575. for( var i=0 ; i<ds_signdata_main_detlgrup_detlgruplist.rowcount ; i++ ){
  1576. if( ds_signdata_main_detlgrup_detlgruplist.getColumn(i, "pushyn") == "1" ){
  1577. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "pushyn", "Y");
  1578. }else{
  1579. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "pushyn", "N");
  1580. }
  1581. if( ds_signdata_main_detlgrup_detlgruplist.getColumn(i, "rptsmsflag") == "1" ){
  1582. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "rptsmsflag", "true");
  1583. }else{
  1584. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "rptsmsflag", "false");
  1585. }
  1586. if( ds_signdata_main_detlgrup_detlgruplist.getColumn(i, "rptconfirmflag") == "1" ){
  1587. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "rptconfirmflag", "true");
  1588. }else{
  1589. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "rptconfirmflag", "false");
  1590. }
  1591. if( ds_signdata_main_detlgrup_detlgruplist.getColumn(i, "sel") == "1" ){
  1592. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "sel", "true");
  1593. }else{
  1594. ds_signdata_main_detlgrup_detlgruplist.setColumn(i, "sel", "false");
  1595. }
  1596. }
  1597. ds_signdata_main_detlgrup_detlgruplist.updatecontrol = true;
  1598. ds_signdata_main_detlgrup_detlgruplist.enableevent = true;
  1599. var arrSignPath = new Array();
  1600. arrSignPath[0] = "/cond";
  1601. arrSignPath[1] = "/detlgruplist";
  1602. arrSignPath[2] = "/sriusgrup";
  1603. arrSignPath[3] = "/patinfolist";
  1604. var arrSignDs = new Array();
  1605. arrSignDs[0] = ds_cond.saveXML();
  1606. arrSignDs[1] = ds_signdata_main_detlgrup_detlgruplist.saveXML();
  1607. arrSignDs[2] = ds_main_sriusgrup.saveXML();
  1608. arrSignDs[3] = ds_main_patinfo_patinfolist.saveXML();
  1609. Sign.addnodeset(arrSignPath, arrSignDs);
  1610. //undermining 쪽 데이터를 detail노드로 addnode한다.
  1611. // var xRecinfoPath = Sign.XPATH_SIGNINFO+"/recinfo/recinfolists";
  1612. }else if( ViewFunc == "view" ){
  1613. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  1614. var xViewDeltGrupPath = ds_viewinfo_viewdetlgrup_detlgruplist;
  1615. var flag;
  1616. var stage;
  1617. var state;
  1618. var amount;
  1619. var addfile;
  1620. var underangle;
  1621. var underangleunit;
  1622. var underdepth;
  1623. var underdepthunit;
  1624. var undermining;
  1625. var bf_pid = "";
  1626. var bf_grupcd = "";
  1627. var bf_obsrecseq = "";
  1628. var bf_instcd = "";
  1629. var af_pid = "";
  1630. var af_grupcd = "";
  1631. var af_obsrecseq = "";
  1632. var af_instcd = "";
  1633. for( var i=0 ; i<xViewDeltGrupPath.rowcount ; i++ ){
  1634. af_pid = xViewDeltGrupPath.getColumn(i, "pid");
  1635. af_grupcd = xViewDeltGrupPath.getColumn(i, "grupcd");
  1636. af_obsrecseq = xViewDeltGrupPath.getColumn(i, "obsrecseq");
  1637. af_instcd = xViewDeltGrupPath.getColumn(i, "instcd");
  1638. //구분
  1639. flag = xViewDeltGrupPath.getColumn(i, "flag");
  1640. if( !utlf_isNull(flag) ){
  1641. if( flag == "00" ){
  1642. xViewDeltGrupPath.setColumn(i, "flag", "등록");
  1643. }else if( flag == "01" ){
  1644. xViewDeltGrupPath.setColumn(i, "flag", "사정");
  1645. }else if( flag == "99" ){
  1646. xViewDeltGrupPath.setColumn(i, "flag", "종료");
  1647. }
  1648. }
  1649. //단계 - 2014.02.17 통합기록조회 단계에 저장되지 않아 주석처리
  1650. //stage = model.getValue(xViewDeltGrupPath + "/detlgruplist[" + i + "]/stage");
  1651. //if(stage != "") {
  1652. // model.setValue(xViewDeltGrupPath + "/detlgruplist[" + i + "]/stage", model.getValue("/root/hidden/codelist/getVOStage[cd='"+ stage +"']/cdnm"));
  1653. //}
  1654. //삼출물(상태)
  1655. state = xViewDeltGrupPath.getColumn(i, "state");
  1656. if( !utlf_isNull(state) ){
  1657. xViewDeltGrupPath.setColumn(i, "state", utlf_transNullToEmpty(ds_hidden_codelist_getVOState.lookup("cd", state, "cdnm")));
  1658. }
  1659. //삼출물(양)
  1660. amount = xViewDeltGrupPath.getColumn(i, "amount");
  1661. if( !utlf_isNull(amount) ){
  1662. xViewDeltGrupPath.setColumn(i, "amount", utlf_transNullToEmpty(ds_hidden_codelist_getVOAmount.lookup("cd", amount, "cdnm")));
  1663. }
  1664. //첨부파일
  1665. addfile = xViewDeltGrupPath.getColumn(i, "addfile");
  1666. if( addfile > 0 ){
  1667. xViewDeltGrupPath.setColumn(i, "addfile", "Y");
  1668. }else{
  1669. xViewDeltGrupPath.setColumn(i, "addfile", "N");
  1670. }
  1671. //Undermining(방향)
  1672. underangle = utlf_transNullToEmpty(xViewDeltGrupPath.getColumn(i, "underangle"));
  1673. if( !utlf_isNull(underangle) ){
  1674. //Undermining(방향단위)
  1675. underangleunit = utlf_transNullToEmpty(xViewDeltGrupPath.getColumn(i, "underangleunit"));
  1676. if( !utlf_isNull(underangleunit) ){
  1677. underangle = ds_hidden_codelist_getVOAngle.lookup("cd", underangle, "cdnm") + underangleunit;
  1678. }else{
  1679. underangle = ds_hidden_codelist_getVOAngle.lookup("cd", underangle, "cdnm");
  1680. }
  1681. }
  1682. //Undermining(깊이)
  1683. underdepth = utlf_transNullToEmpty(xViewDeltGrupPath.getColumn(i, "underdepth"));
  1684. if( !utlf_isNull(underdepth) ){
  1685. //Undermining(깊이단위)
  1686. underdepthunit = utlf_transNullToEmpty(xViewDeltGrupPath.getColumn(i, "underdepthunit"));
  1687. if( !utlf_isNull(underdepthunit) ){
  1688. underdepth = underdepth + underdepthunit;
  1689. }
  1690. }
  1691. //Undermining의 경우 여러 row가 조회되므로 한 row에 묶음(방향-길이로 표시함)
  1692. if( !utlf_isNull(underdepth) ){
  1693. if( utlf_isNull(underangle) ){
  1694. underangle = underdepth;
  1695. }else{
  1696. underangle = underangle + "-" + underdepth;
  1697. }
  1698. }
  1699. xViewDeltGrupPath.setColumn(i, "underangle", underangle);
  1700. if( bf_pid == af_pid && bf_grupcd == af_grupcd && bf_obsrecseq == af_obsrecseq && bf_instcd == af_instcd ){
  1701. xViewDeltGrupPath.setColumn(i-1, "underangle", utlf_transNullToEmpty(xViewDeltGrupPath.getColumn(i-1, "underangle")) + ", " + underangle);
  1702. xViewDeltGrupPath.deleteRow(i);
  1703. i--;
  1704. }
  1705. bf_pid = af_pid;
  1706. bf_grupcd = af_grupcd;
  1707. bf_obsrecseq = af_obsrecseq;
  1708. bf_instcd = af_instcd;
  1709. }
  1710. var arrSignPath = new Array();
  1711. arrSignPath[0] = "/cond";
  1712. arrSignPath[1] = "/sriusgrup";
  1713. arrSignPath[2] = "/patinfolist";
  1714. var arrSignDs = new Array();
  1715. arrSignDs[0] = ds_cond.saveXML();
  1716. arrSignDs[1] = ds_main_sriusgrup.saveXML();
  1717. arrSignDs[2] = ds_main_patinfo_patinfolist.saveXML();
  1718. Sign.addnodeset(arrSignPath, arrSignDs);
  1719. var arrSignPath = new Array();
  1720. arrSignPath[0] = "/viewdetlgrup/detlgruplist";
  1721. var arrSignDs = new Array();
  1722. arrSignDs[0] = ds_viewinfo_viewdetlgrup_detlgruplist.saveXML();
  1723. Sign.addnodeset(arrSignPath, arrSignDs);
  1724. }
  1725. }
  1726. /**
  1727. * @group :
  1728. * @ver : 2007.09.06
  1729. * 2008.06.04 dhkim 수정
  1730. * @by : 정찬성
  1731. * @------------------------------------------------------------------------------------------------------------------------------------------------
  1732. * @type : function
  1733. * @access : public
  1734. * @desc : 욕찰관찰기록 삭제
  1735. * @param :
  1736. * @return : returnArr[0] compareStr string 선택한 '발생부위+발생일자+발생시간+원인'을 그리드의 반복문과 비교한다.
  1737. * returnArr[1] compRow int 반복문 내에서 compareStr과 같은 string의 첫번째 인덱스(발생부위의 가장 하위 row index찾기 위한 초기값)
  1738. * returnArr[2] isAss boolean 해당발생부위의 사정기록 존재여부
  1739. * returnArr[3] isEnd boolean 해당발생부위의 종료기록 존재여부
  1740. * returnArr[4] pid string 등록번호(set parameter)
  1741. * returnArr[5] grupcd string 그룹코드(set parameter)
  1742. * returnArr[6] obspartnm string 발생부위(set parameter)
  1743. * returnArr[7] genrdd string 발생일자(set parameter)
  1744. * returnArr[8] genrtm string 발생시간(set parameter)
  1745. * returnArr[9] cause string 원인 (set parameter)
  1746. * returnArr[10] causeid string 원인코드(set parameter)
  1747. * returnArr[12] genrplce string 발생장소(set parameter)
  1748. * returnArr[13] genrplceid string 발생장소코드(set parameter)
  1749. * @------------------------------------------------------------------------------------------------------------------------------------------------
  1750. */
  1751. function fDel(){
  1752. //삭제할 항목이 선택되었는지 여부를 체크
  1753. var delFlag = false; //체크박스 체크여부
  1754. var sel = ''; //체크박스(true/false)
  1755. var stat = ''; //그리드상태(i/u/d)
  1756. var flag = ''; //등록구분 (등록/사정/종료)
  1757. var fileCnt = 0; //첨부파일등록된 갯수
  1758. var returnArr, isEnd, isAss, isStage;
  1759. var checkStr; //체크값 (발생부위 + 발생일자 + 발생시간 + 원인)
  1760. var isSvrDel = false; //db에 저장된 데이터 삭제시
  1761. //20080930 retMsg추가
  1762. var retMsg = sysf_messageBox('선택하신 욕창기록을', 'Q001');
  1763. //20080930 인증추가
  1764. var pid = xBedsoreGridPath.getColumn(0, "pid");
  1765. var orddd = xBedsoreGridPath.getColumn(0, "orddd");
  1766. var cretno = xBedsoreGridPath.getColumn(0, "cretno");
  1767. var orddeptcd = xBedsoreGridPath.getColumn(0, "orddeptcd");
  1768. var orddrid = xBedsoreGridPath.getColumn(0, "orddrid");
  1769. var ordtype = ds_data_patientgruplist.lookup("pid", pid, "ordtype");
  1770. var signno = '';//model.getValue("/root/main/endsummary/endsummaryrecord/signno");
  1771. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  1772. ds_send_savedata_signlist.clearData();
  1773. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  1774. sel = xBedsoreGridPath.getColumn(i, "sel");
  1775. stat = xBedsoreGridPath.getColumn(i, "stat");
  1776. flag = xBedsoreGridPath.getColumn(i, "flag");
  1777. fileCnt = xBedsoreGridPath.getColumn(i, "addfile");
  1778. SIGN_ROW = i; //20080930
  1779. ds_send_savedata_signlist.addRow();
  1780. if( sel == '1' ){
  1781. delFlag = true;
  1782. if( stat == 'i' ){
  1783. //체크한 항목이 행추가 (stat:i)상태인 경우 그리드에서 바로 삭제
  1784. ds_main_detlgrup_detlgruplist.deleteRow(i);
  1785. }else{
  1786. isSvrDel = true;
  1787. //종료가 존재하는지 여부를 배열로 리턴
  1788. returnArr = fIsExistEndData(i);
  1789. isAss = returnArr[2];
  1790. isEnd = returnArr[3];
  1791. checkStr = i + '¿' + returnArr[6] + returnArr[7] + returnArr[8] + returnArr[9];
  1792. if( isEnd ){
  1793. //체크한 항목의 해당 부위에 종료가 있으면 삭제할수 없다는 메세지 출력후 리턴
  1794. var obspartnm = returnArr[6];
  1795. var gendt = utlf_transNullToEmpty(returnArr[7]).substring(0, 4) + '-' + utlf_transNullToEmpty(returnArr[7]).substring(4, 6) + '-'
  1796. + utlf_transNullToEmpty(returnArr[7]).substr(6) + ' ' + utlf_transNullToEmpty(returnArr[8]).substring(0, 2) + ':' + utlf_transNullToEmpty(returnArr[8]).substr(2);
  1797. sysf_messageBox('선택하신 발생부위 "' + obspartnm + '"발생일시"' + gendt + '" 는 이미 종료기록이 있으므로 삭제하실 수', 'I004');
  1798. //update상태로 변경된 row를 원상태로 변경
  1799. ds_main_detlgrup_detlgruplist.enableevent = false;
  1800. ds_main_detlgrup_detlgruplist.updatecontrol = false;
  1801. if( ds_main_detlgrup_detlgruplist.getRowType(i) == 4 ){
  1802. ds_main_detlgrup_detlgruplist.setRowType(i, 1);
  1803. }
  1804. ds_main_detlgrup_detlgruplist.updatecontrol = true;
  1805. ds_main_detlgrup_detlgruplist.enableevent = true;
  1806. xBedsoreGridPath.setColumn(i, "sel", "0");
  1807. xBedsoreGridPath.setColumn(i, "stat", "-");
  1808. return;
  1809. }
  1810. //등록 삭제시 해당부위에 사정기록있으면 등록~사정 모두삭제한다는 메세지 출력
  1811. else if( flag == '00' && isAss ){
  1812. //선택한 체크박스가 등록상태이고, 해당 발생부위에 사정기록이 존재할때
  1813. //사정기록까지 삭제하겠냐는 메세지 호출해 확인 누르면 해당 그룹 모두 체크 취소누르면 선택 해제
  1814. if( sysf_messageBox('선택하신 욕창부위 "'+returnArr[6]+'"를 삭제하시면 사정기록도 함께 삭제됩니다.', 'Q001') == 6 ){
  1815. fCheckSamePart(checkStr);
  1816. }
  1817. }
  1818. //첨부파일 등록된 갯수가 있으면 함께 삭제된다는 메세지 출력
  1819. else if( fileCnt > 0 ){
  1820. var fileMsg = sysf_messageBox('선택된 욕창기록에 첨부되어 있는 파일도 함께 삭제됩니다.', 'Q003') ;
  1821. if( fileMsg == 7 ){
  1822. return;
  1823. }else if( fileMsg == 6 ){
  1824. //상태값을 'd'로 변경
  1825. xBedsoreGridPath.setColumn(i, "stat", "d");
  1826. ds_main_detlgrup_detlgruplist.enableevent = false;
  1827. ds_main_detlgrup_detlgruplist.updatecontrol = false;
  1828. ds_main_detlgrup_detlgruplist.setRowType(i, 8);
  1829. ds_main_detlgrup_detlgruplist.updatecontrol = true;
  1830. ds_main_detlgrup_detlgruplist.enableevent = true;
  1831. }
  1832. }
  1833. else{
  1834. //상태값을 'd'로 변경
  1835. xBedsoreGridPath.setColumn(i, "stat", "d");
  1836. ds_main_detlgrup_detlgruplist.enableevent = false;
  1837. ds_main_detlgrup_detlgruplist.updatecontrol = false;
  1838. ds_main_detlgrup_detlgruplist.setRowType(i, 8);
  1839. ds_main_detlgrup_detlgruplist.updatecontrol = true;
  1840. ds_main_detlgrup_detlgruplist.enableevent = true;
  1841. //20080930 인증추가
  1842. signno = xBedsoreGridPath.getColumn(i, "signno");
  1843. // 인증 로직 호출
  1844. ViewFunc = "sign";
  1845. if( Sign.signprocess() == true ){
  1846. ds_send_savedata_signlist.setColumn(SIGN_ROW, "pid", pid); // 등록번호
  1847. ds_send_savedata_signlist.setColumn(SIGN_ROW, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  1848. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddd", orddd); // 입원일자(입원,응급)/진료일자(외래)
  1849. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signno", signno); // 서명번호
  1850. ds_send_savedata_signlist.setColumn(SIGN_ROW, "cretno" , cretno); // 생성번호
  1851. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recdd", utlf_getCurrentDate()); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  1852. ds_send_savedata_signlist.setColumn(SIGN_ROW, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  1853. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  1854. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signflag" , (HC_isHomeCare == true ? "20" : "02")); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  1855. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signgenrflag", (HC_isHomeCare == true ? ordtype : "I")); // 외래/입원구분 (코드정의서 M0010 참조)
  1856. ds_send_savedata_signlist.setColumn(SIGN_ROW, "formcd", "0000002461"); // 각 기록지별 서식코드(0000002461 피부욕창(상처)기록)
  1857. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddeptcd", orddeptcd); // 진료부서코드
  1858. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddrid" , orddrid); // 진료의사ID
  1859. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  1860. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  1861. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  1862. ds_send_savedata_signlist.setColumn(SIGN_ROW, "screenid", frmf_getScreenID());
  1863. ds_send_savedata_signlist.setColumn(SIGN_ROW, "dispyn", "N"); //인증저장용 data(view용 인증데이터는 따로 생성함)_20090204_SMY추가
  1864. } else {
  1865. return ;
  1866. }
  1867. }
  1868. }
  1869. }
  1870. }
  1871. //선택한 항목이 없을때
  1872. if( !delFlag ){
  1873. sysf_messageBox('삭제할 항목을', 'C002');
  1874. return;
  1875. }
  1876. //삭제하기전 첨부파일이 있으면 함께 삭제된다는 메세지 출력
  1877. //db에 저장되어 있던 데이터 삭제시(isSvrDel== true)
  1878. //20080930 retMsg추가
  1879. if( isSvrDel == true && retMsg == 7 ){
  1880. return;
  1881. }
  1882. //삭제 서브미션 호출
  1883. ds_send_savedata_detlgrup.assign(grdf_getGridUpdateData(group5.grd_detlgrup, "delete"));
  1884. ds_send_savedata.setColumn(0, "pid", ds_cond_patientgrupInfo_patientgruplistInfo.getColumn(0, "pid"));
  1885. ds_send_savedata_detlgrup.enableevent = false;
  1886. ds_send_savedata_detlgrup.updatecontrol = false;
  1887. for( var i=0 ; i<ds_send_savedata_detlgrup.rowcount ; i++ ){
  1888. if( ds_send_savedata_detlgrup.getColumn(i, "pushyn") == "1" ){
  1889. ds_send_savedata_detlgrup.setColumn(i, "pushyn", "Y");
  1890. }else{
  1891. ds_send_savedata_detlgrup.setColumn(i, "pushyn", "N");
  1892. }
  1893. if( ds_send_savedata_detlgrup.getColumn(i, "rptsmsflag") == "1" ){
  1894. ds_send_savedata_detlgrup.setColumn(i, "rptsmsflag", "true");
  1895. }else{
  1896. ds_send_savedata_detlgrup.setColumn(i, "rptsmsflag", "false");
  1897. }
  1898. if( ds_send_savedata_detlgrup.getColumn(i, "rptconfirmflag") == "1" ){
  1899. ds_send_savedata_detlgrup.setColumn(i, "rptconfirmflag", "true");
  1900. }else{
  1901. ds_send_savedata_detlgrup.setColumn(i, "rptconfirmflag", "false");
  1902. }
  1903. if( ds_send_savedata_detlgrup.getColumn(i, "sel") == "1" ){
  1904. ds_send_savedata_detlgrup.setColumn(i, "sel", "true");
  1905. }else{
  1906. ds_send_savedata_detlgrup.setColumn(i, "sel", "false");
  1907. }
  1908. }
  1909. ds_send_savedata_detlgrup.updatecontrol = true;
  1910. ds_send_savedata_detlgrup.enableevent = true;
  1911. var oParam = {};
  1912. oParam.id = "TXMNW04710";
  1913. oParam.service = "wardcareapp.WardCareRec";
  1914. oParam.method = "reqInsObsRec";
  1915. oParam.inds = "detlgrup=ds_send_savedata_detlgrup:U signdata=ds_send_savedata_signlist";
  1916. oParam.outds = "ds_temp_obsrecseqinfo_obsrecseqlist=obsrecseqlist";
  1917. oParam.async = false;
  1918. oParam.callback = "cf_TXMNW04710";
  1919. tranf_submit(oParam);
  1920. if( arErrorCode.pop("TXMNW04710") > -1 ){
  1921. ds_hidden_main_detlgrup_detlgruplist.copyData(ds_main_detlgrup_detlgruplist);
  1922. fMakeViewData(); //통합기록view용 데이터생성
  1923. if( !utlf_isNull(HC_homecarecd)) {
  1924. fSearch();
  1925. }else{
  1926. finit();
  1927. }
  1928. }
  1929. }
  1930. function cf_TXMNW04710(sSvcId, nErrorCode, sErrorMsg) {
  1931. arErrorCode.push(sSvcId, nErrorCode);
  1932. }
  1933. //선택한 발생부위에 해당되는 모든 그룹을 체크(true)로 변경
  1934. function fCheckSamePart(checkStr){
  1935. var _chkArr = utlf_transNullToEmpty(checkStr).split('¿');
  1936. var sRow = _chkArr[0];
  1937. var chkStr = _chkArr[1];
  1938. var _chkStr = '';
  1939. for( var i=sRow ; i<group5.grd_detlgrup.rowcount ; i++ ){
  1940. _chkStr = xBedsoreGridPath.getColumn(i, "obspartnm");
  1941. _chkStr += xBedsoreGridPath.getColumn(i, "genrdd");
  1942. _chkStr += xBedsoreGridPath.getColumn(i, "genrtm");
  1943. _chkStr += xBedsoreGridPath.getColumn(i, "cause");
  1944. if( chkStr == _chkStr ){
  1945. xBedsoreGridPath.setColumn(i, "stat", "d");
  1946. xBedsoreGridPath.setColumn(i, "sel", "1");
  1947. ds_main_detlgrup_detlgruplist.enableevent = false;
  1948. ds_main_detlgrup_detlgruplist.updatecontrol = false;
  1949. ds_main_detlgrup_detlgruplist.setRowType(i, 8);
  1950. ds_main_detlgrup_detlgruplist.updatecontrol = true;
  1951. ds_main_detlgrup_detlgruplist.enableevent = true;
  1952. }
  1953. }
  1954. }
  1955. //체크 해제하면 update상태를 select상태로 변경한다.
  1956. function fChangeStatus(selRow){
  1957. var isChk = xBedsoreGridPath.getColumn(selRow, "sel");
  1958. if( isChk == '0' ){
  1959. if( xBedsoreGridPath.getRowType(selRow) == "2" ){
  1960. } else {
  1961. xBedsoreGridPath.setColumn(selRow, "stat", "-");
  1962. xBedsoreGridPath.enableevent = false;
  1963. xBedsoreGridPath.updatecontrol = false;
  1964. xBedsoreGridPath.setRowType(selRow, 1);
  1965. xBedsoreGridPath.updatecontrol = true;
  1966. xBedsoreGridPath.enableevent = true;
  1967. }
  1968. }
  1969. }
  1970. /**
  1971. * @group :
  1972. * @ver : 2007.09.27
  1973. * : 2008.05.28 dhkim 수정
  1974. * @by : 정찬성
  1975. * @---------------------------------------------------
  1976. * @type : function
  1977. * @access : public
  1978. * @desc : 발생부위추가
  1979. * @param :
  1980. * @return :
  1981. * @---------------------------------------------------
  1982. */
  1983. function fAddGenArea(){
  1984. var pid = ds_cond.getColumn(0, "pid");
  1985. //욕창발생부위 추가시 등록번호 필수
  1986. if( utlf_isNull(pid) ){
  1987. sysf_messageBox("등록번호를 ","C001");
  1988. group5.grp_sea.ipt_pid.setFocus();
  1989. return;
  1990. }
  1991. //발생부위 추가전에 그리드에 row가 없으면 조회후 추가
  1992. if( group5.grd_detlgrup.rowcount == 0 ){
  1993. if( !fSearch() || utlf_isNull(pid) ){
  1994. sysf_messageBox('등록번호를', 'C001');
  1995. return;
  1996. }
  1997. }
  1998. var iRows = group5.grd_detlgrup.rowcount;
  1999. var iRow = group5.grd_detlgrup.currentrow;
  2000. ds_main_detlgrup_detlgruplist.addRow();
  2001. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "flag"), "edittype", "none");
  2002. // 보고확인 체크박스는 default로 비활성화 (2011.04.14 ahn)
  2003. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "rptconfirmflag"), "edittype", "none");
  2004. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "rptconfirmflag"), "controlbackground", "silver");
  2005. if( iRows < 1 ){
  2006. xBedsoreGridPath.setColumn(0, "grupcd", "00000001");
  2007. } else if( iRows > 0 ){
  2008. var sRowCnt = ds_main_detlgrup_detlgruplist.rowcount;
  2009. /* grupcd 현재 화면의 최대값 가져오기 시작 */
  2010. var retVal = "" ;
  2011. for( var i=0 ; i<sRowCnt ; i++ ){
  2012. if( xBedsoreGridPath.getColumn(i, "grupcd") ){
  2013. saveyn = 1 ;
  2014. }
  2015. retVal = Math.max(retVal, xBedsoreGridPath.getColumn(i, "grupcd"));
  2016. }
  2017. retVal = retVal + 1 ;
  2018. retVal = String(retVal) ;
  2019. retVal = fLpad(retVal,8,0);// grupcd 8자리 나머지는 0 으로 매꿈
  2020. /* grupcd 현재 화면의 최대값 가져오기 끝 */
  2021. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "grupcd", retVal);
  2022. }
  2023. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "stat", "i");
  2024. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "pid", pid);
  2025. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "genrdd", utlf_getCurrentDate());
  2026. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "genrtm", utlf_getCurrentDateTime().substring(9,13));
  2027. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "flag", "00");
  2028. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "recdd", utlf_getCurrentDate());
  2029. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "rectm", utlf_getCurrentDateTime().substring(9,13));
  2030. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "recrnm", sysf_getUserName());
  2031. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "recrid", sysf_getUserId());
  2032. // 발생부위추가 시 욕창보고 체크박스 default 체크 (2011.04.14 ahn)
  2033. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "rptsmsflag", "1");
  2034. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "pushyn", "1");
  2035. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "indd", ds_data_patientgruplist.getColumn(ds_data_patientgruplist.findRow("pid", pid), "indd"));
  2036. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "cretno", ds_data_patientgruplist.getColumn(ds_data_patientgruplist.findRow("pid", pid), "cretno"));
  2037. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "totpnt", ds_main_sriusgrup.getColumn(0, "totpnt"));
  2038. xBedsoreGridPath.setColumn(xBedsoreGridPath.rowposition, "clsgrupkind",ds_main_sriusgrup.getColumn(0, "clsgrupkind"));
  2039. var sExprEdit = group5.grd_detlgrup.getCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrdd"), "edittype");
  2040. if( sExprEdit.indexOf("currow == "+xBedsoreGridPath.rowposition+" ? 'date' : ") < 0 ){
  2041. if( sExprEdit == "none" ){
  2042. sExprEdit = "expr:currow == "+xBedsoreGridPath.rowposition+" ? 'date' : 'none'";
  2043. }else{
  2044. sExprEdit = sExprEdit.replace("'none'", "") + "currow == "+xBedsoreGridPath.rowposition+" ? 'date' : 'none'";
  2045. }
  2046. }
  2047. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrdd"), "edittype", sExprEdit);
  2048. var sExprEdit = group5.grd_detlgrup.getCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "recdd"), "edittype");
  2049. if( sExprEdit.indexOf("currow == "+xBedsoreGridPath.rowposition+" ? 'date' : ") < 0 ){
  2050. if( sExprEdit == "none" ){
  2051. sExprEdit = "expr:currow == "+xBedsoreGridPath.rowposition+" ? 'date' : 'none'";
  2052. }else{
  2053. sExprEdit = sExprEdit.replace("'none'", "") + "currow == "+xBedsoreGridPath.rowposition+" ? 'date' : 'none'";
  2054. }
  2055. }
  2056. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "recdd"), "edittype", sExprEdit);
  2057. }
  2058. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  2059. //++++++++++++++++++++++++++++++++++++++++ 저장 관련 펑션 모음 끝 +++++++++++++++++++++++++++++++++++++++++++++++//
  2060. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  2061. /**
  2062. * @group :
  2063. * @ver : 2007.09. 06
  2064. * @by : 정찬성
  2065. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  2066. * @type : function
  2067. * @access : public
  2068. * @desc : 왼쪽 자리수 채우기
  2069. * @param :
  2070. * @return :
  2071. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  2072. */
  2073. // Left 빈자리 만큼 padStr 을 붙인다.
  2074. function fLpad(src, len, padStr){
  2075. var retStr = "";
  2076. var padCnt = Number(len) - String(src).length;
  2077. for(var i=0;i<padCnt;i++)
  2078. retStr += String(padStr);
  2079. return retStr+src;
  2080. }
  2081. /**
  2082. * @group :
  2083. * @ver : 2007.04.04
  2084. * 2008.06.04 dhkim 수정
  2085. * @by : 정찬성
  2086. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  2087. * @type : function
  2088. * @access : public
  2089. * @desc : 그리드내의 mousedown 이벤트 발생시 호출
  2090. * @param :
  2091. * @return :
  2092. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  2093. */
  2094. function fMouseDownGridRow(e){
  2095. var iDetlGrupRow = group5.grd_detlgrup.currentrow;
  2096. //데이터 행이 존재할때
  2097. if( group5.grd_detlgrup.rowcount > 0 && iDetlGrupRow >= 0 ){
  2098. pMenu_detlgrupmenu.trackPopup(e.screenX, e.screenY);
  2099. }
  2100. }
  2101. /**
  2102. * @group :
  2103. * @ver : 2007.04.02
  2104. * : 2008.05.28 dhkim 수정
  2105. * @by : 정찬성
  2106. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2107. * @type : function
  2108. * @access : public
  2109. * @desc : 욕창그리드의 xforms-value-changed이벤트 발생시 호출된다.
  2110. * @param :
  2111. * @return :
  2112. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2113. */
  2114. function fChangedGridCol(){
  2115. var sDetlGrupRow = group5.grd_detlgrup.currentrow;
  2116. var sDetlGrupBKRow = -1;
  2117. var iRow = group5.grd_detlgrup.currentrow;
  2118. var iCol = group5.grd_detlgrup.currentcol;
  2119. var stat = xBedsoreGridPath.getColumn(group5.grd_detlgrup.currentrow, "stat");
  2120. //데이터 변경시 그리드 상태값(stat)을 u상태로 변경한다.
  2121. if( stat == "-" ){
  2122. //그리드의 stat update를 위한 비교할 hidden nodelist의 idx찾기
  2123. var obsrecseq = xBedsoreGridPath.getColumn(sDetlGrupRow, "obsrecseq");
  2124. for( var i=0 ; i<xClsListBKPath.rowcount ; i++ ){
  2125. if( xClsListBKPath.getColumn(i, "obsrecseq") == obsrecseq ){
  2126. sDetlGrupBKRow = i;
  2127. break;
  2128. }
  2129. }
  2130. //체크박스 선택 아닐때 조회해서 hidden에 담아둔 nodelist와 변경된 그리드의 nodelist의 stat를 비교하여 수정상태로 바꿔준다.
  2131. //if(iCol != 8){// 선택시 stat 값 변경 않기
  2132. if( iCol != group5.grd_detlgrup.getBindCellIndex("body", "sel") ){// 선택시 stat 값 변경 않기
  2133. for( var i=0 ; i<xBedsoreGridPath.getColCount() ; i++ ){
  2134. var sColNm = xBedsoreGridPath.getColID(i);
  2135. if( xBedsoreGridPath.getColumn(sDetlGrupRow, sColNm) != xClsListBKPath.getColumn(sDetlGrupBKRow, sColNm) ){
  2136. xBedsoreGridPath.setColumn(sDetlGrupRow, "stat", "u");
  2137. break;
  2138. }
  2139. }
  2140. //var preUnderAngle = model.getValue(xClsListBKPath+"["+sDetlGrupBKRow+"]/underangle");
  2141. //var updateUnerAngle = model.getValue(xBedsoreGridPath+"["+ sDetlGrupRow +"]/underangle");
  2142. //if(preUnderAngle != updateUnerAngle) {
  2143. // model.setValue(xBedsoreGridPath+"["+(grd_detlgrup.row-1)+"]/stat2","u");
  2144. //}
  2145. }
  2146. }
  2147. }
  2148. /**
  2149. * @group :
  2150. * @ver : 2007.09.27
  2151. * : 2008.05.28 dhkim 수정
  2152. * @by : 정찬성
  2153. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2154. * @type : function
  2155. * @access : public
  2156. * @desc : 선택한 부위가 종료된 것이 있으면 종료할 수 없다는 메세지를 출력한다.
  2157. * 선택한 부위가 사정된 것이 없으면 종료할 수 없다는 메세지를 출력한다.
  2158. * 발생부위가 등록/사정만 있으면 해당 발생부위 하위에
  2159. * 구분을 종료로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가한다.
  2160. * @param :
  2161. * @return :
  2162. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2163. */
  2164. function fAddSameLevlItemEnd(){
  2165. fAddSameLevlItem(true);
  2166. return ;
  2167. }
  2168. /**
  2169. * @group :
  2170. * @ver : 2008.05.28
  2171. * @by : dhkim
  2172. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  2173. * @type : function
  2174. * @access : public
  2175. * @param : selEndMenu - true이면 오른쪽 메뉴에서 종료를 선택한 상태, false이면 사정을 선택한 상태
  2176. * @return :
  2177. * @desc : 선택한 부위가 종료된 것이 있으면 사정할수 없다는 메세지를 출력한다.
  2178. * 발생부위가 등록/사정만 있으면 해당 발생부위 하위에
  2179. * 구분을 사정으로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가한다.
  2180. * @--------------------------------------------------------------------------------------------------------------------------------------------------------------
  2181. */
  2182. function fAddSameLevlItem(selEndMenu){//오른쪽 메뉴에서 사정또는 종료 선택시
  2183. var msgStr = '사정기록';
  2184. if(selEndMenu){
  2185. msgStr = '종료기록';
  2186. }
  2187. //종료또는 사정기록 존재여부를 리턴받는다.
  2188. var returnArr = fIsExistEndData(group5.grd_detlgrup.currentrow);
  2189. var compareStr = returnArr[0];
  2190. var compRow = returnArr[1];
  2191. var isAss = returnArr[2];
  2192. var isEnd = returnArr[3];
  2193. var isStage = returnArr[16];
  2194. var stage = returnArr[15];
  2195. //종료기록이 있으면 입력할수 없다는 메세지 출력후 리턴
  2196. if( isEnd ){
  2197. sysf_messageBox('선택하신 부위는 이미 종료된 기록이 있으므로 다시 '+ msgStr +' 하실 수', 'I004');
  2198. return;
  2199. }
  2200. //종료메뉴 선택시 사정기록이 없으면 메세지 출력후 리턴
  2201. if( selEndMenu && !isAss ){
  2202. sysf_messageBox('선택하신 부위는 사정기록이 없으므로 ' + msgStr + ' 하실 수', 'I004');
  2203. return;
  2204. }
  2205. //1~4단계 기록이 있으면 입력할수 없다는 메세지 출력후 리턴
  2206. if( isStage && (stage == "65" || stage == "66") ){
  2207. sysf_messageBox('선택하신 부위는 이미 1~4단계로 기록된 내용이 있으므로 5, 6단계 기록을 활용하여 사정 하실 수', 'I004');
  2208. return;
  2209. }
  2210. //해당 발생부위 가장 하위의 그리드에 insertRow을 하기 위해 발생부위 가장 하위row index를 찾는다.
  2211. var addLastRow = -1;
  2212. var _compareStr;
  2213. for( var i=compRow ; i<group5.grd_detlgrup.rowcount ; i++ ){
  2214. _compareStr = xBedsoreGridPath.getColumn(i, "obspartnm");
  2215. _compareStr += xBedsoreGridPath.getColumn(i, "genrdd");
  2216. _compareStr += xBedsoreGridPath.getColumn(i, "genrtm");
  2217. _compareStr += xBedsoreGridPath.getColumn(i, "cause");
  2218. if( compareStr != _compareStr ){
  2219. addLastRow = i;
  2220. break;
  2221. }
  2222. }
  2223. var rows = group5.grd_detlgrup.rowcount-1;
  2224. var gropcd1= xBedsoreGridPath.getColumn(rows, "grupcd");
  2225. var gropcd2= xBedsoreGridPath.getColumn(group5.grd_detlgrup.currentrow, "grupcd");
  2226. // alert("gropcd1: "+gropcd1);
  2227. // alert("gropcd2: "+gropcd2);
  2228. // alert("addLastRow: "+addLastRow);
  2229. // alert("compRow: "+compRow);
  2230. //발생부위가 등록/사정만 있으면 해당 발생부위 하위에 사정 추가
  2231. //구분을 사정으로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가.
  2232. if( addLastRow == -1 ){
  2233. if( gropcd1 == gropcd2 || compRow == -1 || compRow == rows){// 마지막 행
  2234. ds_main_detlgrup_detlgruplist.addRow();
  2235. }else{
  2236. ds_main_detlgrup_detlgruplist.insertRow(group5.grd_detlgrup.currentrow+1);
  2237. }
  2238. addLastRow = group5.grd_detlgrup.currentrow;
  2239. }else{
  2240. ds_main_detlgrup_detlgruplist.insertRow(addLastRow);
  2241. }
  2242. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "flag"), "edittype", "none");
  2243. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "rptconfirmflag"), "edittype", "none");
  2244. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "rptconfirmflag"), "controlbackground", "silver");
  2245. //그리드에 발생부위, 일자, 시간, 원인, 기록일시 set한다.
  2246. fSetInsertValue(addLastRow, selEndMenu, returnArr);
  2247. }
  2248. /**
  2249. * @group :
  2250. * @ver : 2008.05.28
  2251. * @by : dhkim
  2252. * @---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2253. * @type : function
  2254. * @access : public
  2255. * @param : selRow - 선택한 row 인덱스
  2256. * @param : updatePartChk - 욕창발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  2257. * @return : returnArr(10) - 배열로 리턴한다.
  2258. * @desc : 선택한 발생부위의 기록에 사정 또는 종료가 존재하는지 여부를 배열로 리턴한다
  2259. * Array idx value type description
  2260. * --------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2261. * returnArr[0] compareStr string 선택한 '발생부위+발생일자+발생시간+원인'을 그리드의 반복문과 비교한다.
  2262. * returnArr[1] compRow int 반복문 내에서 compareStr과 같은 string의 첫번째 인덱스(발생부위의 가장 하위 row index찾기 위한 초기값)
  2263. * returnArr[2] isAss boolean 해당발생부위의 사정기록 존재여부
  2264. * returnArr[3] isEnd boolean 해당발생부위의 종료기록 존재여부
  2265. * returnArr[4] pid string 등록번호(set parameter)
  2266. * returnArr[5] grupcd string 그룹코드(set parameter)
  2267. * returnArr[6] obspartnm string 발생부위(set parameter)
  2268. * returnArr[7] genrdd string 발생일자(set parameter)
  2269. * returnArr[8] genrtm string 발생시간(set parameter)
  2270. * returnArr[9] cause string 원인 (set parameter)
  2271. * returnArr[10] causeid string 원인코드(set parameter)
  2272. * returnArr[12] genrplce string 발생장소(set parameter)
  2273. * returnArr[13] genrplceid string 발생장소코드(set parameter)
  2274. * @----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  2275. */
  2276. function fIsExistEndData(selRow, updatePartChk){
  2277. //발생부위에 대해 종료된 사정인 경우 메세지 출력
  2278. var compareStr, _compareStr, _flag;//비교값 str
  2279. var compRow = -1;
  2280. var isAss ; //사정기록 존재여부
  2281. var isEnd ; //종료기록 존재여부
  2282. var returnArr = new Array(10);
  2283. var isStage ; //1~4단계 기록 존재여부
  2284. //선택한 발생부위 비교값
  2285. var pid = xBedsoreGridPath.getColumn(selRow, "pid");
  2286. var grupcd = xBedsoreGridPath.getColumn(selRow, "grupcd");
  2287. var obspartnm = xBedsoreGridPath.getColumn(selRow, "obspartnm");
  2288. var genrdd = xBedsoreGridPath.getColumn(selRow, "genrdd");
  2289. var genrtm = xBedsoreGridPath.getColumn(selRow, "genrtm");
  2290. var cause = xBedsoreGridPath.getColumn(selRow, "cause");
  2291. var causeid = xBedsoreGridPath.getColumn(selRow, "causeid");
  2292. var genrplce = xBedsoreGridPath.getColumn(selRow, "genrplce"); //발생장소추가_20090220_SMY
  2293. var genrplceid = xBedsoreGridPath.getColumn(selRow, "genrplceid"); //발생장소추가_20090220_SMY
  2294. var stage = xBedsoreGridPath.getColumn(selRow, "stage"); //단계 추가 2013.03.18 KJS
  2295. var stageid = xBedsoreGridPath.getColumn(selRow, "stageid"); //단계 추가 2013.03.18 KJS
  2296. var genrplcewardcd = xBedsoreGridPath.getColumn(selRow, "genrplcewardcd");
  2297. //욕창발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  2298. if(updatePartChk){
  2299. compareStr = obspartnm;
  2300. }else{
  2301. compareStr = obspartnm + genrdd + genrtm + cause;
  2302. }
  2303. var obsrecseq = 0;
  2304. //선택한 compareStr과 그리드내의 모든 _compareStr을 비교한다.
  2305. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  2306. //alert('i = ' + i + 'selRow : ' + selRow + ' 부위 : ' + model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/obspartnm'));
  2307. if( selRow != i ){
  2308. _compareStr = xBedsoreGridPath.getColumn(i, "obspartnm");
  2309. //욕창발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  2310. if( !updatePartChk ){
  2311. _compareStr += xBedsoreGridPath.getColumn(i, "genrdd");
  2312. _compareStr += xBedsoreGridPath.getColumn(i, "genrtm");
  2313. _compareStr += xBedsoreGridPath.getColumn(i, "cause");
  2314. }
  2315. }
  2316. if( compareStr == _compareStr ){
  2317. compRow = i;
  2318. _flag = xBedsoreGridPath.getColumn(i, "flag");
  2319. if( _flag == '99' ){//등록구분이 종료(99)
  2320. isEnd = true;
  2321. obsrecseq = xBedsoreGridPath.getColumn(i, "obsrecseq");
  2322. break;
  2323. }else if( _flag == '01' ){//등록구분이 사정(01)
  2324. isAss = true;
  2325. obsrecseq = xBedsoreGridPath.getColumn(i, "obsrecseq");
  2326. }else{
  2327. isEnd = false;
  2328. isAss = false;
  2329. }
  2330. }
  2331. }
  2332. //선택한 compareStr과 그리드내의 모든 _compareStr을 비교한다.
  2333. for( var i=0 ; i<group5.grd_detlgrup.rowcount ; i++ ){
  2334. //alert('i = ' + i + 'selRow : ' + selRow + ' 부위 : ' + model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/obspartnm'));
  2335. if( selRow != i ){
  2336. _compareStr = xBedsoreGridPath.getColumn(i, "obspartnm");
  2337. //욕창발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  2338. if( !updatePartChk ){
  2339. _compareStr += xBedsoreGridPath.getColumn(i, "genrdd");
  2340. _compareStr += xBedsoreGridPath.getColumn(i, "genrtm");
  2341. _compareStr += xBedsoreGridPath.getColumn(i, "cause");
  2342. }
  2343. }
  2344. if( compareStr == _compareStr ){
  2345. compRow = i;
  2346. _stageid = xBedsoreGridPath.getColumn(i, "stageid");
  2347. if( _stageid != '65' && _stageid != '66' ){
  2348. isStage = true;
  2349. break;
  2350. } else {
  2351. isStage = false;
  2352. }
  2353. }
  2354. }
  2355. //배열을 리턴한다.
  2356. returnArr[0] = utlf_transNullToEmpty(compareStr);
  2357. returnArr[1] = utlf_transNullToEmpty(compRow);
  2358. returnArr[2] = utlf_transNullToEmpty(isAss);
  2359. returnArr[3] = utlf_transNullToEmpty(isEnd);
  2360. returnArr[4] = utlf_transNullToEmpty(pid);
  2361. returnArr[5] = utlf_transNullToEmpty(grupcd);
  2362. returnArr[6] = utlf_transNullToEmpty(obspartnm);
  2363. returnArr[7] = utlf_transNullToEmpty(genrdd);
  2364. returnArr[8] = utlf_transNullToEmpty(genrtm);
  2365. returnArr[9] = utlf_transNullToEmpty(cause);
  2366. returnArr[10] = utlf_transNullToEmpty(causeid);
  2367. returnArr[11] = utlf_transNullToEmpty(obsrecseq);
  2368. returnArr[12] = utlf_transNullToEmpty(genrplce);
  2369. returnArr[13] = utlf_transNullToEmpty(genrplceid);
  2370. returnArr[14] = utlf_transNullToEmpty(stage);
  2371. returnArr[15] = utlf_transNullToEmpty(stageid);
  2372. returnArr[16] = utlf_transNullToEmpty(isStage);
  2373. returnArr[17] = utlf_transNullToEmpty(genrplcewardcd);
  2374. return returnArr;
  2375. }
  2376. /**
  2377. * @group :
  2378. * @ver : 2008.05.28
  2379. * @by : dhkim
  2380. * @----------------------------------------------------------------------------------------------------------------------------------------------
  2381. * @type : function
  2382. * @access : public
  2383. * @param :
  2384. * @return :
  2385. * @desc : 구분을 사정으로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가.
  2386. * @----------------------------------------------------------------------------------------------------------------------------------------------
  2387. */
  2388. function fSetInsertValue(addLastRow, selEndMenu, returnArr){
  2389. xBedsoreGridPath.setColumn(addLastRow, "stat", "i");
  2390. xBedsoreGridPath.setColumn(addLastRow, "pid", returnArr[4]);
  2391. xBedsoreGridPath.setColumn(addLastRow, "grupcd", returnArr[5]);
  2392. xBedsoreGridPath.setColumn(addLastRow, "obspartnm", returnArr[6]);
  2393. xBedsoreGridPath.setColumn(addLastRow, "genrdd", returnArr[7]);
  2394. xBedsoreGridPath.setColumn(addLastRow, "genrtm", returnArr[8]);
  2395. xBedsoreGridPath.setColumn(addLastRow, "cause", returnArr[9]);
  2396. xBedsoreGridPath.setColumn(addLastRow, "causeid", returnArr[10]);
  2397. xBedsoreGridPath.setColumn(addLastRow, "recdd", utlf_getCurrentDate());
  2398. xBedsoreGridPath.setColumn(addLastRow, "rectm", utlf_getCurrentDateTime().substring(9,13));
  2399. //기록자정보추가_20090203_SMY
  2400. xBedsoreGridPath.setColumn(addLastRow, "recrnm", sysf_getUserName());
  2401. xBedsoreGridPath.setColumn(addLastRow, "recrid", sysf_getUserId());
  2402. //발생장소추가_20090220_SMY
  2403. xBedsoreGridPath.setColumn(addLastRow, "genrplce", returnArr[12]);
  2404. xBedsoreGridPath.setColumn(addLastRow, "genrplceid", returnArr[13]);
  2405. xBedsoreGridPath.setColumn(addLastRow, "genrplcewardcd", returnArr[17]);
  2406. //단계 추가 2013.03.18 KJS
  2407. xBedsoreGridPath.setColumn(addLastRow, "stage", returnArr[14]);
  2408. xBedsoreGridPath.setColumn(addLastRow, "stageid", returnArr[15]);
  2409. if( !selEndMenu ){
  2410. xBedsoreGridPath.setColumn(addLastRow, "flag", "01");//사정
  2411. }else{
  2412. xBedsoreGridPath.setColumn(addLastRow, "flag", "99");//종료
  2413. }
  2414. var sExprEdit = group5.grd_detlgrup.getCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrdd"), "edittype").replace("currow == "+addLastRow+" ? 'date' : ", "");
  2415. if( sExprEdit == "expr:'none'" ){
  2416. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrdd"), "edittype", "none");
  2417. }else{
  2418. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrdd"), "edittype", sExprEdit);
  2419. }
  2420. var sExprEdit = group5.grd_detlgrup.getCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrplcewardcd"), "edittype").replace("currow == "+addLastRow+" ? 'combo' : ", "");
  2421. if( sExprEdit == "expr:'none'" ){
  2422. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrplcewardcd"), "edittype", "none");
  2423. }else{
  2424. group5.grd_detlgrup.setCellProperty("Body", group5.grd_detlgrup.getBindCellIndex("body", "genrplcewardcd"), "edittype", sExprEdit);
  2425. }
  2426. }
  2427. function fAddSameLevlItem111(isEnd){
  2428. var msgStr = '사정기록';
  2429. if(isEnd){
  2430. msgStr = '종료기록';
  2431. }
  2432. //발생부위에 대해 종료된 사정인 경우 메세지 출력
  2433. var compareStr, _compareStr, _flag;//비교값 str
  2434. var pid = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/pid');
  2435. var grupcd = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/grupcd');
  2436. var obspartnm = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/obspartnm');
  2437. var genrdd = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/genrdd');
  2438. var genrtm = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/genrtm');
  2439. var cause = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/cause');
  2440. var causeid = model.getValue(xBedsoreGridPath+ '[' + (grd_detlgrup.row-1) + ']/causeid');
  2441. var compRow = 0;
  2442. var isAss = false;//사정기록 존재여부
  2443. //선택한 발생부위 비교값
  2444. compareStr = obspartnm + genrdd + genrtm + cause;
  2445. //종료기록이 있으면 메세지 출력후 리턴
  2446. for(var i = 2; i < grd_detlgrup.rows; i++){
  2447. _compareStr = model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/obspartnm');
  2448. _compareStr += model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/genrdd');
  2449. _compareStr += model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/genrtm');
  2450. _compareStr += model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/cause');
  2451. if(compareStr == _compareStr){
  2452. compRow = i;
  2453. _flag = model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/flag');
  2454. if(_flag == '99'){
  2455. messageBox('선택하신 부위는 이미 종료된 기록이므로 다시 '+ msgStr +' 하실 수', 'I004');
  2456. return;
  2457. }else if(_flag == '01'){
  2458. isAss = true;
  2459. }
  2460. }
  2461. }
  2462. //종료메뉴 선택시 사정기록이 없으면 메세지 출력후 리턴
  2463. if(isEnd && !isAss){
  2464. messageBox('선택하신 부위는 사정기록이 없으므로 ' + msgStr + ' 하실 수', 'I004');
  2465. return;
  2466. }
  2467. //해당 발생부위 가장 하위 row index찾기
  2468. var addLastRow = 0;
  2469. for(var i = compRow; i < grd_detlgrup.rows; i++){
  2470. _compareStr = model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/obspartnm');
  2471. _compareStr += model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/genrdd');
  2472. _compareStr += model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/genrtm');
  2473. _compareStr += model.getValue(xBedsoreGridPath+ '[' + (i-1) + ']/cause');
  2474. if(compareStr != _compareStr){
  2475. addLastRow = i;
  2476. break;
  2477. }
  2478. }
  2479. //발생부위가 등록/사정만 있으면 해당 발생부위 하위에 사정 추가
  2480. //구분을 사정으로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가.
  2481. if(addLastRow == 0){
  2482. addLastRow = grd_detlgrup.rows;
  2483. grd_detlgrup.addRow();
  2484. // 보고확인 체크박스는 default로 비활성화 (2011.04.14 ahn)
  2485. grd_detlgrup.colDisabled(grd_detlgrup.colRef("rptconfirmflag"))=true;
  2486. }else{
  2487. grd_detlgrup.insertRow(addLastRow);
  2488. // 보고확인 체크박스는 default로 비활성화 (2011.04.14 ahn)
  2489. grd_detlgrup.colDisabled(grd_detlgrup.colRef("rptconfirmflag"))=true;
  2490. }
  2491. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/stat', 'i');
  2492. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/pid', pid);
  2493. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/grupcd', grupcd);
  2494. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/obspartnm', obspartnm);
  2495. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/genrdd', genrdd);
  2496. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/genrtm', genrtm);
  2497. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/cause', cause);
  2498. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/causeid', causeid);
  2499. model.setValue(xBedsoreGridPath+ "[" + (addLastRow-1) + "]/recdd", getCurrentDate());
  2500. model.setValue(xBedsoreGridPath+ "[" + (addLastRow-1) + "]/rectm", getCurrentDateTime().substring(9,13));
  2501. if(!isEnd)
  2502. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/flag', '01');//사정
  2503. else
  2504. model.setValue(xBedsoreGridPath+ '[' + (addLastRow-1) + ']/flag', '99');//종료
  2505. model.refresh();
  2506. }
  2507. /**
  2508. * @group :
  2509. * @ver : 2009.02.04
  2510. * @by : smy
  2511. * @----------------------------------------------------------------------------------------------------------------------------------------------
  2512. * @type : function
  2513. * @access : public
  2514. * @param :
  2515. * @return :
  2516. * @desc : 통합기록조회용 인증데이터 생성
  2517. * @----------------------------------------------------------------------------------------------------------------------------------------------
  2518. */
  2519. function fMakeViewData(){
  2520. var pid = ds_cond.getColumn(0, "pid");
  2521. var indd = ds_data_patientgruplist.lookup("pid", pid, "indd");
  2522. var cretno = ds_data_patientgruplist.lookup("pid", pid, "cretno");
  2523. var orddeptcd = ds_data_patientgruplist.lookup("pid", pid, "orddeptcd");
  2524. var orddrid = ds_data_patientgruplist.lookup("pid", pid, "orddrid");
  2525. var ordtype = ds_data_patientgruplist.lookup("pid", pid, "ordtype");
  2526. var signno = '';
  2527. //조회조건값 세팅
  2528. ds_send.setColumn(0, "pid", ds_cond.getColumn(0, "pid")); //등록번호
  2529. ds_send.setColumn(0, "indd", ds_data_patientgruplist.lookup("pid", pid, "indd")); //등록번호
  2530. ds_send.setColumn(0, "cretno", ds_data_patientgruplist.lookup("pid", pid, "cretno")); //등록번호
  2531. ds_send.setColumn(0, "genrdd", ds_cond.getColumn(0, "genrdd")); //기준일자(발생일자)
  2532. ds_send.setColumn(0, "genrtm", ds_cond.getColumn(0, "genrtm")); //기준시간(발생시간)
  2533. ds_send.setColumn(0, "stdradio", '0'); //조회조건의라디오(전체/종료전(전체)/종료전(최근입력만))
  2534. ds_send.setColumn(0, "homecare", (HC_isHomeCare == true ? "Y" : "")); //가정간호대상자
  2535. ds_send.setColumn(0, "careflag", HC_gCareFlag); //가정간호대상자
  2536. ds_send.setColumn(0, "inptdt", HC_gInptDt); //가정간호대상자
  2537. //피부욕창관찰기록 조회
  2538. ds_main_detlgrup_detlgruplist.clearData();
  2539. var oParam = {};
  2540. oParam.id = "TRMNW04708";
  2541. oParam.service = "wardcareapp.WardCareRec";
  2542. oParam.method = "reqGetObsList";
  2543. oParam.inds = "refCond=ds_send";
  2544. oParam.outds = "ds_viewinfo_viewdetlgrup_detlgruplist=getVO";
  2545. oParam.async = false;
  2546. oParam.callback = "cf_TRMNW04708";
  2547. tranf_submit(oParam);
  2548. if( arErrorCode.pop("TRMNW04708") > -1 ){
  2549. // 인증 로직 호출
  2550. ViewFunc = "view";
  2551. if( Sign.signprocess() == true ){
  2552. ds_send_savedata.setColumn(0, "pid", pid); // 등록번호
  2553. ds_send_savedata.setColumn(0, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  2554. ds_send_savedata.setColumn(0, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  2555. ds_send_savedata.setColumn(0, "signno", signno); // 서명번호
  2556. ds_send_savedata.setColumn(0, "cretno" , cretno); // 생성번호
  2557. ds_send_savedata.setColumn(0, "recdd", ds_viewinfo_viewdetlgrup_detlgruplist.getColumn(0, "signrecddmax")); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  2558. ds_send_savedata.setColumn(0, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  2559. ds_send_savedata.setColumn(0, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  2560. ds_send_savedata.setColumn(0, "signflag" , (HC_isHomeCare == true ? "20" : "02")); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  2561. ds_send_savedata.setColumn(0, "signgenrflag", (HC_isHomeCare == true ? ordtype : "I")); // 외래/입원구분 (코드정의서 M0010 참조)
  2562. ds_send_savedata.setColumn(0, "formcd", "0000002461"); // 각 기록지별 서식코드(0000002461 피부욕창(상처)기록)
  2563. ds_send_savedata.setColumn(0, "orddeptcd", orddeptcd); // 진료부서코드
  2564. ds_send_savedata.setColumn(0, "orddrid" , orddrid); // 진료의사ID
  2565. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  2566. ds_send_savedata.setColumn(0, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  2567. ds_send_savedata.setColumn(0, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  2568. ds_send_savedata.setColumn(0, "screenid" , frmf_getScreenID());
  2569. ds_send_savedata.setColumn(0, "dispyn", "Y"); //인증저장용 data(view용 인증데이터는 따로 생성함)_20090204_SMY추가
  2570. } else {
  2571. return ;
  2572. }
  2573. var oParam = {};
  2574. oParam.id = "TXMNW04713";
  2575. oParam.service = "carerecapp.ClincObsRec";
  2576. oParam.method = "reqExeSaveViewData";
  2577. oParam.inds = "signinfo=ds_send_savedata";
  2578. oParam.outds = "";
  2579. oParam.async = false;
  2580. oParam.callback = "cf_TXMNW04713";
  2581. tranf_submit(oParam);
  2582. if( arErrorCode.pop("TXMNW04713") > -1 ){
  2583. //model.removeNodeset("/root/viewinfo"); //***********************************
  2584. //model.makeNode("/root/viewinfo"); //**********************************
  2585. }
  2586. }
  2587. }
  2588. function cf_TRMNW04708(sSvcId, nErrorCode, sErrorMsg) {
  2589. arErrorCode.push(sSvcId, nErrorCode);
  2590. }
  2591. function cf_TXMNW04713(sSvcId, nErrorCode, sErrorMsg) {
  2592. arErrorCode.push(sSvcId, nErrorCode);
  2593. }
  2594. // 응급실 구역 보여주기
  2595. function fnZoneDisp() {
  2596. //응급의료센터(2280200000)인 경우
  2597. //내환자정보대신에 구역정보가 보임)
  2598. if ( !utlf_isNull(ds_codelist.getColumn(ds_codelist.findRowExpr("cdgrupid=='002' && cdid=='"+group5.grp_sea.cmb_wardcd.value+"'"), "cdid")) ){
  2599. //cap_settingrn.visible = false;
  2600. //cmb_settingrn.visible = false;
  2601. group5.grp_sea.cap_Zone.visible = true;
  2602. group5.grp_sea.cmb_Zone.visible = true;
  2603. group5.grp_sea.cap_settingrn.position="absolute 390 14 455 34";
  2604. group5.grp_sea.cmb_settingrn.position="absolute 455 14 525 34";
  2605. var zonecd = ds_temp_paminfo.getColumn(0, "basetypecd");
  2606. if( !utlf_isNull(zonecd) && zonecd != "-" ){
  2607. group5.grp_sea.cmb_Zone.value = ds_temp_paminfo.getColumn(0, "basetypecd");
  2608. } else {
  2609. group5.grp_sea.cmb_Zone.value = "-";
  2610. }
  2611. } else {
  2612. //cap_settingrn.visible = true;
  2613. //cmb_settingrn.visible = true;
  2614. group5.grp_sea.cap_Zone.visible = false;
  2615. group5.grp_sea.cmb_Zone.visible = false;
  2616. group5.grp_sea.cmb_Zone.value = "-";
  2617. group5.grp_sea.cap_settingrn.position="absolute 252 14 317 34";
  2618. group5.grp_sea.cmb_settingrn.position="absolute 317 14 387 34";
  2619. }
  2620. }
  2621. // 내환자 셋팅정보 조회
  2622. function fSettingnurid(){
  2623. ds_send_reqdata.setColumn(0, "wardcd", ds_cond.getColumn(0, "wardcd"));
  2624. var oParam = {};
  2625. oParam.id = "TRMNW10910";
  2626. oParam.service = "wardcareapp.WardCareMngt";
  2627. oParam.method = "reqGetSettingRnList";
  2628. oParam.inds = "req=ds_send_reqdata";
  2629. oParam.outds = "ds_init_settinginfo_settingrn=settingrn";
  2630. oParam.async = false;
  2631. oParam.callback = "cf_TRMNW10910";
  2632. tranf_submit(oParam);
  2633. if( arErrorCode.pop("TRMNW10910") > -1 ){
  2634. //settingnurid = model.getValue("/root/init/settinginfo/settingrn[settingrnid='" + getUserInfo("userid") +"']/settingrnid");
  2635. ds_init_settinginfo_settingrn.setColumn(0, "settingrnid", "");
  2636. ds_cond.setColumn(0, "settingrnid", "");
  2637. group5.grp_sea.cmb_settingrn.index = 0;
  2638. }
  2639. }
  2640. function cf_TRMNW10910(sSvcId, nErrorCode, sErrorMsg) {
  2641. arErrorCode.push(sSvcId, nErrorCode);
  2642. }
  2643. // 환자 리스트 조회
  2644. function fGetWardPatList(){
  2645. ds_main_detlgrup_detlgruplist.clearData();
  2646. ds_send_reqdata.copyRow(0, ds_cond, 0);
  2647. if( ds_cond.getColumn(0, "wardcd") == ds_codelist.getColumn(0, "cdid") ){
  2648. ds_send_reqdata.setColumn(0, "emcflag", "Y");
  2649. }
  2650. var oParam = {};
  2651. oParam.id = "TRMNW04715";
  2652. oParam.service = "wardcareapp.WardCareRec";
  2653. oParam.method = "reqGetDetlgrupWardPatInfo";
  2654. oParam.inds = "reqdata=ds_send_reqdata";
  2655. oParam.outds = "ds_main_wardpatinfo_wardpatlist=wardpatlist";
  2656. oParam.async = false;
  2657. //oParam.callback = "cf_TRMNW04715";
  2658. tranf_submit(oParam);
  2659. ds_main_wardpatinfo_wardpatlist.updateColID("medispclid", "orddrid");
  2660. ds_main_wardpatinfo_wardpatlist.rowposition = -1;
  2661. }
  2662. // 재원/퇴원 구분
  2663. function fSetInDsch(Pram){
  2664. if( Pram == "A" ){
  2665. ds_cond.setColumn(0, "indsch", "1");
  2666. }else{
  2667. ds_cond.setColumn(0, "indsch", "2");
  2668. }
  2669. fSetInDschHidden();
  2670. }
  2671. // 재원/퇴원 구분
  2672. function fSetInDschHidden(){
  2673. var indsch = ds_cond.getColumn(0, "indsch");
  2674. if( indsch == "1" ){
  2675. if( utlf_isNull(HC_homecarecd)) {
  2676. group5.grp_sea.ctn_pid.visible = false;
  2677. group5.grp_sea.cmb_patientnm.visible = false;
  2678. group5.grp_sea.ipt_pid.visible = false;
  2679. group5.grp_sea.ctn_ward.visible = true;
  2680. group5.grp_sea.cmb_wardcd.visible = true;
  2681. group5.grp_sea.cap_settingrn.visible = true;
  2682. group5.grp_sea.cmb_settingrn.visible = true;
  2683. }
  2684. fnZoneDisp();
  2685. }else if( indsch == "2" ){
  2686. group5.grp_sea.ctn_pid.visible = true;
  2687. group5.grp_sea.cmb_patientnm.visible = true;
  2688. group5.grp_sea.ipt_pid.visible = true;
  2689. group5.grp_sea.ctn_ward.visible = false;
  2690. group5.grp_sea.cmb_wardcd.visible = false;
  2691. group5.grp_sea.cap_settingrn.visible = false;
  2692. group5.grp_sea.cmb_settingrn.visible = false;
  2693. group5.grp_sea.cap_Zone.visible = false;
  2694. group5.grp_sea.cmb_Zone.visible = false;
  2695. }
  2696. }
  2697. /***********************************************************************************************************************************************************/
  2698. /****************************************************** 피부욕창기록에서 사용하는 펑션 종료 ************************************************************/
  2699. /***********************************************************************************************************************************************************/
  2700. ]]></Script>