config.jsp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  2. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  3. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
  4. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  5. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  6. <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
  7. <link rel="stylesheet" href="/resources/bower_components/mdi/css/materialdesignicons.min.css">
  8. <script>
  9. function ajaxErrorHandler(request, status, error){
  10. if (request.status === 0) {
  11. alert('Not connect.\n Verify Network.');
  12. }
  13. else if (request.status == 400) {
  14. alert('Server understood the request, but request content was invalid. [400]' + '\n\n' + request.responseText);
  15. }
  16. else if (request.status == 401) {
  17. alert('Unauthorized access. [401]' + '\n\n' + request.responseText);
  18. }
  19. else if (request.status == 403) {
  20. alert('Forbidden resource can not be accessed. [403]' + '\n\n' + request.responseText);
  21. }
  22. else if (request.status == 404) {
  23. alert('Requested page not found. [404]' + '\n\n' + request.responseText);
  24. }
  25. else if (request.status == 500) {
  26. alert('Internal server error. [500]' + '\n\n' + request.responseText);
  27. }
  28. else if (request.status == 503) {
  29. alert('Service unavailable. [503]' + '\n\n' + request.responseText);
  30. }
  31. else if (status === 'parsererror') {
  32. alert('Requested JSON parse failed. [Failed]' + '\n\n' + request.responseText);
  33. }
  34. else if (status === 'timeout') {
  35. alert('Time out error. [Timeout]' + '\n\n' + request.responseText);
  36. }
  37. else if (status === 'abort') {
  38. alert('Ajax request aborted. [Aborted]' + '\n\n' + request.responseText);
  39. }
  40. else {
  41. alert('Uncaught Error.' + '\n\n' + request.responseText);
  42. }
  43. }
  44. function saveDisplayItem() {
  45. var centerCode = "${data._SES_CENTER_CODE}";
  46. var temperatureDisplayYN = $('input:checkbox[id="displayItemTemperature"]').is(":checked") == true ? "Y" : "N";
  47. var bloodPressureDisplayYN = $('input:checkbox[id="displayItemBloodPressure"]').is(":checked") == true ? "Y" : "N";
  48. var pulseRateDisplayYN = $('input:checkbox[id="displayItemPulseRate"]').is(":checked") == true ? "Y" : "N";
  49. var oxygenSaturationDisplayYN = $('input:checkbox[id="displayItemOxygenSaturation"]').is(":checked") == true ? "Y" : "N";
  50. var bloodSugarDisplayYN = $('input:checkbox[id="displayItemBloodSugar"]').is(":checked") == true ? "Y" : "N";
  51. var symptomDisplayYN = $('input:checkbox[id="displayItemSymptom"]').is(":checked") == true ? "Y" : "N";
  52. var params = {
  53. centerCode: centerCode,
  54. temperatureDisplayYN: temperatureDisplayYN,
  55. bloodPressureDisplayYN: bloodPressureDisplayYN,
  56. pulseRateDisplayYN: pulseRateDisplayYN,
  57. oxygenSaturationDisplayYN: oxygenSaturationDisplayYN,
  58. bloodSugarDisplayYN: bloodSugarDisplayYN,
  59. symptomDisplayYN: symptomDisplayYN,
  60. };
  61. $.ajax({
  62. url : "./api/configuration/display",
  63. data : params,
  64. method : "PATCH",
  65. dataType : "json",
  66. success : function( datas ){
  67. console.log("datas");
  68. },
  69. error : ajaxErrorHandler
  70. })
  71. .done( function(){
  72. });
  73. }
  74. function saveAlarmValue() {
  75. var centerCode = "${data._SES_CENTER_CODE}";
  76. var temperatureThreshold = parseFloat($("#temperatureThreshold").val());
  77. var systolicBloodPressureThresholdMin = parseInt($("#systolicBloodPressureThresholdMin").val(), 10);
  78. var systolicBloodPressureThresholdMax = parseInt($("#systolicBloodPressureThresholdMax").val(), 10);
  79. var diastolicBloodPressureThresholdMin = parseInt($("#diastolicBloodPressureThresholdMin").val(), 10);
  80. var diastolicBloodPressureThresholdMax = parseInt($("#diastolicBloodPressureThresholdMax").val(), 10);
  81. var pulseRateThresholdMin = parseInt($("#pulseRateThresholdMin").val(), 10);
  82. var pulseRateThresholdMax = parseInt($("#pulseRateThresholdMax").val(), 10);
  83. var oxygenSaturationThreshold = parseInt($("#oxygenSaturationThreshold").val(), 10);
  84. var bloodSugarThresholdMin = parseInt($("#bloodSugarThresholdMin").val(), 10);
  85. var bloodSugarThresholdMax = parseInt($("#bloodSugarThresholdMax").val(), 10);
  86. var params = {
  87. centerCode: centerCode,
  88. temperatureThreshold, temperatureThreshold,
  89. systolicBloodPressureThresholdMin, systolicBloodPressureThresholdMin,
  90. systolicBloodPressureThresholdMax, systolicBloodPressureThresholdMax,
  91. diastolicBloodPressureThresholdMin, diastolicBloodPressureThresholdMin,
  92. diastolicBloodPressureThresholdMax, diastolicBloodPressureThresholdMax,
  93. pulseRateThresholdMin, pulseRateThresholdMin,
  94. pulseRateThresholdMax, pulseRateThresholdMax,
  95. oxygenSaturationThreshold, oxygenSaturationThreshold,
  96. bloodSugarThresholdMin, bloodSugarThresholdMin,
  97. bloodSugarThresholdMax, bloodSugarThresholdMax,
  98. }
  99. $.ajax({
  100. url : "./api/configuration/threshold",
  101. data : params,
  102. method : "PATCH",
  103. dataType : "json",
  104. success : function( datas ){
  105. },
  106. error : ajaxErrorHandler
  107. })
  108. .done( function(){
  109. });
  110. }
  111. $(document).ready(function() {
  112. $(document).on('click','#displaySave',function(){
  113. var checkCount = $('input:checkbox[name="displayItem"]:checked').length;
  114. if (checkCount == 0) {
  115. alert("대시보드에는 하나 이상의 항목을 표시하여야 합니다.");
  116. return;
  117. }
  118. const result = confirm("대시보드 표시항목을 선택하신 항목으로 설정합니다.\n\n이 항목은 해당 생활치료센터 의료진 화면에 즉시 적용됩니다.");
  119. if(result){
  120. saveDisplayItem();
  121. }
  122. });
  123. $(document).on('click','#alarmSave',function(){
  124. const result = confirm("알람 표시 설정을 변경하신 값으로 설정합니다.\n\n설정값의 알람 적용은 현재시간 이후로 수집되는 데이터에 한하여 적용되오니 참고하시기 바랍니다.");
  125. if(result){
  126. saveAlarmValue();
  127. }
  128. });
  129. });
  130. </script>
  131. </head>
  132. <body>
  133. <form id="nonface" name="nonface" action="https://lemon.medihere.com/app/vc">
  134. </form>
  135. <form id="hiddenForm">
  136. <input type="hidden" id="pId" name="pId" value='<c:out value="${info.id}" />'>
  137. <input type="hidden" id="pName" name="pName" value='<c:out value="${info.patientName}" />'>
  138. <input type="hidden" id="roomId" name="roomId" value='<c:out value="${info.roomNumber}" />'>
  139. </form>
  140. <div class="wrapper">
  141. <jsp:include page="${data._INCLUDE}/sidebar.jsp"></jsp:include>
  142. <div class="main">
  143. <jsp:include page="${data._INCLUDE}/top.jsp"></jsp:include>
  144. <main class="content">
  145. <div class="container-fluid p-0">
  146. <!-- 환지관리 START -->
  147. <div class="row">
  148. <div class="col-12 col-lg-6">
  149. <h1 class="h3 mb-3">
  150. 진료관리 설정
  151. </h1>
  152. </div>
  153. <div class="col-12 col-lg-6 text-right">
  154. <nav aria-label="breadcrumb">
  155. <ol class="breadcrumb">
  156. <li class="breadcrumb-item"><a href="javscript:;">Home</a></li>
  157. <li class="breadcrumb-item active">진료관리 설정</li>
  158. </ol>
  159. </nav>
  160. </div>
  161. </div>
  162. <div class="row">
  163. <div class="col-12">
  164. <div class="card">
  165. <div class="card-body">
  166. <h4 class="mb-4 subTitle display"><i class="mdi mdi-desktop-mac-dashboard"></i> 대시보드 표시 항목 설정</h4>
  167. <h5 class="infoCaption mb-4">우리 생활치료센터의 대시보드 화면에서 표시되는 V/S 항목을 설정 할 수 있습니다.</h5>
  168. <div class="row displaySetting">
  169. <div class="col-lg-4 bodyTitle mb-4">
  170. <i class="mdi mdi-check"></i>표시 항목 선택
  171. </div>
  172. <div class="col-lg-8">
  173. <ul class="displayList">
  174. <c:set var="temperatureCheck" value="${config.temperatureDisplayYN == 'Y' ? 'checked' : ''}" />
  175. <c:set var="bloodPressureCheck" value="${config.bloodPressureDisplayYN == 'Y' ? 'checked' : ''}" />
  176. <c:set var="pulseRateCheck" value="${config.pulseRateDisplayYN == 'Y' ? 'checked' : ''}" />
  177. <c:set var="oxygenSaturationCheck" value="${config.oxygenSaturationDisplayYN == 'Y' ? 'checked' : ''}" />
  178. <c:set var="bloodSugarCheck" value="${config.bloodSugarDisplayYN == 'Y' ? 'checked' : ''}" />
  179. <c:set var="symptomCheck" value="${config.symptomDisplayYN == 'Y' ? 'checked' : ''}" />
  180. <li class="displayItem"><label><input id="displayItemTemperature" type="checkbox" name="displayItem" value="Y" <c:out value="${temperatureCheck}" />><span>체온</span></label></li>
  181. <li class="displayItem"><label><input id="displayItemBloodPressure" type="checkbox" name="displayItem" value="Y" <c:out value="${bloodPressureCheck}" />><span>혈압</span></label></li>
  182. <li class="displayItem"><label><input id="displayItemPulseRate" type="checkbox" name="displayItem" value="Y" <c:out value="${pulseRateCheck}" />><span>맥박</span></label></li>
  183. <li class="displayItem"><label><input id="displayItemOxygenSaturation" type="checkbox" name="displayItem" value="Y" <c:out value="${oxygenSaturationCheck}" />><span>산소포화도</span></label></li>
  184. <li class="displayItem"><label><input id="displayItemBloodSugar" type="checkbox" name="displayItem" value="Y" <c:out value="${bloodSugarCheck}" />><span>혈당</span></label></li>
  185. <li class="displayItem"><label><input id="displayItemSymptom" type="checkbox" name="" value="Y" <c:out value="${symptomCheck}" />><span>임상증상</span></label></li>
  186. </ul>
  187. </div>
  188. </div>
  189. <div class="text-right">
  190. <button id="displaySave" type="button" class="btn btn-primary">저장</button>
  191. </div>
  192. <hr>
  193. <h4 class="mb-4 subTitle alarm"><i class="mdi mdi-bell-alert-outline"></i> V/S 임계치 설정</h4>
  194. <h5 class="infoCaption mb-4">우리 생활치료센터에서 알람으로 표시할 V/S 임계치 값을 설정 할 수 있습니다.</h5>
  195. <!-- <div class="row alarmSetting">
  196. <div class="col-lg-4 bodyTitle mb-4">
  197. <i class="mdi mdi-check"></i>알람 사용 선택
  198. </div>
  199. <div class="col-lg-8">
  200. <ul class="alarmList">
  201. <li class="alarmItem"><label><input type="checkbox" name="alarmUsing" value="fever" checked><span>체온</span></label></li>
  202. <li class="alarmItem"><label><input type="checkbox" name="alarmUsing" value="bloodPressure" checked><span>혈압</span></label></li>
  203. <li class="alarmItem"><label><input type="checkbox" name="alarmUsing" value="pulse" checked><span>맥박</span></label></li>
  204. <li class="alarmItem"><label><input type="checkbox" name="alarmUsing" value="oxygen" checked><span>산소포화도</span></label></li>
  205. <li class="alarmItem"><label><input type="checkbox" name="alarmUsing" value="sugar" checked><span>혈당</span></label></li>
  206. </ul>
  207. </div>
  208. </div> -->
  209. <ul class="legend">
  210. <c:set var="temperatureThreshold" value="${config.temperatureThreshold}" />
  211. <c:set var="systolicBloodPressureThresholdMin" value="${config.systolicBloodPressureThresholdMin}" />
  212. <c:set var="systolicBloodPressureThresholdMax" value="${config.systolicBloodPressureThresholdMax}" />
  213. <c:set var="diastolicBloodPressureThresholdMin" value="${config.diastolicBloodPressureThresholdMin}" />
  214. <c:set var="diastolicBloodPressureThresholdMax" value="${config.diastolicBloodPressureThresholdMax}" />
  215. <c:set var="pulseRateThresholdMin" value="${config.pulseRateThresholdMin}" />
  216. <c:set var="pulseRateThresholdMax" value="${config.pulseRateThresholdMax}" />
  217. <c:set var="oxygenSaturationThreshold" value="${config.oxygenSaturationThreshold}" />
  218. <c:set var="bloodSugarThresholdMin" value="${config.bloodSugarThresholdMin}" />
  219. <c:set var="bloodSugarThresholdMax" value="${config.bloodSugarThresholdMax}" />
  220. <li class="row fever">
  221. <div class="col-lg-4">체온</div>
  222. <div class="col-lg-8">
  223. <input id="temperatureThreshold" type="number" class="form-control w120" placeholder="체온" value="<c:out value="${temperatureThreshold}" />"> ℃ 이상시 알람
  224. </div>
  225. </li>
  226. <li class="row bloodPressure">
  227. <div class="col-lg-4">수축기 혈압</div>
  228. <div class="col-lg-8">
  229. <input id="systolicBloodPressureThresholdMin" type="number" class="form-control w120" placeholder="저혈압" value="<c:out value="${systolicBloodPressureThresholdMin}" />"> 이하
  230. <span>또는</span>
  231. <input id="systolicBloodPressureThresholdMax" type="number" class="form-control w120" placeholder="고혈압" value="<c:out value="${systolicBloodPressureThresholdMax}" />"> 이상시 알람
  232. </div>
  233. </li>
  234. <li class="row bloodPressure">
  235. <div class="col-lg-4">이완기 혈압</div>
  236. <div class="col-lg-8">
  237. <input id="diastolicBloodPressureThresholdMin" type="number" class="form-control w120" placeholder="저혈압" value="<c:out value="${diastolicBloodPressureThresholdMin}" />"> 이하
  238. <span>또는</span>
  239. <input id="diastolicBloodPressureThresholdMax" type="number" class="form-control w120" placeholder="고혈압" value="<c:out value="${diastolicBloodPressureThresholdMax}" />"> 이상시 알람
  240. </div>
  241. </li>
  242. <li class="row pulse">
  243. <div class="col-lg-4">맥박</div>
  244. <div class="col-lg-8">
  245. <input id="pulseRateThresholdMin" type="number" class="form-control w120" placeholder="최저맥박" value="<c:out value="${pulseRateThresholdMin}" />"> 이하
  246. <span>또는</span>
  247. <input id="pulseRateThresholdMax" type="number" class="form-control w120" placeholder="최고맥박" value="<c:out value="${pulseRateThresholdMax}" />"> 이상시 알람
  248. </div>
  249. </li>
  250. <li class="row oxygen">
  251. <div class="col-lg-4">산소포화도</div>
  252. <div class="col-lg-8">
  253. <input id="oxygenSaturationThreshold" type="number" class="form-control w120" placeholder="산소포화도" value="<c:out value="${oxygenSaturationThreshold}" />"> % 이하시 알람
  254. </div>
  255. </li>
  256. <li class="row sugar">
  257. <div class="col-lg-4">혈당</div>
  258. <div class="col-lg-8">
  259. <input id="bloodSugarThresholdMin" type="number" class="form-control w120" placeholder="저혈당" value="<c:out value="${bloodSugarThresholdMin}" />"> 이하
  260. <span>또는</span>
  261. <input id="bloodSugarThresholdMax" type="number" class="form-control w120" placeholder="고혈당" value="<c:out value="${bloodSugarThresholdMax}" />"> 이상시 알람
  262. </div>
  263. </li>
  264. </ul>
  265. </div>
  266. <div class="text-right">
  267. <button id="alarmSave" type="button" class="btn btn-primary">저장</button>
  268. </div>
  269. </div>
  270. </div>
  271. </div>
  272. <!-- 환자관리 END -->
  273. </div>
  274. </main>
  275. <jsp:include page="${data._INCLUDE}/footer.jsp"></jsp:include>
  276. </div>
  277. </div>
  278. </body>
  279. </html>