info.jsp 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  2. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
  3. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
  4. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  5. <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
  6. <link rel="stylesheet" href="/resources/bower_components/mdi/css/materialdesignicons.min.css">
  7. <script src="/resources/bower_components/moment/moment.min.js"></script>
  8. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
  9. <script>
  10. var PHR_VALUE_DEFAULT = {
  11. TEMPERATURE: {
  12. VALUE: 36.5,
  13. MIN: 20,
  14. MAX: 50
  15. },
  16. BLOOD_PRESSURE_SYSTOLIC: {
  17. VALUE: 120,
  18. MIN: 50,
  19. MAX: 250
  20. },
  21. BLOOD_PRESSURE_DIASTOLIC: {
  22. VALUE: 80,
  23. MIN: 20,
  24. MAX: 160
  25. },
  26. OXYGEN_SATURATION: {
  27. VALUE: 95,
  28. MIN: 60,
  29. MAX: 100
  30. },
  31. PULSE_RATE: {
  32. VALUE: 65,
  33. MIN: 30,
  34. MAX: 200
  35. },
  36. BLOOD_SUGAR: {
  37. VALUE: 120,
  38. MIN: 10,
  39. MAX: 600
  40. }
  41. }
  42. function dateFormatter(date) {
  43. return moment(date).format("YYYY-MM-DD HH:mm:ss");
  44. }
  45. /*
  46. * 비대면 진료 시작
  47. */
  48. function nonFaceStart() {
  49. getAjax("/patient/nonFaceStart", $("#hiddenForm").serialize(), function ( result ) {
  50. $("#nonface").append('<input type="hidden" name="member_name" value="'+result.member_name+'" />');
  51. $("#nonface").append('<input type="hidden" name="member_id" value="'+result.member_id+'" />');
  52. $("#nonface").append('<input type="hidden" name="room_id" value="'+result.room_id+'" />');
  53. $("#nonface").append('<input type="hidden" name="hashData" value="'+result.hashData+'">');
  54. $("#nonface").append('<input type="hidden" name="token" value="'+result.token+'">');
  55. $("#nonface").append('<input type="hidden" name="api_key" value="'+result.api_key+'">');
  56. $("#nonface").append('<input type="hidden" name="classify" value="d">');
  57. var gsWin = window.open('about:blank','nonface');
  58. var frm =document.nonface;
  59. frm.target ="nonface";
  60. frm.method ="post";
  61. frm.submit();
  62. window.location.reload();
  63. }, function(){
  64. }, function(){
  65. });
  66. }
  67. /*
  68. * 건강정보이력 탭 처리
  69. */
  70. function checkValidForPhrData(phrType, phrValue) {
  71. var errorMessage = null;
  72. var errorMessagePrefix = null;
  73. var phrValueDefault = null;
  74. if (phrType === "temperature") {
  75. errorMessagePrefix = "체온을";
  76. phrValueDefault = PHR_VALUE_DEFAULT.TEMPERATURE;
  77. }
  78. else if (phrType === "bloodPressureSystolic") {
  79. errorMessagePrefix = "수축기 혈압을";
  80. phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC;
  81. }
  82. else if (phrType === "bloodPressureDiastolic") {
  83. errorMessagePrefix = "이완기 혈압을";
  84. phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC;
  85. }
  86. else if (phrType === "oxygenSaturation") {
  87. errorMessagePrefix = "산소포화도를";
  88. phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
  89. }
  90. else if (phrType === "pulseRate") {
  91. errorMessagePrefix = "맥박을";
  92. phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
  93. }
  94. else if (phrType === "bloodSugar") {
  95. errorMessagePrefix = "혈당을";
  96. phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_SUGAR;
  97. }
  98. // 널 체크, 숫자 체크, 최대/최소 체크
  99. if (!phrValue || phrValue.length === 0) {
  100. errorMessage = errorMessagePrefix+" 입력해 주세요.";
  101. }
  102. else if (isNaN(phrValue)) {
  103. errorMessage = errorMessagePrefix+" 숫자로 입력해 주세요.";
  104. }
  105. else if (phrValue < phrValueDefault.MIN || phrValue > phrValueDefault.MAX) {
  106. errorMessage = errorMessagePrefix+" "+phrValueDefault.MIN+"~"+phrValueDefault.MAX+" 범위 내로 입력해 주세요.";
  107. }
  108. return errorMessage;
  109. }
  110. function handlePhrData() {
  111. var phrType = $("#phrTypeSelect option:selected").val();
  112. var phrValue = "";
  113. if (phrType === "bloodPressure") {
  114. phrValueSystolic = $("#phrValueSystolic").val();
  115. phrValueDiastolic = $("#phrValueDiastolic").val();
  116. // 유효성 체크
  117. var errorMessage = checkValidForPhrData("bloodPressureSystolic", phrValueSystolic);
  118. if (errorMessage) {
  119. alert(errorMessage);
  120. $("#phrValueSystolic").focus();
  121. return;
  122. }
  123. errorMessage = checkValidForPhrData("bloodPressureDiastolic", phrValueDiastolic);
  124. if (errorMessage) {
  125. alert(errorMessage);
  126. $("#phrValueDiastolic").focus();
  127. return;
  128. }
  129. // 저장 진행
  130. createPhrData(${patientIdx}, "bloodPressure", phrValueSystolic, phrValueDiastolic);
  131. $("#phrValueSystolic").val(PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC.VALUE);
  132. $("#phrValueDiastolic").val(PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC.VALUE);
  133. }
  134. else {
  135. phrValue = $("#phrValue").val();
  136. // 유효성 체크
  137. var errorMessage = checkValidForPhrData(phrType, phrValue);
  138. if (errorMessage) {
  139. alert(errorMessage);
  140. $("#phrValue").focus();
  141. return;
  142. }
  143. // 저장 진행
  144. createPhrData(${patientIdx}, phrType, phrValue);
  145. var phrValueDefault = "";
  146. if (phrType === "temperature") {
  147. phrValueDefault = PHR_VALUE_DEFAULT.TEMPERATURE;
  148. }
  149. else if (phrType === "oxygenSaturation") {
  150. phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
  151. }
  152. else if (phrType === "pulseRate") {
  153. phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
  154. }
  155. else if (phrType === "bloodSugar") {
  156. phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_SUGAR;
  157. }
  158. $("#phrValue").val(phrValueDefault);
  159. }
  160. $("#defaultModalPrimary_1").modal("hide");
  161. }
  162. function createPhrData(patientIdx, phrType, phrValue, phrValue2) {
  163. $.ajax({
  164. url : "./api/phrData",
  165. data : {patientIdx: patientIdx, phrType: phrType, phrValue: phrValue, phrValue2: phrValue2, recordedById: "${data._SES_ID}", recordedByName: "${data._SES_NAME}"},
  166. method : "POST",
  167. dataType : "json",
  168. success : function( datas ){
  169. retrievePhrData();
  170. },
  171. error : function(error){
  172. alert(error.message);
  173. }
  174. }).done( function(){
  175. });
  176. }
  177. function retrievePhrData() {
  178. var phrType = $("#phrTypeSelect option:selected").val();
  179. var phrName = $("#phrTypeSelect option:selected").text();
  180. var ignoreCache = moment().unix();
  181. var params = {patientIdx: ${patientIdx}, phrType: phrType, ignoreCache:ignoreCache};
  182. $.ajax({
  183. url : "./api/phrDatas",
  184. data : params,
  185. method : "GET",
  186. dataType : "json",
  187. success : function( datas ){
  188. if (phrType==="bloodPressure") {
  189. drawBPChart(datas);
  190. }
  191. else {
  192. drawPhrChart(datas, phrName);
  193. }
  194. var html = "<thead><tr>";
  195. html += "<th>기록일시</th>";
  196. html += "<th>"+phrName+"</th>";
  197. html += "<th>기록자</th>";
  198. html += "</tr></thead>";
  199. html += "<tbody>";
  200. var contents = "<tr><td colspan=3>데이터가 없습니다.</td></tr>" ;
  201. if (datas.length > 0) {
  202. contents = "";
  203. datas.forEach(function(d) {
  204. var danger = d.isWarning ? "text-danger" : "";
  205. var row = "";
  206. row += "<tr>";
  207. row += "<td>" + dateFormatter(d.createDate) + "</td>";
  208. if (phrType==="bloodPressure") {
  209. row += "<td><span class='"+danger+"'>" + (isNaN(parseInt(d.phrValue)) ? "--" : parseInt(d.phrValue)) + " / " + (isNaN(parseInt(d.phrValue2)) ? "--" : parseInt(d.phrValue2)) + "</span></td>";
  210. }
  211. else if (phrType==="temperature") {
  212. row += "<td><span class='"+danger+"'>" + parseFloat(d.phrValue).toFixed(1) + "</span></td>";
  213. }
  214. else {
  215. row += "<td><span class='"+danger+"'>" + parseInt(d.phrValue) + "</span></td>";
  216. }
  217. row += "<td>" + d.recordedByName + "</td>";
  218. row += "</tr>";
  219. contents = row + contents;
  220. });
  221. };
  222. html += contents;
  223. html += "</tbody>";
  224. $("#phrDataTable").html(html);
  225. },
  226. error : function(error){
  227. alert(error.message);
  228. }
  229. }).done( function(){
  230. });
  231. }
  232. var myChart = null;
  233. function drawPhrChart(data, dataName) {
  234. if (myChart) {
  235. myChart.destroy();
  236. myChart = null;
  237. }
  238. var xDatas = [];
  239. var yDatas = [];
  240. data.forEach(function(d) {
  241. var t = dateFormatter(d.createDate);
  242. xDatas.push(t);
  243. yDatas.push(d.phrValue);
  244. });
  245. var ctx = document.getElementById("phrChart").getContext('2d');
  246. myChart = new Chart(ctx, {
  247. type: 'line',
  248. data: {
  249. labels: xDatas,
  250. datasets: [{
  251. label: dataName,
  252. data: yDatas,
  253. fill: false,
  254. backgroundColor: '#fff',
  255. borderColor: '#5b7dff',
  256. borderWidth: 2,
  257. }]
  258. },
  259. options: {
  260. maintainAspectRatio: false,
  261. }
  262. });
  263. }
  264. function drawBPChart(data) {
  265. if (myChart) {
  266. myChart.destroy();
  267. myChart = null;
  268. }
  269. var xDatas = [];
  270. var y1Datas = [];
  271. var y2Datas = [];
  272. data.forEach(function(d) {
  273. var t = dateFormatter(d.createDate);
  274. xDatas.push(t);
  275. y1Datas.push(d.phrValue);
  276. y2Datas.push(d.phrValue2);
  277. });
  278. var ctx = document.getElementById("phrChart").getContext('2d');
  279. myChart = new Chart(ctx, {
  280. type: 'line',
  281. data: {
  282. labels: xDatas,
  283. datasets: [{
  284. label: "수축기 혈압",
  285. data: y1Datas,
  286. fill: false,
  287. backgroundColor: '#fff',
  288. borderColor: '#5b7dff',
  289. borderWidth: 2,
  290. },{
  291. label: "이완기 혈압",
  292. data: y2Datas,
  293. fill: false,
  294. backgroundColor: '#fff',
  295. borderColor: 'rgb(255, 99, 132)',
  296. borderWidth: 2,
  297. }]
  298. },
  299. options: {
  300. maintainAspectRatio: false,
  301. }
  302. });
  303. }
  304. /*
  305. * 임상증상 탭 처리
  306. */
  307. function handleSymptomData() {
  308. if ($("input:checkbox[id='etcCheck']").is(":checked") && !$("#etcContent").val().trim()) {
  309. alert("기타 증상이 체크되었습니다. 내용을 입력해 주세요.");
  310. $("#etcContent").val("");
  311. return;
  312. }
  313. var checkedCount = ($("#defaultModalPrimary_2 input[type='checkbox']:checked").length);
  314. if (checkedCount === 0) {
  315. alert("증상을 체크해 주세요.");
  316. return;
  317. }
  318. var symptomObject = {
  319. patientIdx: ${patientIdx},
  320. coughCheck: $("input:checkbox[id='coughCheck']").is(":checked") ? "Y" : "N",
  321. dyspneaCheck: $("input:checkbox[id='dyspneaCheck']").is(":checked") ? "Y" : "N",
  322. coldFitCheck: $("input:checkbox[id='coldFitCheck']").is(":checked") ? "Y" : "N",
  323. musclePainCheck: $("input:checkbox[id='musclePainCheck']").is(":checked") ? "Y" : "N",
  324. headacheCheck: $("input:checkbox[id='headacheCheck']").is(":checked") ? "Y" : "N",
  325. soreThroatCheck: $("input:checkbox[id='soreThroatCheck']").is(":checked") ? "Y" : "N",
  326. smellPalateCheck: $("input:checkbox[id='smellPalateCheck']").is(":checked") ? "Y" : "N",
  327. fatigueCheck: $("input:checkbox[id='fatigueCheck']").is(":checked") ? "Y" : "N",
  328. appetiteLossCheck: $("input:checkbox[id='appetiteLossCheck']").is(":checked") ? "Y" : "N",
  329. sputumCheck: $("input:checkbox[id='sputumCheck']").is(":checked") ? "Y" : "N",
  330. ocinCheck: $("input:checkbox[id='ocinCheck']").is(":checked") ? "Y" : "N",
  331. vomitingCheck: $("input:checkbox[id='vomitingCheck']").is(":checked") ? "Y" : "N",
  332. diarrheaCheck: $("input:checkbox[id='diarrheaCheck']").is(":checked") ? "Y" : "N",
  333. dizzinessCheck: $("input:checkbox[id='dizzinessCheck']").is(":checked") ? "Y" : "N",
  334. noseCheck: $("input:checkbox[id='noseCheck']").is(":checked") ? "Y" : "N",
  335. etcCheck: $("input:checkbox[id='etcCheck']").is(":checked") ? "Y" : "N",
  336. etcContent: $("#etcContent").val(),
  337. recordedByName: "${data._SES_NAME}",
  338. recordedById: "${data._SES_ID}",
  339. }
  340. createSymptomData(symptomObject);
  341. $("#defaultModalPrimary_2 input[type='checkbox']:checked").prop("checked", false);
  342. $("#etcContent").val("");
  343. $("#defaultModalPrimary_2").modal("hide");
  344. }
  345. function createSymptomData(symptomObject) {
  346. $.ajax({
  347. url : "./api/symptomData",
  348. data : symptomObject,
  349. method : "POST",
  350. dataType : "json",
  351. success : function( datas ){
  352. retrieveSymptomData();
  353. },
  354. error : function(error){
  355. alert(error.message);
  356. }
  357. }).done( function(){
  358. });
  359. }
  360. function retrieveSymptomData() {
  361. var ignoreCache = moment().unix();
  362. var params = {patientIdx: ${patientIdx}, ignoreCache:ignoreCache};
  363. $.ajax({
  364. url : "./api/symptomDatas",
  365. data : params,
  366. method : "GET",
  367. dataType : "json",
  368. success : function( datas ){
  369. var html = "<tr><td colspan=18>데이터가 없습니다.</td></tr>" ;
  370. var checkSymbol = '<i class="mdi mdi-check-bold"></i>';
  371. if (datas.length > 0) {
  372. html = "";
  373. contents = datas.forEach(function(d) {
  374. html += "<tr>";
  375. html += "<th>" + dateFormatter(d.createDate) + "</th>";
  376. html += "<td>" + (d.coughCheck === "Y" ? checkSymbol : "-") + "</td>";
  377. html += "<td>" + (d.dyspneaCheck === "Y" ? checkSymbol : "-") + "</td>";
  378. html += "<td>" + (d.coldFitCheck === "Y" ? checkSymbol : "-") + "</td>";
  379. html += "<td>" + (d.musclePainCheck === "Y" ? checkSymbol : "-") + "</td>";
  380. html += "<td>" + (d.headacheCheck === "Y" ? checkSymbol : "-") + "</td>";
  381. html += "<td>" + (d.soreThroatCheck === "Y" ? checkSymbol : "-") + "</td>";
  382. html += "<td>" + (d.smellPalateCheck === "Y" ? checkSymbol : "-") + "</td>";
  383. html += "<td>" + (d.fatigueCheck === "Y" ? checkSymbol : "-") + "</td>";
  384. html += "<td>" + (d.appetiteLossCheck === "Y" ? checkSymbol : "-") + "</td>";
  385. html += "<td>" + (d.sputumCheck === "Y" ? checkSymbol : "-") + "</td>";
  386. html += "<td>" + (d.ocinCheck === "Y" ? checkSymbol : "-") + "</td>";
  387. html += "<td>" + (d.vomitingCheck === "Y" ? checkSymbol : "-") + "</td>";
  388. html += "<td>" + (d.diarrheaCheck === "Y" ? checkSymbol : "-") + "</td>";
  389. html += "<td>" + (d.dizzinessCheck === "Y" ? checkSymbol : "-") + "</td>";
  390. html += "<td>" + (d.noseCheck === "Y" ? checkSymbol : "-") + "</td>";
  391. html += "<td>" + (d.etcCheck === "Y" ? d.etcContent : "-") + "</td>";
  392. html += "<td>" + d.recordedByName + "</td>";
  393. html += "</tr>";
  394. });
  395. };
  396. $("#symptomDataTable > tbody").html(html);
  397. },
  398. error : function(error){
  399. alert(error.message);
  400. }
  401. }).done( function(){
  402. });
  403. }
  404. /*
  405. * 메모 탭 처리
  406. */
  407. function handleMemoData() {
  408. var memoContent = $("#memoContent").val().trim();
  409. if (!memoContent) {
  410. alert("메모 내용을 입력해 주세요.");
  411. $("#memoContent").val("");
  412. return;
  413. }
  414. createMemoData(memoContent);
  415. $("#memoContent").val("");
  416. $("#defaultModalPrimaryMemo").modal("hide");
  417. }
  418. function createMemoData(memoContent) {
  419. $.ajax({
  420. url : "./api/memoData",
  421. data : {patientIdx:${patientIdx}, contents:memoContent, recordedByName:"${data._SES_NAME}", recordedById:"${data._SES_ID}"},
  422. method : "POST",
  423. dataType : "json",
  424. success : function( datas ){
  425. retrieveMemoData();
  426. },
  427. error : function(error){
  428. alert(error.message);
  429. }
  430. }).done( function(){
  431. });
  432. }
  433. function retrieveMemoData() {
  434. var ignoreCache = moment().unix();
  435. var params = {patientIdx: ${patientIdx}, ignoreCache:ignoreCache};
  436. $.ajax({
  437. url : "./api/memoDatas",
  438. data : params,
  439. method : "GET",
  440. dataType : "json",
  441. success : function( datas ){
  442. var html = "<tr><td colspan=3>데이터가 없습니다.</td></tr>" ;
  443. if (datas.length > 0) {
  444. html = "";
  445. contents = datas.forEach(function(d) {
  446. html += "<tr>";
  447. html += "<td>" + dateFormatter(d.createDate) + "</td>";
  448. html += "<td><pre>" + d.contents + "</pre></td>";
  449. html += "<td>" + d.recordedByName + "</td>";
  450. html += "</tr>";
  451. });
  452. };
  453. $("#memoDataTable > tbody").html(html);
  454. },
  455. error : function(error){
  456. alert(error.message);
  457. }
  458. }).done( function(){
  459. });
  460. }
  461. $(document).ready(function() {
  462. // 최초 로드시 phrData 체온이 로드됨. 해당 데이터 차트 그려줌.
  463. var datas = [];
  464. <c:forEach var="phr" items="${phrItems}" varStatus="status">
  465. datas.push({createDate: "${phr.createDate}", phrValue: "${phr.phrValue}"});
  466. </c:forEach>
  467. drawPhrChart(datas, "체온");
  468. // 상단 환자 정보 영역 토글 이벤트
  469. $('.toggle .card-header').click(function () {
  470. $('.toggle .card-header a.toggleBtn').toggleClass('active');
  471. $('.toggle .user-info').toggleClass('active');
  472. })
  473. // 탭 클릭 이벤트
  474. $(document).on('click','.tab-item',function(){
  475. var targetTab = $(this).attr('tabindex');
  476. $('.tab-item').removeClass('active');
  477. $('.tab').removeClass('in');
  478. $(this).addClass('active');
  479. $(targetTab).addClass('in');
  480. if (targetTab==="#tabPhr") {
  481. retrievePhrData();
  482. }
  483. else if (targetTab==="#tabSymptom") {
  484. retrieveSymptomData();
  485. }
  486. else if (targetTab==="#tabMemo") {
  487. retrieveMemoData();
  488. }
  489. });
  490. // phrData 기록 추가 클릭 이벤트
  491. $(document).on('click','[data-target="#defaultModalPrimary_1"]',function(){
  492. var selectData = $('#phrTypeSelect').find('option:selected').val();
  493. var healthInfoHTML = '';
  494. var phrValueDefault = null;
  495. if(selectData == 'temperature'){
  496. phrValueDefault = PHR_VALUE_DEFAULT.TEMPERATURE;
  497. healthInfoHTML += '<th>체온</th>';
  498. healthInfoHTML += '<td>';
  499. healthInfoHTML += ' <div class="form-group mb-xl-0">';
  500. healthInfoHTML += ' <input id="phrValue" class="form-control" type="number" placeholder="체온 입력" min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'" step="0.1">';
  501. healthInfoHTML += ' </div>';
  502. healthInfoHTML += '</td>';
  503. }
  504. else if(selectData == 'bloodPressure'){
  505. phrValueDefault1 = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_SYSTOLIC;
  506. phrValueDefault2 = PHR_VALUE_DEFAULT.BLOOD_PRESSURE_DIASTOLIC;
  507. healthInfoHTML += '<th>혈압</th>';
  508. healthInfoHTML += '<td>';
  509. healthInfoHTML += ' <div class="form-group mb-xl-0">';
  510. healthInfoHTML += ' <input id="phrValueSystolic" class="form-control mb-2" type="number" placeholder="수축기 혈압 입력" min="'+phrValueDefault1.MIN+'" max="'+phrValueDefault1.MAX+'" value="'+phrValueDefault1.VALUE+'">';
  511. healthInfoHTML += ' <input id="phrValueDiastolic" class="form-control mb-2" type="number" placeholder="이완기 혈압 입력" min="'+phrValueDefault2.MIN+'" max="'+phrValueDefault2.MAX+'" value="'+phrValueDefault2.VALUE+'">';
  512. healthInfoHTML += ' </div>';
  513. healthInfoHTML += '</td>';
  514. }
  515. else if(selectData == 'pulseRate'){
  516. phrValueDefault = PHR_VALUE_DEFAULT.PULSE_RATE;
  517. healthInfoHTML += '<th>맥박</th>';
  518. healthInfoHTML += '<td>';
  519. healthInfoHTML += ' <div class="form-group mb-xl-0">';
  520. healthInfoHTML += ' <input id="phrValue" class="form-control" type="number" placeholder="맥박 입력"min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'">';
  521. healthInfoHTML += ' </div>';
  522. healthInfoHTML += '</td>';
  523. }
  524. else if(selectData == 'oxygenSaturation'){
  525. phrValueDefault = PHR_VALUE_DEFAULT.OXYGEN_SATURATION;
  526. healthInfoHTML += '<th>산소포화도</th>';
  527. healthInfoHTML += '<td>';
  528. healthInfoHTML += ' <div class="form-group mb-xl-0">';
  529. healthInfoHTML += ' <input id="phrValue" class="form-control" type="number" placeholder="산소포화도 입력" min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'">';
  530. healthInfoHTML += ' </div>';
  531. healthInfoHTML += '</td>';
  532. }
  533. else if(selectData == 'bloodSugar'){
  534. phrValueDefault = PHR_VALUE_DEFAULT.BLOOD_SUGAR;
  535. healthInfoHTML += '<th>혈당</th>';
  536. healthInfoHTML += '<td>';
  537. healthInfoHTML += ' <div class="form-group mb-xl-0">';
  538. healthInfoHTML += ' <input id="phrValue" class="form-control" type="number" placeholder="혈당 입력" min="'+phrValueDefault.MIN+'" max="'+phrValueDefault.MAX+'" value="'+phrValueDefault.VALUE+'"">';
  539. healthInfoHTML += ' </div>';
  540. healthInfoHTML += '</td>';
  541. }
  542. else {
  543. }
  544. $('#healthInfo').html(healthInfoHTML);
  545. setTimeout(function (){
  546. $('#healthInfo').find('.form-group input:first-child').focus();
  547. }, 500);
  548. });
  549. // 임상증상 추가 클릭 이벤트
  550. $(document).on('click','[data-target="#defaultModalPrimary_2"]',function(){
  551. var symptomInfoHtml = '';
  552. symptomInfoHtml += ' <th>임상증상</th>';
  553. symptomInfoHtml += ' <td>';
  554. symptomInfoHtml += ' <div class="form-group mb-xl-0">';
  555. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  556. symptomInfoHtml += ' <input id="coughCheck" class="form-check-input" type="checkbox">';
  557. symptomInfoHtml += ' <span class="form-check-label">';
  558. symptomInfoHtml += ' 기침';
  559. symptomInfoHtml += ' </span>';
  560. symptomInfoHtml += ' </label>';
  561. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  562. symptomInfoHtml += ' <input id="dyspneaCheck" class="form-check-input" type="checkbox">';
  563. symptomInfoHtml += ' <span class="form-check-label">';
  564. symptomInfoHtml += ' 호흡곤란';
  565. symptomInfoHtml += ' </span>';
  566. symptomInfoHtml += ' </label>';
  567. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  568. symptomInfoHtml += ' <input id="coldFitCheck" class="form-check-input" type="checkbox">';
  569. symptomInfoHtml += ' <span class="form-check-label">';
  570. symptomInfoHtml += ' 오한';
  571. symptomInfoHtml += ' </span>';
  572. symptomInfoHtml += ' </label>';
  573. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  574. symptomInfoHtml += ' <input id="musclePainCheck" class="form-check-input" type="checkbox">';
  575. symptomInfoHtml += ' <span class="form-check-label">';
  576. symptomInfoHtml += ' 근육통';
  577. symptomInfoHtml += ' </span>';
  578. symptomInfoHtml += ' </label>';
  579. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  580. symptomInfoHtml += ' <input id="headacheCheck" class="form-check-input" type="checkbox">';
  581. symptomInfoHtml += ' <span class="form-check-label">';
  582. symptomInfoHtml += ' 두통';
  583. symptomInfoHtml += ' </span>';
  584. symptomInfoHtml += ' </label>';
  585. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  586. symptomInfoHtml += ' <input id="soreThroatCheck" class="form-check-input" type="checkbox">';
  587. symptomInfoHtml += ' <span class="form-check-label">';
  588. symptomInfoHtml += ' 인후통';
  589. symptomInfoHtml += ' </span>';
  590. symptomInfoHtml += ' </label>';
  591. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  592. symptomInfoHtml += ' <input id="smellPalateCheck" class="form-check-input" type="checkbox">';
  593. symptomInfoHtml += ' <span class="form-check-label">';
  594. symptomInfoHtml += ' 후각/미각 손실';
  595. symptomInfoHtml += ' </span>';
  596. symptomInfoHtml += ' </label>';
  597. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  598. symptomInfoHtml += ' <input id="fatigueCheck" class="form-check-input" type="checkbox">';
  599. symptomInfoHtml += ' <span class="form-check-label">';
  600. symptomInfoHtml += ' 피로';
  601. symptomInfoHtml += ' </span>';
  602. symptomInfoHtml += ' </label>';
  603. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  604. symptomInfoHtml += ' <input id="appetiteLossCheck" class="form-check-input" type="checkbox">';
  605. symptomInfoHtml += ' <span class="form-check-label">';
  606. symptomInfoHtml += ' 식욕감소';
  607. symptomInfoHtml += ' </span>';
  608. symptomInfoHtml += ' </label>';
  609. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  610. symptomInfoHtml += ' <input id="sputumCheck" class="form-check-input" type="checkbox">';
  611. symptomInfoHtml += ' <span class="form-check-label">';
  612. symptomInfoHtml += ' 가래';
  613. symptomInfoHtml += ' </span>';
  614. symptomInfoHtml += ' </label>';
  615. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  616. symptomInfoHtml += ' <input id="ocinCheck" class="form-check-input" type="checkbox">';
  617. symptomInfoHtml += ' <span class="form-check-label">';
  618. symptomInfoHtml += ' 오심';
  619. symptomInfoHtml += ' </span>';
  620. symptomInfoHtml += ' </label>';
  621. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  622. symptomInfoHtml += ' <input id="vomitingCheck" class="form-check-input" type="checkbox">';
  623. symptomInfoHtml += ' <span class="form-check-label">';
  624. symptomInfoHtml += ' 구토';
  625. symptomInfoHtml += ' </span>';
  626. symptomInfoHtml += ' </label>';
  627. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  628. symptomInfoHtml += ' <input id="diarrheaCheck" class="form-check-input" type="checkbox">';
  629. symptomInfoHtml += ' <span class="form-check-label">';
  630. symptomInfoHtml += ' 설사';
  631. symptomInfoHtml += ' </span>';
  632. symptomInfoHtml += ' </label>';
  633. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  634. symptomInfoHtml += ' <input id="dizzinessCheck" class="form-check-input" type="checkbox">';
  635. symptomInfoHtml += ' <span class="form-check-label">';
  636. symptomInfoHtml += ' 어지러움';
  637. symptomInfoHtml += ' </span>';
  638. symptomInfoHtml += ' </label>';
  639. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  640. symptomInfoHtml += ' <input id="noseCheck" class="form-check-input" type="checkbox">';
  641. symptomInfoHtml += ' <span class="form-check-label">';
  642. symptomInfoHtml += ' 콧물/코막힘';
  643. symptomInfoHtml += ' </span>';
  644. symptomInfoHtml += ' </label>';
  645. symptomInfoHtml += ' <label class="form-check form-check-inline">';
  646. symptomInfoHtml += ' <input id="etcCheck" class="form-check-input" type="checkbox">';
  647. symptomInfoHtml += ' <span class="form-check-label">';
  648. symptomInfoHtml += ' 기타 ( <input type="text" id="etcContent" class="form-control form-control-sm w150" value="" placeholder="증상 내용"> )';
  649. symptomInfoHtml += ' </span>';
  650. symptomInfoHtml += ' </label>';
  651. symptomInfoHtml += ' </div>';
  652. symptomInfoHtml += ' </td>';
  653. $('#symptomInfo').html(symptomInfoHtml);
  654. });
  655. // 의료진 메모 추가 클릭 이벤트
  656. $(document).on('click','[data-target="#defaultModalPrimaryMemo"]',function(){
  657. var memoInfoHTML = '';
  658. memoInfoHTML += '<th>내용</th>';
  659. memoInfoHTML += '<td>';
  660. memoInfoHTML += ' <div class="form-row">';
  661. memoInfoHTML += ' <textarea id="memoContent" class="form-control" rows="15" placeholder="내용을 입력하세요"></textarea>';
  662. memoInfoHTML += ' </div>';
  663. memoInfoHTML += '</td>';
  664. $('#memoInfo').html(memoInfoHTML);
  665. setTimeout(function (){
  666. $('#memoInfo').find('.form-row textarea').focus();
  667. }, 500);
  668. });
  669. });
  670. </script>
  671. </head>
  672. <body>
  673. <form id="nonface" name="nonface" action="https://lemon.medihere.com/app/vc">
  674. </form>
  675. <div class="modal fade" id="legendGuide" tabindex="-1" role="dialog" aria-hidden="true">
  676. <div class="modal-dialog modal-sm" role="document">
  677. <div class="modal-content">
  678. <div class="modal-header">
  679. <h5 class="modal-title">알람 표시 기준 안내</h5>
  680. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span> </button>
  681. </div>
  682. <div class="modal-body m-1">
  683. <h4>생체측정 알람 표시 기준</h4>
  684. <ul class="legend">
  685. <li class="row fever">
  686. <div class="col-lg-4">체온</div>
  687. <div class="col-lg-8">37.5 이상</div>
  688. </li>
  689. <li class="row bloodPressure">
  690. <div class="col-lg-4">고혈압</div>
  691. <div class="col-lg-8">수축기 149 이상<br>이완기 99 이상</div>
  692. </li>
  693. <li class="row bloodPressure">
  694. <div class="col-lg-4">저혈압</div>
  695. <div class="col-lg-8">수축기 90 이하<br>이완기 60 이하</div>
  696. </li>
  697. <li class="row oxygen">
  698. <div class="col-lg-4">산소포화도</div>
  699. <div class="col-lg-8">94% 이하</div>
  700. </li>
  701. <li class="row pulse">
  702. <div class="col-lg-4">맥박</div>
  703. <div class="col-lg-8">최저 55 이하<br>최고 110 이상</div>
  704. </li>
  705. <li class="row sugar">
  706. <div class="col-lg-4">고혈당</div>
  707. <div class="col-lg-8">200 이상</div>
  708. </li>
  709. <li class="row sugar">
  710. <div class="col-lg-4">저혈당</div>
  711. <div class="col-lg-8">70 이하 </div>
  712. </li>
  713. </ul>
  714. </div>
  715. <div class="modal-footer">
  716. <button type="button" class="btn btn-primary" data-dismiss="modal">닫기</button>
  717. </div>
  718. </div>
  719. </div>
  720. </div>
  721. <div class="modal fade" id="defaultModalPrimary_1" tabindex="-1" role="dialog" aria-hidden="true">
  722. <div class="modal-dialog modal-sm" role="document">
  723. <div class="modal-content">
  724. <div class="modal-header">
  725. <h5 class="modal-title">건강정보 입력</h5>
  726. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
  727. aria-hidden="true">&times;</span> </button>
  728. </div>
  729. <div class="modal-body m-3">
  730. <table class="table mobile-table">
  731. <colgroup>
  732. <col style="width: 30%">
  733. <col style="width: 70%">
  734. </colgroup>
  735. <tr>
  736. <th>기록자</th>
  737. <td>
  738. <div class="form-group mb-xl-0">
  739. <input class="form-control" type="text" value="${data._SES_NAME}" readonly>
  740. </div>
  741. </td>
  742. </tr>
  743. <tr id="healthInfo">
  744. <!-- 컨텐츠 동적 생성 -->
  745. </tr>
  746. </table>
  747. </div>
  748. <div class="modal-footer">
  749. <button type="button" class="btn btn-outline-primary" data-dismiss="modal">취소</button>
  750. <button type="button" class="btn btn-primary" onclick="handlePhrData()">등록</button>
  751. </div>
  752. </div>
  753. </div>
  754. </div>
  755. <div class="modal fade" id="defaultModalPrimary_2" tabindex="-1" role="dialog" aria-hidden="true">
  756. <div class="modal-dialog" role="document">
  757. <div class="modal-content">
  758. <div class="modal-header">
  759. <h5 class="modal-title">임상증상 입력</h5>
  760. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
  761. aria-hidden="true">&times;</span> </button>
  762. </div>
  763. <div class="modal-body m-3">
  764. <table class="table mobile-table">
  765. <colgroup>
  766. <col style="width: 30%">
  767. <col style="width: 70%">
  768. </colgroup>
  769. <tr>
  770. <th>기록자</th>
  771. <td>
  772. <div class="form-group mb-xl-0">
  773. <input class="form-control" type="text" value="${data._SES_NAME}" readonly>
  774. </div>
  775. </td>
  776. </tr>
  777. <tr id="symptomInfo">
  778. <!-- 컨텐츠 동적 생성 -->
  779. </tr>
  780. </table>
  781. </div>
  782. <div class="modal-footer">
  783. <button type="button" class="btn btn-outline-primary" data-dismiss="modal">취소</button>
  784. <button type="button" class="btn btn-primary" onclick="handleSymptomData()">등록</button>
  785. </div>
  786. </div>
  787. </div>
  788. </div>
  789. <div class="modal fade" id="defaultModalPrimaryMemo" tabindex="-1" role="dialog" aria-hidden="true">
  790. <div class="modal-dialog" role="document">
  791. <div class="modal-content">
  792. <div class="modal-header">
  793. <h5 class="modal-title">의료진 메모 입력</h5>
  794. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
  795. aria-hidden="true">&times;</span> </button>
  796. </div>
  797. <div class="modal-body m-3">
  798. <table class="table mobile-table">
  799. <colgroup>
  800. <col style="width: 20%">
  801. <col style="width: 80%">
  802. </colgroup>
  803. <tr>
  804. <th>작성자</th>
  805. <td>
  806. <div class="form-row">
  807. <input type="text" name="" class="form-control" placeholder="이름을 입력하세요" value="${data._SES_NAME}" readonly>
  808. </div>
  809. </td>
  810. </tr>
  811. <tr id="memoInfo">
  812. <!-- 컨텐츠 동적 생성 -->
  813. </tr>
  814. </table>
  815. </div>
  816. <div class="modal-footer">
  817. <button type="button" class="btn btn-outline-primary" data-dismiss="modal">취소</button>
  818. <button type="button" class="btn btn-primary" onclick="handleMemoData()">등록</button>
  819. </div>
  820. </div>
  821. </div>
  822. </div>
  823. <div class="wrapper">
  824. <jsp:include page="${data._INCLUDE}/sidebar.jsp"></jsp:include>
  825. <div class="main">
  826. <jsp:include page="${data._INCLUDE}/top.jsp"></jsp:include>
  827. <main class="content">
  828. <form id="hiddenForm">
  829. <input type="hidden" id="pId" name="pId" value="<c:out value="${info.id}" />">
  830. <input type="hidden" id="pName" name="pName" value="<c:out value="${info.patientName}" />">
  831. <input type="hidden" id="roomId" name="roomId" value="<c:out value="${info.roomNumber}" />">
  832. </form>
  833. <div class="container-fluid p-0">
  834. <div class="row">
  835. <div class="col-12 col-lg-6">
  836. <h1 class="h3 mb-3">건강정보 조회</h1>
  837. </div>
  838. <div class="col-12 col-lg-6 text-right">
  839. <nav aria-label="breadcrumb">
  840. <ol class="breadcrumb">
  841. <li class="breadcrumb-item"><a href="javscript:;">Home</a></li>
  842. <li class="breadcrumb-item">진료관리</li>
  843. <li class="breadcrumb-item active">건강정보 조회</li>
  844. </ol>
  845. </nav>
  846. </div>
  847. </div>
  848. <div class="row">
  849. <div class="col-12">
  850. <div class="card toggle">
  851. <div class="card-header">
  852. <h1 class="h4"><c:out value="${info.patientName}" /> 환자 기본정보</h1>
  853. <a href="#" class="toggleBtn">메뉴</a>
  854. </div>
  855. <div class="card-body">
  856. <table class="table mobile-table user-info">
  857. <colgroup>
  858. <col style="width: 15%">
  859. <col style="width: 35%">
  860. <col style="width: 15%">
  861. <col style="width: 35%">
  862. </colgroup>
  863. <tr>
  864. <th>치료센터</th>
  865. <td><c:out value="${info.centerName}" /></td>
  866. <th>입소일시</th>
  867. <td colspan="2">
  868. <c:out value="${info.hospitalizationDate}" />
  869. </td>
  870. </tr>
  871. <tr>
  872. <th>병동 번호</th>
  873. <td>
  874. <c:out value="${info.wardNumber}동 ${info.roomNumber}호" />
  875. </td>
  876. <th>이름</th>
  877. <td>
  878. <c:out value="${info.patientName}" />
  879. </td>
  880. </tr>
  881. <tr>
  882. <th>성별</th>
  883. <td>
  884. <c:if test="${info.gender eq 'M'}">
  885. </c:if>
  886. <c:if test="${info.gender ne 'M'}">
  887. </c:if>
  888. </td>
  889. <th>생년월일</th>
  890. <td>
  891. <c:out value="${info.jumin}" />
  892. </td>
  893. </tr>
  894. <tr>
  895. <th>연락처</th>
  896. <td>
  897. <c:out value="${info.patientPhone}" />
  898. </td>
  899. <th>보호자 연락처</th>
  900. <td>
  901. <c:out value="${info.guardianPhone}" />
  902. </td>
  903. </tr>
  904. <tr>
  905. <th>증상시작일</th>
  906. <td>
  907. <c:out value="${info.symptomStartDate}" />
  908. </td>
  909. <th>확진일</th>
  910. <td>
  911. <c:out value="${info.confirmationDate}" />
  912. </td>
  913. </tr>
  914. <tr>
  915. <th>격리해제 예정일</th>
  916. <td>
  917. <c:out value="${info.disisolationDate}" />
  918. </td>
  919. <th>상태</th>
  920. <td>
  921. <c:if test="${info.state eq 'H'}">
  922. 입소
  923. </c:if>
  924. <c:if test="${info.state eq 'D'}">
  925. 퇴소
  926. </c:if>
  927. <c:if test="${info.state eq 'T'}">
  928. 지정병원 이송
  929. </c:if>
  930. <c:if test="${info.state eq 'E'}">
  931. 기타
  932. </c:if>
  933. </td>
  934. </tr>
  935. <tr>
  936. <th>최근 약복용<br />(최근 24시간 이내)</th>
  937. <td>
  938. <c:choose>
  939. <c:when test="${info.drugYn eq 'Y'}">
  940. 복용 (<c:out value="${info.drugContent}" />)
  941. </c:when>
  942. <c:otherwise>
  943. 미복용
  944. </c:otherwise>
  945. </c:choose>
  946. </td>
  947. <th>임신</th>
  948. <td>
  949. <c:choose>
  950. <c:when test="${info.pregnancyStatus eq 'N'}">
  951. </c:when>
  952. <c:otherwise>
  953. 유 (<c:out value="${info.pregnancyWeek}주차" />)
  954. </c:otherwise>
  955. </c:choose>
  956. </td>
  957. </tr>
  958. <tr>
  959. <th rowspan="2">기저질환 여부</th>
  960. <td colspan="3">
  961. <c:choose>
  962. <c:when test="${info.basalDiseaseYn eq 'Y'}">
  963. </c:when>
  964. <c:otherwise>
  965. </c:otherwise>
  966. </c:choose>
  967. </td>
  968. </tr>
  969. <tr>
  970. <td colspan="3">
  971. <%-- <c:if test="${info.highBloodPressureCheck eq 'Y'}">, 고혈압</c:if> --%>
  972. <%-- <c:if test="${info.lowBloodPressureCheck eq 'Y'}">, 저혈압</c:if> --%>
  973. <%-- <c:if test="${info.organTransplantCheck eq 'Y'}">, 장기이식(신장, 간 등)</c:if> --%>
  974. <%-- <c:if test="${info.diabetesCheck eq 'Y'}">, 당뇨</c:if> --%>
  975. <%-- <c:if test="${info.respiratoryDiseaseCheck eq 'Y'}">, 호흡기질환</c:if> --%>
  976. <%-- <c:if test="${info.immunologicalDiseaseCheck eq 'Y'}">, 면역질환(류마티스 등)</c:if> --%>
  977. <%-- <c:if test="${info.heartDisease eq 'Y'}">, 심장질환</c:if> --%>
  978. <%-- <c:if test="${info.liverDisease eq 'Y'}">, 간질환</c:if> --%>
  979. <%-- <c:if test="${info.operation eq 'Y'}">, 수술(<c:out value="${info.operationContent}" />)</c:if> --%>
  980. <%-- <c:if test="${info.allergyCheck eq 'Y'}">, 알레르기</c:if> --%>
  981. <%-- <c:if test="${info.kidneyDisease eq 'Y'}">, 신장질환</c:if> --%>
  982. <%-- <c:if test="${info.cancerCheck eq 'Y'}">, 암(<c:out value="${info.cancerName}" />)</c:if> --%>
  983. <%-- <c:if test="${info.ectCheckDisease eq 'Y'}">, 기타(<c:out value="${info.etcContentDisease}" />)</c:if> --%>
  984. <c:out value="${disease}" />
  985. </td>
  986. </tr>
  987. <tr>
  988. <th>현재 증상<br />(입소 당시)</th>
  989. <td colspan="3">
  990. <%-- <c:if test="${info.feverCheck eq 'Y'}">, 열감(열나는느낌)</c:if> --%>
  991. <%-- <c:if test="${info.coughCheck eq 'Y'}">, 기침</c:if> --%>
  992. <%-- <c:if test="${info.colic eq 'Y'}">, 복통(배아픔)</c:if> --%>
  993. <%-- <c:if test="${info.coldFitCheck eq 'Y'}">, 오한(추운 느낌)</c:if> --%>
  994. <%-- <c:if test="${info.sputumCheck eq 'Y'}">, 가래</c:if> --%>
  995. <%-- <c:if test="${info.ocinCheck eq 'Y'}">, 오심(구역질)</c:if> --%>
  996. <%-- <c:if test="${info.chestPain eq 'Y'}">, 흉통</c:if> --%>
  997. <%-- <c:if test="${info.noseCheck eq 'Y'}">, 콧물 또는 코 막힘</c:if> --%>
  998. <%-- <c:if test="${info.vomitingCheck eq 'Y'}">, 구토</c:if> --%>
  999. <%-- <c:if test="${info.musclePainCheck eq 'Y'}">, 근육통(몸살)</c:if> --%>
  1000. <%-- <c:if test="${info.soreThroatCheck eq 'Y'}">, 인후통(목 아픔)</c:if> --%>
  1001. <%-- <c:if test="${info.diarrheaCheck eq 'Y'}">, 설사</c:if> --%>
  1002. <%-- <c:if test="${info.headacheCheck eq 'Y'}">, 두통(머리아픔)</c:if> --%>
  1003. <%-- <c:if test="${info.dyspneaCheck eq 'Y'}">, 호흡곤란(숨가쁨)</c:if> --%>
  1004. <%-- <c:if test="${info.fatigueCheck eq 'Y'}">, 권태감(피곤함)</c:if> --%>
  1005. <%-- <c:if test="${info.ectCheckSymptom eq 'Y'}">, 기타(<c:out value="${info.etcContentSymptom}" />)</c:if> --%>
  1006. <c:out value="${symptom}" />
  1007. </td>
  1008. </tr>
  1009. <tr>
  1010. <th>
  1011. 체온
  1012. </th>
  1013. <td>
  1014. <c:out value="우측 ${info.feverRight}℃ / 좌측 ${info.feverRight}℃" />
  1015. </td>
  1016. <th>
  1017. 맥박수
  1018. </th>
  1019. <td>
  1020. <c:out value="${info.pulseRate} 회/분" />
  1021. </td>
  1022. </tr>
  1023. <tr>
  1024. <th>
  1025. 호흡수
  1026. </th>
  1027. <td>
  1028. <c:out value="${info.respirationRate} 회/분" />
  1029. </td>
  1030. <th>
  1031. 혈압
  1032. </th>
  1033. <td>
  1034. <c:out value="수축기 ${info.bloodPressureLevelCon} mmHg / 이완기 ${info.bloodPressureLevelRel} mmHg" />
  1035. </td>
  1036. </tr>
  1037. <tr>
  1038. <th>
  1039. 산소포화도
  1040. </th>
  1041. <td colspan="3">
  1042. <c:out value="${info.oxygenSaturation} %" />
  1043. </td>
  1044. </tr>
  1045. </table>
  1046. <div class="row mt-3">
  1047. <div class="col-12">
  1048. <div class="text-right">
  1049. <button class="btn btn-outline-success" onclick="nonFaceStart();">비대면 진료</button>
  1050. <button class="btn btn-primary" onclick="location.href='./state'">목록</button>
  1051. </div>
  1052. </div>
  1053. </div>
  1054. </div>
  1055. </div>
  1056. </div>
  1057. </div>
  1058. <div class="row">
  1059. <div class="col-12">
  1060. <div class="card">
  1061. <ul class="tab-nav">
  1062. <li class="tab-item active" tabindex="#tabPhr">건강정보이력</li>
  1063. <li class="tab-item" tabindex="#tabSymptom">임상증상</li>
  1064. <li class="tab-item" tabindex="#tabMemo">의료진 메모</li>
  1065. </ul>
  1066. <div id="tabPhr" class="tab in">
  1067. <div class="card-header">
  1068. <h1 class="h4">
  1069. - 건강정보 조회 <label> <select class="custom-select ml-1 form-control" id=phrTypeSelect name="inputState" onchange="retrievePhrData()">
  1070. <option value="temperature" selected>체온</option>
  1071. <option value="bloodPressure">혈압</option>
  1072. <option value="oxygenSaturation">산소포화도</option>
  1073. <option value="pulseRate">맥박</option>
  1074. <option value="bloodSugar">혈당</option>
  1075. </select>
  1076. </label> <label class="ml-1">
  1077. <button type="button" class="btn btn-primary ml-2" data-toggle="modal" data-target="#defaultModalPrimary_1">기록추가</button>
  1078. </label>
  1079. </h1>
  1080. </div>
  1081. <div class="card-body">
  1082. <div class="graph-area mb-4" style="height:300px;">
  1083. <canvas id="phrChart"></canvas>
  1084. </div>
  1085. <h1 class="h4 text-right"><span class="small showLegend ml-2" data-toggle="modal" data-target="#legendGuide"><i class="mdi mdi-comment-question-outline"></i> 알람 표시 기준</span></h1>
  1086. <div class="table-responsive">
  1087. <table id="phrDataTable" class="table data-table text-center">
  1088. <thead>
  1089. <tr>
  1090. <th>기록일시</th>
  1091. <th>체온</th>
  1092. <th>기록자</th>
  1093. </tr>
  1094. </thead>
  1095. <tbody>
  1096. <c:choose>
  1097. <c:when test="${phrTotal > 0}">
  1098. <c:forEach var="i" begin="1" end="${phrTotal}">
  1099. <tr>
  1100. <td><c:out value="${phrItems[phrTotal-i].createDateFormatted}" /></td>
  1101. <td><span class="${phrItems[phrTotal-i].isWarning ? 'text-danger' : ''}"><c:out value="${phrItems[phrTotal-i].phrValue}" /></span></td>
  1102. <td><c:out value="${phrItems[phrTotal-i].recordedByName}" /></td>
  1103. </tr>
  1104. </c:forEach>
  1105. </c:when>
  1106. <c:otherwise>
  1107. <tr>
  1108. <td colspan=3>데이터가 없습니다.</td>
  1109. </tr>
  1110. </c:otherwise>
  1111. </c:choose>
  1112. </tbody>
  1113. </table>
  1114. </div>
  1115. </div>
  1116. </div>
  1117. <div id="tabSymptom" class="tab">
  1118. <div class="card-header">
  1119. <h1 class="h4">
  1120. - 임상증상 <label class="ml-1">
  1121. <button type="button" class="btn btn-primary ml-2" data-toggle="modal" data-target="#defaultModalPrimary_2">증상추가</button>
  1122. </label>
  1123. </h1>
  1124. </div>
  1125. <div class="card-body">
  1126. <div class="table-responsive">
  1127. <table id="symptomDataTable" class="table data-table text-center">
  1128. <thead>
  1129. <tr>
  1130. <th>기록일시</th>
  1131. <th>기침</th>
  1132. <th>호흡곤란</th>
  1133. <th>오한</th>
  1134. <th>근육통</th>
  1135. <th>두통</th>
  1136. <th>인후통</th>
  1137. <th>후각/미각 손실</th>
  1138. <th>피로</th>
  1139. <th>식욕감소</th>
  1140. <th>가래</th>
  1141. <th>오심</th>
  1142. <th>구토</th>
  1143. <th>설사</th>
  1144. <th>어지러움</th>
  1145. <th>콧물/코막힘</th>
  1146. <th>기타증상</th>
  1147. <th>기록자</th>
  1148. </tr>
  1149. </thead>
  1150. <tbody>
  1151. </tbody>
  1152. </table>
  1153. </div>
  1154. </div>
  1155. </div>
  1156. <div id="tabMemo" class="tab">
  1157. <div class="card-header">
  1158. <h1 class="h4">
  1159. - 의료진 메모
  1160. <button type="button" class="btn btn-primary ml-2" data-toggle="modal" data-target="#defaultModalPrimaryMemo">메모추가</button>
  1161. </h1>
  1162. </div>
  1163. <div class="card-body">
  1164. <div class="table-responsive">
  1165. <table id="memoDataTable" class="table data-table text-center">
  1166. <thead>
  1167. <tr>
  1168. <th>기록일시</th>
  1169. <th>내용</th>
  1170. <th>기록자</th>
  1171. </tr>
  1172. </thead>
  1173. <tbody>
  1174. </tbody>
  1175. </table>
  1176. </div>
  1177. </div>
  1178. </div>
  1179. </div>
  1180. </div>
  1181. </div>
  1182. </div>
  1183. </main>
  1184. <jsp:include page="${data._INCLUDE}/footer.jsp"></jsp:include>
  1185. </div>
  1186. </div>
  1187. </body>
  1188. </html>