From cac7d036fc4350efc7714ec1c5b4608456446211 Mon Sep 17 00:00:00 2001
From: xueqingkun <xueqingkun@126.com>
Date: Fri, 8 Dec 2023 15:42:16 +0800
Subject: [PATCH] =?UTF-8?q?web:=20=E6=B7=BB=E5=8A=A0=E7=94=B5=E5=AD=90?=
 =?UTF-8?q?=E7=97=85=E4=BE=8B=E8=A7=86=E5=9B=BE=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../vo/ask/ProcessMedicalResVo.java           | 15 +++++
 .../vo/ask/ProcessMedicalViewDetailResVo.java | 29 ++++++++++
 .../resources/mapper/ProcessMedicalMapper.xml |  1 +
 .../controller/MedicalRecordController.java   | 14 +++--
 .../service/MedicalRecordService.java         |  5 +-
 .../impl/MedicalRecordServiceImpl.java        | 56 +++++++++++++++++--
 6 files changed, 109 insertions(+), 11 deletions(-)
 create mode 100644 virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java

diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java
index 48278419..bc90385c 100644
--- a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java
+++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java
@@ -15,6 +15,16 @@ public class ProcessMedicalResVo extends ProcessMedical {
      */
     private String processNo;
 
+    /**
+     * 实例类型  0:学习实例 1:考核实例
+     */
+    private String processType;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
     /**
      * 病例编号
      */
@@ -80,5 +90,10 @@ public class ProcessMedicalResVo extends ProcessMedical {
      */
     private String patientHabitation;
 
+    /**
+     * 结束问诊时间
+     */
+    private LocalDateTime finishAskTime;
+
 
 }
diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java
new file mode 100644
index 00000000..e8c87645
--- /dev/null
+++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java
@@ -0,0 +1,29 @@
+package com.supervision.vo.ask;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProcessMedicalViewDetailResVo extends ProcessMedicalResVo{
+
+    @ApiModelProperty("初步诊断疾病名")
+    private List<String> primaryDiseaseNameList;
+
+    @ApiModelProperty("体格检查名列表")
+    private List<String> physicalDiagnosisNameList;
+
+    @ApiModelProperty("辅助检查名列表")
+    private List<String>  ancillaryDiagnosisNameList;
+
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ApiModelProperty("结束问诊日期")
+    private LocalDateTime finishDiagnosisTime;
+
+}
diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml
index 013591b2..f9da3247 100644
--- a/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml
@@ -42,6 +42,7 @@
                pr.update_time           as recentTime,
                pr.process_type          as processType,
                pr.user_id               as userId,
+               pr.finish_ask_time       as finishAskTime,
                pm.process_id            as processId,
                pm.disease_id            as diseaseId,
                mr.id                    as medicalRecId,
diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java b/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java
index 6b1bf4e7..0a47e682 100644
--- a/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java
+++ b/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java
@@ -1,20 +1,16 @@
 package com.supervision.controller;
 
-import cn.hutool.core.util.StrUtil;
-import com.supervision.exception.BusinessException;
-import com.supervision.model.DiagnosisQaRecord;
 import com.supervision.model.ProcessMedical;
 import com.supervision.service.MedicalRecordService;
 import com.supervision.vo.ask.ProcessMedicalResVo;
+import com.supervision.vo.ask.ProcessMedicalViewDetailResVo;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
 
 @Slf4j
 @Api(tags = "电子病例")
@@ -45,4 +41,12 @@ public class MedicalRecordController {
 
         return medicalRecordService.findByProcessId(processId);
     }
+
+
+    @ApiOperation("电子病例视图")
+    @GetMapping("queryViewDetails")
+    public ProcessMedicalViewDetailResVo queryViewDetail(@ApiParam("流程id") @RequestParam("processId") String processId){
+
+        return medicalRecordService.queryViewDetail(processId);
+    }
 }
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java b/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java
index 388eb0e7..585fcfcd 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java
@@ -1,10 +1,9 @@
 package com.supervision.service;
 
