SMMNW4700.js 129 KB

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