SMMNW15200.xjs 67 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. (SMMNW15200.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - Desc : 정맥염관찰기록 및 정맥염관찰기록 팝업이미지 에서 사용하는 스크립트
  7. */
  8. var xWardPatInfoPath = ds_main_wardpatinfo_wardpatlist; // 환자리스트 xPath
  9. var xBedsoreGridPath = ds_main_veininfo_veinlist; // 정맥염 리스트 xPath
  10. var xClsListBKPath = ds_hidden_main_veininfo_veinlist; // 그리드 hidden xPath
  11. var xPamInfoPath = '/root/main/paminfo'
  12. var xGrupcdmax = "";
  13. /////////////////조회관련 함수 시작////////////////////
  14. //통합기록조회
  15. var ViewFunc = "sign"; //sign : 기록인증용, view : view인증용
  16. //화면을 초기화한다. 화면로딩이 끝난 시점에 호출된다.
  17. function finit(pFlag){
  18. var instcd = sysf_getUserInfo("dutplceinstcd");
  19. var standard_yn = "orduseyn";
  20. var ord_deptflag = 'W';
  21. var rslt_ref = "ds_init_dept_dept";
  22. var sort_field = "depthngnm";
  23. var sort_method = "asc";
  24. var dt = utlf_getCurrentDate();
  25. ds_main_cond.setColumn(0, "indsch", "1");
  26. ds_main_paminfo_list.clearData();
  27. var paminfo = sysf_getGlobalVariable("paminfo");
  28. var pid = "";
  29. var wardcd = "";
  30. var indschacptstat = "";
  31. if( paminfo.length > 0 ){
  32. dsf_setCSVToDs("ds_main_paminfo_list", paminfo); //환자정보내리기
  33. pid = ds_main_paminfo_list.getColumn(0, "pid");
  34. wardcd = ds_main_paminfo_list.getColumn(0, "wardcd");
  35. indschacptstat = ds_main_paminfo_list.getColumn(0, "indschacptstat");
  36. }
  37. if( utlf_isNull(ds_main_paminfo_list.getColumnInfo("ordtype")) ){
  38. ds_main_paminfo_list.addColumn("ordtype", "string");
  39. }
  40. var oParam = {};
  41. oParam.id = "TRMNW11001";
  42. oParam.service = "wardorderapp.NursPrcpMngt";
  43. oParam.method = "reqGetDeptListInfo";
  44. //oParam.inds = "req=ds_";
  45. oParam.outds = "ds_tmp_deptinfo_deptlist=deptlist";
  46. oParam.async = false;
  47. //oParam.callback = "cf_TRMNW11001";
  48. tranf_submit(oParam); //발생장소(원내) 부서 코드 조회
  49. fGetNursHardCdInfo("'002'", dt); // '002' 응급의료센터 여부 조회 //ds_codelist
  50. appf_getDeptCodeList(instcd, standard_yn, ord_deptflag, sort_field, sort_method, dt, "", "", rslt_ref);
  51. ds_main_cond.setColumn(0, "wardcd", sysf_getUserInfo("dutplcecd"));
  52. ds_main_cond.setColumn(0, "genrdd", dt);
  53. if( !utlf_isNull(wardcd) ){
  54. ds_main_cond.setColumn(0, "wardcd", wardcd);
  55. }else{
  56. ds_main_cond.setColumn(0, "wardcd", sysf_getUserInfo("dutplcecd"));
  57. }
  58. ds_send_reqdata.copyRow(0, ds_main_cond, 0);
  59. var oParam = {};
  60. oParam.id = "TRMNW15206";
  61. oParam.service = "wardcareapp.WardCareRec";
  62. oParam.method = "reqGetVeinBaseDataComboList";
  63. oParam.inds = "reqdata=ds_send_reqdata";
  64. oParam.outds = "ds_hidden_codelist_getVOStage=getVOStage";
  65. oParam.async = false;
  66. //oParam.callback = "cf_TRMNW15206";
  67. tranf_submit(oParam); //단계콤보 조회
  68. if( pFlag != "saveflag" ){
  69. fGetZoneList(); //CareCom.js 응급실구역정보조회
  70. fnZoneDisp();
  71. fSettingnurid();
  72. }
  73. fSetInDsch(indschacptstat);
  74. if( utlf_isNull(indschacptstat) || indschacptstat == "A" ){
  75. fGetWardPatList();
  76. }else{
  77. fGetPidWardInfo(pid);
  78. }
  79. if( !utlf_isNull(pid) ){
  80. if( ds_main_paminfo_list.getColumn(0, "ioflag") != "E" && ds_main_paminfo_list.getColumn(0, "careinrmdd") == "-" ){
  81. sysf_messageBox("아직 입실확인하지 않은 환자입니다.", "I");
  82. //return;
  83. }
  84. ds_main_wardpatinfo_wardpatlist.rowposition = ds_main_wardpatinfo_wardpatlist.findRow("pid", pid);
  85. //선택환자정보조회
  86. fSearch();
  87. }
  88. }
  89. // 내환자 셋팅정보 조회
  90. function fSettingnurid(){
  91. ds_send_reqdata.setColumn(0, "wardcd", ds_main_cond.getColumn(0, "wardcd"));
  92. var oParam = {};
  93. oParam.id = "TRMNW10910";
  94. oParam.service = "wardcareapp.WardCareMngt";
  95. oParam.method = "reqGetSettingRnList";
  96. oParam.inds = "req=ds_send_reqdata";
  97. oParam.outds = "ds_init_settinginfo_settingrn=settingrn";
  98. oParam.async = false;
  99. oParam.callback = "cf_TRMNW10910";
  100. tranf_submit(oParam);
  101. if( arErrorCode.pop("TRMNW10910") > -1 ){
  102. //settingnurid = model.getValue("/root/init/settinginfo/settingrn[settingrnid='" + getUserInfo("userid") +"']/settingrnid");
  103. ds_main_cond.setColumn(0, "settingrnid", "");
  104. group5.grp_sea.cmb_settingrn.index = 0;
  105. }
  106. }
  107. function cf_TRMNW10910(sSvcId, nErrorCode, sErrorMsg) {
  108. arErrorCode.push(sSvcId, nErrorCode);
  109. if( ds_init_settinginfo_settingrn.rowcount > 0 && ds_init_settinginfo_settingrn.getColumn(0, "settingrnnm") == "-" ){
  110. ds_init_settinginfo_settingrn.setColumn(0, "settingrnid", "");
  111. }
  112. }
  113. // 응급실 구역 보여주기
  114. function fnZoneDisp() {
  115. //응급의료센터(2280200000)인 경우
  116. //내환자정보대신에 구역정보가 보임)
  117. if( !utlf_isNull(ds_codelist.lookupExpr("cdgrupid=='002' && cdid=='"+group5.grp_sea.cmb_ward.value+"'", "cdid")) ){
  118. //cap_settingrn.visible = false;
  119. //cmb_settingrn.visible = false;
  120. group5.cap_Zone.visible = true;
  121. group5.cmb_Zone.visible = true;
  122. group5.grp_sea.cap_settingrn.position.left = 345;
  123. group5.grp_sea.cap_settingrn.position.top = 10;
  124. group5.grp_sea.cmb_settingrn.position.left = 410;
  125. group5.grp_sea.cmb_settingrn.position.top = 10;
  126. group5.grp_sea.caption17.position.left = 505;
  127. group5.grp_sea.caption17.position.top = 10;
  128. group5.grp_sea.ipt_genrdd.position.left = 585;
  129. group5.grp_sea.ipt_genrdd.position.top = 10;
  130. var zonecd = ds_main_paminfo_list.getColumn(0, "sectioncd");
  131. if( !utlf_isNull(zonecd) && zonecd != "-" ){
  132. group5.cmb_Zone.value = ds_main_paminfo_list.getColumn(0, "sectioncd");
  133. } else {
  134. group5.cmb_Zone.value = "-";
  135. }
  136. } else {
  137. //cap_settingrn.visible = true;
  138. //cmb_settingrn.visible = true;
  139. group5.cap_Zone.visible = false;
  140. group5.cmb_Zone.visible = false;
  141. group5.cmb_Zone.value = "-";
  142. group5.grp_sea.cap_settingrn.position.left = 205;
  143. group5.grp_sea.cap_settingrn.position.top = 10;
  144. group5.grp_sea.cmb_settingrn.position.left = 270;
  145. group5.grp_sea.cmb_settingrn.position.top = 10;
  146. group5.grp_sea.caption17.position.left = 365;
  147. group5.grp_sea.caption17.position.top = 10;
  148. group5.grp_sea.ipt_genrdd.position.left = 445;
  149. group5.grp_sea.ipt_genrdd.position.top = 10;
  150. }
  151. }
  152. // 환자 리스트 조회
  153. function fGetWardPatList(){
  154. ds_main_cond.setColumn(0, "pid", "");
  155. ds_main_veininfo_veinlist.clearData();
  156. ds_send_reqdata.copyRow(0, ds_main_cond, 0);
  157. if( ds_main_cond.getColumn(0, "wardcd") == ds_codelist.getColumn(0, "cdid") ){
  158. ds_send_reqdata.setColumn(0, "emcflag", "Y");
  159. }
  160. var oParam = {};
  161. oParam.id = "TRMNW15202";
  162. oParam.service = "wardcareapp.WardCareRec";
  163. oParam.method = "reqGetVeinWardPatInfo";
  164. oParam.inds = "reqdata=ds_send_reqdata";
  165. oParam.outds = "ds_main_wardpatinfo_wardpatlist=wardpatlist";
  166. oParam.async = false;
  167. oParam.callback = "cf_TRMNW15202";
  168. tranf_submit(oParam);
  169. if( arErrorCode.pop("TRMNW15202") > -1 ){
  170. var sExprColor = "EXPR(";
  171. var sExprFont = "EXPR(";//굴림,9,bold
  172. for( var i=0 ; i<xWardPatInfoPath.rowcount ; i++ ){
  173. var pVeifCnte = xWardPatInfoPath.getColumn(i, "veifcnt");
  174. if( pVeifCnte > 0 ){
  175. sExprColor += "currow == "+i+" ? '#0000ff' : ";
  176. sExprFont += "currow == "+i+" ? '굴림,9,bold' : ";
  177. }
  178. }
  179. sExprColor += "'#000000')";
  180. sExprFont += "'')";
  181. for( var i=0 ; i<group5.grd_wardpatlist.getCellCount("Body") ; i++ ){
  182. group5.grd_wardpatlist.setCellProperty("Body", i, "color", sExprColor);
  183. group5.grd_wardpatlist.setCellProperty("Body", i, "color2", sExprColor);
  184. group5.grd_wardpatlist.setCellProperty("Body", i, "font", sExprFont);
  185. }
  186. }
  187. }
  188. function cf_TRMNW15202(sSvcId, nErrorCode, sErrorMsg) {
  189. arErrorCode.push(sSvcId, nErrorCode);
  190. ds_main_wardpatinfo_wardpatlist.updateColID("medispclid", "orddrid");
  191. ds_main_wardpatinfo_wardpatlist.rowposition = -1;
  192. }
  193. // 조회버튼 클릭시
  194. function fSearch(){
  195. var condparam = "";
  196. if( ds_main_cond.getColumn(0, "indsch") == "1" ){
  197. // 상단정보 올림
  198. condparam = ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "ordtype")
  199. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "pid")
  200. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "indd")
  201. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "cretno")
  202. + "▦" + ds_main_wardpatinfo_wardpatlist.getColumn(ds_main_wardpatinfo_wardpatlist.rowposition, "instcd")
  203. + "▦" + "";//model.getValue("/root/cond/genrdd");
  204. // setParameter("condparam", condparam);
  205. // modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  206. appf_initPatientInfo(condparam);
  207. }
  208. ds_main_paminfo_list.clearData();
  209. var paminfo = sysf_getGlobalVariable("paminfo");
  210. if( paminfo.length > 0 ){
  211. dsf_setCSVToDs("ds_main_paminfo_list", paminfo); //환자정보내리기
  212. }
  213. if( utlf_isNull(ds_main_paminfo_list.getColumnInfo("ordtype")) ){
  214. ds_main_paminfo_list.addColumn("ordtype", "string");
  215. }
  216. // 정맥염관찰기록 리스트 조회
  217. fSearchRecInfo();
  218. return true;
  219. }
  220. // 정맥염관찰기록 리스트 조회
  221. function fSearchRecInfo() {
  222. ds_main_veininfo_veinlist.clearData();
  223. ds_main_cond.setColumn(0, "pid", ds_main_paminfo_list.getColumn(0, "pid"));
  224. ds_send_reqdata.setColumn(0, "pid", ds_main_paminfo_list.getColumn(0, "pid"));
  225. ds_send_reqdata.setColumn(0, "indd", ds_main_paminfo_list.getColumn(0, "indd"));
  226. ds_send_reqdata.setColumn(0, "cretno", ds_main_paminfo_list.getColumn(0, "cretno"));
  227. ds_send_reqdata.setColumn(0, "genrdd", ds_main_cond.getColumn(0, "genrdd"));
  228. ds_send_reqdata.setColumn(0, "stdradio", ds_main_cond.getColumn(0, "stdradio"));
  229. var oParam = {};
  230. oParam.id = "TRMNW15203";
  231. oParam.service = "wardcareapp.WardCareRec";
  232. oParam.method = "reqGetVeinList";
  233. oParam.inds = "reqdata=ds_send_reqdata";
  234. oParam.outds = "ds_main_veininfo_veinlist=veinlist";
  235. oParam.async = false;
  236. oParam.callback = "cf_TRMNW15203";
  237. tranf_submit(oParam);
  238. if( arErrorCode.pop("TRMNW15203") > -1 ){
  239. ds_hidden_main_veininfo_veinlist.copyData(ds_main_veininfo_veinlist);
  240. var pGrd = group5.grd_veinlist;
  241. var pGrdCnt = ds_main_veininfo_veinlist.rowcount;
  242. if (pGrdCnt <= 0 ) return;
  243. var pGrupcd = "";
  244. var pGenrdd = "";
  245. var pGenrtm = "";
  246. var pGenrplce = "";
  247. var pCause = "";
  248. var pGrupcdnext = "";
  249. var pGenrddnext = "";
  250. var pGenrtmnext = "";
  251. var pGenrplcenext = "";
  252. var pCausenext = "";
  253. var sExprLine = "EXPR(";
  254. for( var t=0 ; t<pGrd.rowcount ; t++ ){
  255. xGrupcdmax = ds_main_veininfo_veinlist.getColumn(t, "grupcdmax");
  256. pGrupcd = ds_main_veininfo_veinlist.getColumn(t, "grupcd");
  257. pGenrdd = ds_main_veininfo_veinlist.getColumn(t, "genrdd");
  258. pGenrtm = ds_main_veininfo_veinlist.getColumn(t, "genrtm");
  259. pGenrplce = ds_main_veininfo_veinlist.getColumn(t, "genrplce");
  260. pCause = ds_main_veininfo_veinlist.getColumn(t, "cause");
  261. pGrupcdnext = ds_main_veininfo_veinlist.getColumn(t+1, "grupcd");
  262. pGenrddnext = ds_main_veininfo_veinlist.getColumn(t+1, "genrdd");
  263. pGenrtmnext = ds_main_veininfo_veinlist.getColumn(t+1, "genrtm");
  264. pGenrplcenext = ds_main_veininfo_veinlist.getColumn(t+1, "genrplce");
  265. pCausenext = ds_main_veininfo_veinlist.getColumn(t+1, "cause");
  266. if ((pGrupcd == pGrupcdnext) && (pGenrdd == pGenrddnext) && (pGenrtm == pGenrtmnext) && (pGenrplce == pGenrplcenext) && (pCause == pCausenext)) {
  267. sExprLine += "currow == "+t+" ? '1 solid #c0c0c0ff,1 solid #808080ff' : ";
  268. } else {
  269. sExprLine += "currow == "+t+" ? '1 solid #ff0000ff,1 solid #808080ff' : ";
  270. }
  271. }
  272. sExprLine += "'')";
  273. for( var i=0 ; i<group5.grd_veinlist.getCellCount("Body") ; i++ ){
  274. group5.grd_veinlist.setCellProperty("Body", i, "line", sExprLine);
  275. }
  276. }
  277. }
  278. function cf_TRMNW15203(sSvcId, nErrorCode, sErrorMsg) {
  279. arErrorCode.push(sSvcId, nErrorCode);
  280. ds_main_veininfo_veinlist.enableevent = false;
  281. ds_main_veininfo_veinlist.updatecontrol = false;
  282. for( var i=0 ; i<ds_main_veininfo_veinlist.rowcount ; i++ ){
  283. if( ds_main_veininfo_veinlist.getColumn(i, "sel") == "true" ){
  284. ds_main_veininfo_veinlist.setColumn(i, "sel", "1");
  285. }else{
  286. ds_main_veininfo_veinlist.setColumn(i, "sel", "0");
  287. }
  288. }
  289. ds_main_veininfo_veinlist.updatecontrol = true;
  290. ds_main_veininfo_veinlist.enableevent = true;
  291. ds_main_veininfo_veinlist.rowposition = -1;
  292. }
  293. // 조회후 정맥염발생부위, 발생일자가 같으면 Merge한다.
  294. function fMergeGenrAreaDD(){
  295. grd_veinlist.mergeCol(grd_veinlist.colRef("veifpartnm")) = false;
  296. grd_veinlist.mergeCol(grd_veinlist.colRef("genrdd")) = true;
  297. grd_veinlist.mergeCol(grd_veinlist.colRef("genrtm")) = true;
  298. grd_veinlist.mergeCol(grd_veinlist.colRef("genrplce")) = true;
  299. grd_veinlist.mergeCol(grd_veinlist.colRef("genrplcewardcd")) = false;
  300. grd_veinlist.mergeCol(grd_veinlist.colRef("cause")) = true;
  301. grd_veinlist.mergeCol(grd_veinlist.colRef("flag")) = true;
  302. grd_veinlist.mergeCol(grd_veinlist.colRef("sel")) = false;
  303. grd_veinlist.mergeCol(grd_veinlist.colRef("recdd")) = false;
  304. grd_veinlist.mergeCol(grd_veinlist.colRef("rectm")) = false;
  305. grd_veinlist.mergeCol(grd_veinlist.colRef("stage")) = false;
  306. grd_veinlist.mergeCol(grd_veinlist.colRef("recrnm")) = false;
  307. grd_veinlist.mergeCol(grd_veinlist.colRef("recrid")) = false;
  308. grd_veinlist.mergeCol(grd_veinlist.colRef("genrplceid")) = false;
  309. grd_veinlist.mergeCol(grd_veinlist.colRef("causeid")) = false;
  310. grd_veinlist.mergeCol(grd_veinlist.colRef("pid")) = false;
  311. grd_veinlist.mergeCol(grd_veinlist.colRef("grupcd")) = false;
  312. grd_veinlist.mergeCol(grd_veinlist.colRef("instcd")) = false;
  313. grd_veinlist.mergeCol(grd_veinlist.colRef("stageid")) = false;
  314. grd_veinlist.mergeCol(grd_veinlist.colRef("veifrecseq")) = false;
  315. grd_veinlist.mergeCol(grd_veinlist.colRef("intervention")) = false;
  316. }
  317. /////////////////조회관련 함수 종료////////////////////
  318. /////////////////팝업오픈 관련 함수 시작///////////////
  319. // 정맥염발생부위 팝업호출
  320. function fPopupBedSoreImg(iRow){
  321. var iCol = group5.grd_veinlist.currentcol;
  322. var veifrecseq = xBedsoreGridPath.getColumn(iRow, "veifrecseq");
  323. //팝업창에 부위 값이 있으면 기존값 셋팅
  324. //이미저장되어있으면 수정하지 못하도록 확인버튼을 막아주는 flag를 set한다.
  325. if( !utlf_isNull(group5.grd_veinlist.getCellText(iRow, 2)) ){
  326. frmf_setParameter("partall", group5.grd_veinlist.getCellText(iRow,3));
  327. if( veifrecseq > 0 ){
  328. frmf_setParameter('editable', 'f');
  329. }
  330. }else{
  331. frmf_setParameter('editable', 't');
  332. }
  333. var flag = xBedsoreGridPath.getColumn(iRow, "flag"); //구분
  334. var genrdd = xBedsoreGridPath.getColumn(iRow, "genrdd"); //발생일자
  335. var stat = xBedsoreGridPath.getColumn(iRow, "stat");
  336. //정맥염기준자료 (발생장소, 원인, 단계)저장되어 있던 그리드의 값을 팝업에 세팅
  337. fSetPopupData(iRow, "genrplce");// (발생장소)
  338. fSetPopupData(iRow, "cause"); // (원인)
  339. fSetPopupData(iRow, "stage"); // (단계)
  340. fSetPopupData(iRow, "intervention"); // (중재)
  341. frmf_setParameter("flag", flag);
  342. frmf_setParameter("genrdd", genrdd);
  343. frmf_setParameter("stat", stat);
  344. // 환자 기록부분 선택 팝업
  345. frmf_modal("SPMNW15400","SPMNW15400","", 1, 0, 0, "", "", "", "", "", "", "M"); //이미지호출
  346. //팝업에서 아무것도 선택하지 않고 close를 눌렀을때..
  347. if( frmf_getParameter("returnnull") == "close" ){
  348. return ;
  349. } else {
  350. //정맥염발생부위 값을 grid에 set
  351. var retStr = frmf_getParameter('retStr');
  352. xBedsoreGridPath.setColumn(iRow, "veifpartnm", retStr);
  353. //그리드 상태값 변경
  354. var stat = xBedsoreGridPath.getColumn(group5.grd_veinlist.currentrow, "stat");
  355. if( stat != "i" ){
  356. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "stat", "u")
  357. }
  358. //팝업에서 가져온 return parameter를 그리드에 세팅
  359. var retClosParam = frmf_getParameter("returnnull");
  360. fGetPopupData(iRow, "genrplce", retClosParam); //발생장소
  361. fGetPopupData(iRow, "cause", retClosParam); //원인
  362. fGetPopupData(iRow, "stage", retClosParam); //단계
  363. fGetPopupData(iRow, "intervention", retClosParam); //중재
  364. //parameters clear
  365. //model.removenode(getParameterPath());
  366. var genrplceid = xBedsoreGridPath.getColumn(iRow, "genrplceid");
  367. if( genrplceid == "1" ){
  368. if( utlf_isNull(xBedsoreGridPath.getColumn(iRow, "genrplcewardcd")) ){
  369. xBedsoreGridPath.setColumn(iRow, "genrplcewardcd", sysf_getUserInfo("dutplcecd"));
  370. }
  371. }else{
  372. xBedsoreGridPath.setColumn(iRow, "genrplcewardcd","");
  373. }
  374. /*
  375. else {
  376. //정맥염발생부위의 추가시 해당 부위에 대해
  377. //동일한 발생부위+발생일자+발생시간+원인의 '종료'가 없으면
  378. //그 부위를 추가할수 없도록 메세지 리턴
  379. if(grd_veinlist.rows > 3){
  380. var returnArr = fIsExistEndData(grd_veinlist.row, true);
  381. if(returnArr[3] != null && !returnArr[3]){
  382. messageBox('선택하신 발생부위는 이미 등록되어 있으며, 종료된 사정이 아니므로 재등록 하실 수 ', 'I004');
  383. model.setValue(xBedsoreGridPath + '[' + iRow + ']/veifpartnm', '');
  384. model.refresh();
  385. return ;
  386. }
  387. }
  388. }
  389. */
  390. }
  391. }
  392. // 정맥염기준자료 팝업 호출
  393. function fPopupBedSoreData(iRow){
  394. var curCol = group5.grd_veinlist.currentcol;
  395. var iRow = xBedsoreGridPath.rowposition;
  396. var flag = xBedsoreGridPath.getColumn(iRow, "flag"); //구분
  397. var genrdd = xBedsoreGridPath.getColumn(iRow, "genrdd"); //발생일자
  398. var stat = xBedsoreGridPath.getColumn(iRow, "stat");
  399. //정맥염기준자료 (발생장소, 원인, 단계)저장되어 있던 그리드의 값을 팝업에 세팅
  400. fSetPopupData(iRow, "genrplce");// (발생장소)
  401. fSetPopupData(iRow, "cause"); // (원인)
  402. fSetPopupData(iRow, "stage"); // (단계)
  403. fSetPopupData(iRow, "intervention"); // (중재)
  404. frmf_setParameter("flag", flag);
  405. frmf_setParameter("genrdd", genrdd);
  406. frmf_setParameter("stat", stat);
  407. frmf_modal("SPMNW15300","SPMNW15300","", 1, 0, 0, "", "", "", "", "", "", "M"); //기준자료호출
  408. //팝업에서 가져온 return parameter를 그리드에 세팅
  409. var retClosParam = frmf_getParameter("returnnull");
  410. fGetPopupData(iRow, "genrplce", retClosParam); //발생장소
  411. fGetPopupData(iRow, "cause", retClosParam); //원인
  412. fGetPopupData(iRow, "stage", retClosParam); //단계
  413. fGetPopupData(iRow, "intervention", retClosParam); //중재
  414. //parameters clear
  415. //model.removenode(getParameterPath());
  416. var genrplceid = xBedsoreGridPath.getColumn(iRow, "genrplceid");
  417. if( genrplceid == "1" ){
  418. if( utlf_isNull(xBedsoreGridPath.getColumn(iRow, "genrplcewardcd")) ){
  419. xBedsoreGridPath.setColumn(iRow, "genrplcewardcd", sysf_getUserInfo("dutplcecd"));
  420. }
  421. }else{
  422. xBedsoreGridPath.setColumn(iRow, "genrplcewardcd", "");
  423. }
  424. }
  425. /////////////////팝업오픈 관련 함수 종료///////////////
  426. /////////////////팝업데이터 세팅 함수 시작/////////////
  427. // 정맥염기준자료저장되어 있던 그리드의 값을 팝업에 세팅
  428. function fSetPopupData(iRow, str) {
  429. var cd;
  430. var nm = '';
  431. cd = xBedsoreGridPath.getColumn(iRow, str+'id');//기존저장되어있던 코드값
  432. nm = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(iRow, str));//기존저장되어있던 명칭값
  433. if( !utlf_isNull(cd) ){
  434. frmf_setParameter(str + "cdnm", "");
  435. frmf_setParameter(str + "cd", "");
  436. frmf_setParameter(str + "cdid", cd);
  437. //기타가 선택되어진 상태일때 freetext를 파라메터로 set한다.
  438. if( nm.indexOf('기타') > -1 ){
  439. var etcStr = nm.split(')')[0].split('(')[1];
  440. frmf_setParameter(str + 'EtcExist', true);
  441. frmf_setParameter(str + 'EtcStr', etcStr);
  442. }
  443. }
  444. else
  445. {
  446. frmf_setParameter(str + "cdid", "");
  447. }
  448. }
  449. // 팝업의 선택결과를 그리드에 세팅
  450. function fGetPopupData(iRow, str, retClosParam) {
  451. var retCDParam = '';
  452. var retNMParam = '';
  453. var oldCDParam
  454. if(retClosParam != "close"){
  455. if( xBedsoreGridPath.getColumn(iRow, "stat") != "i" ){
  456. xBedsoreGridPath.setColumn(iRow, "stat","u");
  457. }
  458. retNMParam = frmf_getParameter(str + "cdnm");
  459. retCDParam = frmf_getParameter(str +"cd");
  460. } else {
  461. return ;
  462. }
  463. xBedsoreGridPath.setColumn(iRow, str, retNMParam);
  464. xBedsoreGridPath.setColumn(iRow, str+'id', retCDParam);
  465. frmf_clearParameter(str + "cdnm");
  466. frmf_clearParameter(str + "cd");
  467. frmf_clearParameter(str + "cdid");
  468. frmf_clearParameter(str + "Str");
  469. frmf_clearParameter(str + "etcExist");
  470. frmf_clearParameter(str + "etcStr");
  471. }
  472. /////////////////팝업데이터 세팅 함수 종료/////////////
  473. /////////////////데이터 저장/삭제 함수 시작////////////
  474. // 정맥염관찰기록 저장하기전에 유효성을 체크한다.
  475. function fIsValid(){
  476. //그리드 저장데이터 존재여부 체크(default rows = 2)
  477. if( group5.grd_veinlist.rowcount < 1 ){
  478. sysf_messageBox("저장할 내역이","I004");
  479. return false;
  480. }
  481. var sflag = '';
  482. var cnts = 0;
  483. for( var i=0 ; i<group5.grd_veinlist.rowcount ; i++ ){
  484. if( ds_main_veininfo_veinlist.getRowType(i) != 1 ){
  485. cnts ++;
  486. }
  487. }
  488. if ( cnts < 1 ) {
  489. sysf_messageBox("신규등록/수정사항이","I004");
  490. return false;
  491. }
  492. for( var i=0 ; i<group5.grd_veinlist.rowcount ; i++ ){
  493. //정맥염발생부위 입력여부 체크
  494. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "veifpartnm"))
  495. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "veifpartnm")).length <= 0 ) {
  496. sysf_messageBox("정맥염발생부위는","I003");
  497. return false;
  498. }
  499. //정맥염발생장소 입력여부 체크
  500. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "genrplce"))
  501. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrplce")).length <= 0 ) {
  502. sysf_messageBox("정맥염발생장소는","I003");
  503. return false;
  504. //정맥염발생장소가 원내인경우 발생장소(원내) 입력여부 체크
  505. }else if( xBedsoreGridPath.getColumn(i, "genrplceid") == "1" && utlf_isNull(xBedsoreGridPath.getColumn(i, "genrplcewardcd")) ){
  506. sysf_messageBox("정맥염발생장소가 원내인 항목은 발생장소(원내)를 입력하십시오.","I");
  507. return false;
  508. }
  509. //정맥염발생원인 입력여부 체크
  510. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "cause"))
  511. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "cause")).length <= 0 ) {
  512. sysf_messageBox("정맥염발생원인은","I003");
  513. return false;
  514. }
  515. //정맥염발생단계 입력여부 체크
  516. if( utlf_isNull(xBedsoreGridPath.getColumn(i, "stage"))
  517. || utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "stage")).length <= 0 ) {
  518. sysf_messageBox("정맥염발생단계는","I003");
  519. return false;
  520. }
  521. }
  522. return true;
  523. }
  524. var SIGN_ROW = -1;//for돌때 해당 그리드만 인증데이터로 만들어주기 위해 global variable로 선언
  525. //인증저장
  526. function fSignSave(){
  527. if( fIsValid() ){
  528. var pid = utlf_transNullToEmpty(ds_main_cond.getColumn(0, "pid"));
  529. var indd = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "indd"));
  530. var cretno = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "cretno"));
  531. var orddeptcd = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "orddeptcd"));
  532. var orddrid = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "medispclid"));
  533. var ordtype = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "ordtype"));
  534. var signno = '';
  535. // 저장 데이터 세팅
  536. //model.removenode("/root/send/savedata");
  537. ds_send_savedata_veininfo.clearData();
  538. var iRows = group5.grd_veinlist.rowcount;
  539. for( var i=0 ; i<iRows ; i++ ){
  540. if( utlf_transNullToEmpty(ds_main_veininfo_veinlist.getColumn(i, "veifpartnm")).substring(0,4) == "Ant." ){
  541. ds_main_veininfo_veinlist.setColumn(i, "veifpartnm", "(anterior)"+utlf_transNullToEmpty(ds_main_veininfo_veinlist.getColumn(i, "veifpartnm")).substring(4));
  542. }
  543. var nRow = ds_send_savedata_veininfo.addRow();
  544. ds_send_savedata_veininfo.copyRow(nRow, ds_main_veininfo_veinlist, i);
  545. if( ds_send_savedata_veininfo.getColumn(nRow, "sel") == "1" ){
  546. ds_send_savedata_veininfo.setColumn(nRow, "sel", "true");
  547. }else{
  548. ds_send_savedata_veininfo.setColumn(nRow, "sel", "false");
  549. }
  550. }
  551. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  552. //for를 돌면서 각 정맥염관찰기록정보의 노드를 복사 한다.
  553. for( var i=0 ; i<group5.grd_veinlist.rowcount ; i++ ){
  554. SIGN_ROW = i;
  555. signno = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "signno"));
  556. // 인증 로직 호출
  557. ViewFunc = "sign";
  558. if( Sign.signprocess() == true ){
  559. //alert(Sign.signedInfos[1]);
  560. for( var j=0 ; j<=SIGN_ROW ; j++ ){
  561. if( ds_send_savedata_signlist.rowcount <= SIGN_ROW ){
  562. ds_send_savedata_signlist.addRow();
  563. }
  564. }
  565. ds_send_savedata_signlist.setColumn(SIGN_ROW, "pid", pid); // 등록번호
  566. ds_send_savedata_signlist.setColumn(SIGN_ROW, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  567. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  568. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signno", signno); // 서명번호
  569. ds_send_savedata_signlist.setColumn(SIGN_ROW, "cretno" , cretno); // 생성번호
  570. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recdd", utlf_getCurrentDate()); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  571. ds_send_savedata_signlist.setColumn(SIGN_ROW, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  572. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  573. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  574. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  575. ds_send_savedata_signlist.setColumn(SIGN_ROW, "formcd", "1300014127"); // 각 기록지별 서식코드(1300014127 정맥염관찰기록)
  576. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddeptcd", orddeptcd); // 진료부서코드
  577. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddrid" , orddrid); // 진료의사ID
  578. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  579. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  580. ds_send_savedata_signlist.setColumn(SIGN_ROW, "screenid" , frmf_getScreenID());
  581. ds_send_savedata_signlist.setColumn(SIGN_ROW, "dispyn", "N"); // 인증저장용 data(view용 인증데이터는 따로 생성함)
  582. } else {
  583. return ;
  584. }
  585. }
  586. dsf_createDsRow("ds_tempuserInfo", [{col: "uiUserId", val:sysf_getUserId() }]);
  587. var oParam = {};
  588. oParam.id = "TXMNW15200";
  589. oParam.service = "wardcareapp.WardCareRec";
  590. oParam.method = "reqInsVeinRec";
  591. oParam.inds = "veininfo=ds_send_savedata_veininfo signlist=ds_send_savedata_signlist tempUserInfo=ds_tempuserInfo";
  592. oParam.outds = "ds_temp_veininfo=veininfo";
  593. oParam.async = false;
  594. oParam.callback = "cf_TXMNW15200";
  595. tranf_submit(oParam);
  596. if( arErrorCode.pop("TXMNW15200") > -1 ){
  597. ds_hidden_main_veininfo_veinlist.copyData(ds_main_veininfo_veinlist);
  598. fMakeViewData(); //통합기록view용 데이터생성
  599. }
  600. }
  601. }
  602. function cf_TXMNW15200(sSvcId, nErrorCode, sErrorMsg) {
  603. arErrorCode.push(sSvcId, nErrorCode);
  604. }
  605. // 인증데이터 만들기.
  606. function fMake_SignData(){
  607. if( ViewFunc == "sign" ){
  608. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  609. ds_sign_veininfo_veinlist.copyRow(0, ds_main_veininfo_veinlist, SIGN_ROW);
  610. var xDeltGrupPath = ds_sign_veininfo_veinlist;
  611. var flag;
  612. var stage;
  613. //구분
  614. flag = xDeltGrupPath.getColumn(0, "flag");
  615. if( !utlf_isNull(flag) ){
  616. xDeltGrupPath.setColumn(0, "flag", group5.grd_veinlist.getCellText(SIGN_ROW, group5.grd_veinlist.getBindCellIndex("body", "flag")));
  617. }
  618. //단계
  619. stage = xDeltGrupPath.getColumn(0, "stage");
  620. if( !utlf_isNull(stage) ){
  621. xDeltGrupPath.setColumn(0, "stage", group5.grd_veinlist.getCellText(SIGN_ROW, group5.grd_veinlist.getBindCellIndex("body", "stage")));
  622. }
  623. //발생장소(원내)
  624. genrplcewardcd = xDeltGrupPath.getColumn(0, "genrplcewardcd");
  625. if( !utlf_isNull(genrplcewardcd) ){
  626. xDeltGrupPath.setColumn(0, "genrplcewardnm", group5.grd_veinlist.getCellText(SIGN_ROW, group5.grd_veinlist.getBindCellIndex("body", "genrplcewardcd")));
  627. }
  628. var arrSignPath = new Array();
  629. arrSignPath[0] = "/cond";
  630. arrSignPath[1] = "/veinlist";
  631. var arrSignDs = new Array();
  632. arrSignDs[0] = ds_main_cond.saveXML();
  633. arrSignDs[1] = ds_sign_veininfo_veinlist.saveXML();
  634. Sign.addnodeset(arrSignPath, arrSignDs); //1600000083712055
  635. }else if( ViewFunc == "view" ){
  636. // ▶ 기록 관련 인스턴스 전체를 copy, 인증에 저장할 모든 Instance AddNode한다.
  637. var xViewDeltGrupPath = ds_viewinfo_viewveingrup_veinlist;
  638. var flag;
  639. var stage;
  640. var bf_pid = "";
  641. var bf_grupcd = "";
  642. var bf_veifrecseq = "";
  643. var bf_instcd = "";
  644. var af_pid = "";
  645. var af_grupcd = "";
  646. var af_veifrecseq = "";
  647. var af_instcd = "";
  648. for( var i=0 ; i<xViewDeltGrupPath.rowcount ; i++ ){
  649. af_pid = xViewDeltGrupPath.getColumn(i, "pid");
  650. af_grupcd = xViewDeltGrupPath.getColumn(i, "grupcd");
  651. af_veifrecseq = xViewDeltGrupPath.getColumn(i, "veifrecseq");
  652. af_instcd = xViewDeltGrupPath.getColumn(i, "instcd");
  653. //구분
  654. flag = xViewDeltGrupPath.getColumn(i, "flag");
  655. if( !utlf_isNull(flag) ){
  656. if( flag == "00" ){
  657. xViewDeltGrupPath.setColumn(i, "flag", "등록");
  658. }else if( flag == "01" ){
  659. xViewDeltGrupPath.setColumn(i, "flag", "사정");
  660. }else if( flag == "99" ){
  661. xViewDeltGrupPath.setColumn(i, "flag", "종료");
  662. }
  663. }
  664. //단계
  665. stage = xViewDeltGrupPath.getColumn(i, "stage");
  666. bf_pid = af_pid;
  667. bf_grupcd = af_grupcd;
  668. bf_veifrecseq= af_veifrecseq;
  669. bf_instcd = af_instcd;
  670. }
  671. var arrSignPath = new Array();
  672. arrSignPath[0] = "/cond";
  673. var arrSignDs = new Array();
  674. arrSignDs[0] = ds_main_cond.saveXML();
  675. Sign.addnodeset(arrSignPath, arrSignDs);
  676. var arrSignPath = new Array();
  677. arrSignPath[0] = "/viewveingrup/veinlist";
  678. var arrSignDs = new Array();
  679. arrSignDs[0] = ds_viewinfo_viewveingrup_veinlist.saveXML();
  680. Sign.addnodeset(arrSignPath, arrSignDs); //1600000083712056
  681. }
  682. }
  683. // 정맥염관찰기록 삭제
  684. function fDel(){
  685. //삭제할 항목이 선택되었는지 여부를 체크
  686. var delFlag = false; //체크박스 체크여부
  687. var sel = ''; //체크박스(true/false)
  688. var stat = ''; //그리드상태(i/u/d)
  689. var flag = ''; //등록구분 (등록/사정/종료)
  690. var returnArr, isEnd, isAss, isStage;
  691. var checkStr; //체크값 (발생부위 + 발생일자 + 발생시간 + 원인)
  692. var isSvrDel = false; //db에 저장된 데이터 삭제시
  693. var retMsg = sysf_messageBox('선택하신 정맥염관찰기록을', 'Q001');
  694. if(retMsg != "6") {
  695. return "false";
  696. }
  697. var pid = utlf_transNullToEmpty(ds_main_cond.getColumn(0, "pid"));
  698. var indd = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "indd"));
  699. var cretno = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "cretno"));
  700. var orddeptcd = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "orddeptcd"));
  701. var orddrid = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "medispclid"));
  702. var ordtype = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "ordtype"));
  703. var signno = '';
  704. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  705. ds_send_savedata_signlist.clearData();
  706. ds_send_savedata_veininfo.clearData();
  707. for( var i=0 ; i<group5.grd_veinlist.rowcount ; i++ ){
  708. sel = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "sel"));
  709. stat = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "stat"));
  710. flag = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "flag"));
  711. SIGN_ROW = i ;
  712. if(sel == '1'){
  713. delFlag = true;
  714. if(stat == 'i'){
  715. //체크한 항목이 행추가 (stat:i)상태인 경우 그리드에서 바로 삭제
  716. ds_main_veininfo_veinlist.deleteRow(i);
  717. }else{
  718. isSvrDel = true;
  719. //종료가 존재하는지 여부를 배열로 리턴
  720. returnArr = fIsExistEndData(i);
  721. isAss = returnArr[2];
  722. isEnd = returnArr[3];
  723. checkStr = i + '¿' + returnArr[6] + returnArr[7] + returnArr[8] + returnArr[9];
  724. if(isEnd){
  725. //체크한 항목의 해당 부위에 종료가 있으면 삭제할수 없다는 메세지 출력후 리턴
  726. var veifpartnm = returnArr[6];
  727. var gendt = returnArr[7].substring(0, 4) + '-' + returnArr[7].substring(4, 6) + '-'
  728. + returnArr[7].substring(6) + ' ' + returnArr[8].substring(0, 2) + ':' + returnArr[8].substring(2);
  729. sysf_messageBox('선택하신 발생부위 "' + veifpartnm + '"발생일시"' + gendt + '" 는 이미 종료기록이 있으므로 삭제하실 수', 'I004');
  730. //update상태로 변경된 row를 원상태로 변경
  731. if( ds_main_veininfo_veinlist.getRowType(i) == 4 ){
  732. ds_main_veininfo_veinlist.setRowType(i, 1);
  733. }
  734. xBedsoreGridPath.setColumn(i, "sel", '0');
  735. xBedsoreGridPath.setColumn(i, "stat", '-');
  736. return;
  737. }
  738. //등록 삭제시 해당부위에 사정기록있으면 등록~사정 모두삭제한다는 메세지 출력
  739. else if( flag == '00' && isAss ){
  740. //선택한 체크박스가 등록상태이고, 해당 발생부위에 사정기록이 존재할때
  741. //사정기록까지 삭제하겠냐는 메세지 호출해 확인 누르면 해당 그룹 모두 체크 취소누르면 선택 해제
  742. if(sysf_messageBox('선택하신 정맥염부위 "'+returnArr[6]+'"를 삭제하시면 사정기록도 함께 삭제됩니다.', 'Q001') == 6){
  743. fCheckSamePart(checkStr);
  744. }else{
  745. return "false";
  746. }
  747. }
  748. else{
  749. //상태값을 'd'로 변경
  750. xBedsoreGridPath.setColumn(i, "stat", 'd');
  751. var nRow = ds_send_savedata_veininfo.addRow();
  752. ds_send_savedata_veininfo.copyRow(nRow, xBedsoreGridPath, i);
  753. signno = xBedsoreGridPath.getColumn(i, "signno");
  754. // 인증 로직 호출
  755. ViewFunc = "sign";
  756. if( Sign.signprocess() == true ){
  757. for( var j=0 ; j<=SIGN_ROW ; j++ ){
  758. if( ds_send_savedata_signlist.rowcount <= SIGN_ROW ){
  759. ds_send_savedata_signlist.addRow();
  760. }
  761. }
  762. ds_send_savedata_signlist.setColumn(SIGN_ROW, "pid", pid); // 등록번호
  763. ds_send_savedata_signlist.setColumn(SIGN_ROW, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  764. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  765. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signno", signno); // 서명번호
  766. ds_send_savedata_signlist.setColumn(SIGN_ROW, "cretno" , cretno); // 생성번호
  767. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recdd", utlf_getCurrentDate()); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  768. ds_send_savedata_signlist.setColumn(SIGN_ROW, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  769. ds_send_savedata_signlist.setColumn(SIGN_ROW, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  770. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  771. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  772. ds_send_savedata_signlist.setColumn(SIGN_ROW, "formcd", "1300014127"); // 각 기록지별 서식코드(1300014127 정맥염관찰기록)
  773. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddeptcd", orddeptcd); // 진료부서코드
  774. ds_send_savedata_signlist.setColumn(SIGN_ROW, "orddrid" , orddrid); // 진료의사ID
  775. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  776. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  777. ds_send_savedata_signlist.setColumn(SIGN_ROW, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  778. ds_send_savedata_signlist.setColumn(SIGN_ROW, "screenid", frmf_getScreenID());
  779. ds_send_savedata_signlist.setColumn(SIGN_ROW, "dispyn", "N"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  780. } else {
  781. return ;
  782. }
  783. }
  784. }
  785. }
  786. }
  787. //선택한 항목이 없을때
  788. if(!delFlag){
  789. sysf_messageBox('삭제할 항목을', 'C002');
  790. return;
  791. }
  792. //삭제 서브미션 호출
  793. for( var i=0 ; i<ds_send_savedata_veininfo.rowcount ; i++ ){
  794. if( ds_send_savedata_veininfo.getColumn(i, "sel") == "1" ){
  795. ds_send_savedata_veininfo.setColumn(i, "sel", "true");
  796. }else{
  797. ds_send_savedata_veininfo.setColumn(i, "sel", "false");
  798. }
  799. }
  800. ds_send_savedata.setColumn(0, "pid", ds_main_cond.getColumn(0, "pid"));
  801. dsf_createDsRow("ds_tempuserInfo", [{col: "uiUserId", val:sysf_getUserId() }]);
  802. var oParam = {};
  803. oParam.id = "TXMNW15200";
  804. oParam.service = "wardcareapp.WardCareRec";
  805. oParam.method = "reqInsVeinRec";
  806. oParam.inds = "veininfo=ds_send_savedata_veininfo signlist=ds_send_savedata_signlist tempUserInfo=ds_tempuserInfo";
  807. oParam.outds = "ds_temp_veininfo=veininfo";
  808. oParam.async = false;
  809. oParam.callback = "cf_TXMNW15200";
  810. tranf_submit(oParam);
  811. if( arErrorCode.pop("TXMNW15200") > -1 ){
  812. ds_hidden_main_veininfo_veinlist.copyData(ds_main_veininfo_veinlist);
  813. fMakeViewData(); //통합기록view용 데이터생성
  814. }
  815. }
  816. /////////////////데이터 저장/삭제 함수 종료////////////
  817. //선택한 발생부위에 해당되는 모든 그룹을 체크(true)로 변경
  818. function fCheckSamePart(checkStr){
  819. var _chkArr = checkStr.split('¿');
  820. var sRow = _chkArr[0];
  821. var chkStr = _chkArr[1];
  822. var _chkStr = '';
  823. xBedsoreGridPath.enableevent = false;
  824. xBedsoreGridPath.updatecontrol = false;
  825. for( var i=sRow ; i<group5.grd_veinlist.rowcount ; i++ ){
  826. _chkStr = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "veifpartnm"));
  827. _chkStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrdd"));
  828. _chkStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrtm"));
  829. _chkStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "cause"));
  830. if(chkStr == _chkStr){
  831. xBedsoreGridPath.setColumn(i, "stat", 'd');
  832. xBedsoreGridPath.setColumn(i, "sel", '1');
  833. xBedsoreGridPath.setRowType(i, 8);
  834. }
  835. }
  836. xBedsoreGridPath.updatecontrol = true;
  837. xBedsoreGridPath.enableevent = true;
  838. }
  839. //체크 해제하면 update상태를 select상태로 변경한다.
  840. function fChangeStatus(selRow){
  841. var isChk = xBedsoreGridPath.getColumn(selRow, "sel");
  842. if( isChk == '0' ){
  843. if( xBedsoreGridPath.getRowType(selRow) == 2 ){
  844. }else{
  845. xBedsoreGridPath.setColumn(selRow, "stat", '-');
  846. if( xBedsoreGridPath.getRowType(selRow) == 4 ){
  847. xBedsoreGridPath.setRowType(selRow, 1);
  848. }
  849. }
  850. }
  851. }
  852. // 정맥염발생부위추가
  853. function fAddGenArea(){
  854. if( ds_main_cond.getColumn(0, "indsch") == "1" ){
  855. if( utlf_isNull(ds_main_cond.getColumn(0, "pid")) ){
  856. sysf_messageBox('환자를 선택하여 주십시오', 'I');
  857. return;
  858. }
  859. }else{
  860. if( utlf_isNull(ds_main_cond.getColumn(0, "patientnm")) ){
  861. sysf_messageBox('환자를 선택하여 주십시오', 'I');
  862. return;
  863. }
  864. }
  865. var iRows = group5.grd_veinlist.rowcount;
  866. var iRow = group5.grd_veinlist.currentrow;
  867. ds_main_veininfo_veinlist.addRow();
  868. if( iRows < 1 ){
  869. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "grupcd", "00000001");
  870. } else if( iRows > 0 ){
  871. // grupcd만드는 부분
  872. var sRowCnt = group5.grd_veinlist.rowcount;
  873. // grupcd 현재 화면의 최대값 가져오기 시작
  874. var retVal = "";
  875. for( var i=0 ; i<sRowCnt ; i++ ){
  876. if( xGrupcdmax ) {
  877. saveyn = 1;
  878. }
  879. retVal = parseInt(xGrupcdmax);
  880. }
  881. retVal = retVal + 1 ;
  882. retVal = String(retVal) ;
  883. retVal = fLpad(retVal, 8, 0);// grupcd 8자리 나머지는 0 으로 매꿈
  884. xGrupcdmax = retVal;
  885. //grupcd 현재 화면의 최대값 가져오기 끝
  886. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "grupcd", retVal);
  887. }
  888. var instcd = ds_main_paminfo_list.getColumn(0, "instcd");
  889. var pid = ds_main_paminfo_list.getColumn(0, "pid");
  890. var indd = ds_main_paminfo_list.getColumn(0, "indd");
  891. var cretno = ds_main_paminfo_list.getColumn(0, "cretno");
  892. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "stat", "i");
  893. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "instcd", instcd);
  894. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "pid", pid);
  895. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "indd", indd);
  896. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "cretno", cretno);
  897. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "genrdd", utlf_getCurrentDate());
  898. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "genrtm", utlf_getCurrentDateTime().substring(9,13));
  899. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "flag", "00");
  900. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "recdd", utlf_getCurrentDate());
  901. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "rectm", utlf_getCurrentDateTime().substring(9,13));
  902. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "recrnm", sysf_getUserName());
  903. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "recrid", sysf_getUserId());
  904. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "genrplce", "원내");
  905. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "genrplceid", "1");
  906. xBedsoreGridPath.setColumn(group5.grd_veinlist.currentrow, "genrplcewardcd", sysf_getUserInfo("dutplcecd"));
  907. var sExprEdit = group5.grd_veinlist.getCellProperty("Body", group5.grd_veinlist.getBindCellIndex("body", "genrdd"), "edittype");
  908. if( utlf_isNull(sExprEdit) || sExprEdit == "none" ){
  909. sExprEdit = "expr:currow == "+group5.grd_veinlist.currentrow+" ? 'date' : 'none'";
  910. }else if( sExprEdit.indexOf("currow == "+group5.grd_veinlist.currentrow+" ? 'date' : ") < 0 ){
  911. sExprEdit = sExprEdit.replace("'none'", "")
  912. + "currow == "+group5.grd_veinlist.currentrow+" ? 'date' : 'none'";
  913. }
  914. group5.grd_veinlist.setCellProperty("Body", group5.grd_veinlist.getBindCellIndex("body", "genrdd"), "edittype", sExprEdit);
  915. var sExprEdit = group5.grd_veinlist.getCellProperty("Body", group5.grd_veinlist.getBindCellIndex("body", "recdd"), "edittype");
  916. if( utlf_isNull(sExprEdit) || sExprEdit == "none" ){
  917. sExprEdit = "expr:currow == "+group5.grd_veinlist.currentrow+" ? 'date' : 'none'";
  918. }else if( sExprEdit.indexOf("currow == "+group5.grd_veinlist.currentrow+" ? 'date' : ") < 0 ){
  919. sExprEdit = sExprEdit.replace("'none'", "")
  920. + "currow == "+group5.grd_veinlist.currentrow+" ? 'date' : 'none'";
  921. }
  922. group5.grd_veinlist.setCellProperty("Body", group5.grd_veinlist.getBindCellIndex("body", "recdd"), "edittype", sExprEdit);
  923. }
  924. // 왼쪽 자리수 채우기, Left 빈자리 만큼 padStr 을 붙인다.
  925. function fLpad(src, len, padStr){
  926. var retStr = "";
  927. var padCnt = Number(len) - String(src).length;
  928. for( var i=0 ; i<padCnt ; i++)
  929. retStr += String(padStr);
  930. return retStr+src;
  931. }
  932. // 그리드내의 mousedown 이벤트 발생시 호출
  933. function fMouseDownGridRow(e){
  934. var iVeinListRow = group5.grd_veinlist.currentrow;
  935. // right Button Click
  936. //데이터 행이 존재할때
  937. if( group5.grd_veinlist.rowcount > 0 && group5.grd_veinlist.currentrow >= 0 ){
  938. pmenu_veinlist.trackPopup(e.screenX,e.screenY);
  939. }
  940. }
  941. // 정맥염 관찰기록 내역 그리드의 xforms-value-changed이벤트 발생시 호출된다.
  942. function fChangedGridCol(){
  943. var sDetlGrupRow = group5.grd_veinlist.currentrow;
  944. var sDetlGrupBKRow = -1;
  945. var iRow = group5.grd_veinlist.currentrow;
  946. var iCol = group5.grd_veinlist.currentcol;
  947. var stat = xBedsoreGridPath.getColumn(group5.grd_veinlist.currentrow, "stat");
  948. //데이터 변경시 그리드 상태값(stat)을 u상태로 변경한다.
  949. if( stat == "-" ){
  950. //그리드의 stat update를 위한 비교할 hidden nodelist의 idx찾기
  951. var veifrecseq = xBedsoreGridPath.getColumn(sDetlGrupRow, "veifrecseq");
  952. for( var i=0 ; i<xClsListBKPath.rowcount ; i++ ){
  953. if( xClsListBKPath.getColumn(i, "veifrecseq") == veifrecseq ){
  954. sDetlGrupBKRow = i;
  955. break;
  956. }
  957. }
  958. //체크박스 선택 아닐때 조회해서 hidden에 담아둔 nodelist와 변경된 그리드의 nodelist의 stat를 비교하여 수정상태로 바꿔준다.
  959. if( iCol != group5.grd_veinlist.getBindCellIndex("body", "sel") ){// 선택시 stat 값 변경 않기
  960. for( var i=0 ; i<ds_main_veininfo_veinlist.getColCount() ; i++ ){
  961. if( ds_main_veininfo_veinlist.getColumn(sDetlGrupRow, ds_main_veininfo_veinlist.getColID(i)) != ds_hidden_main_veininfo_veinlist.getColumn(sDetlGrupBKRow, ds_main_veininfo_veinlist.getColID(i)) ){
  962. ds_main_veininfo_veinlist.setColumn(group5.grd_veinlist.currentrow, "stat", "u");
  963. break;
  964. }
  965. }
  966. }
  967. }
  968. }
  969. // 정맥염 관찰기록 그리드에서 우측마우스 클릭시 팝업을 띄워준다.
  970. function fAddSameLevlItemEnd(){
  971. fAddSameLevlItem(true);
  972. return ;
  973. }
  974. // 마우스 우측 클릭시 발생구분에 따라 그리드 행 추가 (true이면 오른쪽 메뉴에서 종료를 선택한 상태, false이면 사정을 선택한 상태)
  975. function fAddSameLevlItem(selEndMenu){//오른쪽 메뉴에서 사정또는 종료 선택시
  976. var msgStr = '사정기록';
  977. if( selEndMenu ){
  978. msgStr = '종료기록';
  979. }
  980. //종료또는 사정기록 존재여부를 리턴받는다.
  981. var returnArr = fIsExistEndData(group5.grd_veinlist.currentrow);
  982. var compareStr = returnArr[0];
  983. var compRow = returnArr[1];
  984. var isAss = returnArr[2];
  985. var isEnd = returnArr[3];
  986. var stage = returnArr[15];
  987. //종료기록이 있으면 입력할수 없다는 메세지 출력후 리턴
  988. if( isEnd ){
  989. sysf_messageBox('선택하신 부위는 이미 종료된 기록이 있으므로 다시 '+ msgStr +' 하실 수', 'I004');
  990. return;
  991. }
  992. //종료메뉴 선택시 사정기록이 없으면 메세지 출력후 리턴
  993. if( selEndMenu && !isAss ){
  994. sysf_messageBox('선택하신 부위는 사정기록이 없으므로 ' + msgStr + ' 하실 수', 'I004');
  995. return;
  996. }
  997. //해당 발생부위 가장 하위의 그리드에 insertRow을 하기 위해 발생부위 가장 하위row index를 찾는다.
  998. var addLastRow = -1;
  999. var _compareStr;
  1000. for( var i=compRow ; i<group5.grd_veinlist.rowcount ; i++ ){
  1001. _compareStr = xBedsoreGridPath.getColumn(i, "veifpartnm");
  1002. _compareStr += xBedsoreGridPath.getColumn(i, "genrdd");
  1003. _compareStr += xBedsoreGridPath.getColumn(i, "genrtm");
  1004. _compareStr += xBedsoreGridPath.getColumn(i, "cause");
  1005. if( compareStr != _compareStr ){
  1006. addLastRow = i+1;
  1007. break;
  1008. }
  1009. }
  1010. //발생부위가 등록/사정만 있으면 해당 발생부위 하위에 사정 추가
  1011. //구분을 사정으로, 해당부위의 발생일자,발생시간, 원인을 선택한 데이터와 동일하게 추가.
  1012. if( addLastRow == -1 ){
  1013. addLastRow = group5.grd_veinlist.rowcount;
  1014. ds_main_veininfo_veinlist.addRow();
  1015. }else{
  1016. addLastRow = group5.grd_veinlist.rowcount;
  1017. ds_main_veininfo_veinlist.addRow();
  1018. }
  1019. //그리드에 발생부위, 일자, 시간, 원인, 기록일시 set한다.
  1020. fSetInsertValue(addLastRow, selEndMenu, returnArr);
  1021. }
  1022. //종료또는 사정기록 존재여부 체크
  1023. function fIsExistEndData(selRow, updatePartChk){
  1024. //발생부위에 대해 종료된 사정인 경우 메세지 출력
  1025. var compareStr, _compareStr, _flag;//비교값 str
  1026. var compRow = -1;
  1027. var isAss ; //사정기록 존재여부
  1028. var isEnd ; //종료기록 존재여부
  1029. var returnArr = new Array(10);
  1030. //var isStage ; //1~4단계 기록 존재여부
  1031. //선택한 발생부위 비교값
  1032. var pid = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "pid"));
  1033. var grupcd = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "grupcd"));
  1034. var veifpartnm = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "veifpartnm"));//발생부위
  1035. var genrdd = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "genrdd")); //발생일자
  1036. var genrtm = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "genrtm")); //발생시간
  1037. var cause = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "cause")); //원인
  1038. var causeid = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "causeid")); //원인
  1039. var genrplce = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "genrplce")); //발생장소
  1040. var genrplceid = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "genrplceid")); //발생장소
  1041. var stage = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "stage")); //단계
  1042. var stageid = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "stageid")); //단계
  1043. var genrplcewardcd = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "genrplcewardcd")); //발생장소(원내부서)
  1044. var instcd = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "instcd"));
  1045. var indd = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "indd"));
  1046. var cretno = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "cretno"));
  1047. var intervention = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "intervention")); //중재
  1048. var interventionid = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(selRow, "interventionid")); //중재
  1049. //정맥염발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  1050. if( updatePartChk ){
  1051. compareStr = veifpartnm;
  1052. }else{
  1053. compareStr = veifpartnm + genrdd + genrtm + cause;
  1054. }
  1055. var veifrecseq = 0;
  1056. //선택한 compareStr과 그리드내의 모든 _compareStr을 비교한다.
  1057. for( var i=0 ; i<group5.grd_veinlist.rowcount ; i++ ){
  1058. if( selRow != i ){
  1059. _compareStr = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "veifpartnm"));
  1060. //정맥염발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  1061. if( !updatePartChk ){
  1062. _compareStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrdd"));
  1063. _compareStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrtm"));
  1064. _compareStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "cause"));
  1065. }
  1066. }
  1067. if( compareStr == _compareStr ){
  1068. compRow = i;
  1069. _flag = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "flag"));
  1070. if( _flag == '99' ){//등록구분이 종료(99)
  1071. isEnd = true;
  1072. veifrecseq = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "veifrecseq"));
  1073. break;
  1074. }else if( _flag == '01' ){//등록구분이 사정(01)
  1075. isAss = true;
  1076. veifrecseq = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "veifrecseq"));
  1077. }else{
  1078. isEnd = false;
  1079. isAss = false;
  1080. }
  1081. }
  1082. }
  1083. //선택한 compareStr과 그리드내의 모든 _compareStr을 비교한다.
  1084. for( var i=0 ; i<group5.grd_veinlist.rowcount ; i++ ){
  1085. if( selRow != i ){
  1086. _compareStr = utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "veifpartnm"));
  1087. //정맥염발생부위선택시 사정종료되지 않은 부위인지 체크할때에는 발생부위, 구분만 가지고 체크함..
  1088. if( !updatePartChk ){
  1089. _compareStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrdd"));
  1090. _compareStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "genrtm"));
  1091. _compareStr += utlf_transNullToEmpty(xBedsoreGridPath.getColumn(i, "cause"));
  1092. }
  1093. }
  1094. }
  1095. //배열을 리턴한다.
  1096. returnArr[0] = compareStr;
  1097. returnArr[1] = compRow;
  1098. returnArr[2] = isAss;
  1099. returnArr[3] = isEnd;
  1100. returnArr[4] = pid;
  1101. returnArr[5] = grupcd;
  1102. returnArr[6] = veifpartnm;
  1103. returnArr[7] = genrdd;
  1104. returnArr[8] = genrtm;
  1105. returnArr[9] = cause;
  1106. returnArr[10] = causeid;
  1107. returnArr[11] = veifrecseq;
  1108. returnArr[12] = genrplce;
  1109. returnArr[13] = genrplceid;
  1110. returnArr[14] = stage;
  1111. returnArr[15] = stageid;
  1112. returnArr[16] = genrplcewardcd;
  1113. returnArr[17] = instcd;
  1114. returnArr[18] = indd;
  1115. returnArr[19] = cretno;
  1116. returnArr[20] = intervention;
  1117. returnArr[21] = interventionid;
  1118. return returnArr;
  1119. }
  1120. // 행 추가시 그리드에 값 셋팅
  1121. function fSetInsertValue(addLastRow, selEndMenu, returnArr){
  1122. xBedsoreGridPath.setColumn(addLastRow, "stat", 'i');
  1123. xBedsoreGridPath.setColumn(addLastRow, "pid", returnArr[4]);
  1124. xBedsoreGridPath.setColumn(addLastRow, "grupcd", returnArr[5]);
  1125. xBedsoreGridPath.setColumn(addLastRow, "veifpartnm", returnArr[6]);
  1126. xBedsoreGridPath.setColumn(addLastRow, "genrdd", returnArr[7]);
  1127. xBedsoreGridPath.setColumn(addLastRow, "genrtm", returnArr[8]);
  1128. xBedsoreGridPath.setColumn(addLastRow, "cause", returnArr[9]);
  1129. xBedsoreGridPath.setColumn(addLastRow, "causeid", returnArr[10]);
  1130. xBedsoreGridPath.setColumn(addLastRow, "recdd", utlf_getCurrentDate());
  1131. xBedsoreGridPath.setColumn(addLastRow, "rectm", utlf_getCurrentDateTime().substring(9,13));
  1132. xBedsoreGridPath.setColumn(addLastRow, "recrnm", sysf_getUserName());
  1133. xBedsoreGridPath.setColumn(addLastRow, "recrid", sysf_getUserId());
  1134. xBedsoreGridPath.setColumn(addLastRow, "genrplce", returnArr[12]);
  1135. xBedsoreGridPath.setColumn(addLastRow, "genrplceid", returnArr[13]);
  1136. xBedsoreGridPath.setColumn(addLastRow, "stage", "");
  1137. xBedsoreGridPath.setColumn(addLastRow, "stageid", "");
  1138. xBedsoreGridPath.setColumn(addLastRow, "genrplcewardcd", returnArr[16]);
  1139. xBedsoreGridPath.setColumn(addLastRow, "instcd", returnArr[17]);
  1140. xBedsoreGridPath.setColumn(addLastRow, "indd", returnArr[18]);
  1141. xBedsoreGridPath.setColumn(addLastRow, "cretno", returnArr[19]);
  1142. xBedsoreGridPath.setColumn(addLastRow, "intervention", "");
  1143. xBedsoreGridPath.setColumn(addLastRow, "interventionid", "");
  1144. if(!selEndMenu){
  1145. xBedsoreGridPath.setColumn(addLastRow, "flag", '01');//사정
  1146. }else{
  1147. xBedsoreGridPath.setColumn(addLastRow, "flag", '99');//종료
  1148. xBedsoreGridPath.setColumn(addLastRow, "stageid", '12');//종료시 단계값
  1149. xBedsoreGridPath.setColumn(addLastRow, "stage", ds_hidden_codelist_getVOStage.lookup("cd", "12", "cdnm"));//종료시 단계값
  1150. }
  1151. var sExprEdit = group5.grd_veinlist.getCellProperty("Body", group5.grd_veinlist.getBindCellIndex("body", "genrdd"), "edittype");
  1152. if( !utlf_isNull(sExprEdit) && sExprEdit.indexOf("currow == "+addLastRow+" ? 'date' : ") > -1 ){
  1153. sExprEdit = sExprEdit.replace("currow == "+addLastRow+" ? 'date' : ", "");
  1154. group5.grd_veinlist.setCellProperty("Body", group5.grd_veinlist.getBindCellIndex("body", "genrdd"), "edittype", sExprEdit);
  1155. }
  1156. }
  1157. // 통합기록조회용 인증데이터 생성
  1158. function fMakeViewData(){
  1159. var pid = utlf_transNullToEmpty(ds_main_cond.getColumn(0, "pid"));
  1160. var indd = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "indd"));
  1161. var cretno = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "cretno"));
  1162. var orddeptcd = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "orddeptcd"));
  1163. var orddrid = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "medispclid"));
  1164. var ordtype = utlf_transNullToEmpty(ds_main_paminfo_list.getColumn(0, "ordtype"));
  1165. var signno = '';
  1166. //조회조건값 세팅
  1167. ds_send.setColumn(0, "pid", pid); //등록번호
  1168. ds_send.setColumn(0, "indd", indd);
  1169. ds_send.setColumn(0, "cretno", cretno);
  1170. ds_send.setColumn(0, "genrdd", ds_main_cond.getColumn(0, "genrdd")); //기준일자(발생일자)
  1171. ds_send.setColumn(0, "genrtm", ds_main_cond.getColumn(0, "genrtm")); //기준시간(발생시간)
  1172. ds_send.setColumn(0, "stdradio", '0'); //조회조건의라디오(전체/종료전(전체)/종료전(최근입력만))
  1173. //정맥염관찰기록 조회
  1174. //model.removenode('/root/main/veininfo');
  1175. var oParam = {};
  1176. oParam.id = "TRMNW15205";
  1177. oParam.service = "wardcareapp.WardCareRec";
  1178. oParam.method = "reqGetVeinList";
  1179. oParam.inds = "reqdata=ds_send";
  1180. oParam.outds = "ds_viewinfo_viewveingrup_veinlist=veinlist";
  1181. oParam.async = false;
  1182. oParam.callback = "cf_TRMNW15205";
  1183. tranf_submit(oParam);
  1184. if( arErrorCode.pop("TRMNW15205") > -1 ){
  1185. // 인증 로직 호출
  1186. ViewFunc = "view";
  1187. if( Sign.signprocess() == true ){
  1188. ds_send_savedata.setColumn(0, "pid", pid); // 등록번호
  1189. ds_send_savedata.setColumn(0, "certflag", "C"); // 인증여부( T : 임시저장, C : 인증저장)
  1190. ds_send_savedata.setColumn(0, "orddd", indd); // 입원일자(입원,응급)/진료일자(외래)
  1191. ds_send_savedata.setColumn(0, "signno", signno); // 서명번호
  1192. ds_send_savedata.setColumn(0, "cretno" , cretno); // 생성번호
  1193. ds_send_savedata.setColumn(0, "recdd", utlf_transNullToEmpty(ds_viewinfo_viewveingrup_veinlist.getColumn(0, "signrecddmax"))); // 실제 기록이 이루어진 기록일자(통합기록에서 보여짐)
  1194. ds_send_savedata.setColumn(0, "rectm", utlf_getCurrentTime()); // 실제 기록이 이루어진 기록시간(통합기록에서 보여짐)
  1195. ds_send_savedata.setColumn(0, "recsaveflag" , "Y"); // 전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  1196. ds_send_savedata.setColumn(0, "signflag" , "02"); // 서명자료구분(01 : 진료, 02 : 간호, 20 : 가정간호)
  1197. ds_send_savedata.setColumn(0, "signgenrflag", "I"); // 외래/입원구분 (코드정의서 M0010 참조)
  1198. ds_send_savedata.setColumn(0, "formcd", "1300014127"); // 각 기록지별 서식코드(1300014127 정맥염관찰기록)
  1199. ds_send_savedata.setColumn(0, "orddeptcd", orddeptcd); // 진료부서코드
  1200. ds_send_savedata.setColumn(0, "orddrid" , orddrid); // 진료의사ID
  1201. //미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  1202. ds_send_savedata.setColumn(0, "signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보)
  1203. ds_send_savedata.setColumn(0, "signaftcnts" , Sign.signedInfos[2]); // 공인인증 처리후 데이터
  1204. ds_send_savedata.setColumn(0, "screenid" , frmf_getScreenID());
  1205. ds_send_savedata.setColumn(0, "dispyn", "Y"); //인증저장용 data(view용 인증데이터는 따로 생성함)
  1206. } else {
  1207. return ;
  1208. }
  1209. dsf_createDsRow("ds_tempuserInfo", [{col: "uiUserId", val:sysf_getUserId() }]);
  1210. var oParam = {};
  1211. oParam.id = "TXMNW04713";
  1212. oParam.service = "carerecapp.ClincObsRec";
  1213. oParam.method = "reqExeSaveViewData";
  1214. oParam.inds = "signinfo=ds_send_savedata tempUserInfo=ds_tempuserInfo";
  1215. oParam.outds = "";
  1216. oParam.async = false;
  1217. oParam.callback = "cf_TXMNW04713";
  1218. tranf_submit(oParam);
  1219. if( arErrorCode.pop("TXMNW04713") > -1 ){
  1220. finit("saveflag");
  1221. }
  1222. }
  1223. }
  1224. function cf_TRMNW15205(sSvcId, nErrorCode, sErrorMsg) {
  1225. arErrorCode.push(sSvcId, nErrorCode);
  1226. }
  1227. function cf_TXMNW04713(sSvcId, nErrorCode, sErrorMsg) {
  1228. arErrorCode.push(sSvcId, nErrorCode);
  1229. }
  1230. // 재원/퇴원 구분
  1231. function fSetInDsch(Pram){
  1232. if( Pram == "D" || Pram == "T" ){
  1233. ds_main_cond.setColumn(0, "indsch", "2");
  1234. }else{
  1235. ds_main_cond.setColumn(0, "indsch", "1");
  1236. }
  1237. group5_rdo_indsch_onitemchanged();
  1238. fSetInDschHidden();
  1239. }
  1240. // 재원/퇴원 구분
  1241. function fSetInDschHidden(){
  1242. var indsch = ds_main_cond.getColumn(0, "indsch");
  1243. if( indsch == "1" ){
  1244. group5.grp_sea.ctn_pid.visible = false;
  1245. group5.grp_sea.cmb_patientnm.visible = false;
  1246. group5.grp_sea.ipt_pid.visible = false;
  1247. group5.grp_sea.ctn_ward.visible = true;
  1248. group5.grp_sea.cmb_ward.visible = true;
  1249. group5.grp_sea.cap_settingrn.visible = true;
  1250. group5.grp_sea.cmb_settingrn.visible = true;
  1251. group5.grp_sea.line1.visible = true;
  1252. group5.grp_sea.button1.visible = true;
  1253. fnZoneDisp();
  1254. }else if( indsch == "2" ){
  1255. group5.grp_sea.ctn_pid.visible = true;
  1256. group5.grp_sea.cmb_patientnm.visible = true;
  1257. group5.grp_sea.ipt_pid.visible = true;
  1258. group5.grp_sea.ctn_ward.visible = false;
  1259. group5.grp_sea.cmb_ward.visible = false;
  1260. group5.grp_sea.cap_settingrn.visible = false;
  1261. group5.grp_sea.cmb_settingrn.visible = false;
  1262. group5.cap_Zone.visible = false;
  1263. group5.cmb_Zone.visible = false;
  1264. group5.grp_sea.line1.visible = false;
  1265. group5.grp_sea.button1.visible = false;
  1266. }
  1267. }
  1268. function fGetPidWardInfo(pid){
  1269. if( !utlf_isNull(pid) ){
  1270. ds_main_patinfo_patinfolist.clearData();
  1271. ds_send.setColumn(0, "pid", pid);
  1272. var oParam = {};
  1273. oParam.id = "TRMNW04707";
  1274. oParam.service = "wardcareapp.WardCareRec";
  1275. oParam.method = "reqGetPatWardInfo";
  1276. oParam.inds = "req=ds_send";
  1277. oParam.outds = "ds_main_patinfo_patinfolist=patinfolist";
  1278. oParam.async = false;
  1279. oParam.callback = "cf_TRMNW04707";
  1280. tranf_submit(oParam);
  1281. if( arErrorCode.pop("TRMNW04707") < 0 ){
  1282. sysf_messageBox('환자정보 조회를', 'E009');
  1283. return;
  1284. }else{
  1285. ds_main_cond.setColumn(0, "patientnm", ds_main_patinfo_patinfolist.getColumn(0, "pid"));
  1286. ds_main_cond.setColumn(0, "pid", ds_main_patinfo_patinfolist.getColumn(0, "pid"));
  1287. }
  1288. }
  1289. }
  1290. function cf_TRMNW04707(sSvcId, nErrorCode, sErrorMsg) {
  1291. arErrorCode.push(sSvcId, nErrorCode);
  1292. }
  1293. ]]></Script>