-import com.supervision.model.DiagnosisQaRecord;
 import com.supervision.model.ProcessMedical;
 import com.supervision.vo.ask.ProcessMedicalResVo;
+import com.supervision.vo.ask.ProcessMedicalViewDetailResVo;
 
-import java.util.List;
 
 public interface MedicalRecordService {
     boolean saveMedicalRecord(ProcessMedical processMedical);
@@ -12,4 +11,6 @@ public interface MedicalRecordService {
     ProcessMedicalResVo findByProcessId(String processId);
 
     boolean updateMedicalRecord(ProcessMedical processMedical);
+
+    ProcessMedicalViewDetailResVo queryViewDetail(String processId);
 }
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java
index 12e1027a..8662c478 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java
@@ -1,16 +1,20 @@
 package com.supervision.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Assert;
 import com.supervision.model.Process;
 import com.supervision.model.ProcessMedical;
-import com.supervision.service.MedicalRecordService;
-import com.supervision.service.ProcessMedicalService;
-import com.supervision.service.ProcessService;
-import com.supervision.vo.ask.ProcessMedicalResVo;
+import com.supervision.model.User;
+import com.supervision.service.*;
+import com.supervision.vo.ask.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 
 @Service
 @RequiredArgsConstructor
@@ -21,6 +25,14 @@ public class MedicalRecordServiceImpl implements MedicalRecordService {
 
     private final ProcessService processService;
 
+    private final DiagnosisPrimaryService diagnosisPrimaryService;
+
+    private final DiagnosisPhysicalRecordService diagnosisPhysicalRecordService;
+
+    private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService;
+
+    private final UserService userService;
+
     @Override
     public boolean saveMedicalRecord(ProcessMedical processMedical) {
 
@@ -45,6 +57,42 @@ public class MedicalRecordServiceImpl implements MedicalRecordService {
         return processMedicalService.updateById(processMedical);
     }
 
+    @Override
+    public ProcessMedicalViewDetailResVo queryViewDetail(String processId) {
+
+        Assert.notEmpty(processId,"流程id不能为空");
+
+        // 1.获取电子病例基本信息
+        ProcessMedicalResVo processMedicalResVo = this.findByProcessId(processId);
+        if (Objects.isNull(processMedicalResVo)){
+            return null;
+        }
+        ProcessMedicalViewDetailResVo resultVo = BeanUtil.toBean(processMedicalResVo, ProcessMedicalViewDetailResVo.class);
+
+        // 2. 获取初步诊断疾病信息
+        List<DiagnosisPrimaryVO> diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId);
+        resultVo.setPrimaryDiseaseNameList(
+                diagnosisPrimaryVOS.stream().map(DiagnosisPrimaryVO::getPrimaryDiseaseName).distinct().collect(Collectors.toList()));
+
+        // 3. 获取检查项目信息
+        //  3.1 体格检查
+        List<AskPhysicalHistoryResVO> askPhysicalHistoryResVOS = diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId);
+        resultVo.setPhysicalDiagnosisNameList(
+                askPhysicalHistoryResVOS.stream().map(AskPhysicalHistoryResVO::getToolName).distinct().collect(Collectors.toList()));
+        //  3.2 辅助检查
+        List<AskAncillaryHistoryResVO> askAncillaryHistoryResVOS = diagnosisAncillaryRecordService.queryAncillaryRecord(processId);
+        resultVo.setAncillaryDiagnosisNameList(
+                askAncillaryHistoryResVOS.stream().map(AskAncillaryHistoryResVO::getItemName).distinct().collect(Collectors.toList()));
+
+        // 4. 获取用户姓名
+        User user = userService.getById(processMedicalResVo.getUserId());
+        if (Objects.nonNull(user)){
+            resultVo.setUserName(user.getName());
+        }
+
+        return resultVo;
+    }
+
     private void saveAssert(ProcessMedical processMedical){
         Assert.notEmpty(processMedical.getProcessId(),"流程id不为空");