SMMNV15100_HD대기안내기준자료관리.xrw 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>HD 대기안내 기준자료 관리</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <shifttimeinfo>
  11. <shifttimelist>
  12. <shift/>
  13. <starttime/>
  14. <endtime/>
  15. </shifttimelist>
  16. </shifttimeinfo>
  17. <noticeinfo/>
  18. </main>
  19. <send>
  20. </send>
  21. <init>
  22. <codeinfo>
  23. <codelist>
  24. <cdgrupid/>
  25. <cdid/>
  26. <cdnm/>
  27. <grupdetldesc/>
  28. <supcdid/>
  29. </codelist>
  30. </codeinfo>
  31. </init>
  32. <hidden/>
  33. <temp>
  34. <shiftmsg/>
  35. <noticemsg/>
  36. <copydata/>
  37. </temp>
  38. </root>
  39. </instance>
  40. <script type="javascript" ev:event="xforms-ready">
  41. <![CDATA[
  42. //fInitialize();
  43. fGetData();
  44. fSetMsg();
  45. ]]>
  46. </script>
  47. <script type="javascript">
  48. <![CDATA[
  49. /* 전역 공간 */
  50. var noticeValue = "";
  51. var existFlag_Shift = "";
  52. var existFlag_Notice = "";
  53. var mainPath = "";
  54. var initPath = "";
  55. var exeFlag = "";
  56. // Msg 설정
  57. function fSetMsg(){
  58. var shiftMsg = "(( 시간 입력시 자릿수를 꼭 맞춰주세요. ex)12:34 ))"
  59. + "\n\n" + "시작시간~ 종료시간 동안 대기장소 안내 시스템으로 환자에게 인공신장실로 들어오시도록 안내함."
  60. + "\n" + "시작시간이 된 Shift의 인공신장실 배치도 view를 대기장소 안내 시스템에 조회함. "
  61. + "\n" + "안내 리스트 및 배치도 view의 환자 명단은 10분에 한번씩 새로 조회합니다." ;
  62. //var noticeCnt = noticeValue.getByteLength();
  63. var noticeMsg = "최대 (150)자까지 표시 가능, 삭제할때까지 표시";
  64. model.setValue("/root/temp/shiftmsg", shiftMsg);
  65. model.setValue("/root/temp/noticemsg", noticeMsg);
  66. model.refresh();
  67. }
  68. // 데이터 조회
  69. function fGetData(){
  70. fScrhSaveState();
  71. var endCnt = "";
  72. if(existFlag_Shift == "Y"){
  73. if(existFlag_Notice == "Y") endCnt = parseInt(getNodesetCount(initPath))-1;
  74. else endCnt = parseInt(getNodesetCount(initPath));
  75. //alert("initPath: " + initPath + " / " + "mainPath: " + mainPath);
  76. for(var i=1; i<=endCnt; i++){
  77. model.makeValue(mainPath + "[" + i + "]/shift", model.getValue(initPath + "[" + i + "]/cdid")) // shift 기준자료
  78. if(model.getValue(mainPath + "[" + i + "]/shift") == "5"){
  79. model.makeValue(mainPath + "[" + i + "]/shift", "응급");
  80. }
  81. var timeValue = model.getValue(initPath + "[" + i + "]/grupdetldesc"); // starttime
  82. var startTime = "";
  83. var endTime = "";
  84. var timeFlag = "start";
  85. //alert ("timeValue: " + timeValue + " / " + "timeValue.length" + timeValue.length);
  86. for (var j=0; j< timeValue.length; j++){
  87. if(timeFlag == "start"){
  88. if(timeValue.charAt(j) != "@") startTime = startTime + timeValue.charAt(j);
  89. else if (timeValue.charAt(j) == "@") {
  90. timeFlag = "end";
  91. }
  92. }else if(timeFlag == "end"){
  93. endTime = endTime + timeValue.charAt(j);
  94. }
  95. }
  96. var timeS = startTime.substring(0,2);
  97. var minuteS = startTime.substring(2,4);
  98. model.makeValue(mainPath + "[" + i + "]/starttime", timeS + minuteS); // starttime 기준자료
  99. var timeE = endTime.substring(0,2);
  100. var minuteE = endTime.substring(2,4);
  101. model.makeValue(mainPath + "[" + i + "]/endtime", timeE + minuteE); // endtime 기준자료
  102. }
  103. }
  104. else if(existFlag_Shift == "N"){
  105. for(var i=1; i<=4; i++){
  106. if(i==4) model.makeValue(mainPath + "[" + i + "]/shift", "응급"); // shift 기준자료
  107. else model.makeValue(mainPath + "[" + i + "]/shift", i);
  108. model.makeValue(mainPath + "[" + i + "]/starttime", ""); // starttime 기준자료
  109. model.makeValue(mainPath + "[" + i + "]/endtime", ""); // endtime 기준자료
  110. }
  111. }
  112. noticeValue = "";
  113. if(existFlag_Notice == "Y"){
  114. if(existFlag_Shift == "Y") noticeValue = model.getValue(initPath + "[5]/grupdetldesc"); // starttime
  115. else if (existFlag_Shift == "N") noticeValue = model.getValue(initPath + "[1]/grupdetldesc"); // starttime
  116. model.setValue("/root/main/noticeinfo", noticeValue);
  117. }
  118. else if (existFlag_Notice == "N"){
  119. model.setValue("/root/main/noticeinfo", "");
  120. }
  121. model.refresh();
  122. fDataCopy(); // 재복사
  123. }
  124. // shift 시간 저장
  125. function fSaveShiftInfo(){
  126. fScrhSaveState();
  127. if(existFlag_Shift=="Y") exeFlag = "SU"; // shift update
  128. else exeFlag = "SI"; // shift insert
  129. var startTime = "";
  130. var endTime = "";
  131. var timeValue = "";
  132. var comFlag = new Array();
  133. comFlag = fDataCompare();
  134. var sName = new Array("1 shift", "2 shift", "3 shift", "응급");
  135. var xPath = "/root/main/shifttimeinfo/shifttimelist";
  136. // 일괄 처리를 위한 path 설정
  137. var sPath =
  138. "exeflag" //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  139. + "▦cdgrupid" //02 cd그룹코드 ("HD" 인공신장실)
  140. + "▦cdid" //03 shift (shift 및 공지사항 구분)
  141. + "▦grupdetldesc" //04 starttime, endtime, 공지사항
  142. + "▦cdnm" //05 구분 이름
  143. + "▩" ;
  144. if(exeFlag =="SI"){ // shift 시간관리 Insert
  145. //alert("SI");
  146. for (i=1;i <= sName.length; i++ ) {
  147. startTime = model.getValue(xPath + "[" + i + "]/starttime"); // starttime
  148. endTime = model.getValue(xPath + "[" + i + "]/endtime"); // endtime
  149. //var timeFlag = "start";
  150. timeValue = startTime.substring(0,2) + startTime.substring(2,4) +
  151. "@" + endTime.substring(0,2) + endTime.substring(2,4);
  152. sPath +=
  153. exeFlag //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  154. + "▦" + "HD" //02 cd그룹코드 ("HD" 인공신장실)
  155. + "▦" + ((model.getValue(xPath+"[" + i + "]/shift")) == "응급" ? "5" : (model.getValue(xPath+"[" + i + "]/shift"))) //03 shift (shift 및 공지사항 구분)
  156. + "▦" + timeValue //04 starttime, endtime, 공지사항
  157. + "▦" + sName[i-1] //05 구분 이름
  158. + "▩" ;
  159. }
  160. }
  161. else if(exeFlag =="SU"){ // shift 시간관리 Update
  162. //alert("SU");
  163. for (i=1;i <= sName.length; i++ ) {
  164. if(comFlag[i-1] == "Changed"){ // 변경사항이 있는 영역만 수정
  165. startTime = model.getValue(xPath + "[" + i + "]/starttime"); // starttime
  166. endTime = model.getValue(xPath + "[" + i + "]/endtime"); // endtime
  167. //var timeFlag = "start";
  168. timeValue = startTime.substring(0,2) + startTime.substring(2,4) +
  169. "@" + endTime.substring(0,2) + endTime.substring(2,4);
  170. sPath +=
  171. exeFlag //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  172. + "▦" + "HD" //02 cd그룹코드 ("HD" 인공신장실)
  173. + "▦" + ((model.getValue(xPath+"[" + i + "]/shift")) == "응급" ? "5" : (model.getValue(xPath+"[" + i + "]/shift"))) //03 shift (shift 및 공지사항 구분)
  174. + "▦" + timeValue //04 starttime, endtime, 공지사항
  175. + "▦" + sName[i-1] //05 구분 이름
  176. + "▩" ;
  177. }
  178. }
  179. }
  180. model.removenode("/root/send");
  181. model.makeNode("/root/send");
  182. model.makeValue("/root/send/sPath" ,sPath );
  183. submit("TXMNV15101");
  184. model.refresh();
  185. fGetData(); // 저장 후 재조회
  186. }
  187. // 안내사항 저장
  188. function fSaveNoticeInfo(){
  189. /* // 150자 체크.. 이미 textarea에서 maxbyte 속성으로 제한!
  190. var sizeCheck = model.getValue("/root/main/noticeinfo");
  191. if(!sizeCheck.isByteSize("301")) { // 150자 체크
  192. messageBox("150자를 넘을 수 없습니다.", "I");
  193. return;
  194. }
  195. */
  196. fScrhSaveState();
  197. if(existFlag_Notice=="Y") exeFlag = "NU"; // notice update
  198. else exeFlag = "NI"; // notice insert
  199. var sName = "공지사항";
  200. var xPath = "/root/main/noticeinfo";
  201. // 일괄 처리를 위한 path 설정
  202. var sPath =
  203. "exeflag" //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  204. + "▦cdgrupid" //02 cd그룹코드 ("HD" 인공신장실)
  205. + "▦cdid" //03 shift (shift 및 공지사항 구분)
  206. + "▦grupdetldesc" //04 starttime, endtime, 공지사항
  207. + "▦cdnm" //05 구분 이름
  208. + "▩" ;
  209. sPath +=
  210. exeFlag //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  211. + "▦" + "HD" //02 cd그룹코드 ("HD" 인공신장실)
  212. + "▦" + "9" //03 shift (shift 및 공지사항 구분)
  213. + "▦" + model.getValue(xPath) //04 starttime, endtime, 공지사항
  214. + "▦" + sName //05 구분 이름
  215. + "▩" ;
  216. model.removenode("/root/send");
  217. model.makeNode("/root/send");
  218. model.makeValue("/root/send/sPath" ,sPath );
  219. submit("TXMNV15101");
  220. model.refresh();
  221. fGetData(); // 저장 후 재조회
  222. }
  223. // 안내사항 삭제
  224. function fDelNoticeInfo(){
  225. fScrhSaveState();
  226. if(existFlag_Notice=="N"){
  227. messageBox("저장된 데이터가 없습니다.", "I");
  228. return;
  229. }
  230. exeFlag = "ND"; // notice delete
  231. //var sName = "공지사항";
  232. //var xPath = "/root/main/noticeinfo";
  233. // 일괄 처리를 위한 path 설정
  234. var sPath =
  235. "exeflag" //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  236. + "▦cdgrupid" //02 cd그룹코드 ("HD" 인공신장실)
  237. + "▦cdid" //03 shift (shift 및 공지사항 구분)
  238. + "▦grupdetldesc" //04 starttime, endtime, 공지사항
  239. + "▦cdnm" //05 구분 이름
  240. + "▩" ;
  241. sPath +=
  242. exeFlag //01 저장/삭제 구분 (SU, SI, NU, NI, ND)
  243. + "▦" + "HD" //02 cd그룹코드 ("HD" 인공신장실)
  244. + "▦" + "9" //03 shift (shift 및 공지사항 구분)
  245. + "▦" + "" //04 starttime, endtime, 공지사항
  246. + "▦" + "" //05 구분 이름
  247. + "▩" ;
  248. model.removenode("/root/send");
  249. model.makeNode("/root/send");
  250. model.makeValue("/root/send/sPath" ,sPath );
  251. submit("TXMNV15101");
  252. model.refresh();
  253. fGetData(); // 삭제 후 재조회
  254. }
  255. function fScrhSaveState(){
  256. // 간호하드코딩 테이블 조회_20100526(By 안도영)
  257. var pCode = "'HD'"; // 조회할 CdGrupID 코드정보
  258. var pDate = getCurrentDate(); //조회기준일자
  259. mainPath = "/root/main/shifttimeinfo/shifttimelist";
  260. initPath = "/root/init/codeinfo/codelist";
  261. //var uijungbuinstcd="", sunggainstcd="", vincentinstcd=""; // 의정부성모병원, 부천성가병원, 수원빈센트병원 기관코드
  262. fGetNursHardCdInfo(pCode, pDate);
  263. existFlag_Shift = "N";
  264. existFlag_Notice = "N";
  265. for(var i=1; i<=getNodesetCount(initPath); i++){
  266. if(model.getValue(initPath + "[" + i + "]/cdid") == "1"){ // shift 기준자료
  267. existFlag_Shift = "Y";
  268. }
  269. if(model.getValue(initPath+ "[" + i + "]/cdid") == "9"){ // 공지사항 기준자료
  270. existFlag_Notice = "Y";
  271. }
  272. }
  273. }
  274. // 조회시 데이터 복사
  275. function fDataCopy(){
  276. var inRef = "/root/main/shifttimeinfo";
  277. var tmpRef = "/root/temp/copydata";
  278. model.copyNode(tmpRef, inRef);
  279. }
  280. // 조회시의 데이터와 변경 여부 체크 (부분적 Update 구분)
  281. function fDataCompare(){
  282. //var array_nodePath= new Array("patdelist/reptcnts", "patnlist/reptcnts", "situatdelist/reptcnts", "situatnlist/reptcnts", "psn_edu_etclist/reptcnts", "noticlist/reptcnts");
  283. var comFlag = new Array();
  284. var inRef = "/root/main/shifttimeinfo/shifttimelist";
  285. var tmpRef = "/root/temp/copydata/shifttimelist";
  286. for(i=1; i<=4; i++){
  287. var comTmp1 = model.getValue(inRef + "["+i+"]/starttime") != model.getValue(tmpRef + "["+i+"]/starttime");
  288. var comTmp2 = model.getValue(inRef + "["+i+"]/endtime") != model.getValue(tmpRef + "["+i+"]/endtime");
  289. if(comTmp1 || comTmp2){
  290. comFlag[i-1] = "Changed";
  291. }
  292. else if(!comTmp1&&!comTmp2){
  293. comFlag[i-1] = "NoChanged";
  294. }
  295. }
  296. return comFlag;
  297. }
  298. // shift 시간 자리수 채우기
  299. function fCheckLength(){
  300. // 자리수 따짐
  301. var dataRef = "/root/main/shifttimeinfo/shifttimelist";
  302. var startTime = "";
  303. var endTime = "";
  304. for (i=1;i <= 4; i++ ) {
  305. startTime = model.getValue(dataRef + "[" + i + "]/starttime");
  306. endTime = model.getValue(dataRef + "[" + i + "]/endtime");
  307. //alert(startTime);
  308. alert (startTime.length);
  309. alert (endTime.length);
  310. //alert(parseInt(getByteLength(endTime)));
  311. if(startTime.length <4 || endTime.length <4) {
  312. messageBox("자리수를 채워주시기 바랍니다.", "I");
  313. return;
  314. }
  315. }
  316. }
  317. ]]>
  318. </script>
  319. <submission id="TRMNW00001" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/init/codeinfo"/>
  320. <submission id="TXMNV15101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send"/>
  321. </model>
  322. <script type="javascript" src="../../../emr/carecomweb/js/CareCom.js"/>
  323. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  324. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  325. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  326. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  327. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  328. <script type="javascript" src="../../../com/departmentcodeweb/js/ZSD001.js"/>
  329. <script type="javascript" src="../../../emr/waitguideweb/js/MNV00100.js"/>
  330. </xhtml:head>
  331. <xhtml:body pagewidth="445" pageheight="440" guideline="1,459;1,438;1,444;2,440;">
  332. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:178px; height:14px; ">HD 대기안내 기준자료 관리</caption>
  333. <button id="button2" class="btn_sw" group="tab1" selected="true" style="left:120px; top:18px; width:100px; height:22px; vertical-align:middle; ">
  334. <caption>공지사항 관리</caption>
  335. <toggle case="case2" ev:event="onclick"/>
  336. <script type="javascript" ev:event="DOMActivate">
  337. <![CDATA[
  338. model.toggle("case2");
  339. //unitflg = 2;
  340. ]]>
  341. </script>
  342. </button>
  343. <button id="button19" class="btn_sw" group="tab1" selected="true" style="left:5px; top:18px; width:115px; height:32px; vertical-align:middle; ">
  344. <caption>Shift별 시간관리</caption>
  345. <toggle case="case1" ev:event="onclick"/>
  346. <script type="javascript" ev:event="DOMActivate">
  347. <![CDATA[
  348. model.toggle("case1");
  349. ]]>
  350. </script>
  351. </button>
  352. <switch id="switch1" style="left:5px; top:40px; width:433px; height:399px; ">
  353. <case id="case1" selected="true" style="left:0px; top:0px; width:433px; height:413px; ">
  354. <caption id="caption2" class="tit_2" style="left:11px; top:6px; width:116px; height:14px; font-size:12pxptpt; ">Shift별 시간관리</caption>
  355. <button id="button1" class="btn5_letter2" style="left:253px; top:2px; width:42px; height:19px; background-image:../../../com/commonweb/images/btn1_letter6.gif; ">
  356. <caption>저장</caption>
  357. <script type="javascript" ev:event="DOMActivate">
  358. <![CDATA[
  359. //fCheckLength();
  360. /*
  361. if( ! getGridUpdateData(grd_shift) ) {
  362. messageBox("입력","E013"); // 그리드에 데이터가 업데이트 되지 않으면 "입력된 데이터가 없습니다."는 메시지 출력
  363. return ;
  364. }
  365. */
  366. //model.makeValue("/root/send/savedata", grd_room.getUpdateData()); // 분류코드의 업데이트 된 내용을 savedata에 넣는다
  367. //submit("TXMNV21101");
  368. //alert("grd_shift.getUpdateDataXml() - " + grd_shift.getUpdateDataXml());
  369. fSaveShiftInfo();
  370. ]]>
  371. </script>
  372. </button>
  373. <datagrid id="grd_shift" nodeset="/root/main/shifttimeinfo/shifttimelist" caption="caption1^shift^시작시간^종료시간^orddeptcd^roomcd" colsep="^" colwidth="0, 67, 100, 100, 0, 0" mergecellsfixedrows="bycolrec" rowheader="seq" rowsep="|" style="left:5px; top:25px; width:290px; height:245px; text-align:center; ">
  374. <col/>
  375. <col ref="shift"/>
  376. <col imemode="disabled" ref="starttime" type="input" format="hh:nn"/>
  377. <col imemode="disabled" ref="endtime" type="input" format="hh:nn"/>
  378. </datagrid>
  379. <line id="line2" class="line_1" style="x1:5px; y1:22px; x2:295px; y2:22px; "/>
  380. <textarea id="textarea2" ref="/root/temp/shiftmsg" scroll="autohscroll" editable="false" style="left:5px; top:275px; width:420px; height:115px; background-color:#ffff99; "/>
  381. </case>
  382. <case id="case2" style="left:0px; top:0px; width:433px; height:494px; ">
  383. <textarea id="textarea1" ref="/root/main/noticeinfo" scroll="autovscroll" maxbyte="300" style="left:5px; top:25px; width:420px; height:245px; "/>
  384. <caption id="caption17" class="tit_2" style="left:11px; top:6px; width:116px; height:14px; font-size:12pxptpt; ">대대기 공지사항</caption>
  385. <button id="button5" class="btn5_letter2" style="left:338px; top:4px; width:42px; height:19px; ">
  386. <caption>저장</caption>
  387. <script type="javascript" ev:event="DOMActivate">
  388. <![CDATA[
  389. fSaveNoticeInfo();
  390. ]]>
  391. </script>
  392. </button>
  393. <textarea id="textarea9" ref="/root/temp/noticemsg" scroll="autovscroll" editable="false" style="left:5px; top:275px; width:420px; height:115px; background-color:#ffff99; "/>
  394. <button id="btn_inreqsrch" class="btn2_letter2" style="left:383px; top:4px; width:42px; height:19px; background-image:../../../com/commonweb/images/btn1_letter6.gif; ">
  395. <caption>삭제</caption>
  396. <script type="javascript" ev:event="DOMActivate">
  397. <![CDATA[
  398. fDelNoticeInfo();
  399. ]]>
  400. </script>
  401. </button>
  402. </case>
  403. </switch>
  404. </xhtml:body>
  405. </xhtml:html>