Selaa lähdekoodia

정신건강 자가진단 웹 추가, 푸시발송 화면에 추가

huiwonseo 4 vuotta sitten
vanhempi
commit
4f3e98c037

+ 33 - 2
src/main/java/com/lemon/lifecenter/controller/ClinicController.java

@@ -1208,11 +1208,39 @@ public class ClinicController extends LifeCenterController {
 		}
   }
 
+
+  @RequestMapping(value = "/api/mentalDetail", method = RequestMethod.POST)
+  public @ResponseBody String selectMentalRecord(
+    @RequestParam(value = "totalIdx", required = true ) int totalIdx,
+    HttpServletRequest request ) {
+      try {
+        MentalDTO dto = new MentalDTO();
+        dto.setTotalIdx(totalIdx);
+  
+        JSONObject json = new JSONObject();
+  
+        json.put("code", "00");
+        json.put("data", mentalService.selectMentalHealthRecord(dto) );
+  
+        return json.toString();
+        
+      } catch (Exception e) {
+        JSONObject json = new JSONObject();
+
+        json.put("code", "01");
+        json.put("message", e.getLocalizedMessage());
+
+        return json.toString();
+      }
+
+  }
+
   @RequestMapping(value = "/api/mentalInsert", method = RequestMethod.POST)
   public @ResponseBody String insertMentalData(@ModelAttribute("dto") MentalDTO dto, HttpServletRequest request ) {
       try{
         Set<String> keySet = request.getParameterMap().keySet();
         String createdBy = LifeCenterSessionController.getSession(request, "sesName");
+        String recordId = LifeCenterSessionController.getSession(request, "sesId");
         int patientIdx = dto.getPatientIdx();
   
         List<MentalDTO> mentalList = mentalService.selectMentalHealthCheckList(dto);
@@ -1266,7 +1294,7 @@ public class ClinicController extends LifeCenterController {
           }
   
         }
-  
+        
         dto.setPatientIdx(patientIdx);
         dto.setCreatedBy(createdBy);
         dto.setStressTotal(stressTotal);
@@ -1274,12 +1302,14 @@ public class ClinicController extends LifeCenterController {
         dto.setDepressedNine(depressedNine);
         dto.setVasTotal(vasTotal);
         dto.setAgreeYn(agreeYn);
-  
+        dto.setRecordId(recordId);
         mentalService.insertMentalHealthTotal(dto);
         int totalIdx = dto.getIdx();
   
         // detail 상세점수
         for (String key : keySet) {
+          if (key.equals("patientIdx"))
+            continue;
           if (key.equals("agree"))
             continue;
           if (key.equals("recordedDate"))
@@ -1308,6 +1338,7 @@ public class ClinicController extends LifeCenterController {
         json.put("agreeYn", agreeYn);
         json.put("createdBy", createdBy);
         json.put("recordedDate", recordedDate);
+        json.put("totalIdx", totalIdx);
         
   
         json.put("code", "00");

+ 1 - 0
src/main/java/com/lemon/lifecenter/controller/MobileHealthController.java

@@ -125,6 +125,7 @@ public class MobileHealthController extends LifeCenterController {
         dto.setDepressedNine(depressedNine);
         dto.setVasTotal(vasTotal);
         dto.setAgreeYn(agreeYn);
+        dto.setRecordPatientIdx(patientIdx);
 
         mentalService.insertMentalHealthTotal(dto);
         int totalIdx = dto.getIdx();

+ 20 - 0
src/main/java/com/lemon/lifecenter/dto/MentalDTO.java

@@ -32,6 +32,26 @@ public class MentalDTO {
     private int amCount;
     private int pmCount;
     private String recordedDate;
+    private String recordId;
+    private int recordPatientIdx;
+    
+    public String getRecordId() {
+        return this.recordId;
+    }
+
+    public void setRecordId(String recordId) {
+        this.recordId = recordId;
+    }
+    
+
+    public int getRecordPatientIdx() {
+        return this.recordPatientIdx;
+    }
+
+    public void setRecordPatientIdx(int recordPatientIdx) {
+        this.recordPatientIdx = recordPatientIdx;
+    }
+
 
     public String getRecordedDate() {
         return this.recordedDate;

+ 6 - 5
src/main/java/com/lemon/lifecenter/dto/PatientPHRLatestDTO.java

@@ -49,16 +49,17 @@ public class PatientPHRLatestDTO {
   private int depressedNine;
   private int vasTotal;
   private Date mentalCreateDate;
-  private String agree_yn;
+  private String agreeYn;
 
-  public String getAgree_yn() {
-    return this.agree_yn;
+  public String getAgreeYn() {
+    return this.agreeYn;
   }
 
-  public void setAgree_yn(String agree_yn) {
-    this.agree_yn = agree_yn;
+  public void setAgreeYn(String agreeYn) {
+    this.agreeYn = agreeYn;
   }
 
+
   public Date getMentalCreateDate() {
     return this.mentalCreateDate;
   }

+ 1 - 0
src/main/java/com/lemon/lifecenter/mapper/MentalMapper.java

@@ -16,4 +16,5 @@ public interface MentalMapper {
     public MentalDTO selectMentalHealthTotalAmPm(MentalDTO dto);
     public int selectMentalHealthTotalCount(MentalDTO dto);
     public List<MentalDTO> selectMentalHealthTotalList(MentalDTO dto);
+    public List<MentalDTO> selectMentalHealthRecord(MentalDTO dto);
 }

+ 3 - 0
src/main/java/com/lemon/lifecenter/service/MentalService.java

@@ -32,6 +32,9 @@ public class MentalService {
     public List<MentalDTO> selectMentalHealthTotalList(MentalDTO dto) {
         return mapper.selectMentalHealthTotalList(dto);
     }
+    public List<MentalDTO> selectMentalHealthRecord(MentalDTO dto) {
+        return mapper.selectMentalHealthRecord(dto);
+    }
 
     public int selectMentalHealthTotalCount(MentalDTO dto) {
         return mapper.selectMentalHealthTotalCount(dto);

+ 46 - 5
src/main/resources/mybatis/mapper/mental/mental.xml

@@ -25,19 +25,46 @@
             INSERT 
               INTO mental_health_total
                    ( patient_idx, stress_total, depressed_total, depressed_nine, 
-                     vas_total, create_date, created_by, agree_yn, recorded_date )
+                     vas_total, create_date, created_by, agree_yn, 
+        ]]>
+        <if test='recordId != null and recordId != ""'>
+          <![CDATA[
+             record_id,
+          ]]>
+	      </if>
+
+        <if test='recordPatientIdx != null and recordPatientIdx != ""'>
+          <![CDATA[
+             record_patient_idx, 
+          ]]>
+	      </if>
+        
+        <![CDATA[
+                     recorded_date )
             VALUES ( #{patientIdx}, #{stressTotal}, #{depressedTotal}, #{depressedNine},
-                     #{vasTotal}, NOW(), #{createdBy}, #{agreeYn} 
+                     #{vasTotal}, NOW(), #{createdBy}, #{agreeYn}, 
         ]]>
-        <if test='recordedDate != null and recordedDate != ""'>
+
+        <if test='recordId != null and recordId != ""'>
           <![CDATA[
-              , #{recordedDate} )
+             #{recordId},
+          ]]>
+	      </if>
 
+        <if test='recordPatientIdx != null and recordPatientIdx != ""'>
+          <![CDATA[
+             #{recordPatientIdx}, 
+          ]]>
+	      </if>
+
+        <if test='recordedDate != null and recordedDate != ""'>
+          <![CDATA[
+              #{recordedDate} )
           ]]>
 	      </if>
         <if test='recordedDate == null or recordedDate == ""'>
           <![CDATA[
-              , NOW() )
+              NOW() )
           ]]>
 	      </if>
     </insert>
@@ -102,4 +129,18 @@
              ORDER BY idx desc
         ]]>
     </select>
+
+    <select id="selectMentalHealthRecord" parameterType="MentalDTO" resultType="MentalDTO">
+        <![CDATA[
+            SELECT idx          AS idx,
+	                 total_idx    AS totalIdx,
+                   patient_idx  AS patientIdx,
+                   item_code    AS itemCode,
+                   item_score   AS itemScore,
+                   create_date  AS createDate,
+                   created_by   AS createdBy
+              FROM mental_health_record
+             WHERE total_idx = #{totalIdx}
+        ]]>
+    </select>
 </mapper>

+ 102 - 21
src/main/webapp/WEB-INF/jsp/clinic/info.jsp

@@ -668,15 +668,15 @@ function requestInsertMental() {
 
           var agree = datas.agreeYn == "Y" ? "동의" : "비동의";
 
-          var tr = '<tr>';
-            tr += '<td>'+datas.recordedDate+'</td>';
-            tr += '<td><span class="mental-total text-primary">'+datas.stressTotal+'</span></td>';
-            tr += '<td><span class="mental-total text-primary">'+datas.depressedTotal+'</span></td>';
-            tr += '<td><span class="mental-total text-primary">'+datas.depressedNine+'</span></td>';
-            tr += '<td><span class="mental-total text-primary">'+datas.vasTotal+'</span></td>';
-            tr += '<td><span>'+agree+'</span></td>';
-            tr += '<td>'+datas.createdBy+'</td>';
-            tr += '<td>'+datas.createDate+'</td>';
+          var tr = '<tr data-idx='+datas.totalIdx+'>';
+            tr += '<td class="m-rdate">'+datas.recordedDate+'</td>';
+            tr += '<td><span class="mental-total text-primary m-stress">'+datas.stressTotal+'</span></td>';
+            tr += '<td><span class="mental-total text-primary m-depressed">'+datas.depressedTotal+'</span></td>';
+            tr += '<td><span class="mental-total text-primary m-dnine">'+datas.depressedNine+'</span></td>';
+            tr += '<td><span class="mental-total text-primary m-vas">'+datas.vasTotal+'</span></td>';
+            tr += '<td class="m-agree"><span>'+agree+'</span></td>';
+            tr += '<td class="m-cby">'+datas.createdBy+'</td>';
+            tr += '<td class="m-cdate">'+datas.createDate+'</td>';
             tr += '</tr>';
           
           $('#defaultModalMental').modal('hide');
@@ -691,9 +691,87 @@ function requestInsertMental() {
   });
 }
 
-function modalDetailOpen( idx ) {
-  console.log( idx );
+var nowOpenIdx = 0;
+
+function modalDetailOpen( target ) {
+  // console.log( target );
+  var idx = target.closest( "tr" ).data( "idx" );
+  // console.log( idx );
   $('#defaultModalMentalDetail').modal('show');
+  if( idx == nowOpenIdx ) return;
+  nowOpenIdx = idx;
+
+  $("#mentalDetail").css('visibility', 'hidden');
+  //total은 데이터호출하지않고 불러온데이터활용
+  
+  var tr = target.closest( "tr" );
+  var detail = $('#defaultModalMentalDetail');
+
+  var stressTotal    = Number(tr.find( ".m-stress" ).text());
+  var depressedTotal = Number(tr.find( ".m-depressed" ).text());
+  var depressedNine  = Number(tr.find( ".m-dnine" ).text());
+
+  console.log(depressedNine );
+
+  var vasTotal       = Number(tr.find( ".m-vas" ).text());
+
+  var stressCheck = ( stressTotal >= 2 );
+  var depressedCheck = ( depressedTotal >= 5 );
+  var depressedNineCheck = ( depressedNine >= 1 );
+  var vasCheck = ( vasTotal >= 7 );
+  
+  var warningCheck = stressCheck || depressedCheck || depressedNineCheck || vasCheck;
+
+  var stressText = ( stressTotal >= 2 ) ? ( stressTotal >= 3 ) ? "심한수준" : "주의요망" : "정상";
+  var depressedText = ( depressedTotal >= 5 ) ?  ( depressedTotal >= 10 ) ?  ( depressedTotal >= 15 ) ?  ( depressedTotal >= 20 ) ? "심한 수준" : "약간 심한 수준" : "중간 수준"  : "경미한 수준" : "정상"
+
+
+  detail.find( ".detailCreatedBy" ).text( tr.find( ".m-cby" ).text() );
+  detail.find( ".detailRecordedDate" ).text( tr.find( ".m-rdate" ).text() );
+  detail.find( ".detailCreateDate" ).text( tr.find( ".m-cdate" ).text() );
+
+  detail.find( ".detailStressTotal" ).text( stressTotal );
+  detail.find( ".detailStressCheck" ).text( stressText );
+
+  detail.find( ".detailDepressedTotal" ).text( depressedTotal );
+  detail.find( ".detailDepressedCheck" ).text( depressedText );
+
+  detail.find( ".detailDepressedNine" ).text( depressedNine );
+  detail.find( ".detailVasTotal" ).text( vasTotal );
+  detail.find( ".detailAllTotal" ).text( stressTotal + depressedTotal );
+
+  detail.find( ".detailAgreeYn" ).text( tr.find( ".m-agree" ).text() );
+
+  detail.find( ".detailWarningCheck" ).text( warningCheck == true ? "대상" : "비대상" );
+
+  // detail.find( "." )
+  // detail.find( "." )
+
+  $.ajax({
+    url      : "./api/mentalDetail",
+    data     : {totalIdx : idx},
+    method   : "POST",
+    dataType : "json",
+    success  : function( datas ){
+
+        // console.log( datas );
+
+        if( datas.code == "00" ) {
+          datas.data.forEach( item => {
+            // console.log( item.itemCode );
+            // console.log( item.itemScore );
+
+            $( "td[data-code='"+item.itemCode+"']" ).find("span").not(".detailVasTotal").hide();
+            $( "td[data-code='"+item.itemCode+"']" ).find("span[data-point='"+item.itemScore+"']").show();
+          })
+
+          $("#mentalDetail").css('visibility', 'visible');
+        } else {
+          alert( 'error! 관리자에게 문의하세요' );
+        }
+    },
+    error : ajaxErrorHandler
+  });
 }
 
 
@@ -1189,7 +1267,10 @@ $(document).ready(function() {
   });
   // $("#defaultModalMentalDetail").on('show.bs.modal', function () {
   //   $("#healthForm").find("input:radio").prop("checked", false);
-
+  
+  $( document ).on( "click", "span.mental-total", function() {
+    modalDetailOpen( $(this) );
+  })
     
   // });
 });
@@ -1934,18 +2015,18 @@ $(document).ready(function() {
                                               <c:choose>
                                                   <c:when test="${mentalTotal > 0}">
                                                       <c:forEach var="ml" items="${mentalList}" varStatus="lStatus">
-                                                          <tr>
-                                                              <td><c:out value="${ml.recordedDate}" /></td>
-                                                              <td><span class="mental-total text-primary" onclick="modalDetailOpen(${ml.idx});"><c:out value="${ml.stressTotal}" /></span></td>
-                                                              <td><span class="mental-total text-primary" onclick="modalDetailOpen(${ml.idx});"><c:out value="${ml.depressedTotal}" /></span></td>
-                                                              <td><span class="mental-total text-primary" onclick="modalDetailOpen(${ml.idx});"><c:out value="${ml.depressedNine}" /></span></td>
-                                                              <td><span class="mental-total text-primary" onclick="modalDetailOpen(${ml.idx});"><c:out value="${ml.vasTotal}" /></span></td>
-                                                              <td>
+                                                          <tr data-idx=${ml.idx}>
+                                                              <td class="m-rdate"><c:out value="${ml.recordedDate}" /></td>
+                                                              <td><span class="mental-total text-primary m-stress"><c:out value="${ml.stressTotal}" /></span></td>
+                                                              <td><span class="mental-total text-primary m-depressed"><c:out value="${ml.depressedTotal}" /></span></td>
+                                                              <td><span class="mental-total text-primary m-dnine"><c:out value="${ml.depressedNine}" /></span></td>
+                                                              <td><span class="mental-total text-primary m-vas"><c:out value="${ml.vasTotal}" /></span></td>
+                                                              <td class="m-agree">
                                                                 <c:if test="${ml.agreeYn eq 'Y'}"><span>동의</span></c:if>
                                                                 <c:if test="${ml.agreeYn eq 'N'}"><span>비동의</span></c:if>
                                                               </td>
-                                                              <td><c:out value="${ml.createdBy}" /></td>
-                                                              <td><c:out value="${ml.createDate}" /></td>
+                                                              <td class="m-cby"><c:out value="${ml.createdBy}" /></td>
+                                                              <td class="m-cdate"><c:out value="${ml.createDate}" /></td>
                                                           </tr>
                                                       </c:forEach>
                                                   </c:when>

+ 17 - 10
src/main/webapp/WEB-INF/jsp/clinic/mentalDetail.jsp

@@ -21,7 +21,7 @@
 </style>
                 <div class="diagnosis-wrap-detail">
                     <div class="table-responsive">
-                        <table class="table table-striped text-center" id="mentalTable">
+                        <table class="table table-striped text-center" id="mentalDetail">
                             <colgroup>
                               <col style="width:15%">
                               <col style="width:15%">
@@ -36,9 +36,9 @@
                                     <th colspan="6" class="text-left" style="background:#ffffa3;">
                                       <div class="h3 mb-0" style="border-bottom:1px solid #dee2e6;padding-bottom:10px">정신건강 자가진단 평가 결과</div>
                                       <br/>
-                                      <div id="detailCreatedBy" class="ml-2"> · 기록자&nbsp;&nbsp;&nbsp; : <span class="d-val">홍길동</span></div>
-                                      <div id="detailRecordedDate" class="ml-2"> · 측정일시 : <span class="d-val">2020-02-02 11:11</span> </div>
-                                      <div id="detailCreateDate" class="ml-2"> · 기록일시 : <span class="d-val">2020-02-02 11:11</span></div>
+                                      <div id="detailCreatedBy" class="ml-2"> · 기록자&nbsp;&nbsp;&nbsp; : <span class="d-val detailCreatedBy"></span></div>
+                                      <div id="detailRecordedDate" class="ml-2"> · 측정일시 : <span class="d-val detailRecordedDate"></span> </div>
+                                      <div id="detailCreateDate" class="ml-2"> · 기록일시 : <span class="d-val detailCreateDate"></span></div>
                                       
                                     </th>
                                     <th style="background:#ffffa3;">총점</th>
@@ -56,7 +56,10 @@
                                         </c:if>
                                     </c:if>
                                 </c:forEach>
-                                <td rowspan="2">1</td>
+                                <td rowspan="2">
+                                  <span class="detailStressCheck">정상/비정상</span><br/>
+                                  (<span class="detailStressTotal"></span>)점
+                                </td>
                               </tr>
                               <tr>
                                 <c:forEach var="ml" items="${mentalCheckList}" varStatus="lStatus">
@@ -86,7 +89,11 @@
                                         </c:if>
                                     </c:if>
                                 </c:forEach>
-                                <td rowspan="4">1</td>
+                                <td rowspan="4">
+                                  <span class="detailDepressedCheck">정상/비정상</span><br/>
+                                  (<span class="detailDepressedTotal">detailDepressedTotal</span>)점<br/>
+                                  (9번 : <span class="detailDepressedNine">detailDepressedNine</span>)
+                                </td>
                               </tr>
                               <tr>
                                 <c:forEach var="ml" items="${mentalCheckList}" varStatus="lStatus">
@@ -143,7 +150,7 @@
                                       <c:if test="${ml.parentCode ne '*****'}">
                                         <td data-code="${ml.itemCode}">
                                           <c:forEach var="c" items="${ckList}" varStatus="cStatus">
-                                              <span data-point="${cStatus.index}">${cStatus.index}점</span>
+                                              <span data-point="${cStatus.index}" class="detailVasTotal"></span>점
                                           </c:forEach>
                                         </td>
                                       </c:if>
@@ -151,12 +158,12 @@
                                 </c:forEach>
 
                                 <td colspan="2">상담연계 동의 여부</td>
-                                <td>비동의</td>
-                                <td>총점합계 계산</td>
+                                <td class="detailAgreeYn">비동의</td>
+                                <td class="detailAllTotal">총점합계 계산</td>
                               </tr>
                               <tr>
                                 <td colspan="6">상담연계 대상 여부</td>
-                                <td>대상/비대상</td>
+                                <td class="detailWarningCheck">대상/비대상</td>
                               </tr>
                             </tbody>
                         </table>

+ 5 - 0
src/main/webapp/WEB-INF/jsp/push/edit.jsp

@@ -368,6 +368,11 @@ function addPatientToTargetTemp(){
                                                         <input class="form-check-input" type="radio" id="radio-target-m" name="targetType" value="M" required <c:if test="${result.targetType eq 'M'}">checked="checked"</c:if>>
                                                         <span class="form-check-label">본인 관리 환자</span>
                                                     </label>
+
+                                                    <label class="form-check form-check-inline">
+                                                        <input class="form-check-input" type="radio" id="radio-target-t" name="targetType" value="T" required <c:if test="${result.targetType eq 'T'}">checked="checked"</c:if>>
+                                                        <span class="form-check-label">정신건강 자가진단 미입력 환자</span>
+                                                    </label>
                                                 </td>
                                             </tr>
                                             <tr class="target-select" id="target-patient" style="display:none;">

+ 2 - 0
src/main/webapp/WEB-INF/jsp/push/list.jsp

@@ -392,6 +392,7 @@ function pushDetail( t ){
                                                         <option value="N" <c:if test="${targetType eq 'N'}">selected="selected"</c:if>>건강정보 미입력자</option>
                                                         <option value="M" <c:if test="${targetType eq 'M'}">selected="selected"</c:if>>본인 관리 환자</option>
                                                         <option value="P" <c:if test="${targetType eq 'P'}">selected="selected"</c:if>>환자 개별선택</option>
+                                                        <option value="T" <c:if test="${targetType eq 'T'}">selected="selected"</c:if>>정신건강 자가진단 미입력 환자</option>
                                                     </select>
                                                 </td>
                                             </tr>
@@ -509,6 +510,7 @@ function pushDetail( t ){
                                                             <c:if test="${pl.targetType eq 'N'}">건강정보 미입력자</c:if>
                                                             <c:if test="${pl.targetType eq 'M'}">본인 관리 환자</c:if>
                                                             <c:if test="${pl.targetType eq 'P'}">환자 개별선택</c:if>
+                                                            <c:if test="${pl.targetType eq 'T'}">정신건강 자가진단 미입력 환자</c:if>
                                                         </td>
                                                         <td class="td-create-date"><c:out value="${pl.createDate}"/></td>
                                                         

+ 2 - 1
src/main/webapp/WEB-INF/jsp/push/schedule.jsp

@@ -224,8 +224,9 @@
                                                                 <td>
                                                                     <c:if test="${sl.targetType eq 'A'}">전체 환자</c:if>
                                                                     <c:if test="${sl.targetType eq 'N'}">건강정보 미입력 환자</c:if>
-                                                                    <c:if test="${sl.targetType eq 'M'}">인 관리 환자</c:if>
+                                                                    <c:if test="${sl.targetType eq 'M'}">인 관리 환자</c:if>
                                                                     <c:if test="${sl.targetType eq 'P'}">환자 개별 선택</c:if>
+                                                                    <c:if test="${sl.targetType eq 'T'}">정신건강 자가진단 미입력 환자</c:if>
                                                                 </td>
                                                                 <td><c:out value="${sl.createDate}"/></td>
                                                                 <td>

+ 5 - 0
src/main/webapp/WEB-INF/jsp/push/send.jsp

@@ -365,6 +365,11 @@ function addPatientToTargetTemp(){
                                                         <input class="form-check-input" type="radio" id="radio-target-m" name="targetType" value="M" required>
                                                         <span class="form-check-label">본인 관리 환자</span>
                                                     </label>
+                                                    
+                                                    <label class="form-check form-check-inline">
+                                                        <input class="form-check-input" type="radio" id="radio-target-t" name="targetType" value="T" required>
+                                                        <span class="form-check-label">정신건강 자가진단 미입력 환자</span>
+                                                    </label>
                                                 </td>
                                             </tr>
                                             <tr class="target-select" id="target-patient" style="display:none;">