SMMNR028.xjs 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. 간호일지수정(SMMNR02800.xfm - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. */
  7. var xGrupInfoPath = "/root/main/srchtoolinfo/grupinfo/gruplist"; // SET 그룹 정보
  8. var xStmtSetListPath = "/root/main/srchtoolinfo/stmtsetinfo/stmtsetlist"; // SET 진술문 정보
  9. var xStmtInfoPath = "/root/main/srchtoolinfo/stmtinfo/stmtlist"; // 진술문 정보
  10. var xSrchToolCondPath = "/root/main/cond/srchtool"; // 검색도구 조건
  11. var xRecSaveCondPath = "/root/main/cond/recsave"; // 저장도구 조건
  12. var xRecSrchCondPath = "/root/main/cond/recsrch"; // 기록조회 조건
  13. var xNursingRecordInfoPath = "/root/main/recinfo/nursingrecordinfo"; // 간호일지 정보
  14. var xHiddenNStmtSetListPath = "/root/hidden/stmtsetinfo/nstmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  15. var xHiddenDStmtSetListPath = "/root/hidden/stmtsetinfo/dstmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  16. var xHiddenAStmtSetListPath = "/root/hidden/stmtsetinfo/astmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  17. var xHiddenRStmtSetListPath = "/root/hidden/stmtsetinfo/rstmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  18. var xSignPath = "/root/main/signSaveData/saveDataList";//인증저장관련노드
  19. var sSrchToolStatus = "";
  20. var xPamInfoPath = "/root/main/paminfo/pamlist"; // 환자정보
  21. var sRecOriginFlag ="";
  22. var sOriginCd ="";
  23. //dnarnm▦usernm▦deptflagnm▩
  24. var sDnarNm ="";
  25. var sUserNm ="";
  26. var sDeptFlagNm ="";
  27. var sRecDateFlag ="";
  28. var sPid = ""; // 환자번호
  29. var sIndd = ""; // 입원일자
  30. var sOutDD = ""; // 진료일자
  31. var sCretNo = ""; // 환자 일자별 일련번호
  32. var sInstcd = "";
  33. var sIOFlag = ""; // 입원/외래 구분
  34. var sOrdDeptCd = ""; // 진료과코드
  35. var sOrdDrId = ""; // 진료의사ID
  36. var sHngNm = "";
  37. var sHomeYn = "";//가정간호인지 아닌지의 여부를 판단하기 위해추가.. 20090401 가정간호가 상단정보를 올리면서 상단정보의 진료일정을 읽지 못하도록 막아야함.20090403 김홍점
  38. var aCptuniqno = "";
  39. var sParamMsg = "";
  40. var cbk_TRMNR02801_flag = 0; //콜백flag
  41. var cbk_TRMNR00701_flag = 0;
  42. var cbk_TRMNR00702_flag = 0;
  43. var cbk_TRMNR00703_flag = 0;
  44. var cbk_TXMNR02801_flag = 0;
  45. /**
  46. * @group :
  47. * @ver : 2007.04.23
  48. * @by : 이은영
  49. * @---------------------------------------------------
  50. * @type : function
  51. * @access : public
  52. * @desc : 화면 초기화
  53. * @param :
  54. * @return :
  55. * @---------------------------------------------------
  56. */
  57. function fInit(){
  58. //그리드 색상변환
  59. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body",2,"color", "expr:attrcnt>0?'#6600ff':''");
  60. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body",2,"color2","expr:attrcnt>0?'#6600ff':''");
  61. grp_biz.swt_srchtool.case_stmtinfo.grd_srchstmtinfo.setCellProperty("body",3,"color", "expr:attrcnt>0?'#6600ff':''");
  62. grp_biz.swt_srchtool.case_stmtinfo.grd_srchstmtinfo.setCellProperty("body",3,"color2","expr:attrcnt>0?'#6600ff':''");
  63. var arrParam = [{dsNm: "ds_initZ_M0002", cdGrpId: "M0002"}
  64. ]
  65. appf_getCodeList(arrParam);
  66. opener.frmf_setParameter("SMMNR02800_ReturnFlag","");
  67. opener.frmf_setParameter("SMMNR02800_SignRecYN","");
  68. opener.frmf_setParameter("SMMNR02800_vsettime","");
  69. // 검색 조건
  70. ds_cond.setColumn(0,"grupflag","1");
  71. // 저장조건
  72. //"recdd▦rectm▦dnarflag▦stmtspec▦fstrgstrnm▦certkey▦recverno▦stmtcd▦origincd▦recoriginflag▦carerecno▦dnarnm▦deptflagnm▦pid▦indd▦orddd▦cretno▦instcd▦ioflag▦orddeptcd▦orddrid▦hngnm▦homeyn▩"
  73. sParamMsg = opener.frmf_getParameter("SMMNR02800_Param");
  74. opener.frmf_setParameter("SMMNR02800_Param","");
  75. sRecOriginFlag = getArrayData(sParamMsg,1,9);
  76. sOriginCd = getArrayData(sParamMsg,1,8);
  77. var sStmtCD = getArrayData(sParamMsg,1,7);
  78. var sRecDD = getArrayData(sParamMsg,1,0);
  79. var sRecTM = getArrayData(sParamMsg,1,1);
  80. var sDnarFlag = getArrayData(sParamMsg,1,2);
  81. ds_cond.setColumn(0,"recdateflag","U");// 자동
  82. ds_cond.setColumn(0,"recdd",sRecDD);// 기록일자
  83. ds_cond.setColumn(0,"rectm",sRecTM);// 기록시간
  84. ds_data_nursingrecordinfo.setColumn(0,"recdd",sRecDD); // 기록일자
  85. ds_data_nursingrecordinfo.setColumn(0,"rectm",sRecTM);// 기록시간
  86. ds_data_nursingrecordinfo.setColumn(0,"dnarflag",sDnarFlag);// dnar구분
  87. ds_cond.setColumn(0,"recdnarflag",sDnarFlag);// dnar 구분
  88. //조회할 DNAR구분 을 param에 따라 선택해서 disable시킴.
  89. ds_cond.setColumn(0,"dnarflag",sDnarFlag);
  90. ds_cond.setColumn(0,"freetextdnarflag",sDnarFlag);
  91. grp_biz.swt_srchtool.case_stmtinfo.group7.rdo_dnarflag.enable = false;
  92. grp_biz.swt_srchtool.case_grup.group6.rdo_setdnarflag.enable = false;
  93. grp_biz.rdo_freednarflag.enable = false;
  94. ds_data_nursingrecordinfo.setColumn(0,"stmtspec",getArrayData(sParamMsg,1,3)); // 진술문내역
  95. // if(!utlf_isNull(ds_data_nursingrecordinfo.getColumn(0,"stmtspec"))){
  96. // ds_cond.setColumn(0,"freetextsrchcnts",ds_data_nursingrecordinfo.getColumn(0,"stmtspec"));
  97. // }
  98. ds_data_nursingrecordinfo.setColumn(0,"fstrgstrnm",getArrayData(sParamMsg,1,4));// 최초등록자명
  99. ds_data_nursingrecordinfo.setColumn(0,"certkey",getArrayData(sParamMsg,1,5));// 인증키
  100. ds_data_nursingrecordinfo.setColumn(0,"recverno",getArrayData(sParamMsg,1,6));// 기록버전번호
  101. ds_data_nursingrecordinfo.setColumn(0,"stmtcd",sStmtCD);// 진술문코드
  102. ds_data_nursingrecordinfo.setColumn(0,"origincd",sOriginCd);// 출처코드
  103. ds_data_nursingrecordinfo.setColumn(0,"recoriginflag",sRecOriginFlag);// 기록출처구분
  104. ds_data_nursingrecordinfo.setColumn(0,"carerecno",getArrayData(sParamMsg,1,10));// 간호기록번호
  105. sDnarNm = getArrayData(sParamMsg,1,11);
  106. sUserNm = getArrayData(sParamMsg,1,4);
  107. sDeptFlagNm = getArrayData(sParamMsg,1,12); //타입2에서 넘어온건 용도부서 선택, 간호일지에서 넘어온건 간호진단명.
  108. sHomeYn = getArrayData(sParamMsg,1,23); // 가정간호여부("Y" 또는 "")
  109. aCptuniqno = getArrayData(sParamMsg,1,22);
  110. if(!utlf_isNull(getArrayData(sParamMsg,1,5))){
  111. ds_data_nursingrecordinfo.setColumn(0,"cretyn","인증");
  112. }
  113. if( sRecOriginFlag != "T" && sDnarFlag !="S" &&(utlf_isNull(ds_data_nursingrecordinfo.getColumn(0,"recverno"))
  114. ||ds_data_nursingrecordinfo.getColumn(0,"recverno") == "0" ||ds_data_nursingrecordinfo.getColumn(0,"recverno") == "undefined") ){
  115. //btn_freesave.disabled = "true";//간호일지일 경우 진단 미존재시 freetext는 수정금지
  116. grp_biz.btn_freesave.enable = false;
  117. grp_biz.textarea3.enable = false;
  118. }
  119. // 환자정보 조회
  120. var sPamInfo = sysf_getGlobalVariable("paminfo");
  121. sysf_trace("sPamInfo ==" + sPamInfo);
  122. dsf_setCSVToDs("ds_data_pamlist",sPamInfo);
  123. if( utlf_isNull(ds_data_pamlist.getColumnInfo("orddd")) ){
  124. ds_data_pamlist.addColumn("orddd", "string");
  125. }
  126. if( sHomeYn == "Y" ||
  127. ( sHomeYn != "Y" && !utlf_isNull(getArrayData(sParamMsg,1,14)) ) ){
  128. sPid = getArrayData(sParamMsg,1,13); // 환자번호
  129. sIndd = getArrayData(sParamMsg,1,14); // 입원일자
  130. sOutDD = getArrayData(sParamMsg,1,15); // 진료일자
  131. sCretNo = getArrayData(sParamMsg,1,16); // 환자 일자별 일련번호
  132. sInstcd = getArrayData(sParamMsg,1,17);
  133. sIOFlag = getArrayData(sParamMsg,1,18); // 입원/외래 구분
  134. sOrdDeptCd = getArrayData(sParamMsg,1,19); // 진료과코드
  135. sOrdDrId = getArrayData(sParamMsg,1,20); // 진료과코드
  136. sHngNm = getArrayData(sParamMsg,1,21); // 환자명
  137. if(sIOFlag == "I" || sIOFlag == "E" || sIOFlag == "D"){
  138. sIndd = getArrayData(sParamMsg,1,14); // 입원일자
  139. sOutDD = "-"; // 진료일자
  140. }else{
  141. sIndd = "-"; // 입원일자
  142. sOutDD = getArrayData(sParamMsg,1,15); // 진료일자
  143. }
  144. } else {
  145. sPid = ds_data_pamlist.getColumn(0,"pid");// 환자번호
  146. sIndd = ds_data_pamlist.getColumn(0,"indd");// 입원일자
  147. sCretNo = ds_data_pamlist.getColumn(0,"cretno");// 환자 일자별 일련번호
  148. sInstcd = ds_data_pamlist.getColumn(0,"instcd");// 기관코드
  149. sIOFlag = ds_data_pamlist.getColumn(0,"ioflag");// 입원/외래 구분
  150. sOrdDeptCd = ds_data_pamlist.getColumn(0,"orddeptcd");// 진료과코드
  151. sOrdDrId = ds_data_pamlist.getColumn(0,"medispclid");// 진료과코드
  152. sOutDD = ds_data_pamlist.getColumn(0,"orddd");// 진료일자
  153. sHngNm = ds_data_pamlist.getColumn(0,"hngnm");
  154. if(sIOFlag == "I" || sIOFlag == "E" || sIOFlag == "D"){
  155. sIndd = ds_data_pamlist.getColumn(0,"indd");// 입원일자
  156. sOutDD = "-"; // 진료일자
  157. }else{
  158. sIndd = "-"; // 입원일자
  159. sOutDD = ds_data_pamlist.getColumn(0,"orddd"); // 진료일자
  160. }
  161. }
  162. // 기록 조회 조건
  163. sSrchToolStatus = (sRecOriginFlag == "T" ? "S" : sRecOriginFlag);
  164. if(sSrchToolStatus == "S" ){
  165. grp_biz.swt_srchtool.tabindex = 1;
  166. grp_biz.swt_srchtool2.tabindex = 0;
  167. var ds_temp = dsf_createDsRow("ds_temp", [{col: "grupcd", val:sOriginCd }]);
  168. tranf_submit({
  169. id: "TRMNR02801"
  170. , service: "carerecapp.NursingRecord"
  171. , method: "reqGetSelectedSetGrupList"
  172. , inds: "refCond="+ds_temp
  173. , outds: "ds_grid_grd_grupinfo=gruplist"
  174. , async: false
  175. , callback: "cbk_TRMNR02801"
  176. });
  177. if(cbk_TRMNR02801_flag == 1){
  178. // grd_grupinfo.OutlineCol=1; //연결선이 표현되는 컬럼
  179. // grd_grupinfo.OutlineBar=4; //연결선 형태 설정 (+ , - , 사각형 안보이게 하려면 0 으로 세팅)
  180. // grd_grupinfo.TreeColor="gray";
  181. }
  182. cbk_TRMNR02801_flag = 0;
  183. var iRow = ds_grid_grd_grupinfo.findRow("grupcd",sOriginCd);
  184. ds_grid_grd_grupinfo.rowposition = iRow;
  185. if ( sRecOriginFlag == "T" ){//타입2이면 용도( 부서)
  186. ds_cond.setColumn(0,"grupflag","5");
  187. } else {
  188. ds_cond.setColumn(0,"grupflag",ds_grid_grd_grupinfo.getColumn(iRow,"grupflag"));
  189. fSearchSrchTool("StmtSet");
  190. iRow = ds_grid_grd_grupstmtinfo.findRow("stmtcd",sStmtCD);
  191. ds_grid_grd_grupstmtinfo.rowposition = iRow;
  192. }
  193. }else if(sSrchToolStatus == "J"){ // 진술문 검색
  194. grp_biz.swt_srchtool.tabindex = 2;
  195. grp_biz.swt_srchtool2.tabindex = 1;
  196. }else if(sSrchToolStatus == "N"){
  197. grp_biz.swt_srchtool.tabindex = 0;
  198. grp_biz.swt_srchtool2.tabindex = 0;
  199. var ds_temp = dsf_createDsRow("ds_temp", [{col: "nursdiagstmtcd", val:sOriginCd }
  200. ,{col: "dnarflag", val:ds_data_nursingrecordinfo.getColumn(0,"dnarflag") }]);
  201. tranf_submit({
  202. id: "TRMNR00706"
  203. , service: "carerecapp.NursingRecord"
  204. , method: "reqGetStmtClsList"
  205. , inds: "refCond="+ds_temp
  206. , outds: "ds_grid_grd_grupstmtinfo=stmtsetlist"
  207. , async: false
  208. , callback: "cbk_TRMNR00706"
  209. });
  210. fSettingStmtStyle("setinfo");
  211. iRow = ds_grid_grd_grupstmtinfo.findRow("stmtcd",sStmtCD);
  212. ds_grid_grd_grupstmtinfo.rowposition = iRow;
  213. }
  214. }
  215. function cbk_TRMNR02801(sScvId, nErrorCode, sErrorMsg){
  216. if(nErrorCode == 0){//성공하였을때
  217. cbk_TRMNR02801_flag = 1;
  218. // }else{
  219. // sysf_messageBox(sErrorMsg, "E");
  220. }
  221. }
  222. /**
  223. * @group :
  224. * @ver : 2007.04.24
  225. * @by : 이은영
  226. * @---------------------------------------------------
  227. * @type : function
  228. * @access : public
  229. * @desc : 기록 저장 시간 변경
  230. * @param :
  231. * @return :
  232. * @---------------------------------------------------
  233. */
  234. function fChangedRecTime(){
  235. //sRecDateFlag = model.getValue(xRecSaveCondPath+"/recdateflag");
  236. sRecDateFlag = ds_cond.getColumn(0,"recdateflag");
  237. if(sRecDateFlag == "A"){ // 자동
  238. //model.setValue(xRecSaveCondPath+"/recdd","");
  239. //model.setValue(xRecSaveCondPath+"/rectm","");
  240. ds_cond.setColumn(0,"recdd","");
  241. ds_cond.setColumn(0,"rectm","");
  242. //ipt_recdd.disabled = true;
  243. //ipt_rectm.disabled = true;
  244. // grp_biz.ipt_recdd.enable = false;
  245. // grp_biz.ipt_rectm.enable = false;
  246. grp_biz.swt_srchtool.case_grupstmt.ipt_recdd.enable = false;
  247. grp_biz.swt_srchtool.case_grupstmt.ipt_rectm.enable = false;
  248. grp_biz.swt_srchtool.case_grup.ipt_recdd.enable = false;
  249. grp_biz.swt_srchtool.case_grup.ipt_rectm.enable = false;
  250. grp_biz.swt_srchtool.case_stmtinfo.ipt_recdd.enable = false;
  251. grp_biz.swt_srchtool.case_stmtinfo.ipt_rectm.enable = false;
  252. }else{ // 사용자 지정
  253. //model.setValue(xRecSaveCondPath+"/recdd",getCurrentDate());
  254. //model.setValue(xRecSaveCondPath+"/rectm",getCurrentTime().substr(0,4));
  255. ds_cond.setColumn(0,"recdd",utlf_getCurrentDate());
  256. ds_cond.setColumn(0,"rectm",utlf_getCurrentTime().substr(0,4));
  257. //ipt_recdd.disabled = false;
  258. //ipt_rectm.disabled = false;
  259. // grp_biz.ipt_recdd.enable = true;
  260. // grp_biz.ipt_rectm.enable = true;
  261. grp_biz.swt_srchtool.case_grupstmt.ipt_recdd.enable = true;
  262. grp_biz.swt_srchtool.case_grupstmt.ipt_rectm.enable = true;
  263. grp_biz.swt_srchtool.case_grup.ipt_recdd.enable = true;
  264. grp_biz.swt_srchtool.case_grup.ipt_rectm.enable = true;
  265. grp_biz.swt_srchtool.case_stmtinfo.ipt_recdd.enable = true;
  266. grp_biz.swt_srchtool.case_stmtinfo.ipt_rectm.enable = true;
  267. }
  268. }
  269. /**
  270. * @group :
  271. * @ver : 2007.04.23
  272. * @by : 이은영
  273. * @---------------------------------------------------
  274. * @type : function
  275. * @access : public
  276. * @desc : 검색 도구 선택
  277. * @param :
  278. * @return :
  279. * @---------------------------------------------------
  280. */
  281. function fSelectedSrchTool(pFlag){
  282. // var selIndx = swt_srchtool.selectedIndex; // (20140206) 사용하지 않는 변수 주석처리함
  283. switch(pFlag){
  284. case "SET": // SET
  285. grp_biz.swt_srchtool.tabindex = 1;
  286. // 전체 바탕색을 흰색으로 설정.
  287. for( var i=1 ; i<grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.getCellCount("Body") ; i++ ){
  288. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", i, "color", "");
  289. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", i, "color2", "");
  290. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", i, "selectcolor", "");
  291. }
  292. sSrchToolStatus = "S"; //SET
  293. if(grp_biz.swt_srchtool.case_grup.grd_grupinfo.rowcount < 1){
  294. fSearchSrchTool("SetGrup"); // SET 그룹 정보 조회
  295. }
  296. break;
  297. case "SRCH": // 진술문 검색 SRCH
  298. grp_biz.swt_srchtool.tabindex = 2;
  299. //model.setValue(xSrchToolCondPath+"/originflag","1");
  300. //model.setValue(xSrchToolCondPath+"/dnarflag","%");
  301. //model.setValue(xSrchToolCondPath+"/freetextdnarflag","1D");
  302. sSrchToolStatus = "J"; // 진술문 검색
  303. ds_grid_grd_grupstmtinfo.clearData();
  304. break;
  305. }
  306. }
  307. /**
  308. * @group :
  309. * @ver : 2007.04.23
  310. * @by : 이은영
  311. * @---------------------------------------------------
  312. * @type : function
  313. * @access : public
  314. * @desc : 입력 형태별 진술문장 조회
  315. * @param :
  316. * @return :
  317. * @---------------------------------------------------
  318. */
  319. function fSearchSrchTool(pFlag){
  320. var sGrupFlag = "";
  321. var sDepth = 0;
  322. var sRowCnt; // 2014-02-10 중복된 선언으로 인한 재선언
  323. switch(pFlag){
  324. case "SetGrup" : // SET 그룹 정보 조회
  325. sSrchToolStatus = "S"; //SET
  326. //grd_grupinfo.Rebuild();
  327. //sGrupFlag = model.getValue(xSrchToolCondPath+"/grupflag");
  328. sGrupFlag = ds_cond.getColumn(0,"grupflag");
  329. // model.removenode("/root/send");
  330. // model.makeValue("/root/send/grupflag",sGrupFlag);
  331. var ds_temp = dsf_createDsRow("ds_temp", [{col: "grupflag", val:sGrupFlag }]);
  332. if(sGrupFlag == 3){ // 부서별은 자기의 부서만 조회
  333. //model.makeValue("/root/send/deptcd", getUserInfo("dutplcecd") );
  334. var ds_temp = dsf_createDsRow("ds_temp", [{col: "grupflag", val:sGrupFlag }
  335. ,{col: "deptcd", val:sysf_getUserInfo("dutplcecd")}]);
  336. }
  337. tranf_submit({
  338. id: "TRMNR00701"
  339. , service: "carerecapp.NursingRecord"
  340. , method: "reqGetSetGrupList"
  341. , inds: "refCond="+ds_temp
  342. , outds: "ds_grid_grd_grupinfo=gruplist"
  343. , async: false
  344. , callback: "cbk_TRMNR00701"
  345. });
  346. if(cbk_TRMNR00701_flag == 1){
  347. // sRowCnt = grd_grupinfo.rows-grd_grupinfo.fixedRows; // 2014-02-10 중복된 선언으로 인한 재선언
  348. //
  349. // for(var i=1; i<=sRowCnt; i++){
  350. // sDepth = eval(model.getValue(xGrupInfoPath+"["+i+"]/depth"));
  351. // grd_grupinfo.outlinelevel(i)=sDepth;
  352. // }
  353. // grd_grupinfo.OutlineCol=1; //연결선이 표현되는 컬럼
  354. // grd_grupinfo.OutlineBar=4; //연결선 형태 설정 (+ , - , 사각형 안보이게 하려면 0 으로 세팅)
  355. // grd_grupinfo.TreeColor="gray";
  356. // // 자식 접기
  357. // for(var i=1; i<=sRowCnt; i++){
  358. // sDepth = eval(model.getValue(xGrupInfoPath+"["+i+"]/depth"));
  359. // if((eval(sGrupFlag)==3 && sDepth>2) || (eval(sGrupFlag) != 3 && sDepth>1)){
  360. // grd_grupinfo.iscollapsed(i)=true; //자식 트리 접기
  361. // }
  362. // }
  363. grp_biz.swt_srchtool.case_grup.grd_grupinfo.treeinitstatus = "collapse,all";
  364. grp_biz.swt_srchtool.case_grup.grd_grupinfo.setTreeStatus(0,true);
  365. }
  366. grp_biz.swt_srchtool.case_grup.grd_grupinfo.vscrollbar.pos = grp_biz.swt_srchtool.case_grup.grd_grupinfo.vscrollbar.max;
  367. ds_grid_grd_grupinfo.rowposition = -1;
  368. cbk_TRMNR00701_flag = 0;
  369. break;
  370. case "StmtSet": // SET 진술문 정보 조회
  371. /*
  372. var sGrupRow = grd_grupinfo.row;
  373. if(sGrupRow < 1) return;
  374. sGrupFlag = eval(model.getValue(xSrchToolCondPath+"/grupflag"));
  375. sDepth = eval(model.getValue(xGrupInfoPath+"["+sGrupRow+"]/depth"));
  376. if((sGrupFlag==3 && sDepth < 4) || (sGrupFlag != 3 && sDepth < 3)){
  377. return;
  378. }
  379. model.removenodeset(xStmtSetListPath);
  380. grd_grupstmtinfo.rebuild();
  381. model.toggle("case_grupstmt");
  382. model.removenode("/root/send");
  383. model.makeValue("/root/send/grupcd", model.getValue(xGrupInfoPath+"["+sGrupRow+"]/grupcd"));
  384. model.makeValue("/root/send/dnarflag",model.getValue(xSrchToolCondPath+"/dnarflag"));
  385. if(submit("TRMNR00702")){
  386. fSettingStmtStyle("setinfo");
  387. grd_grupstmtinfo.resizeCells();
  388. }
  389. */
  390. var sGrupRow = ds_grid_grd_grupinfo.rowposition;
  391. var sGrupRow2 = grp_biz.swt_srchtool.case_grup.grd_grupinfo.getTreeRow(sGrupRow);
  392. var sDepth = 0; // 기준 레벨
  393. var iDepth = 0; // 각 row 별 레벨
  394. var sBoolStatus = "";
  395. var sRowCnt = 0; // 전체 row 개수
  396. sGrupFlag = eval(ds_grid_grd_grupinfo.getColumn(sGrupRow, "grupflag"));
  397. sDepth = eval(ds_grid_grd_grupinfo.getColumn(sGrupRow, "depth"));
  398. // if((sGrupFlag==3 && sDepth < 4)||(sGrupFlag==5 && sDepth < 2) || (sGrupFlag != 3 && sGrupFlag != 5 && sDepth < 3)){
  399. if((sGrupFlag==3 && sDepth < 4)||(sGrupFlag != 3 && sDepth < 3) ){
  400. // 자식 접기
  401. sDepth = eval(ds_grid_grd_grupinfo.getColumn(sGrupRow, "depth"));
  402. sRowCnt = ds_grid_grd_grupinfo.rowcount;
  403. if(grp_biz.swt_srchtool.case_grup.grd_grupinfo.getTreeStatus(sGrupRow2) != 1){
  404. sBoolStatus = true;
  405. }else{
  406. sBoolStatus = false;
  407. }
  408. for(var i=sGrupRow; i<sRowCnt; i++){
  409. iDepth = eval(ds_grid_grd_grupinfo.getColumn(i, "depth"));
  410. if(i==sGrupRow){
  411. grp_biz.swt_srchtool.case_grup.grd_grupinfo.setTreeStatus(grp_biz.swt_srchtool.case_grup.grd_grupinfo.getTreeRow(i), sBoolStatus);
  412. }else if(i != sGrupRow && sDepth < iDepth){
  413. grp_biz.swt_srchtool.case_grup.grd_grupinfo.setTreeStatus(grp_biz.swt_srchtool.case_grup.grd_grupinfo.getTreeRow(i), sBoolStatus);
  414. }else{
  415. break;
  416. }
  417. }
  418. return;
  419. }
  420. //model.removenodeset(xStmtSetListPath);
  421. ds_grid_grd_srchstmtinfo.clearData();
  422. //grd_grupstmtinfo.rebuild();
  423. //model.toggle("case_grupstmt");
  424. grp_biz.swt_srchtool.tabindex = 0;
  425. grp_biz.swt_srchtool2.tabindex = 0;
  426. //model.removenode("/root/send");
  427. // model.makeValue("/root/send/grupcd", model.getValue(xGrupInfoPath+"["+sGrupRow+"]/grupcd"));
  428. // model.makeValue("/root/send/dnarflag",model.getValue(xSrchToolCondPath+"/dnarflag"));
  429. var ds_temp = dsf_createDsRow("ds_temp", [{col: "grupcd", val:ds_grid_grd_grupinfo.getColumn(sGrupRow,"grupcd") }
  430. ,{col: "dnarflag", val:ds_cond.getColumn(0,"dnarflag") }]);
  431. tranf_submit({
  432. id: "TRMNR00702"
  433. , service: "carerecapp.NursingRecord"
  434. , method: "reqGetStmtSetList"
  435. , inds: "refCond="+ds_temp
  436. , outds: "ds_data_nstmtsetlist=nstmtsetlist ds_data_dstmtsetlist=dstmtsetlist ds_data_astmtsetlist=astmtsetlist ds_data_rstmtsetlist=rstmtsetlist"
  437. , async: false
  438. , callback: "cbk_TRMNR00702"
  439. });
  440. if(cbk_TRMNR00702_flag == 1){
  441. if(ds_cond.getColumn(0,"dnarflag") == "1D"){
  442. // model.makeNode(xStmtSetListPath);
  443. // copyNodesetType(xStmtSetListPath, xHiddenDStmtSetListPath, "replace", model, model);
  444. ds_grid_grd_grupstmtinfo.copyData(ds_data_dstmtsetlist);
  445. } else if(ds_cond.getColumn(0,"dnarflag") == "2N"){
  446. // model.makeNode(xStmtSetListPath);
  447. // copyNodesetType(xStmtSetListPath, xHiddenNStmtSetListPath, "replace", model, model);
  448. ds_grid_grd_grupstmtinfo.copyData(ds_data_nstmtsetlist);
  449. } else if(ds_cond.getColumn(0,"dnarflag") == "3A"){
  450. // model.makeNode(xStmtSetListPath);
  451. // copyNodesetType(xStmtSetListPath, xHiddenAStmtSetListPath, "replace", model, model);
  452. ds_grid_grd_grupstmtinfo.copyData(ds_data_astmtsetlist);
  453. } else if(ds_cond.getColumn(0,"dnarflag") == "4R"){
  454. // model.makeNode(xStmtSetListPath);
  455. // copyNodesetType(xStmtSetListPath, xHiddenRStmtSetListPath, "replace", model, model);
  456. ds_grid_grd_grupstmtinfo.copyData(ds_data_rstmtsetlist);
  457. }
  458. fSettingStmtStyle("setinfo"); //
  459. }
  460. cbk_TRMNR00702_flag = 0;
  461. break;
  462. case "Stmt": // 진술문 검색 조회
  463. sSrchToolStatus = "J"; //SET
  464. if(utlf_isNull(ds_cond.getColumn(0,"srchnm")) || ds_cond.getColumn(0,"srchnm").length<2){
  465. sysf_messageBox("검색어를 두단어 이상","C001");
  466. //model.setFocus("ipt_srchnm");
  467. return;
  468. }
  469. // model.removenode("/root/send");
  470. // model.makeValue("/root/send/originflag", model.getValue(xSrchToolCondPath+"/originflag"));
  471. // model.makeValue("/root/send/updateflag", "Y");//간호기록 수정시 진술문 검색에는 진단도 포함되어 조회되어야한다.
  472. // model.makeValue("/root/send/dnarflag", model.getValue(xSrchToolCondPath+"/dnarflag"));
  473. // model.makeValue("/root/send/srchnm", model.getValue(xSrchToolCondPath+"/srchnm"));
  474. var ds_temp = dsf_createDsRow("ds_temp", [{col: "updateflag", val:"Y" }
  475. ,{col: "dnarflag", val:ds_cond.getColumn(0,"dnarflag") }
  476. ,{col: "srchnm", val:ds_cond.getColumn(0,"srchnm") }]);
  477. tranf_submit({
  478. id: "TRMNR00703"
  479. , service: "carerecapp.NursingRecord"
  480. , method: "reqGetStmtList"
  481. , inds: "refCond="+ds_temp
  482. , outds: "ds_grid_grd_srchstmtinfo=stmtlist ds_data_nstmtlist=nstmtlist"
  483. , async: false
  484. , callback: "cbk_TRMNR00703"
  485. });
  486. ds_grid_grd_srchstmtinfo.rowposition = -1;
  487. if(cbk_TRMNR00703_flag == 1){
  488. fSettingStmtStyle("stmtinfo"); // 속성이 있는 경우 진술문 폰트 색상을 변경한다.
  489. }
  490. cbk_TRMNR00703_flag = 0;
  491. break;
  492. }
  493. }
  494. function cbk_TRMNR00701(sScvId, nErrorCode, sErrorMsg){
  495. if(nErrorCode == 0){//성공하였을때
  496. cbk_TRMNR00701_flag = 1;
  497. }else{
  498. sysf_messageBox(sErrorMsg, "E");
  499. }
  500. }
  501. function cbk_TRMNR00702(sScvId, nErrorCode, sErrorMsg){
  502. if(nErrorCode == 0){//성공하였을때
  503. cbk_TRMNR00702_flag = 1;
  504. }else{
  505. sysf_messageBox(sErrorMsg, "E");
  506. }
  507. }
  508. function cbk_TRMNR00703(sScvId, nErrorCode, sErrorMsg){
  509. if(nErrorCode == 0){//성공하였을때
  510. cbk_TRMNR00703_flag = 1;
  511. }else{
  512. sysf_messageBox(sErrorMsg, "E");
  513. }
  514. }
  515. /**
  516. * @group :
  517. * @ver : 2007.04.19
  518. * @by : 이은영
  519. * @---------------------------------------------------
  520. * @type : function
  521. * @access : public
  522. * @desc : 진술문 폰트 color 설정 - 속성이 있는 경우 진술문 폰트 색상을 변경한다.
  523. * @param : pFlag ( setinfo : set, stmtinfo : 진술문 검색)
  524. * @return :
  525. * @---------------------------------------------------
  526. */
  527. function fSettingStmtStyle(pFlag){
  528. switch(pFlag){
  529. case "setinfo" : // set
  530. // grd_grupstmtinfo.mergecells = "bycol";
  531. // grd_grupstmtinfo.mergecol(2) = false;
  532. // grd_grupstmtinfo.mergecol(3) = false;
  533. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", 3, "color", "EXPR(!utlf_isNull(attrcnt) && attrcnt > 0 ? '#6600ff' : '#000000')");
  534. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", 3, "color2", "EXPR(!utlf_isNull(attrcnt) && attrcnt > 0 ? '#6600ff' : '#000000')");
  535. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", 3, "selectcolor", "EXPR(!utlf_isNull(attrcnt) && attrcnt > 0 ? '#6600ff' : '#000000')");
  536. break;
  537. case "stmtinfo": // 진술문 검색
  538. // grd_srchstmtinfo.mergecells = "bycol";
  539. // grd_srchstmtinfo.mergecol(1) = false;
  540. // grd_srchstmtinfo.mergecol(3) = false;
  541. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", 3, "color", "EXPR(!utlf_isNull(attrcnt) && attrcnt > 0 ? '#6600ff' : '#000000')");
  542. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", 3, "color2", "EXPR(!utlf_isNull(attrcnt) && attrcnt > 0 ? '#6600ff' : '#000000')");
  543. grp_biz.swt_srchtool.case_grupstmt.grd_grupstmtinfo.setCellProperty("body", 3, "selectcolor", "EXPR(!utlf_isNull(attrcnt) && attrcnt > 0 ? '#6600ff' : '#000000')");
  544. break;
  545. }
  546. }
  547. /**
  548. * @group :
  549. * @ver : 2007.05.17
  550. * @by : 이은영
  551. * @---------------------------------------------------
  552. * @type : function
  553. * @access : public
  554. * @desc : 기록 저장
  555. * @param : sFreeFlag Freetext 저장여부(F)
  556. * @return :
  557. * @---------------------------------------------------
  558. */
  559. function fSaveStmtInfo(sFreeFlag){
  560. var sCertKey = ds_data_nursingrecordinfo.getColumn(0,"certkey");
  561. var iRow; // 2014-02-10 중복된 선언으로 인한 재선언
  562. // if(sCertKey != ""){ // 인증저장시
  563. // var sAttrinfo1 = ""; // (20140206) 사용하지 않는 변수 주석처리함
  564. var sArrtCnt = 0;
  565. var sStmtCd = ""; // 진술문장 코드
  566. var sStmtCnts = ""; // 진술문장 내역
  567. var sDNARFlag = ""; //DNAR 구분
  568. var sGrupCD = ""; // 그룹코드
  569. // var sStmtInfoHeader = "stmtspec▦attrinfo▦status▦origincd▦stmtcd▦dnarflag▦recoriginflag▦recdtflag▦recdt▦prerecdd▦"
  570. // +"pid▦indd▦orddd▦cretno▦instcd▦carerecno▦certkey▦dnarnm▦usernm▦deptflagnm▩"; // 저장 정보
  571. dsf_createDs("ds_temp_save", [{col: "stmtspec", type:"string" }
  572. ,{col: "attrinfo", type:"string"}
  573. ,{col: "status", type:"string"}
  574. ,{col: "origincd", type:"string"}
  575. ,{col: "stmtcd", type:"string"}
  576. ,{col: "dnarflag", type:"string"}
  577. ,{col: "recoriginflag", type:"string"}
  578. ,{col: "recdtflag", type:"string"}
  579. ,{col: "recdt", type:"string"}
  580. ,{col: "prerecdd", type:"string"}
  581. ,{col: "pid", type:"string"}
  582. ,{col: "indd", type:"string"}
  583. ,{col: "orddd", type:"string"}
  584. ,{col: "cretno", type:"string"}
  585. ,{col: "instcd", type:"string"}
  586. ,{col: "carerecno", type:"string"}
  587. ,{col: "certkey", type:"string"}
  588. ,{col: "dnarnm", type:"string"}
  589. ,{col: "usernm", type:"string"}
  590. ,{col: "deptflagnm", type:"string"}
  591. ,{col: "diagstmtnm", type:"string"}]);
  592. // var sStmtInfo = ""; // 저장 정보 // (20140206) 사용하지 않는 변수 주석처리함
  593. var sAttrInptParamInfo = ""; // 속성창 입력 정보
  594. var sSaveData = "";
  595. sRecDateFlag = ds_cond.getColumn(0,"recdateflag");// (A : 자동, U : 지정)
  596. var sRecDate = "";
  597. var sPreRecDate = ds_data_nursingrecordinfo.getColumn(0,"recdd");//수정전 원기록일시
  598. if(sRecDateFlag == "U"){
  599. sRecDate = ds_cond.getColumn(0,"recdd")+ds_cond.getColumn(0,"rectm")+"00";
  600. if(utlf_isValidDateTime(sRecDate,"YYYYMMDDhhmmss")== false){
  601. sysf_messageBox("기록 시간이 유효하지","E007");
  602. return;
  603. }
  604. var sRecverno = "";
  605. var sRow = "";
  606. if(!utlf_isNull(ds_data_nursingrecordinfo.getColumn(0,"recverno")) && ds_data_nursingrecordinfo.getColumn(0,"recverno") != 'undefined'){
  607. sRecverno = ds_data_nursingrecordinfo.getColumn(0,"recverno");
  608. if(opener.ds_grid_grd_carediagspec.findRow("recverno",sRecverno) > -1)
  609. sRow = opener.ds_grid_grd_carediagspec.findRow("recverno",sRecverno);
  610. sFromdt = opener.ds_grid_grd_carediagspec.getColumn(sRow,"fromdt");
  611. if(!utlf_isNull(sFromdt) && !utlf_isNull(sRecDate)){
  612. if(sFromdt > sRecDate){
  613. sysf_messageBox("진단시간 이후로 기록일자를 설정해주세요.","I");
  614. return;
  615. }
  616. }
  617. }
  618. } else {
  619. sRecDate = utlf_getCurrentDate() + utlf_getCurrentTime();
  620. }
  621. if( sFreeFlag =="F"){//free text로 수정시
  622. sSaveData = "";
  623. sDNARFlag = ds_cond.getColumn(0,"freetextdnarflag");
  624. if (sFreeFlag =="F" && utlf_isNull(ds_cond.getColumn(0,"freetextsrchcnts")) ){
  625. sysf_messageBox("입력된 진술문이","I004");
  626. return;
  627. }
  628. ds_temp_save.clearData();
  629. ds_temp_save.addRow();
  630. ds_temp_save.setColumn(0,"stmtspec",ds_cond.getColumn(0,"freetextsrchcnts"));
  631. ds_temp_save.setColumn(0,"attrinfo","");
  632. ds_temp_save.setColumn(0,"status","U");
  633. ds_temp_save.setColumn(0,"origincd",sRecOriginFlag == "T" ? sOriginCd :ds_data_nursingrecordinfo.getColumn(0,"carerecno"));
  634. ds_temp_save.setColumn(0,"stmtcd","--------");
  635. ds_temp_save.setColumn(0,"dnarflag",sDNARFlag);
  636. ds_temp_save.setColumn(0,"recoriginflag",sRecOriginFlag == "T" ? sRecOriginFlag :"F");
  637. ds_temp_save.setColumn(0,"recdtflag",sRecDateFlag);
  638. ds_temp_save.setColumn(0,"recdt",sRecDate);
  639. ds_temp_save.setColumn(0,"prerecdd",sPreRecDate);
  640. ds_temp_save.setColumn(0,"pid",sPid);
  641. ds_temp_save.setColumn(0,"indd",sIndd);
  642. ds_temp_save.setColumn(0,"orddd",sOutDD);
  643. ds_temp_save.setColumn(0,"cretno",sCretNo);
  644. ds_temp_save.setColumn(0,"instcd",sInstcd);
  645. ds_temp_save.setColumn(0,"carerecno",ds_data_nursingrecordinfo.getColumn(0,"carerecno"));
  646. ds_temp_save.setColumn(0,"certkey",sCertKey);
  647. ds_temp_save.setColumn(0,"dnarnm",sDnarNm);
  648. ds_temp_save.setColumn(0,"usernm",sUserNm);
  649. ds_temp_save.setColumn(0,"deptflagnm",sDeptFlagNm);
  650. if(ds_temp_save.rowcount <= 0){
  651. sysf_messageBox("저장할 데이터가","I004");
  652. return;
  653. }
  654. } else {
  655. // 속성 입력 진술문 뽑아내기..
  656. switch(sSrchToolStatus){
  657. //case "N": //표준 진술문 set 20080710 N은 없음. SET에서 저장된것은 모두 S: 로 저장됨.
  658. case "S": // SET
  659. var iGrupRow = ds_grid_grd_grupinfo.rowposition;
  660. iRow = ds_grid_grd_grupstmtinfo.rowposition; // 2014-02-10 중복된 선언으로 인한 재선언
  661. sGrupCD = ds_grid_grd_grupinfo.getColumn(iGrupRow,"grupcd");
  662. sStmtCd = ds_grid_grd_grupstmtinfo.getColumn(iRow,"stmtcd");
  663. sArrtCnt = ds_grid_grd_grupstmtinfo.getColumn(iRow,"attrcnt");
  664. sDNARFlag = ds_grid_grd_grupstmtinfo.getColumn(iRow,"dnarflag");
  665. sStmtCnts = ds_grid_grd_grupstmtinfo.getColumn(iRow,"stmtcnts");
  666. if(sArrtCnt > 0){
  667. sAttrInptParamInfo += ds_grid_grd_grupstmtinfo.getColumn(iRow,"stmtcd")+"▦"
  668. +ds_grid_grd_grupstmtinfo.getColumn(iRow,"stmtcnts")+"▦"
  669. +ds_grid_grd_grupstmtinfo.getColumn(iRow,"attrinfo1")+"▦"
  670. +ds_grid_grd_grupstmtinfo.getColumn(iRow,"attrinfo2")+"▦"
  671. +ds_grid_grd_grupstmtinfo.getColumn(iRow,"attressnyn")+"▩";
  672. }
  673. break;
  674. case "J": // 진술문 검색
  675. iRow = ds_grid_grd_srchstmtinfo.rowposition; // 2014-02-10 중복된 선언으로 인한 재선언
  676. sArrtCnt = ds_grid_grd_srchstmtinfo.getColumn(iRow,"attrcnt");
  677. sStmtCd = ds_grid_grd_srchstmtinfo.getColumn(iRow,"stmtcd");
  678. sDNARFlag = ds_grid_grd_srchstmtinfo.getColumn(iRow,"dnarflag");
  679. sStmtCnts = ds_grid_grd_srchstmtinfo.getColumn(iRow,"stmtcnts");
  680. if(sArrtCnt > 0){
  681. sAttrInptParamInfo += ds_grid_grd_srchstmtinfo.getColumn(iRow,"stmtcd")+"▦"
  682. +ds_grid_grd_srchstmtinfo.getColumn(iRow,"stmtcnts")+"▦"
  683. +ds_grid_grd_srchstmtinfo.getColumn(iRow,"attrinfo1")+"▦"
  684. +ds_grid_grd_srchstmtinfo.getColumn(iRow,"attrinfo2")+"▦"
  685. +ds_grid_grd_srchstmtinfo.getColumn(iRow,"attressnyn")+"▩";
  686. }
  687. break;
  688. }
  689. // 진술문 선택 여부 체크
  690. if ( iRow < 0 || utlf_isNull(sStmtCnts) ){
  691. sysf_messageBox("선택된 진술문이","I004");
  692. return;
  693. }
  694. if(sDNARFlag == "2N"){
  695. sysf_messageBox( "간호진단으로 수정할 수 없습니다. 다른 진술문을 선택","I008");
  696. return;
  697. }
  698. ds_temp_save.clearData();
  699. ds_temp_save.addRow();
  700. // 저장 데이터 만들기..
  701. if(sArrtCnt > 0){ // 속성 입력 진술문 선택 여부
  702. frmf_setParameter("SMMNR014_Param",sAttrInptParamInfo);
  703. frmf_modal("SMMNR01400","SMMNR01400","","","","","","","","","","","M");
  704. var sReturnInfo = frmf_getParameter("SMMNR014_Return"); // 속성 입력된 진술문 정보 "stmtcd▦stmtcnts▦attrinfo▩"
  705. if(!utlf_isNull(sReturnInfo)){ // 속성 입력한 경우
  706. ds_temp_save.setColumn(0,"stmtspec",getArrayData(sReturnInfo,1,1));
  707. ds_temp_save.setColumn(0,"attrinfo",getArrayData(sReturnInfo,1,2));
  708. }
  709. }else{
  710. ds_temp_save.setColumn(0,"stmtspec",sStmtCnts);
  711. ds_temp_save.setColumn(0,"attrinfo","");
  712. }
  713. if(utlf_isNull(ds_temp_save.getColumn(0,"stmtspec")) && utlf_isNull(ds_temp_save.getColumn(0,"attrinfo"))){
  714. sysf_messageBox("저장할 데이터가","I004");
  715. return;
  716. }
  717. //sRecOriginFlag T 이면 타입2에서 넘어온값. 그룹코드도 무조건 타입2에서 넘어온 origin 코드
  718. if(sRecOriginFlag == "T"){
  719. sGrupCD = sOriginCd;
  720. }
  721. ds_temp_save.setColumn(0,"status","U");
  722. ds_temp_save.setColumn(0,"origincd",sGrupCD);
  723. ds_temp_save.setColumn(0,"stmtcd",sStmtCd);
  724. ds_temp_save.setColumn(0,"dnarflag",sDNARFlag);
  725. ds_temp_save.setColumn(0,"recoriginflag",sRecOriginFlag == "T" ? sRecOriginFlag :sSrchToolStatus);
  726. ds_temp_save.setColumn(0,"recdtflag",sRecDateFlag);
  727. ds_temp_save.setColumn(0,"recdt",sRecDate);
  728. ds_temp_save.setColumn(0,"prerecdd",sPreRecDate);
  729. ds_temp_save.setColumn(0,"pid",sPid);
  730. ds_temp_save.setColumn(0,"indd",sIndd);
  731. ds_temp_save.setColumn(0,"orddd",sOutDD);
  732. ds_temp_save.setColumn(0,"cretno",sCretNo);
  733. ds_temp_save.setColumn(0,"instcd",sInstcd);
  734. ds_temp_save.setColumn(0,"carerecno",ds_data_nursingrecordinfo.getColumn(0,"carerecno"));
  735. ds_temp_save.setColumn(0,"certkey",sCertKey);
  736. ds_temp_save.setColumn(0,"dnarnm",sDnarNm);
  737. ds_temp_save.setColumn(0,"usernm",sUserNm);
  738. ds_temp_save.setColumn(0,"deptflagnm",sDeptFlagNm);
  739. }
  740. ds_temp_save.setColumn(0,"diagstmtnm",utlf_transNullToEmpty(ds_data_nursingrecordinfo.getColumn(0,"recverno")) +" "+ ds_temp_save.getColumn(0,"deptflagnm"));
  741. ds_temp_sign.clear();
  742. ds_temp_sign.copyData(ds_temp_save);
  743. //인증저장
  744. var msg; // 2014-02-10 중복된 선언으로 인한 재선언
  745. if( sRecOriginFlag == "T" ){
  746. msg = sysf_messageBox( '[ ' + sHngNm + ' ] 간호일지 Type || 기록내역의 인증저장을', 'Q004');//실행 하시겠습니까? yes=6, no=7
  747. } else {
  748. msg = sysf_messageBox( '[ ' + sHngNm + ' ] 간호일지 기록내역의 인증저장을', 'Q004');//실행 하시겠습니까? yes=6, no=7
  749. }
  750. if(Number(msg) == 6){//예
  751. if (!fSign()) return;
  752. dsf_makeValue(ds_temp_sign, "hisgubun", "string", "");
  753. dsf_makeValue(ds_temp_sign, "recverno", "string", "");
  754. dsf_makeValue(ds_temp_sign, "certkey", "string", "");
  755. /*
  756. for(var hisprechk =0; hisprechk< ds_temp_sign.rowcount; hisprechk ++){
  757. ds_temp_sign.setColumn(hisprechk,"hisgubun","수정후");
  758. }
  759. */
  760. ds_temp_sign.setColumn(0,"hisgubun","수정후");
  761. ds_temp_sign_temp.copyData(ds_temp_sign);
  762. ds_temp_sign_temp.setColumn(0,"stmtspec",ds_data_nursingrecordinfo.getColumn(0,"stmtspec"));
  763. //ds_temp_sign_temp.setColumn(0,"recdd",ds_data_nursingrecordinfo.getColumn(0,"recdd"));
  764. //ds_temp_sign_temp.setColumn(0,"rectm",ds_data_nursingrecordinfo.getColumn(0,"rectm"));
  765. ds_temp_sign_temp.setColumn(0,"recdt",ds_data_nursingrecordinfo.getColumn(0,"recdd") + ds_data_nursingrecordinfo.getColumn(0,"rectm") + "00");
  766. ds_temp_sign_temp.setColumn(0,"dnarflag",ds_data_nursingrecordinfo.getColumn(0,"dnarflag"));
  767. ds_temp_sign_temp.setColumn(0,"certkey",ds_data_nursingrecordinfo.getColumn(0,"certkey"));
  768. ds_temp_sign_temp.setColumn(0,"recverno",ds_data_nursingrecordinfo.getColumn(0,"recverno"));
  769. ds_temp_sign_temp.setColumn(0,"stmtcd",ds_data_nursingrecordinfo.getColumn(0,"stmtcd"));
  770. ds_temp_sign_temp.setColumn(0,"origincd",ds_data_nursingrecordinfo.getColumn(0,"origincd"));
  771. ds_temp_sign_temp.setColumn(0,"recoriginflag",ds_data_nursingrecordinfo.getColumn(0,"recoriginflag"));
  772. ds_temp_sign_temp.setColumn(0,"carerecno",ds_data_nursingrecordinfo.getColumn(0,"carerecno"));
  773. //ds_temp_sign_temp.setColumn(0,"cretyn",ds_data_nursingrecordinfo.getColumn(0,"cretyn"));
  774. ds_temp_sign_temp.setColumn(0,"certkey",ds_data_nursingrecordinfo.getColumn(0,"certkey"));
  775. ds_temp_sign_temp.setColumn(0,"hisgubun","수정전");
  776. if(ds_temp_sign.getColumn(0,"recoriginflag") =="J"){
  777. ds_temp_sign.setColumn(0,"diagstmtnm","-");
  778. ds_temp_sign.setColumn(0,"dnarflag","");
  779. }
  780. ds_temp_sign.appendData(ds_temp_sign_temp);
  781. fSignHis();
  782. tranf_submit({
  783. id: "TXMNR02801"
  784. , service: "carerecapp.NursingRecord"
  785. , method: "reqExeStmtList"
  786. , inds: "saveData=ds_temp_save signinfo=ds_temp_fsign signinfohis=ds_temp_signSaveDataHis"
  787. , outds: "ds_data_recddlist=recddlist ds_data_totnursingrecordlist=totnursingrecordlist"
  788. , async: false
  789. , callback: "cbk_TXMNR02801"
  790. });
  791. if(cbk_TXMNR02801_flag == 1){
  792. fViewSign();
  793. opener.frmf_setParameter("SMMNR02800_ReturnFlag","Y");
  794. opener.frmf_setParameter("SMMNR02800_SignRecYN","Y");
  795. this.close();
  796. }
  797. cbk_TXMNR02801_flag = 0;
  798. }else {
  799. return;
  800. }
  801. // if(sArrtCnt < 1){
  802. // var sRtnMsg = messageBox("","Q002");
  803. // if(sRtnMsg != 6) return;
  804. // }
  805. // }
  806. }
  807. function cbk_TXMNR02801(sScvId, nErrorCode, sErrorMsg){
  808. if(nErrorCode == 0){//성공하였을때
  809. cbk_TXMNR02801_flag=1;
  810. }else{
  811. sysf_messageBox(sErrorMsg, "E");
  812. }
  813. }
  814. /**
  815. * @group :
  816. * @ver : 2007.06.15
  817. * @by : 이은영
  818. * @---------------------------------------------------
  819. * @type : function
  820. * @access : public
  821. * @desc : 인증데이터 생성함수
  822. * @param :
  823. * @return :
  824. * @---------------------------------------------------
  825. */
  826. function fMake_SignData(){
  827. //Sign.addnode("/root/main/signSaveData");
  828. Sign.addnode("/signSaveData/saveDataList",ds_temp_sign.saveXML());
  829. }
  830. /**
  831. * @group :
  832. * @ver : 2007.06.15
  833. * @by : 이은영
  834. * @---------------------------------------------------
  835. * @type : function
  836. * @access : public
  837. * @desc : 인증로직
  838. * @param :
  839. * @return :
  840. * @---------------------------------------------------
  841. */
  842. function fSign(){
  843. Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
  844. if(Sign.signprocess() == true){
  845. // 전자인증 관련 환자 인적 정보를 보내줌.
  846. ds_temp_fsign.clearData();
  847. ds_temp_fsign.addRow();
  848. ds_temp_fsign.setColumn(0,"pid",sPid);
  849. if( sIOFlag =="O" ){
  850. ds_temp_fsign.setColumn(0,"orddd",sOutDD);//입원일자(입원,응급)/진료일자(외래)
  851. }else{
  852. ds_temp_fsign.setColumn(0,"orddd",sIndd);//입원일자(입원,응급)/진료일자(외래)
  853. }
  854. ds_temp_fsign.setColumn(0,"signno","");//서명번호
  855. ds_temp_fsign.setColumn(0,"cretno",sCretNo);//생성번호
  856. if ( sRecDateFlag == "U" ){
  857. ds_temp_fsign.setColumn(0,"recdd",ds_cond.getColumn(0,"recdd"));// 실제 기록이 이루어진 기록일자
  858. ds_temp_fsign.setColumn(0,"rectm",ds_cond.getColumn(0,"rectm"));//실제 기록이 이루어진 기록시간
  859. } else {
  860. ds_temp_fsign.setColumn(0,"recdd",utlf_getCurrentDate());// 실제 기록이 이루어진 기록일자
  861. ds_temp_fsign.setColumn(0,"rectm",utlf_getCurrentTime());//실제 기록이 이루어진 기록시간
  862. }
  863. ds_temp_fsign.setColumn(0,"recsaveflag","Y");//전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  864. ds_temp_fsign.setColumn(0,"signflag","02"); //서명자료구분 (01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  865. ds_temp_fsign.setColumn(0,"signgenrflag",sIOFlag);//외래/입원구분(코드정의서 M0010 참조)
  866. ds_temp_fsign.setColumn(0,"formcd","0000002432");//각 기록지별 서식코드0000002464 type2 -> 0000002432 간호일지
  867. ds_temp_fsign.setColumn(0,"orddeptcd",sOrdDeptCd);//진료부서코드
  868. ds_temp_fsign.setColumn(0,"orddrid",sOrdDrId);//진료의사ID
  869. ds_temp_fsign.setColumn(0,"dispyn","N"); //기록뷰어에는 조회안되도록
  870. // 인증할 데이터 정보(미기록 노드 제거된 정보)
  871. // 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  872. ds_temp_fsign.setColumn(0,"signbfcnts",Sign.signedInfos[1]);
  873. // 공인인증 처리후 데이터
  874. ds_temp_fsign.setColumn(0,"signaftcnts",Sign.signedInfos[2]);
  875. ds_temp_fsign.setColumn(0,"acptuniqno",aCptuniqno);
  876. }else{
  877. return false;
  878. }
  879. //model.makeValue("/root/send/signdata/screenid", getScreenID());
  880. ds_temp_fsign.setColumn(0,"screenid",frmf_getScreenID());
  881. return true;
  882. }
  883. function fSignHis(){
  884. //ds_temp_signSaveData.clearData();
  885. Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  886. if(Sign.signprocess() == true){
  887. // 전자인증 관련 환자 인적 정보를 보내줌.
  888. vsettime = utlf_getCurrentTime();
  889. var ds_temp3 = dsf_createDsRow("ds_temp_signSaveDataHis", [{col: "pid", val:sPid }
  890. ,{col: "orddd", val:sIOFlag=="O"?sOutDD:sIndd }
  891. ,{col: "signno", val:"" }
  892. ,{col: "cretno", val:sCretNo }
  893. ,{col: "recdd", val:utlf_getCurrentDate() }
  894. ,{col: "rectm", val:utlf_getCurrentTime() }
  895. ,{col: "recsaveflag", val:"Y" }
  896. ,{col: "signflag", val:"02" }
  897. ,{col: "signgenrflag", val:sIOFlag }
  898. ,{col: "formcd", val:"1800022039" }
  899. ,{col: "orddeptcd", val:sOrdDeptCd }
  900. ,{col: "orddrid", val:sOrdDrId }
  901. ,{col: "dispyn", val:"Y" }
  902. //,{col: "acptuniqno", val:ds_data_pamlist.getColumn(0,"acptuniqno") }
  903. ,{col: "signbfcnts", val:Sign.signedInfos[1] }
  904. ,{col: "signaftcnts", val:Sign.signedInfos[2] }
  905. ,{col: "screenid", val:frmf_getScreenID() }]);
  906. }else{
  907. return false;
  908. }
  909. //ds_temp_signSaveData.clearData();
  910. return true;
  911. }
  912. /**
  913. * @group :
  914. * @ver : 2007.06.15
  915. * @by : 이은영
  916. * @---------------------------------------------------
  917. * @type : function
  918. * @access : public
  919. * @desc : 통합기록용인증로직
  920. * @param :
  921. * @return :
  922. * @---------------------------------------------------
  923. */
  924. function fViewSign(){
  925. var sSignDataRowCnt = "";
  926. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  927. var signRecDD = "";
  928. //model.removenodeset("/root/send/signdata");
  929. ds_temp_fsign.clearData();
  930. for( var idx = 0 ; idx < ds_data_recddlist.rowcount; idx++ ){
  931. //signRecDD = model.getValue("/root/hidden/recinfo/recddlist["+ idx +"]/recdd");
  932. signRecDD = ds_data_recddlist.getColumn(idx,"recdd");
  933. ds_temp_fsign.addColumn("status","string");
  934. //model.removenodeset(xSignPath);
  935. //model.makeNode(xSignPath);
  936. ds_temp_sign.clear();
  937. //ds_data_totnursingrecordlist.filter("recdd=='"+ signRecDD +"'");
  938. var nCnt = ds_data_totnursingrecordlist.getCaseCount("recdd=='"+ signRecDD +"'");
  939. if(nCnt > 0 ){
  940. //if(ds_data_totnursingrecordlist.rowcount>0 ){
  941. ds_data_totnursingrecordlist.filter("recdd=='"+ signRecDD +"'");
  942. //copyNodeset(xSignPath,"/root/hidden/recinfo/totnursingrecordlist[recdd='"+ signRecDD +"']");
  943. ds_temp_sign.copyData(ds_data_totnursingrecordlist,true);
  944. ds_temp_sign.addColumn("usernm","string");
  945. for(var i=0; i<ds_temp_sign.rowcount; i++){
  946. ds_temp_sign.setColumn(i,"usernm",ds_temp_sign.getColumn(i,"fstrgstrnm"));
  947. }
  948. if(Sign.signprocess() == true){
  949. //trace(Sign.signedInfos[1]);
  950. //var sSignDataRowCnt = eval(getNodesetCount("/root/send/signdata")) + 1;
  951. //var sSignDataRowCnt = ds_temp_fsign.rowcount;
  952. sSignDataRowCnt = ds_temp_fsign.addRow();
  953. // 전자인증 관련 환자 인적 정보를 보내줌.
  954. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/pid", sPid );//등록번호\
  955. ds_temp_fsign.setColumn(sSignDataRowCnt,"status","i");
  956. ds_temp_fsign.setColumn(sSignDataRowCnt,"pid",sPid);
  957. if( sIOFlag =="O" ){
  958. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sOutDD);//입원일자(입원,응급)/진료일자(외래)
  959. ds_temp_fsign.setColumn(sSignDataRowCnt,"orddd",sOutDD);
  960. }else{
  961. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sIndd);//입원일자(입원,응급)/진료일자(외래)
  962. ds_temp_fsign.setColumn(sSignDataRowCnt,"orddd",sIndd);
  963. }
  964. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signno", "");//서명번호
  965. ds_temp_fsign.setColumn(sSignDataRowCnt,"signno","");
  966. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/cretno", sCretNo); //생성번호
  967. ds_temp_fsign.setColumn(sSignDataRowCnt,"cretno",sCretNo);
  968. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recdd",signRecDD);// 실제 기록이 이루어진 기록일자
  969. ds_temp_fsign.setColumn(sSignDataRowCnt,"recdd",signRecDD);
  970. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/rectm","000000");//실제 기록이 이루어진 기록시간
  971. ds_temp_fsign.setColumn(sSignDataRowCnt,"rectm","000000");
  972. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recsaveflag","Y"); //전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  973. ds_temp_fsign.setColumn(sSignDataRowCnt,"recsaveflag","Y");
  974. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signflag","02" ); //서명자료구분 (01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  975. ds_temp_fsign.setColumn(sSignDataRowCnt,"signflag","02");
  976. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signgenrflag",sIOFlag );//외래/입원구분(코드정의서 M0010 참조)
  977. ds_temp_fsign.setColumn(sSignDataRowCnt,"signgenrflag",sIOFlag);
  978. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/formcd","0000002432" ); //각 기록지별 서식코드
  979. ds_temp_fsign.setColumn(sSignDataRowCnt,"formcd","0000002432");
  980. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddeptcd", sOrdDeptCd); //진료부서코드
  981. ds_temp_fsign.setColumn(sSignDataRowCnt,"orddeptcd",sOrdDeptCd);
  982. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddrid", sOrdDrId); //진료의사ID
  983. ds_temp_fsign.setColumn(sSignDataRowCnt,"orddrid",sOrdDrId);
  984. // 인증할 데이터 정보(미기록 노드 제거된 정보)
  985. // 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  986. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signbfcnts", Sign.signedInfos[1]);
  987. ds_temp_fsign.setColumn(sSignDataRowCnt,"signbfcnts",Sign.signedInfos[1]);
  988. // 공인인증 처리후 데이터
  989. // model.makeValue("/root/send/signdata/signaftcnts", Sign.signedInfos[2]);
  990. //model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/screenid", getScreenID());
  991. ds_temp_fsign.setColumn(sSignDataRowCnt,"screenid",frmf_getScreenID());
  992. }else{
  993. return;
  994. }
  995. }else{
  996. //sSignDataRowCnt = eval(getNodesetCount("/root/send/signdata")) + 1;
  997. //ds_temp_fsign.clearData();
  998. sSignDataRowCnt = ds_temp_fsign.addRow();
  999. ds_temp_fsign.setColumn(sSignDataRowCnt,"status","d");
  1000. ds_temp_fsign.setColumn(sSignDataRowCnt,"pid",sPid);
  1001. if(sIOFlag =="O"){
  1002. ds_temp_fsign.setColumn(sSignDataRowCnt,"orddd",sOutDD);
  1003. }else{
  1004. ds_temp_fsign.setColumn(sSignDataRowCnt,"orddd",sIndd);
  1005. }
  1006. ds_temp_fsign.setColumn(sSignDataRowCnt,"signno","");
  1007. ds_temp_fsign.setColumn(sSignDataRowCnt,"cretno",sCretNo);
  1008. ds_temp_fsign.setColumn(sSignDataRowCnt,"formcd","0000002432");
  1009. ds_temp_fsign.setColumn(sSignDataRowCnt,"signflag","02");
  1010. ds_temp_fsign.setColumn(sSignDataRowCnt,"signgenrflag",sIOFlag);
  1011. ds_temp_fsign.setColumn(sSignDataRowCnt,"signbfcnts","삭제");
  1012. ds_temp_fsign.setColumn(sSignDataRowCnt,"recdd",signRecDD);
  1013. ds_temp_fsign.setColumn(sSignDataRowCnt,"rectm","000000");
  1014. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/status", "d"); //삭제 상태
  1015. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/pid", sPid );//등록번호
  1016. // if( sIOFlag =="O" ){
  1017. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sOrddd);//입원일자(입원,응급)/진료일자(외래)
  1018. // }else{
  1019. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sIndd);//입원일자(입원,응급)/진료일자(외래)
  1020. // }
  1021. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signno", "");//서명번호
  1022. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/cretno", sCretNo); //생성번호
  1023. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/formcd","0000002432" ); //각 기록지별 서식코드
  1024. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signflag","02" ); //서명자료구분 (01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  1025. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signgenrflag",sIOFlag );//외래/입원구분(코드정의서 M0010 참조)
  1026. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signbfcnts", "삭제");
  1027. //
  1028. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recdd",signRecDD);// 실제 기록이 이루어진 기록일자
  1029. // model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/rectm","000000");// 실제 기록이 이루어진 기록일자
  1030. }
  1031. ds_data_totnursingrecordlist.filter("");
  1032. }
  1033. //submit("TXMNR00904");
  1034. tranf_submit({
  1035. id: "TXMNR00904"
  1036. , service: "carerecapp.ClincObsRec"
  1037. , method: "reqExeSaveViewData"
  1038. , inds: "signinfo=ds_temp_fsign"
  1039. //, outds: "ds_grid_grd_druginfo=druginfolist"
  1040. , async: false
  1041. //, callback: "cbk_TRMNR08501"
  1042. });
  1043. }
  1044. ]]></Script>