From c78b90fe4ae20920b3fef81f392f735fc0195068 Mon Sep 17 00:00:00 2001
From: liu <liujiatong112@163.com>
Date: Wed, 13 Dec 2023 15:39:02 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/AskPrimaryController.java      |  5 +-
 .../com/supervision/pojo/vo/ChooseNode.java   | 11 +++
 .../pojo/vo/RecordForPrimaryChooseVO.java     | 21 +++++
 .../pojo/vo/SaveDiagnosisPrimaryReqVO.java    |  6 +-
 .../service/AskPrimaryService.java            |  4 +-
 .../service/impl/AskPrimaryServiceImpl.java   | 84 +++++++++++++++++--
 6 files changed, 121 insertions(+), 10 deletions(-)
 create mode 100644 virtual-patient-web/src/main/java/com/supervision/pojo/vo/ChooseNode.java
 create mode 100644 virtual-patient-web/src/main/java/com/supervision/pojo/vo/RecordForPrimaryChooseVO.java

diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java
index 352f5478..03f58540 100644
--- a/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java
+++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java
@@ -4,6 +4,7 @@ package com.supervision.controller;
 import com.supervision.model.DiagnosisPrimary;
 import com.supervision.model.Disease;
 import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO;
+import com.supervision.pojo.vo.RecordForPrimaryChooseVO;
 import com.supervision.pojo.vo.SaveDiagnosisPrimaryReqVO;
 import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO;
 import com.supervision.service.AskPrimaryService;
