SMMNR028.js 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864
  1. /*
  2. 간호일지수정(SMMNR02800.xfm - JScript )
  3. - Version :
  4. 1) : Ver.1.00.01
  5. */
  6. var xGrupInfoPath = "/root/main/srchtoolinfo/grupinfo/gruplist"; // SET 그룹 정보
  7. var xStmtSetListPath = "/root/main/srchtoolinfo/stmtsetinfo/stmtsetlist"; // SET 진술문 정보
  8. var xStmtInfoPath = "/root/main/srchtoolinfo/stmtinfo/stmtlist"; // 진술문 정보
  9. var xSrchToolCondPath = "/root/main/cond/srchtool"; // 검색도구 조건
  10. var xRecSaveCondPath = "/root/main/cond/recsave"; // 저장도구 조건
  11. var xRecSrchCondPath = "/root/main/cond/recsrch"; // 기록조회 조건
  12. var xNursingRecordInfoPath = "/root/main/recinfo/nursingrecordinfo"; // 간호일지 정보
  13. var xHiddenNStmtSetListPath = "/root/hidden/stmtsetinfo/nstmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  14. var xHiddenDStmtSetListPath = "/root/hidden/stmtsetinfo/dstmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  15. var xHiddenAStmtSetListPath = "/root/hidden/stmtsetinfo/astmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  16. var xHiddenRStmtSetListPath = "/root/hidden/stmtsetinfo/rstmtsetlist"; // 20080621 김홍점 SET 진술문 정보
  17. var xSignPath = "/root/main/signSaveData/saveDataList";//인증저장관련노드
  18. var sSrchToolStatus = "";
  19. var xPamInfoPath = "/root/main/paminfo/pamlist"; // 환자정보
  20. var sRecOriginFlag ="";
  21. var sOriginCd ="";
  22. //dnarnm▦usernm▦deptflagnm▩
  23. var sDnarNm ="";
  24. var sUserNm ="";
  25. var sDeptFlagNm ="";
  26. var sRecDateFlag ="";
  27. var sPid = ""; // 환자번호
  28. var sIndd = ""; // 입원일자
  29. var sOutDD = ""; // 진료일자
  30. var sCretNo = ""; // 환자 일자별 일련번호
  31. var sInstcd = "";
  32. var sIOFlag = ""; // 입원/외래 구분
  33. var sOrdDeptCd = ""; // 진료과코드
  34. var sOrdDrId = ""; // 진료의사ID
  35. var sHngNm = "";
  36. var sHomeYn = "";//가정간호인지 아닌지의 여부를 판단하기 위해추가.. 20090401 가정간호가 상단정보를 올리면서 상단정보의 진료일정을 읽지 못하도록 막아야함.20090403 김홍점
  37. var sParamMsg = "";
  38. var sParamCertflag = "Y"; //인증저장시 미인증 유효시간관련 변수(20120905 KJS)
  39. var vsettime = "";
  40. /**
  41. * @group :
  42. * @ver : 2007.04.23
  43. * @by : 이은영
  44. * @---------------------------------------------------
  45. * @type : function
  46. * @access : public
  47. * @desc : 화면 초기화
  48. * @param :
  49. * @return :
  50. * @---------------------------------------------------
  51. */
  52. function fInit(){
  53. zbcfGetCodeList(new Array("M0002"), new Array("/root/init/M0002list")); // 출처정보
  54. opener.javascript.setParameter("SMMNR02800_ReturnFlag","");
  55. opener.javascript.setParameter("SMMNR02800_SignRecYN","");
  56. opener.javascript.setParameter("SMMNR02800_vsettime","");
  57. // 검색 조건
  58. model.setValue(xSrchToolCondPath+"/grupflag","1");
  59. model.removenodeset(xGrupInfoPath);
  60. //model.setValue(xSrchToolCondPath+"/freetextdnarflag","1D");
  61. // 저장조건
  62. //"recdd▦rectm▦dnarflag▦stmtspec▦fstrgstrnm▦certkey▦recverno▦stmtcd▦origincd▦recoriginflag▦carerecno▦dnarnm▦deptflagnm▦pid▦indd▦orddd▦cretno▦instcd▦ioflag▦orddeptcd▦orddrid▦hngnm▦homeyn▩"
  63. //"recdd▦rectm▦dnarflag▦stmtspec▦fstrgstrnm▦signno▦recverno▦stmtcd▦origincd▦recoriginflag▦carerecno▦dnarnm▦deptflagnm▦certchkflag▩";
  64. sParamMsg = opener.javascript.getParameter("SMMNR02800_Param");
  65. opener.javascript.setParameter("SMMNR02800_Param","");
  66. sRecOriginFlag = getArrayData(sParamMsg,1,9);
  67. sOriginCd = getArrayData(sParamMsg,1,8);
  68. var sStmtCD = getArrayData(sParamMsg,1,7);
  69. var sRecDD = getArrayData(sParamMsg,1,0);
  70. var sRecTM = getArrayData(sParamMsg,1,1);
  71. var sDnarFlag = getArrayData(sParamMsg,1,2);
  72. model.setValue(xRecSaveCondPath+"/recdateflag", "U"); // 자동
  73. model.setValue(xRecSaveCondPath+"/recdd", sRecDD); // 기록일자
  74. model.setValue(xRecSaveCondPath+"/rectm", sRecTM); // 기록시간
  75. //model.setValue(xRecSaveCondPath+"/recdnarflag", "1D"); // dnar 구분
  76. model.setValue(xNursingRecordInfoPath+"/recdd",sRecDD); // 기록일자
  77. model.setValue(xNursingRecordInfoPath+"/rectm",sRecTM); // 기록시간
  78. model.setValue(xNursingRecordInfoPath+"/dnarflag",sDnarFlag); // dnar구분
  79. model.setValue(xRecSaveCondPath+"/recdnarflag", sDnarFlag); // dnar 구분
  80. //조회할 DNAR구분 을 param에 따라 선택해서 disable시킴.
  81. model.setValue(xSrchToolCondPath+"/dnarflag",sDnarFlag);
  82. model.setValue(xSrchToolCondPath+"/freetextdnarflag",sDnarFlag);
  83. rdo_dnarflag.disabled = true;
  84. rdo_setdnarflag.disabled = true;
  85. rdo_freednarflag.disabled = true;
  86. model.setValue(xNursingRecordInfoPath+"/stmtspec",getArrayData(sParamMsg,1,3)); // 진술문내역
  87. model.setValue(xNursingRecordInfoPath+"/fstrgstrnm",getArrayData(sParamMsg,1,4)); // 최초등록자명
  88. model.setValue(xNursingRecordInfoPath+"/certkey",getArrayData(sParamMsg,1,5)); // 인증키
  89. model.setValue(xNursingRecordInfoPath+"/recverno",getArrayData(sParamMsg,1,6)); // 기록버전번호
  90. model.setValue(xNursingRecordInfoPath+"/stmtcd",sStmtCD); // 진술문코드
  91. model.setValue(xNursingRecordInfoPath+"/origincd",sOriginCd); // 출처코드
  92. model.setValue(xNursingRecordInfoPath+"/recoriginflag",sRecOriginFlag); // 기록출처구분
  93. model.setValue(xNursingRecordInfoPath+"/carerecno",getArrayData(sParamMsg,1,10)); // 간호기록번호
  94. sDnarNm = getArrayData(sParamMsg,1,11);
  95. sUserNm = getArrayData(sParamMsg,1,4);
  96. sDeptFlagNm = getArrayData(sParamMsg,1,12); //타입2에서 넘어온건 용도부서 선택, 간호일지에서 넘어온건 간호진단명.
  97. sHomeYn = getArrayData(sParamMsg,1,22); // 가정간호여부("Y" 또는 "")
  98. if(getArrayData(sParamMsg,1,5) != ""){
  99. model.setValue(xNursingRecordInfoPath+"/cretyn","인증");
  100. }
  101. if( sRecOriginFlag != "T"
  102. && sDnarFlag !="S"
  103. && (isNull(model.getValue(xNursingRecordInfoPath+"/recverno"))||model.getValue(xNursingRecordInfoPath+"/recverno") == "0")) {
  104. btn_freesave.disabled = "true";//간호일지일 경우 진단 미존재시 freetext는 수정금지
  105. textarea3.disabled = "true";
  106. }
  107. // 환자정보 조회
  108. var sPamInfo = getGlobalVariable("paminfo");
  109. setCSVToNode("/root/main/paminfo",sPamInfo,"pamlist");
  110. if( sHomeYn == "Y" || ( sHomeYn != "Y" && !isNull(getArrayData(sParamMsg,1,14)) ) ) {
  111. sPid = getArrayData(sParamMsg,1,13); // 환자번호
  112. sIndd = getArrayData(sParamMsg,1,14); // 입원일자
  113. sOutDD = getArrayData(sParamMsg,1,15); // 진료일자
  114. sCretNo = getArrayData(sParamMsg,1,16); // 환자 일자별 일련번호
  115. sInstcd = getArrayData(sParamMsg,1,17);
  116. sIOFlag = getArrayData(sParamMsg,1,18); // 입원/외래 구분
  117. sOrdDeptCd = getArrayData(sParamMsg,1,19); // 진료과코드
  118. sOrdDrId = getArrayData(sParamMsg,1,20); // 진료과코드
  119. sHngNm = getArrayData(sParamMsg,1,21); // 환자명
  120. if(sIOFlag == "I" || sIOFlag == "E" || sIOFlag == "D") {
  121. sIndd = getArrayData(sParamMsg,1,14); // 입원일자
  122. sOutDD = "-"; // 진료일자
  123. } else{
  124. sIndd = "-"; // 입원일자
  125. sOutDD = getArrayData(sParamMsg,1,15); // 진료일자
  126. }
  127. } else {
  128. sPid = model.getValue(xPamInfoPath+"/pid"); // 환자번호
  129. sIndd = model.getValue(xPamInfoPath+"/indd"); // 입원일자
  130. sCretNo = model.getValue(xPamInfoPath+"/cretno"); // 환자 일자별 일련번호
  131. sInstcd = model.getValue(xPamInfoPath+"/instcd"); // 기관코드
  132. sIOFlag = model.getValue(xPamInfoPath+"/ioflag"); // 입원/외래 구분
  133. sOrdDeptCd = model.getValue(xPamInfoPath+"/orddeptcd"); // 진료과코드
  134. sOrdDrId = model.getValue(xPamInfoPath+"/medispclid"); // 진료과코드
  135. sOutDD = model.getValue(xPamInfoPath+"/orddd"); // 진료일자
  136. sHngNm = model.getValue(xPamInfoPath+"/hngnm");
  137. if(sIOFlag == "I" || sIOFlag == "E" || sIOFlag == "D"){
  138. sIndd = model.getValue(xPamInfoPath+"/indd"); // 입원일자
  139. sOutDD = "-"; // 진료일자
  140. }else{
  141. sIndd = "-"; // 입원일자
  142. sOutDD = model.getValue(xPamInfoPath+"/orddd"); // 진료일자
  143. }
  144. sParamCertflag = getArrayData(sParamMsg,1,13); // 인증저장시 미인증 유효시간관련 변수(20120905 KJS)
  145. }
  146. model.refresh();
  147. // 기록 조회 조건
  148. sSrchToolStatus = (sRecOriginFlag == "T" ? "S" : sRecOriginFlag);
  149. // if(sRecOriginFlag == "F"){
  150. // btn_bottomsave.disabled = true;
  151. // }
  152. if(sSrchToolStatus == "S" ){
  153. //swt_srchtool.selectedIndex = 0;
  154. model.toggle("case_grup");
  155. model.removenode("/root/send");
  156. model.makeValue("/root/send/grupcd", sOriginCd);
  157. if(submit("TRMNR02801")){
  158. var sRowCnt = grd_grupinfo.rows-grd_grupinfo.fixedRows;
  159. for(var i=1; i<=sRowCnt; i++){
  160. sDepth = eval(model.getValue(xGrupInfoPath+"["+i+"]/depth"));
  161. grd_grupinfo.outlinelevel(i)=sDepth;
  162. }
  163. grd_grupinfo.OutlineCol=1; //연결선이 표현되는 컬럼
  164. grd_grupinfo.OutlineBar=4; //연결선 형태 설정 (+ , - , 사각형 안보이게 하려면 0 으로 세팅)
  165. grd_grupinfo.TreeColor="gray";
  166. }
  167. var iRow = grd_grupinfo.findRow(sOriginCd,1,grd_grupinfo.colRef("grupcd"));
  168. grd_grupinfo.row = iRow;
  169. grd_grupinfo.bottomRow = iRow;
  170. if ( sRecOriginFlag == "T" ){//타입2이면 용도( 부서)
  171. model.setValue(xSrchToolCondPath+"/grupflag", "5");
  172. } else {
  173. model.setValue(xSrchToolCondPath+"/grupflag", model.getValue(xGrupInfoPath+"["+iRow+"]/grupflag"));
  174. rdo_grupflag.refresh();
  175. fSearchSrchTool("StmtSet");
  176. iRow = grd_grupstmtinfo.findRow(sStmtCD,1,grd_grupstmtinfo.colRef("stmtcd"));
  177. grd_grupstmtinfo.row = iRow;
  178. grd_grupstmtinfo.bottomRow = iRow;
  179. }
  180. model.refresh();
  181. //model.setValue(xSrchToolCondPath+"/dnarflag",getArrayData(sParamMsg,1,2));
  182. }else if(sSrchToolStatus == "J"){ // 진술문 검색
  183. model.toggle("case_stmtinfo");
  184. model.removenodeset(xStmtInfoPath);
  185. grd_srchstmtinfo.rebuild();
  186. /*model.removenode("/root/send");
  187. model.makeValue("/root/send/stmtcd", sStmtCD);
  188. model.makeValue("/root/send/dnarflag", getArrayData(sParamMsg,1,2));
  189. if(submit("TRMNR02802")){
  190. var iRow = grd_srchstmtinfo.findRow(sStmtCD,1,4);
  191. grd_srchstmtinfo.row = iRow;
  192. grd_srchstmtinfo.resizeCells();
  193. }*/
  194. btn_stmtsrch.selected = true;
  195. //model.setValue(xSrchToolCondPath+"/dnarflag",getArrayData(sParamMsg,1,2));
  196. model.refresh();
  197. }else if(sSrchToolStatus == "N"){
  198. model.removenodeset(xStmtSetListPath);
  199. grd_grupstmtinfo.rebuild();
  200. swt_srchtool.selectedIndex = 0;
  201. model.toggle("case_grupstmt");
  202. if(btn_set.selected == false) btn_set.selected = true;
  203. model.removenode("/root/send");
  204. model.makeValue("/root/send/nursdiagstmtcd", sOriginCd );
  205. model.makeValue("/root/send/grupcd", "");
  206. model.makeValue("/root/send/dnarflag", model.getValue(xNursingRecordInfoPath+"/dnarflag"));
  207. if(submit("TRMNR00706")){
  208. fSettingStmtStyle("setinfo");
  209. model.makeValue(xGrupInfoPath+"/groupcd", sOriginCd);
  210. //grd_carediagspec.resizeCells();
  211. }
  212. iRow = grd_grupstmtinfo.findRow(sStmtCD,1,4);
  213. grd_grupstmtinfo.row = iRow;
  214. grd_grupstmtinfo.topRow = iRow;
  215. }
  216. }
  217. /**
  218. * @group :
  219. * @ver : 2007.04.24
  220. * @by : 이은영
  221. * @---------------------------------------------------
  222. * @type : function
  223. * @access : public
  224. * @desc : 기록 저장 시간 변경
  225. * @param :
  226. * @return :
  227. * @---------------------------------------------------
  228. */
  229. function fChangedRecTime(){
  230. sRecDateFlag = model.getValue(xRecSaveCondPath+"/recdateflag");
  231. if(sRecDateFlag == "A"){ // 자동
  232. model.setValue(xRecSaveCondPath+"/recdd","");
  233. model.setValue(xRecSaveCondPath+"/rectm","");
  234. ipt_recdd.disabled = true;
  235. ipt_rectm.disabled = true;
  236. }else{ // 사용자 지정
  237. model.setValue(xRecSaveCondPath+"/recdd",getCurrentDate());
  238. model.setValue(xRecSaveCondPath+"/rectm",getCurrentTime().substr(0,4));
  239. ipt_recdd.disabled = false;
  240. ipt_rectm.disabled = false;
  241. }
  242. ipt_recdd.refresh();
  243. ipt_rectm.refresh();
  244. }
  245. /**
  246. * @group :
  247. * @ver : 2007.04.23
  248. * @by : 이은영
  249. * @---------------------------------------------------
  250. * @type : function
  251. * @access : public
  252. * @desc : 검색 도구 선택
  253. * @param :
  254. * @return :
  255. * @---------------------------------------------------
  256. */
  257. function fSelectedSrchTool(pFlag){
  258. var selIndx = swt_srchtool.selectedIndex;
  259. switch(pFlag){
  260. case "SET": // SET
  261. model.toggle("case_grup");
  262. grd_grupstmtinfo.allstyle("data","background-color") = "#FFFFFF"; // 전체 바탕색을 흰색으로 설정.
  263. sSrchToolStatus = "S"; //SET
  264. if(grd_grupinfo.rows < 2){
  265. fSearchSrchTool("SetGrup"); // SET 그룹 정보 조회
  266. }
  267. break;
  268. case "SRCH": // 진술문 검색 SRCH
  269. model.toggle("case_stmtinfo");
  270. model.setValue(xSrchToolCondPath+"/originflag","1");
  271. //model.setValue(xSrchToolCondPath+"/dnarflag","%");
  272. //model.setValue(xSrchToolCondPath+"/freetextdnarflag","1D");
  273. sSrchToolStatus = "J"; // 진술문 검색
  274. model.removenodeset(xStmtInfoPath);
  275. model.refresh();
  276. break;
  277. }
  278. }
  279. /**
  280. * @group :
  281. * @ver : 2007.04.23
  282. * @by : 이은영
  283. * @---------------------------------------------------
  284. * @type : function
  285. * @access : public
  286. * @desc : 입력 형태별 진술문장 조회
  287. * @param :
  288. * @return :
  289. * @---------------------------------------------------
  290. */
  291. function fSearchSrchTool(pFlag){
  292. var sGrupFlag = "";
  293. var sDepth = 0;
  294. switch(pFlag){
  295. case "SetGrup" : // SET 그룹 정보 조회
  296. sSrchToolStatus = "S"; //SET
  297. grd_grupinfo.Rebuild();
  298. sGrupFlag = model.getValue(xSrchToolCondPath+"/grupflag");
  299. model.removenode("/root/send");
  300. model.makeValue("/root/send/grupflag",sGrupFlag);
  301. if(sGrupFlag == 3){ // 부서별은 자기의 부서만 조회
  302. model.makeValue("/root/send/deptcd", getUserInfo("dutplcecd") );
  303. }
  304. if(submit("TRMNR00701")){
  305. var sRowCnt = grd_grupinfo.rows-grd_grupinfo.fixedRows;
  306. for(var i=1; i<=sRowCnt; i++){
  307. sDepth = eval(model.getValue(xGrupInfoPath+"["+i+"]/depth"));
  308. grd_grupinfo.outlinelevel(i)=sDepth;
  309. }
  310. grd_grupinfo.OutlineCol=1; //연결선이 표현되는 컬럼
  311. grd_grupinfo.OutlineBar=4; //연결선 형태 설정 (+ , - , 사각형 안보이게 하려면 0 으로 세팅)
  312. grd_grupinfo.TreeColor="gray";
  313. // 자식 접기
  314. for(var i=1; i<=sRowCnt; i++){
  315. sDepth = eval(model.getValue(xGrupInfoPath+"["+i+"]/depth"));
  316. if((eval(sGrupFlag)==3 && sDepth>2) || (eval(sGrupFlag) != 3 && sDepth>1)){
  317. grd_grupinfo.iscollapsed(i)=true; //자식 트리 접기
  318. }
  319. }
  320. }
  321. break;
  322. case "StmtSet": // SET 진술문 정보 조회
  323. /*
  324. var sGrupRow = grd_grupinfo.row;
  325. if(sGrupRow < 1) return;
  326. sGrupFlag = eval(model.getValue(xSrchToolCondPath+"/grupflag"));
  327. sDepth = eval(model.getValue(xGrupInfoPath+"["+sGrupRow+"]/depth"));
  328. if((sGrupFlag==3 && sDepth < 4) || (sGrupFlag != 3 && sDepth < 3)){
  329. return;
  330. }
  331. model.removenodeset(xStmtSetListPath);
  332. grd_grupstmtinfo.rebuild();
  333. model.toggle("case_grupstmt");
  334. model.removenode("/root/send");
  335. model.makeValue("/root/send/grupcd", model.getValue(xGrupInfoPath+"["+sGrupRow+"]/grupcd"));
  336. model.makeValue("/root/send/dnarflag",model.getValue(xSrchToolCondPath+"/dnarflag"));
  337. if(submit("TRMNR00702")){
  338. fSettingStmtStyle("setinfo");
  339. grd_grupstmtinfo.resizeCells();
  340. }
  341. */
  342. var sGrupRow = grd_grupinfo.row;
  343. var sDepth = 0; // 기준 레벨
  344. var iDepth = 0; // 각 row 별 레벨
  345. var sBoolStatus = "";
  346. var sRowCnt = 0; // 전체 row 개수
  347. sGrupFlag = eval(model.getValue(xSrchToolCondPath+"/grupflag"));
  348. sDepth = eval(model.getValue(xGrupInfoPath+"["+sGrupRow+"]/depth"));
  349. // if((sGrupFlag==3 && sDepth < 4)||(sGrupFlag==5 && sDepth < 2) || (sGrupFlag != 3 && sGrupFlag != 5 && sDepth < 3)){
  350. if((sGrupFlag==3 && sDepth < 4)||(sGrupFlag != 3 && sDepth < 3) ){
  351. // 자식 접기
  352. sDepth = eval(model.getValue(xGrupInfoPath+"["+sGrupRow+"]/depth"));
  353. sRowCnt = grd_grupinfo.rows - grd_grupinfo.fixedrows;
  354. if(grd_grupinfo.iscollapsed(sGrupRow) == true){
  355. sBoolStatus = false;
  356. }else{
  357. sBoolStatus = true;
  358. }
  359. for(var i=sGrupRow; i<=sRowCnt; i++){
  360. iDepth = eval(model.getValue(xGrupInfoPath+"["+i+"]/depth"));
  361. if(i==sGrupRow){
  362. grd_grupinfo.iscollapsed(i) = sBoolStatus;
  363. }else if(i != sGrupRow && sDepth < iDepth){
  364. grd_grupinfo.iscollapsed(i) = sBoolStatus;
  365. }else{
  366. break;
  367. }
  368. }
  369. return;
  370. }
  371. model.removenodeset(xStmtSetListPath);
  372. grd_grupstmtinfo.rebuild();
  373. model.toggle("case_grupstmt");
  374. model.removenode("/root/send");
  375. model.makeValue("/root/send/grupcd", model.getValue(xGrupInfoPath+"["+sGrupRow+"]/grupcd"));
  376. model.makeValue("/root/send/dnarflag",model.getValue(xSrchToolCondPath+"/dnarflag"));
  377. if(submit("TRMNR00702")){
  378. //ndar로 조회되어져 오므로 카피.
  379. if(model.getValue(xSrchToolCondPath+"/dnarflag") == "1D"){
  380. model.makeNode(xStmtSetListPath);
  381. copyNodesetType(xStmtSetListPath, xHiddenDStmtSetListPath, "replace", model, model);
  382. grd_grupstmtinfo.refresh();
  383. } else if(model.getValue(xSrchToolCondPath+"/dnarflag") == "2N"){
  384. model.makeNode(xStmtSetListPath);
  385. copyNodesetType(xStmtSetListPath, xHiddenNStmtSetListPath, "replace", model, model);
  386. grd_grupstmtinfo.refresh();
  387. } else if(model.getValue(xSrchToolCondPath+"/dnarflag") == "3A"){
  388. model.makeNode(xStmtSetListPath);
  389. copyNodesetType(xStmtSetListPath, xHiddenAStmtSetListPath, "replace", model, model);
  390. grd_grupstmtinfo.refresh();
  391. } else if(model.getValue(xSrchToolCondPath+"/dnarflag") == "4R"){
  392. model.makeNode(xStmtSetListPath);
  393. copyNodesetType(xStmtSetListPath, xHiddenRStmtSetListPath, "replace", model, model);
  394. grd_grupstmtinfo.refresh();
  395. }
  396. fSettingStmtStyle("setinfo");
  397. grd_grupstmtinfo.resizeCells();
  398. }
  399. break;
  400. case "Stmt": // 진술문 검색 조회
  401. sSrchToolStatus = "J"; //SET
  402. if(model.getValue(xSrchToolCondPath+"/srchnm") =="" ||model.getValue(xSrchToolCondPath+"/srchnm").length<2){
  403. messageBox("검색어를 두단어 이상","C001");
  404. model.setFocus("ipt_srchnm");
  405. return;
  406. }
  407. model.removenode("/root/send");
  408. model.makeValue("/root/send/originflag", model.getValue(xSrchToolCondPath+"/originflag"));
  409. model.makeValue("/root/send/updateflag", "Y");//간호기록 수정시 진술문 검색에는 진단도 포함되어 조회되어야한다.
  410. model.makeValue("/root/send/dnarflag", model.getValue(xSrchToolCondPath+"/dnarflag"));
  411. model.makeValue("/root/send/srchnm", model.getValue(xSrchToolCondPath+"/srchnm"));
  412. if(submit("TRMNR00703")){
  413. fSettingStmtStyle("stmtinfo"); // 속성이 있는 경우 진술문 폰트 색상을 변경한다.
  414. grd_srchstmtinfo.resizeCells();
  415. }
  416. break;
  417. }
  418. }
  419. /**
  420. * @group :
  421. * @ver : 2007.04.19
  422. * @by : 이은영
  423. * @---------------------------------------------------
  424. * @type : function
  425. * @access : public
  426. * @desc : 진술문 폰트 color 설정 - 속성이 있는 경우 진술문 폰트 색상을 변경한다.
  427. * @param : pFlag ( setinfo : set, stmtinfo : 진술문 검색)
  428. * @return :
  429. * @---------------------------------------------------
  430. */
  431. function fSettingStmtStyle(pFlag){
  432. switch(pFlag){
  433. case "setinfo" : // set
  434. grd_grupstmtinfo.mergecells = "bycol";
  435. grd_grupstmtinfo.mergecol(2) = false;
  436. grd_grupstmtinfo.mergecol(3) = false;
  437. grd_grupstmtinfo.allstyle("data","color") = "#000000";
  438. for(var iRow=grd_grupstmtinfo.fixedrows; iRow<=grd_grupstmtinfo.rows-grd_grupstmtinfo.fixedrows; iRow++){
  439. if(eval(model.getValue(xStmtSetListPath+"["+iRow+"]/attrcnt"))>0){
  440. grd_grupstmtinfo.cellstyle("color",iRow,3) = "#6600ff"; // 녹색
  441. }
  442. }
  443. break;
  444. case "stmtinfo": // 진술문 검색
  445. grd_srchstmtinfo.mergecells = "bycol";
  446. grd_srchstmtinfo.mergecol(1) = false;
  447. grd_srchstmtinfo.mergecol(3) = false;
  448. grd_srchstmtinfo.allstyle("data","color") = "#000000";
  449. for(var iRow=grd_srchstmtinfo.fixedrows; iRow<=grd_srchstmtinfo.rows-grd_srchstmtinfo.fixedrows; iRow++){
  450. if(eval(model.getValue(xStmtInfoPath+"["+iRow+"]/attrcnt"))>0){
  451. grd_srchstmtinfo.cellstyle("color",iRow,3) = "#6600ff"; // 녹색
  452. }
  453. }
  454. break;
  455. }
  456. }
  457. /**
  458. * @group :
  459. * @ver : 2007.05.17
  460. * @by : 이은영
  461. * @---------------------------------------------------
  462. * @type : function
  463. * @access : public
  464. * @desc : 기록 저장
  465. * @param : sFreeFlag Freetext 저장여부(F)
  466. * @return :
  467. * @---------------------------------------------------
  468. */
  469. function fSaveStmtInfo(sFreeFlag){
  470. var sCertKey = model.getValue(xNursingRecordInfoPath+"/certkey");
  471. //if(sCertKey != ""){ // 인증저장시
  472. var sAttrinfo1 = "";
  473. var sArrtCnt = 0;
  474. var sStmtCd = ""; // 진술문장 코드
  475. var sStmtCnts = ""; // 진술문장 내역
  476. var sDNARFlag = ""; //DNAR 구분
  477. var sGrupCD = ""; // 그룹코드
  478. var sStmtInfoHeader = "stmtspec▦attrinfo▦status▦origincd▦stmtcd▦dnarflag▦recoriginflag▦recdtflag▦recdt▦prerecdd▦"
  479. + "pid▦indd▦orddd▦cretno▦instcd▦carerecno▦certkey▦dnarnm▦usernm▦deptflagnm▩"; // 저장 정보
  480. var sStmtInfo = ""; // 저장 정보
  481. var sAttrInptParamInfo = ""; // 속성창 입력 정보
  482. var sAttrInptYN = "N";
  483. var sSaveData = "";
  484. sRecDateFlag = model.getValue(xRecSaveCondPath+"/recdateflag"); // (A : 자동, U : 지정)
  485. var sRecDate = "";
  486. var sPreRecDate = model.getValue(xNursingRecordInfoPath+"/recdd");//수정전 원기록일시
  487. if(sRecDateFlag == "U"){
  488. sRecDate = model.getValue(xRecSaveCondPath+"/recdd")+model.getValue(xRecSaveCondPath+"/rectm")+ "00";
  489. if(isValidDateTime(sRecDate,"YYYYMMDDhhmmss")== false){
  490. messageBox("기록 시간이 유효하지","E007");
  491. return;
  492. }
  493. } else {
  494. sRecDate = getCurrentDate() + getCurrentTime();
  495. }
  496. model.removenode("/root/send");
  497. if( sFreeFlag =="F") { //free text로 수정시
  498. sSaveData = "";
  499. sDNARFlag = model.getValue(xSrchToolCondPath+"/freetextdnarflag");
  500. if (sFreeFlag =="F" && isNull(model.getValue(xSrchToolCondPath+"/freetextsrchcnts")) ){
  501. messageBox("입력된 진술문이","I004");
  502. return;
  503. }
  504. sSaveData = model.getValue(xSrchToolCondPath+"/freetextsrchcnts")+"▦"
  505. + "▦"
  506. + "U▦"
  507. + ( sRecOriginFlag == "T" ? sOriginCd :model.getValue(xNursingRecordInfoPath+"/carerecno"))+"▦"
  508. + "--------"+"▦"
  509. + sDNARFlag+"▦"
  510. + ( sRecOriginFlag == "T" ? sRecOriginFlag :"F")+"▦"
  511. + sRecDateFlag+"▦"
  512. + sRecDate+"▦"
  513. + sPreRecDate+"▦"
  514. + sPid+"▦"
  515. + sIndd+"▦"
  516. + sOutDD+"▦"
  517. + sCretNo+"▦"
  518. + sInstcd+"▦"
  519. + model.getValue(xNursingRecordInfoPath+"/carerecno")+"▦"
  520. + sCertKey+"▦"
  521. + sDnarNm+"▦"
  522. + sUserNm+"▦"
  523. + sDeptFlagNm+"▩";
  524. if(sSaveData == ""){
  525. messageBox("저장할 데이터가","I004");
  526. return;
  527. }
  528. } else {
  529. // 속성 입력 진술문 뽑아내기..
  530. switch(sSrchToolStatus){
  531. //case "N": //표준 진술문 set 20080710 N은 없음. SET에서 저장된것은 모두 S: 로 저장됨.
  532. case "S": // SET
  533. var iGrupRow = grd_grupinfo.row;
  534. var iRow = grd_grupstmtinfo.row;
  535. sGrupCD = model.getValue(xGrupInfoPath+"["+iGrupRow+"]/grupcd");
  536. sStmtCd = model.getValue(xStmtSetListPath+"["+iRow+"]/stmtcd");
  537. sArrtCnt = eval(model.getValue(xStmtSetListPath+"["+iRow+"]/attrcnt"));
  538. sDNARFlag = model.getValue(xStmtSetListPath+"["+iRow+"]/dnarflag");
  539. sStmtCnts = model.getValue(xStmtSetListPath+"["+iRow+"]/stmtcnts");
  540. if(sArrtCnt > 0){
  541. sAttrInptParamInfo += model.getValue(xStmtSetListPath+"["+iRow+"]/stmtcd")+"▦"
  542. + model.getValue(xStmtSetListPath+"["+iRow+"]/stmtcnts")+"▦"
  543. + model.getValue(xStmtSetListPath+"["+iRow+"]/attrinfo1")+"▦"
  544. + model.getValue(xStmtSetListPath+"["+iRow+"]/attrinfo2")+"▦"
  545. + model.getValue(xStmtSetListPath+"["+iRow+"]/attressnyn")+"▩";
  546. }
  547. break;
  548. case "J": // 진술문 검색
  549. var iRow = grd_srchstmtinfo.row;
  550. sArrtCnt = eval(model.getValue(xStmtInfoPath+"["+iRow+"]/attrcnt"));
  551. sStmtCd = model.getValue(xStmtInfoPath+"["+iRow+"]/stmtcd");
  552. sDNARFlag = model.getValue(xStmtInfoPath+"["+iRow+"]/dnarflag");
  553. sStmtCnts = model.getValue(xStmtInfoPath+"["+iRow+"]/stmtcnts");
  554. if(sArrtCnt > 0){
  555. sAttrInptParamInfo += model.getValue(xStmtInfoPath+"["+iRow+"]/stmtcd")+"▦"
  556. + model.getValue(xStmtInfoPath+"["+iRow+"]/stmtcnts")+"▦"
  557. + model.getValue(xStmtInfoPath+"["+iRow+"]/attrinfo1")+"▦"
  558. + model.getValue(xStmtInfoPath+"["+iRow+"]/attrinfo2")+"▦"
  559. + model.getValue(xStmtInfoPath+"["+iRow+"]/attressnyn")+"▩";
  560. }
  561. break;
  562. }
  563. // 진술문 선택 여부 체크
  564. if ( iRow < 1 || isNull(sStmtCnts) ){
  565. messageBox("선택된 진술문이","I004");
  566. return;
  567. }
  568. if(sDNARFlag == "2N"){
  569. messageBox( "간호진단으로 수정할 수 없습니다. 다른 진술문을 선택","I008");
  570. return;
  571. }
  572. // 저장 데이터 만들기..
  573. if(sArrtCnt > 0){ // 속성 입력 진술문 선택 여부
  574. setParameter("SMMNR014_Param",sAttrInptParamInfo);
  575. modal("SMMNR01400");
  576. var sReturnInfo = getParameter("SMMNR014_Return"); // 속성 입력된 진술문 정보 "stmtcd▦stmtcnts▦attrinfo▩"
  577. if(sReturnInfo != "" && sReturnInfo != null){ // 속성 입력한 경우
  578. sSaveData += getArrayData(sReturnInfo,1,1)+"▦"+ getArrayData(sReturnInfo,1,2)+"▦";
  579. }
  580. } else {
  581. sSaveData += sStmtCnts + "▦" + "▦";
  582. }
  583. if(sSaveData == ""){
  584. messageBox("저장할 데이터가","I004");
  585. return;
  586. }
  587. //sRecOriginFlag T 이면 타입2에서 넘어온값. 그룹코드도 무조건 타입2에서 넘어온 origin 코드
  588. if(sRecOriginFlag == "T"){
  589. sGrupCD = sOriginCd;
  590. }
  591. sSaveData += "U▦"
  592. + sGrupCD+"▦"
  593. + sStmtCd+"▦"
  594. + sDNARFlag+"▦"
  595. + ( sRecOriginFlag == "T" ? sRecOriginFlag :sSrchToolStatus)+"▦"
  596. + sRecDateFlag+"▦"
  597. + sRecDate+"▦"
  598. + sPreRecDate+"▦"
  599. + sPid+"▦"
  600. + sIndd+"▦"
  601. + sOutDD+"▦"
  602. + sCretNo+"▦"
  603. + sInstcd+"▦"
  604. + model.getValue(xNursingRecordInfoPath+"/carerecno")+"▦"
  605. + sCertKey+"▦"
  606. + sDnarNm+"▦"
  607. + sUserNm+"▦"
  608. + sDeptFlagNm+"▩";
  609. }
  610. model.makeValue("/root/send/saveData", sStmtInfoHeader+sSaveData);
  611. model.removeNode("/root/main/signSaveData");
  612. model.makeNode("/root/main/signSaveData");
  613. setCSVToNode("/root/main/signSaveData", sStmtInfoHeader+sSaveData, "saveDataList");
  614. //인증저장
  615. if( sRecOriginFlag == "T" ){
  616. var msg = messageBox( '[ ' + sHngNm + ' ] 간호일지 Type || 기록내역의 인증저장을', 'Q004');//실행 하시겠습니까? yes=6, no=7
  617. } else {
  618. var msg = messageBox( '[ ' + sHngNm + ' ] 간호일지 기록내역의 인증저장을', 'Q004');//실행 하시겠습니까? yes=6, no=7
  619. }
  620. if(Number(msg) == 6){//예
  621. if (!fSign()) return;
  622. if(submit("TXMNR02801")){
  623. fViewSign();
  624. opener.javascript.setParameter("SMMNR02800_ReturnFlag","Y");
  625. opener.javascript.setParameter("SMMNR02800_SignRecYN","Y");
  626. opener.javascript.setParameter("SMMNR02800_vsettime",vsettime);
  627. model.close();
  628. }
  629. } else {
  630. return;
  631. }
  632. // if(sArrtCnt < 1){
  633. // var sRtnMsg = messageBox("","Q002");
  634. // if(sRtnMsg != 6) return;
  635. // }
  636. // }
  637. }
  638. /**
  639. * @group :
  640. * @ver : 2007.06.15
  641. * @by : 이은영
  642. * @---------------------------------------------------
  643. * @type : function
  644. * @access : public
  645. * @desc : 인증데이터 생성함수
  646. * @param :
  647. * @return :
  648. * @---------------------------------------------------
  649. */
  650. function fMake_SignData(){
  651. Sign.addnode("/root/main/signSaveData");
  652. }
  653. /**
  654. * @group :
  655. * @ver : 2007.06.15
  656. * @by : 이은영
  657. * @---------------------------------------------------
  658. * @type : function
  659. * @access : public
  660. * @desc : 인증로직
  661. * @param :
  662. * @return :
  663. * @---------------------------------------------------
  664. */
  665. function fSign(){
  666. Sign.certreload = true ; // 전자서명 호출시 인증저장 버튼을 누늘때마다 인증서가 뜨도록 처리
  667. Sign.certchkflag = sParamCertflag;
  668. if (sParamCertflag == "Y") {
  669. //alert("인증저장");
  670. }
  671. if(Sign.signprocess() == true){
  672. // 전자인증 관련 환자 인적 정보를 보내줌.
  673. vsettime = getCurrentTime();
  674. model.makeValue("/root/send/signdata/pid", sPid ); //등록번호
  675. if( sIOFlag =="O" ){
  676. model.makeValue("/root/send/signdata/orddd", sOutDD); //입원일자(입원,응급)/진료일자(외래)
  677. } else {
  678. model.makeValue("/root/send/signdata/orddd", sIndd); //입원일자(입원,응급)/진료일자(외래)
  679. }
  680. model.makeValue("/root/send/signdata/signno", ""); //서명번호
  681. model.makeValue("/root/send/signdata/cretno", sCretNo); //생성번호
  682. if ( sRecDateFlag == "U" ){
  683. model.makeValue("/root/send/signdata/recdd", model.getValue(xRecSaveCondPath+"/recdd")); // 실제 기록이 이루어진 기록일자
  684. model.makeValue("/root/send/signdata/rectm", model.getValue(xRecSaveCondPath+"/rectm")); //실제 기록이 이루어진 기록시간
  685. } else {
  686. model.makeValue("/root/send/signdata/recdd", getCurrentDate()); // 실제 기록이 이루어진 기록일자
  687. model.makeValue("/root/send/signdata/rectm", getCurrentTime()); //실제 기록이 이루어진 기록시간
  688. }
  689. model.makeValue("/root/send/signdata/recsaveflag", "Y"); //전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  690. model.makeValue("/root/send/signdata/signflag", "02"); //서명자료구분 (01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  691. model.makeValue("/root/send/signdata/signgenrflag", sIOFlag); //외래/입원구분(코드정의서 M0010 참조)
  692. model.makeValue("/root/send/signdata/formcd", "0000002432"); //각 기록지별 서식코드0000002464 type2 -> 0000002432 간호일지
  693. /*if (sRecOriginFlag == "T"){
  694. model.makeValue("/root/send/signdata/formcd","0000002464" ); //각 기록지별 서식코드0000002464 type2 0000002432 간호일지
  695. } else{
  696. model.makeValue("/root/send/signdata/formcd","0000002432" ); //각 기록지별 서식코드0000002464 type2 0000002432 간호일지
  697. }*/
  698. model.makeValue("/root/send/signdata/orddeptcd", sOrdDeptCd); //진료부서코드
  699. model.makeValue("/root/send/signdata/orddrid", sOrdDrId); //진료의사ID
  700. model.makeValue("/root/send/signdata/dispyn", "N"); //기록뷰어에는 조회안되도록
  701. // 인증할 데이터 정보(미기록 노드 제거된 정보)
  702. // 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  703. model.makeValue("/root/send/signdata/signbfcnts", Sign.signedInfos[1]);
  704. // 공인인증 처리후 데이터
  705. model.makeValue("/root/send/signdata/signaftcnts", Sign.signedInfos[2]);
  706. } else{
  707. return false;
  708. }
  709. model.makeValue("/root/send/signdata/screenid", getScreenID());
  710. return true;
  711. }
  712. /**
  713. * @group :
  714. * @ver : 2007.06.15
  715. * @by : 이은영
  716. * @---------------------------------------------------
  717. * @type : function
  718. * @access : public
  719. * @desc : 통합기록용인증로직
  720. * @param :
  721. * @return :
  722. * @---------------------------------------------------
  723. */
  724. function fViewSign(){
  725. Sign.certreload = false ; // 전자서명 호출시 인증저장 버튼을 누를때마다 인증서가 뜨도록 처리
  726. var signRecDD = "";
  727. model.removenodeset("/root/send/signdata");
  728. for( var idx = 1 ; idx <= getNodesetCount("/root/hidden/recinfo/recddlist"); idx++ ){
  729. signRecDD = model.getValue("/root/hidden/recinfo/recddlist["+ idx +"]/recdd");
  730. model.removenodeset(xSignPath);
  731. model.makeNode(xSignPath);
  732. if(getNodesetCount("/root/hidden/recinfo/totnursingrecordlist[recdd='"+ signRecDD +"']") > 0 ){
  733. copyNodeset(xSignPath,"/root/hidden/recinfo/totnursingrecordlist[recdd='"+ signRecDD +"']");
  734. if(Sign.signprocess() == true){
  735. var sSignDataRowCnt = eval(getNodesetCount("/root/send/signdata")) + 1;
  736. // 전자인증 관련 환자 인적 정보를 보내줌.
  737. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/pid", sPid ); //등록번호
  738. if( sIOFlag =="O" ){
  739. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sOutDD); //입원일자(입원,응급)/진료일자(외래)
  740. }else{
  741. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddd", sIndd); //입원일자(입원,응급)/진료일자(외래)
  742. }
  743. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signno", ""); //서명번호
  744. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/cretno", sCretNo); //생성번호
  745. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recdd",signRecDD); //실제 기록이 이루어진 기록일자
  746. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/rectm","000000"); //실제 기록이 이루어진 기록시간
  747. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/recsaveflag","Y"); //전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  748. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signflag","02" ); //서명자료구분 (01 : 진료, 02 : 간호, 03 : LIS, 04 : 진료지원)
  749. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signgenrflag",sIOFlag ); //외래/입원구분(코드정의서 M0010 참조)
  750. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/formcd","0000002432" ); //각 기록지별 서식코드
  751. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddeptcd", sOrdDeptCd); //진료부서코드
  752. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/orddrid", sOrdDrId); //진료의사ID
  753. // 인증할 데이터 정보(미기록 노드 제거된 정보)
  754. // 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  755. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/signbfcnts", Sign.signedInfos[1]);
  756. // 공인인증 처리후 데이터
  757. //model.makeValue("/root/send/signdata/signaftcnts", Sign.signedInfos[2]);
  758. model.makeValue("/root/send/signdata["+sSignDataRowCnt+"]/screenid", getScreenID());
  759. } else {
  760. return;
  761. }
  762. }else{
  763. return;
  764. }
  765. }
  766. submit("TXMNR00904");
  767. }