diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java
index 04f82450..ae7825f3 100644
--- a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java
+++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java
@@ -1,8 +1,10 @@
 package com.supervision.vo.ask;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import java.util.List;
 
 @Data
 public class ModifyPrimaryDiseaseInfoReqVO {
@@ -11,4 +13,13 @@ public class ModifyPrimaryDiseaseInfoReqVO {
     private String id;
 
     private String patientDiseaseInfo;
+
+    @ApiModelProperty("问诊ID列表")
+    private List<String> askIdList;
+
+    @ApiModelProperty("辅助检查ID列表")
+    private List<String> ancillaryIdList;
+
+    @ApiModelProperty("体格检查ID列表")
+    private List<String> physicalIdList;
 }
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 c2c9dc8d..90cfd53a 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
@@ -10,6 +10,7 @@ import com.supervision.pojo.vo.*;
 import com.supervision.vo.ask.*;
 import com.supervision.service.*;
 import com.supervision.util.UserUtil;
+import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -48,9 +49,9 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
                 if (CollUtil.isNotEmpty(relationList)) {
                     Map<Integer, List<String>> relationIdMap = relationList.stream()
                             .collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getType, Collectors.mapping(DiagnosisPrimaryRelation::getRelationId, Collectors.toList())));
-                    diagnosisPrimaryVO.setAskIdList(relationIdMap.get(1));
-                    diagnosisPrimaryVO.setPhysicalIdList(relationIdMap.get(2));
-                    diagnosisPrimaryVO.setAncillaryIdList(relationIdMap.get(3));
+                    diagnosisPrimaryVO.setAskIdList(Optional.ofNullable(relationIdMap.get(1)).orElseGet(ArrayList::new));
+                    diagnosisPrimaryVO.setPhysicalIdList(Optional.ofNullable(relationIdMap.get(2)).orElseGet(ArrayList::new));
+                    diagnosisPrimaryVO.setAncillaryIdList(Optional.ofNullable(relationIdMap.get(3)).orElseGet(ArrayList::new));
                 }
             }
         }
@@ -63,9 +64,37 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void modifyPrimaryDiseaseInfo(ModifyPrimaryDiseaseInfoReqVO reqVO) {
+        DiagnosisPrimary diagnosisPrimary = diagnosisPrimaryService.getById(reqVO.getId());
         diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getPatientDiseaseInfo, reqVO.getPatientDiseaseInfo())
                 .eq(DiagnosisPrimary::getId, reqVO.getId()).update();
+        // 然后这里保存初步诊断依据的修改
+        // 首先查到已经存在的列表
+        List<DiagnosisPrimaryRelation> list = diagnosisPrimaryRelationService.lambdaQuery().eq(DiagnosisPrimaryRelation::getPrimaryId, reqVO.getId()).list();
+        Map<Integer, List<DiagnosisPrimaryRelation>> groupByTypeMap = list.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getType));
+        // 保存问诊
+        List<DiagnosisPrimaryRelation> askExistList = groupByTypeMap.get(1);
+        if (CollUtil.isNotEmpty(reqVO.getAskIdList())) {
+            List<String> existIdList = askExistList.stream().map(DiagnosisPrimaryRelation::getRelationId).collect(Collectors.toList());
+            List<String> newIdList = reqVO.getAskIdList().stream().filter(id ->!existIdList.contains(id)).collect(Collectors.toList());
+            saveDiagnosisPrimaryRelation(newIdList, diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 1);
+        }
+        // 保存体格检查
+        List<DiagnosisPrimaryRelation> physicalIdExistList = groupByTypeMap.get(2);
+        if (CollUtil.isNotEmpty(reqVO.getPhysicalIdList())) {
+            List<String> existIdList = physicalIdExistList.stream().map(DiagnosisPrimaryRelation::getRelationId).collect(Collectors.toList());
+            List<String> newIdList = reqVO.getPhysicalIdList().stream().filter(id ->!existIdList.contains(id)).collect(Collectors.toList());
+            saveDiagnosisPrimaryRelation(newIdList, diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 2);
+        }
+        // 保存辅助检查
+        List<DiagnosisPrimaryRelation> ancillaryExistList = groupByTypeMap.get(3);
+        if (CollUtil.isNotEmpty(reqVO.getAncillaryIdList())) {
+            List<String> existIdList = ancillaryExistList.stream().map(DiagnosisPrimaryRelation::getRelationId).collect(Collectors.toList());
+            List<String> newIdList = reqVO.getAncillaryIdList().stream().filter(id ->!existIdList.contains(id)).collect(Collectors.toList());
+            saveDiagnosisPrimaryRelation(newIdList, diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 3);
+        }
+
     }
 
     @Override
@@ -76,46 +105,24 @@ public class AskPrimaryServiceImpl implements AskPrimaryService {
         diagnosisPrimary.setCreateUserId(UserUtil.getUser().getId());
         diagnosisPrimaryService.save(diagnosisPrimary);
         // 然后开始保存初步诊断关键的诊断
-        if (CollUtil.isNotEmpty(reqVO.getAskIdList())) {
-            List<DiagnosisPrimaryRelation> askRelationList = reqVO.getAskIdList().stream().map(e -> {
-                DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation();
-                relation.setProcessId(diagnosisPrimary.getProcessId());
-                relation.setPrimaryId(diagnosisPrimary.getId());
-                relation.setType(1);
-                relation.setRelationId(e);
-                relation.setCreateUserId(UserUtil.getUser().getId());
-                return relation;
-            }).collect(Collectors.toList());
-            diagnosisPrimaryRelationService.saveBatch(askRelationList);
 
-        }
-
-        if (CollUtil.isNotEmpty(reqVO.getPhysicalIdList())) {
-            List<DiagnosisPrimaryRelation> physicalRelationList = reqVO.getPhysicalIdList().stream().map(e -> {
-                DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation();
-                relation.setProcessId(diagnosisPrimary.getProcessId());
-                relation.setPrimaryId(diagnosisPrimary.getId());
-                relation.setType(2);
-                relation.setRelationId(e);
-                relation.setCreateUserId(UserUtil.getUser().getId());
-                return relation;
-            }).collect(Collectors.toList());
-            diagnosisPrimaryRelationService.saveBatch(physicalRelationList);
-
-        }
+        saveDiagnosisPrimaryRelation(reqVO.getAskIdList(), diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 1);
+        saveDiagnosisPrimaryRelation(reqVO.getPhysicalIdList(), diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 2);
+        saveDiagnosisPrimaryRelation(reqVO.getAncillaryIdList(), diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 3);
+    }
 
-        if (CollUtil.isNotEmpty(reqVO.getAncillaryIdList())) {
-            List<DiagnosisPrimaryRelation> ancillaryRelationList = reqVO.getAncillaryIdList().stream().map(e -> {
+    private void saveDiagnosisPrimaryRelation(List<String> itemList, String processId, String primaryId, Integer type) {
+        if (CollUtil.isNotEmpty(itemList)) {
+            List<DiagnosisPrimaryRelation> ancillaryRelationList = itemList.stream().map(e -> {
                 DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation();
-                relation.setProcessId(diagnosisPrimary.getProcessId());
-                relation.setPrimaryId(diagnosisPrimary.getId());
-                relation.setType(3);
+                relation.setProcessId(processId);
+                relation.setPrimaryId(primaryId);
+                relation.setType(type);
                 relation.setRelationId(e);
                 relation.setCreateUserId(UserUtil.getUser().getId());
                 return relation;
             }).collect(Collectors.toList());
             diagnosisPrimaryRelationService.saveBatch(ancillaryRelationList);
-
         }
     }