@@ -50,8 +51,8 @@ public class AskPrimaryController {
 
     @ApiOperation("查询选择初步诊断关联的问诊记录")
     @PostMapping("queryRecordForPrimaryChoose")
-    public void queryRecordForPrimaryChoose(String processId){
-
+    public RecordForPrimaryChooseVO queryRecordForPrimaryChoose(String processId){
+        return askPrimaryService.queryRecordForPrimaryChoose(processId);
     }
 
     @ApiOperation("确认诊断时,修改初步诊断的信息")
diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/ChooseNode.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/ChooseNode.java
new file mode 100644
index 00000000..2d805f5a
--- /dev/null
+++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/ChooseNode.java
@@ -0,0 +1,11 @@
+package com.supervision.pojo.vo;
+
+import lombok.Data;
+
+@Data
+public class ChooseNode {
+
+    private String nodeId;
+
+    private String name;
+}
diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/RecordForPrimaryChooseVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/RecordForPrimaryChooseVO.java
new file mode 100644
index 00000000..9941ff46
--- /dev/null
+++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/RecordForPrimaryChooseVO.java
@@ -0,0 +1,21 @@
+package com.supervision.pojo.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel
+public class RecordForPrimaryChooseVO {
+
+    @ApiModelProperty("问诊ID")
+    private List<ChooseNode> askList;
+
+    @ApiModelProperty("辅助检查ID")
+    private List<ChooseNode> ancillaryList;
+
+    @ApiModelProperty("体格检查ID")
+    private List<ChooseNode> physicalList;
+}
diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java
index d9b30580..925a8090 100644
--- a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java
+++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java
@@ -2,6 +2,8 @@ package com.supervision.pojo.vo;
 
 import com.supervision.model.DiagnosisPrimary;
 import com.supervision.model.DiagnosisPrimaryRelation;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -9,10 +11,12 @@ import java.util.List;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
+@ApiModel(parent = DiagnosisPrimary.class)
 public class SaveDiagnosisPrimaryReqVO extends DiagnosisPrimary {
 
     // 关联的初步诊断列表
-    private List<DiagnosisPrimaryRelation> primaryRecordList;
+    @ApiModelProperty("关联的初步诊断列表")
+    private RecordForPrimaryChooseVO choose;
 
 
 }
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java b/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java
index 4ae2c7c3..a30ffe77 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java
@@ -3,11 +3,11 @@ package com.supervision.service;
 import com.supervision.model.DiagnosisPrimary;
 import com.supervision.model.Disease;
 import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO;
+import com.supervision.pojo.vo.RecordForPrimaryChooseVO;
 import com.supervision.pojo.vo.SaveDiagnosisPrimaryReqVO;
 import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO;
 import com.supervision.vo.ask.DiagnosisPrimaryVO;
 import com.supervision.vo.ask.ModifyPrimaryDiseaseInfoReqVO;
-import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -21,6 +21,8 @@ public interface AskPrimaryService {
 
     void savePrimary(SaveDiagnosisPrimaryReqVO reqVO);
 
+    RecordForPrimaryChooseVO queryRecordForPrimaryChoose(String processId);
+
     void updatePrimaryByConfirm(DiagnosisPrimary reqVO);
 
     void deletePrimary(String id);
diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java
index ad71dda1..81ae8a61 100644
--- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java
+++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java
@@ -6,13 +6,13 @@ import cn.hutool.core.util.StrUtil;
 import com.supervision.exception.BusinessException;
 import com.supervision.model.*;
 import com.supervision.model.Process;
+import com.supervision.pojo.vo.ChooseNode;
 import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO;
+import com.supervision.pojo.vo.RecordForPrimaryChooseVO;
 import com.supervision.pojo.vo.SaveDiagnosisPrimaryReqVO;
-import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO;
+import com.supervision.vo.ask.*;
 import com.supervision.service.*;
 import com.supervision.util.UserUtil;
-import com.supervision.vo.ask.DiagnosisPrimaryVO;
-import com.supervision.vo.ask.ModifyPrimaryDiseaseInfoReqVO;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -62,9 +62,81 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
         diagnosisPrimary.setCreateUserId(UserUtil.getUser().getId());
         diagnosisPrimaryService.save(diagnosisPrimary);
         // 然后开始保存初步诊断关键的诊断
-        List<DiagnosisPrimaryRelation> primaryRecordList = reqVO.getPrimaryRecordList();
-        primaryRecordList.forEach(e -> e.setPrimaryId(diagnosisPrimary.getId()));
-        diagnosisPrimaryRelationService.saveBatch(primaryRecordList);
+        RecordForPrimaryChooseVO choose = reqVO.getChoose();
+        if (CollUtil.isNotEmpty(choose.getAskList())){
+            List<DiagnosisPrimaryRelation> askRelationList = choose.getAskList().stream().map(e -> {
+                DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation();
+                relation.setProcessId(diagnosisPrimary.getProcessId());
+                relation.setPrimaryId(diagnosisPrimary.getId());
+                relation.setType(1);
+                relation.setRelationId(e.getNodeId());
+                relation.setCreateUserId(UserUtil.getUser().getId());
+                return relation;
+            }).collect(Collectors.toList());
+            diagnosisPrimaryRelationService.saveBatch(askRelationList);
+
+        }
+
+        if (CollUtil.isNotEmpty(choose.getPhysicalList())){
+            List<DiagnosisPrimaryRelation> physicalRelationList = choose.getPhysicalList().stream().map(e -> {
+                DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation();
+                relation.setProcessId(diagnosisPrimary.getProcessId());
+                relation.setPrimaryId(diagnosisPrimary.getId());
+                relation.setType(2);
+                relation.setRelationId(e.getNodeId());
+                relation.setCreateUserId(UserUtil.getUser().getId());
+                return relation;
+            }).collect(Collectors.toList());
+            diagnosisPrimaryRelationService.saveBatch(physicalRelationList);
+
+        }
+
+        if (CollUtil.isNotEmpty(choose.getAncillaryList())){
+            List<DiagnosisPrimaryRelation> ancillaryRelationList = choose.getAncillaryList().stream().map(e -> {
+                DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation();
+                relation.setProcessId(diagnosisPrimary.getProcessId());
+                relation.setPrimaryId(diagnosisPrimary.getId());
+                relation.setType(3);
+                relation.setRelationId(e.getNodeId());
+                relation.setCreateUserId(UserUtil.getUser().getId());
+                return relation;
+            }).collect(Collectors.toList());
+            diagnosisPrimaryRelationService.saveBatch(ancillaryRelationList);
+
+        }
+    }
+
+    @Override
+    public RecordForPrimaryChooseVO queryRecordForPrimaryChoose(String processId) {
+        RecordForPrimaryChooseVO resVO = new RecordForPrimaryChooseVO();
+        // 查询语音问诊记录
+        List<DiagnosisQaRecord> list = diagnosisQaRecordService.lambdaQuery().eq(DiagnosisQaRecord::getProcessId, processId).orderByAsc(DiagnosisQaRecord::getCreateTime).list();
+        List<ChooseNode> askRecordList = list.stream().map(e -> {
+            ChooseNode chooseNode = new ChooseNode();
+            chooseNode.setNodeId(e.getId());
+            chooseNode.setName(e.getQuestion());
+            return chooseNode;
+
+        }).collect(Collectors.toList());
+        resVO.setAskList(askRecordList);
+        // 查询体格检查记录
+        List<AskPhysicalHistoryResVO> physicalHistoryList = diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId);
+        List<ChooseNode> physicalList = physicalHistoryList.stream().map(e -> {
+            ChooseNode chooseNode = new ChooseNode();
+            chooseNode.setNodeId(e.getId());
+            chooseNode.setName(StrUtil.join(" | ", e.getToolName(), e.getLocationName()));
+            return chooseNode;
+        }).collect(Collectors.toList());
+        resVO.setPhysicalList(physicalList);
+        List<AskAncillaryHistoryResVO> ancillaryHistoryList = diagnosisAncillaryRecordService.queryAncillaryRecord(processId);
+        List<ChooseNode> ancillaryList = ancillaryHistoryList.stream().map(e -> {
+            ChooseNode chooseNode = new ChooseNode();
+            chooseNode.setNodeId(e.getId());
+            chooseNode.setName(e.getItemName());
+            return chooseNode;
+        }).collect(Collectors.toList());
+        resVO.setAncillaryList(ancillaryList);
+        return resVO;
     }
 
     @Override