diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java
index 28bb9b77..b5e114bb 100644
--- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java
@@ -1,7 +1,12 @@
 package com.supervision.manage.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.supervision.dto.CommonDictTreeDTO;
+import com.supervision.manage.pojo.vo.MedicalRecCheckResVO;
+import com.supervision.manage.pojo.vo.MedicalRecInfoVO;
 import com.supervision.manage.pojo.vo.MedicalRecManageVO;
+import com.supervision.manage.pojo.vo.MedicalRecQaVO;
+import com.supervision.service.CommonDicService;
 import com.supervision.vo.manage.MedicalRecPageResVO;
 import com.supervision.manage.service.MedicalRecManageService;
 import com.supervision.model.Disease;
@@ -43,6 +48,12 @@ public class MedicalRecManageController {
         medicalRecManageService.createMedicalRec(reqVO);
     }
 
+    @ApiOperation("创建病历时,应答策略查询问题(目前只支持单一疾病)")
+    @GetMapping("queryQuestionListByCreat")
+    public List<MedicalRecQaVO> queryQuestionListByCreat(String diseaseId) {
+        return medicalRecManageService.queryQuestionListByCreat(diseaseId);
+    }
+
     @ApiOperation("修改病历")
     @PostMapping("modifyMedicalRec")
     public void modifyMedicalRec(@RequestBody MedicalRecManageVO reqVO) {
@@ -51,9 +62,16 @@ public class MedicalRecManageController {
 
     @ApiOperation("查询病例详细信息")
     @GetMapping("queryMedicalRecInfo")
-    public void queryMedicalRecInfo(String id) {
+    public MedicalRecInfoVO queryMedicalRecInfo(String id) {
+        return medicalRecManageService.queryMedicalRecInfo(id);
+    }
 
+    @ApiOperation("删除病历")
+    @GetMapping("deleteMedicalRec")
+    public void deleteMedicalRec(String id) {
+        medicalRecManageService.deleteMedicalRec(id);
     }
 
 
+
 }
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java
new file mode 100644
index 00000000..27b31272
--- /dev/null
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java
@@ -0,0 +1,34 @@
+package com.supervision.manage.pojo.vo;
+
+import lombok.Data;
+
+/**
+ * 病历检查项
+ */
+@Data
+public class MedicalRecCheckResVO {
+
+    private String name;
+
+    private String location;
+
+    /**
+     * 是否初步诊断依据(0否1是)
+     */
+    private Integer isPrimarilyDiagnosisCriteria;
+
+    /**
+     * 是否必查-初步诊断依据(0否1是)
+     */
+    private Integer requireCheck;
+
+    /**
+     * 是否是正式诊断依据(0否1是)
+     */
+    private Integer basisConfirm;
+
+    /**
+     * 是否是鉴别依据(0否1是)
+     */
+    private Integer basisIdentification;
+}
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java
new file mode 100644
index 00000000..34fab493
--- /dev/null
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java
@@ -0,0 +1,28 @@
+package com.supervision.manage.pojo.vo;
+
+import com.supervision.model.AskPatientAnswer;
+import com.supervision.model.MedicalRec;
+import com.supervision.model.Patient;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "病历管理详细信息", parent = MedicalRecManageVO.class)
+public class MedicalRecInfoVO extends MedicalRecManageVO {
+
+    @ApiModelProperty("辅助检查")
+    private List<MedicalRecCheckResVO> ancillaryList;
+
+    @ApiModelProperty("体格检查")
+    private List<MedicalRecCheckResVO> physicalList;
+
+    @ApiModelProperty("处置计划列表")
+    private List<MedicalRecTreatmentPlanResVO> treatmentPlanList;
+
+}
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java
index fa510a8f..55f24641 100644
--- a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java
@@ -24,6 +24,6 @@ public class MedicalRecManageVO extends MedicalRec {
     private String diseaseId;
 
     @ApiModelProperty("step:4 应答策略")
-    private List<AskPatientAnswer> qaList;
+    private List<MedicalRecQaVO> qaList;
 
 }
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java
new file mode 100644
index 00000000..6bf4dcf1
--- /dev/null
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java
@@ -0,0 +1,37 @@
+package com.supervision.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MedicalRecQaVO {
+
+    @ApiModelProperty("本条问答ID,对应vp_ask_patient_answer表ID,更新必填")
+    private String id;
+
+    /**
+     * 问题库问题ID
+     */
+    @ApiModelProperty(" 问题库问题ID,新增更新时必填")
+    private String libraryQuestionId;
+
+    @ApiModelProperty("问题,新增更新时不需要")
+    private List<String> questionList;
+
+    @ApiModelProperty("字典ID,新增更新时不需要")
+    private Long dictId;
+
+    @ApiModelProperty("问题类目,新增更新时不需要")
+    private String dictNamePath;
+
+    @ApiModelProperty("默认回答,新增更新时不需要")
+    private String defaultAnswer;
+
+    @ApiModelProperty("针对病例的特定回答,新增更新时必填")
+    private String medicalRecAnswer;
+
+
+
+}
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java
new file mode 100644
index 00000000..86ba0fd7
--- /dev/null
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java
@@ -0,0 +1,12 @@
+package com.supervision.manage.pojo.vo;
+
+import lombok.Data;
+
+/**
+ * 处置计划项
+ */
+@Data
+public class MedicalRecTreatmentPlanResVO {
+
+
+}
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java
index d9b05b76..f3c867ae 100644
--- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java
@@ -1,7 +1,9 @@
 package com.supervision.manage.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.supervision.manage.pojo.vo.MedicalRecInfoVO;
 import com.supervision.manage.pojo.vo.MedicalRecManageVO;
+import com.supervision.manage.pojo.vo.MedicalRecQaVO;
 import com.supervision.vo.manage.MedicalRecPageResVO;
 import com.supervision.model.Disease;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -16,5 +18,11 @@ public interface MedicalRecManageService {
 
     void createMedicalRec(MedicalRecManageVO reqVO);
 
+    List<MedicalRecQaVO> queryQuestionListByCreat(String diseaseId);
+
     void modifyMedicalRec(MedicalRecManageVO reqVO);
+
+    MedicalRecInfoVO queryMedicalRecInfo(String id);
+
+    void deleteMedicalRec(String id);
 }
diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java
index 33a80e3e..2fec183e 100644
--- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java
+++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java
@@ -2,26 +2,24 @@ package com.supervision.manage.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.supervision.exception.BusinessException;
+import com.supervision.manage.pojo.vo.MedicalRecInfoVO;
 import com.supervision.manage.pojo.vo.MedicalRecManageVO;
+import com.supervision.manage.pojo.vo.MedicalRecQaVO;
 import com.supervision.model.*;
-import com.supervision.service.AskPatientAnswerService;
+import com.supervision.service.*;
 import com.supervision.vo.manage.MedicalRecPageResVO;
 import com.supervision.manage.service.MedicalRecManageService;
-import com.supervision.service.DiseaseService;
-import com.supervision.service.MedicalRecService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -36,6 +34,14 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
 
     private final AskPatientAnswerService askPatientAnswerService;
 
+    private final PatientService patientService;
+
+    private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
+
+    private final CommonDicService commonDicService;
+
+    private final DiseaseQuestionService diseaseQuestionService;
+
     public List<Disease> queryDiseaseListByKeyWord(String keyword) {
         // 注意,这里不支持查询复杂疾病,如果需要支持复杂疾病,这里需要单独进行改造
         return diseaseService.lambdaQuery().eq(Disease::getDiseaseType, 0).like(Disease::getDiseaseName, keyword).list();
@@ -61,16 +67,53 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
         medicalRec.insert();
         // 这里生成一个新的编号(首先去数据库里面查询编号,然后用最大的编号+1)(可能存在并发修改导致编码重复问题,不是重点,等有问题再说)
         medicalRecService.updateMedicalRecNo("QL", "男".equals(patient.getGender()) ? "M" : "F", medicalRec.getId());
-        // 然后保存病历编码
-        List<AskPatientAnswer> qaList = reqVO.getQaList();
-        for (AskPatientAnswer askPatientAnswer : qaList) {
-            if (StrUtil.isBlank(askPatientAnswer.getLibraryQuestionId())) {
+        // 然后保存病历对应的问题
+        List<MedicalRecQaVO> qaList = reqVO.getQaList();
+        for (MedicalRecQaVO medicalRecQaVO : qaList) {
+            if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) {
                 throw new BusinessException("问题ID不能为空");
             }
+            AskPatientAnswer askPatientAnswer = new AskPatientAnswer();
+            askPatientAnswer.setLibraryQuestionId(medicalRecQaVO.getLibraryQuestionId());
+            askPatientAnswer.setAnswer(CollUtil.newArrayList(medicalRecQaVO.getMedicalRecAnswer()));
             askPatientAnswer.setMedicalId(medicalRec.getId());
             askPatientAnswer.setPatientId(patient.getId());
+            askPatientAnswer.insert();
         }
-        askPatientAnswerService.saveBatch(qaList);
+    }
+
+    @Override
+    public List<MedicalRecQaVO> queryQuestionListByCreat(String diseaseId) {
+        // 去vp_disease_question获取
+        List<DiseaseQuestion> list = diseaseQuestionService.lambdaQuery().eq(DiseaseQuestion::getDiseaseId, diseaseId).list();
+        if (CollUtil.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        // 获取问题
+        Set<String> libraryQuestionIdSet = list.stream().map(DiseaseQuestion::getQuestionId).collect(Collectors.toSet());
+        List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(libraryQuestionIdSet);
+        Map<String, AskTemplateQuestionLibrary> askQuestionMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, Function.identity()));
+        // 获取字典
+        Set<Long> dictIdSet = askTemplateQuestionLibraryList.stream().map(AskTemplateQuestionLibrary::getDictId).collect(Collectors.toSet());
+        Map<Long, CommonDic> dictMap = commonDicService.listByIds(dictIdSet).stream().collect(Collectors.toMap(CommonDic::getId, Function.identity()));
+        List<MedicalRecQaVO> result = new ArrayList<>();
+        for (DiseaseQuestion diseaseQuestion : list) {
+            AskTemplateQuestionLibrary questionLibrary = askQuestionMap.get(diseaseQuestion.getQuestionId());
+            if (ObjectUtil.isNotEmpty(questionLibrary)) {
+                MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO();
+                medicalRecQaVO.setLibraryQuestionId(diseaseQuestion.getQuestionId());
+                // 问题
+                medicalRecQaVO.setQuestionList(questionLibrary.getQuestion());
+                // 类目
+                medicalRecQaVO.setDictId(questionLibrary.getDictId());
+                // 类目名称
+                medicalRecQaVO.setDictNamePath(dictMap.getOrDefault(questionLibrary.getDictId(), new CommonDic()).getNameZhPath());
+                // 默认回答
+                medicalRecQaVO.setDefaultAnswer(CollUtil.getFirst(questionLibrary.getDefaultAnswer()));
+                result.add(medicalRecQaVO);
+            }
+        }
+        return result;
     }
 
     @Override
@@ -88,16 +131,92 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
         // 首先找到数据库中的问答
         List<AskPatientAnswer> existQAList = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRec.getId()).list();
         Map<String, AskPatientAnswer> existQAMap = existQAList.stream().collect(Collectors.toMap(AskPatientAnswer::getId, Function.identity()));
-        for (AskPatientAnswer askPatientAnswer : reqVO.getQaList()) {
-            if (StrUtil.isNotBlank(askPatientAnswer.getId())) {
-                // 存在的移除掉
-                existQAMap.remove(askPatientAnswer.getId());
-                askPatientAnswer.updateById();
+
+        for (MedicalRecQaVO medicalRecQaVO : reqVO.getQaList()) {
+            if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) {
+                throw new BusinessException("问题ID不能为空");
+            }
+            if (StrUtil.isNotBlank(medicalRecQaVO.getId())) {
+                // 存在的从Map中移除掉
+                AskPatientAnswer existAnswer = existQAMap.remove(medicalRecQaVO.getId());
+                // 然后进行更新
+                existAnswer.setAnswer(CollUtil.newArrayList(medicalRecQaVO.getMedicalRecAnswer()));
+                existAnswer.updateById();
             } else {
+                AskPatientAnswer askPatientAnswer = new AskPatientAnswer();
+                askPatientAnswer.setLibraryQuestionId(medicalRecQaVO.getLibraryQuestionId());
+                askPatientAnswer.setAnswer(CollUtil.newArrayList(medicalRecQaVO.getMedicalRecAnswer()));
+                askPatientAnswer.setMedicalId(medicalRec.getId());
+                askPatientAnswer.setPatientId(patient.getId());
                 askPatientAnswer.insert();
             }
         }
         // 将删除的移除
         askPatientAnswerService.removeByIds(existQAMap.values().stream().map(AskPatientAnswer::getId).collect(Collectors.toSet()));
     }
+
+    @Override
+    public MedicalRecInfoVO queryMedicalRecInfo(String id) {
+        MedicalRec medicalRec = medicalRecService.getById(id);
+        MedicalRecInfoVO medicalRecInfoVO = BeanUtil.toBean(medicalRec, MedicalRecInfoVO.class);
+        // 病人基本信息
+        medicalRecInfoVO.setPatient(patientService.getById(medicalRec.getPatientId()));
+        // 辅助检查
+//        medicalRecInfoVO.setAncillaryList();
+        // 体格检查
+//        medicalRecInfoVO.setPhysicalList();
+        // 处置计划
+//        medicalRecInfoVO.setTreatmentPlanList();
+        // 问答策略
+        medicalRecInfoVO.setQaList(queryMedicalRecQaInfo(id));
+        return medicalRecInfoVO;
+    }
+
+    /**
+     * 查询病例已经配置的的问答信息
+     */
+    private List<MedicalRecQaVO> queryMedicalRecQaInfo(String medicalRecId) {
+        List<AskPatientAnswer> list = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRecId).list();
+        List<MedicalRecQaVO> medicalRecQaList = list.stream().map(e -> {
+            MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO();
+            medicalRecQaVO.setId(e.getId());
+            medicalRecQaVO.setLibraryQuestionId(e.getLibraryQuestionId());
+
+            // 病历的回答
+            medicalRecQaVO.setMedicalRecAnswer(CollUtil.getFirst(e.getAnswer()));
+            return medicalRecQaVO;
+        }).collect(Collectors.toList());
+        // 开始构建问题
+        if (CollUtil.isNotEmpty(medicalRecQaList)) {
+            // 获取问题
+            Set<String> libraryQuestionIdSet = medicalRecQaList.stream().map(MedicalRecQaVO::getLibraryQuestionId).collect(Collectors.toSet());
+            List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(libraryQuestionIdSet);
+            Map<String, AskTemplateQuestionLibrary> askQuestionMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, Function.identity()));
+            // 获取字典
+            Set<Long> dictIdSet = askTemplateQuestionLibraryList.stream().map(AskTemplateQuestionLibrary::getDictId).collect(Collectors.toSet());
+            Map<Long, CommonDic> dictMap = commonDicService.listByIds(dictIdSet).stream().collect(Collectors.toMap(CommonDic::getId, Function.identity()));
+
+            for (MedicalRecQaVO medicalRecQaVO : medicalRecQaList) {
+                AskTemplateQuestionLibrary questionLibrary = askQuestionMap.get(medicalRecQaVO.getLibraryQuestionId());
+                if (ObjectUtil.isNotEmpty(questionLibrary)) {
+                    // 问题
+                    medicalRecQaVO.setQuestionList(questionLibrary.getQuestion());
+                    // 类目
+                    medicalRecQaVO.setDictId(questionLibrary.getDictId());
+                    // 类目名称
+                    medicalRecQaVO.setDictNamePath(dictMap.getOrDefault(questionLibrary.getDictId(), new CommonDic()).getNameZhPath());
+                    // 默认回答
+                    medicalRecQaVO.setDefaultAnswer(CollUtil.getFirst(questionLibrary.getDefaultAnswer()));
+                }
+            }
+        }
+        return medicalRecQaList;
+
+    }
+
+    @Override
+    public void deleteMedicalRec(String id) {
+        medicalRecService.removeById(id);
+        // 删除病历时,如果是复合疾病,需要将疾病也删除,现在没有做复合疾病,所以先不管
+    }
 }
diff --git a/virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java b/virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java
new file mode 100644
index 00000000..89fb534a
--- /dev/null
+++ b/virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java
@@ -0,0 +1,18 @@
+package com.supervision.dto;
+
+import com.supervision.model.CommonDic;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class CommonDictTreeDTO extends CommonDic {
+
+    /**
+     * 该节点下的子节点
+     */
+    private List<CommonDictTreeDTO> childDictTreeList;
+
+}
diff --git a/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java b/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java
index 0b7f7277..c8f81267 100644
--- a/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java
+++ b/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java
@@ -24,6 +24,11 @@ public class AskTemplateQuestionLibrary implements Serializable {
     @TableId
     private String id;
 
+    /**
+     * 字典值ID(关联common_dict表ID)
+     */
+    private Long dictId;
+
     /**
      * 编码
      */
diff --git a/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java b/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java
index e7f2aba0..6c639b66 100644
--- a/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java
+++ b/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java
@@ -31,7 +31,7 @@ public class CommonDic extends Model<CommonDic> implements Serializable {
     /**
      * 中文名
      */
-    private String nameCh;
+    private String nameZh;
 
     /**
      * 英文名
@@ -46,13 +46,18 @@ public class CommonDic extends Model<CommonDic> implements Serializable {
     /**
      * 父级id
      */
-    private String parentId;
+    private Long parentId;
 
     /**
      * 优先级,用来做排序等操作
      */
     private Integer priority;
 
+    /**
+     * 中文路径
+     */
+    private String nameZhPath;
+
     /**
      * 说明
      */
diff --git a/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java b/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java
index 84a26925..c941b28b 100644
--- a/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java
+++ b/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java
@@ -1,8 +1,11 @@
 package com.supervision.service;
 
+import com.supervision.dto.CommonDictTreeDTO;
 import com.supervision.model.CommonDic;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service
@@ -10,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 */
 public interface CommonDicService extends IService<CommonDic> {
 
+    /**
+     * 根据group_code构建对应的字典树
+     * @param groupCode 分组ID
+     */
+    List<CommonDictTreeDTO> queryCommonDictTree(String groupCode);
+
 }
diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java
index c3624f12..a10aee86 100644
--- a/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java
+++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java
@@ -1,19 +1,58 @@
 package com.supervision.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.supervision.dto.CommonDictTreeDTO;
 import com.supervision.model.CommonDic;
 import com.supervision.service.CommonDicService;
 import com.supervision.mapper.CommonDicMapper;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
 /**
-* @author Administrator
-* @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service实现
-* @createDate 2023-11-23 10:52:22
-*/
+ * @author Administrator
+ * @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service实现
+ * @createDate 2023-11-23 10:52:22
+ */
 @Service
 public class CommonDicServiceImpl extends ServiceImpl<CommonDicMapper, CommonDic>
-    implements CommonDicService{
+        implements CommonDicService {
+
+    @Override
+    public List<CommonDictTreeDTO> queryCommonDictTree(String groupCode) {
+        List<CommonDic> list = super.lambdaQuery().eq(CommonDic::getGroupCode, groupCode).list();
+        Map<Long, List<CommonDic>> commonDicParentIdMap = list.stream().filter(e -> ObjectUtil.isNotNull(e.getParentId()))
+                .collect(Collectors.groupingBy(CommonDic::getParentId));
+        // 首先构建第一层节点
+        List<CommonDictTreeDTO> topList = list.stream().filter(e -> ObjectUtil.isNull(e.getParentId()))
+                .map(node -> BeanUtil.toBean(node, CommonDictTreeDTO.class)).collect(Collectors.toList());
+        // 递归构建树
+        recursionBuildTree(commonDicParentIdMap, topList);
+        return topList;
+    }
+
+    private void recursionBuildTree(Map<Long, List<CommonDic>> commonDicParentIdMap, List<CommonDictTreeDTO> sourceList) {
+        for (CommonDictTreeDTO parentNode : sourceList) {
+            List<CommonDic> commonDicList = commonDicParentIdMap.getOrDefault(parentNode.getId(), new ArrayList<>());
+            List<CommonDictTreeDTO> childNodeList = new ArrayList<>();
+
+            for (CommonDic commonDic : commonDicList) {
+                CommonDictTreeDTO childNode = BeanUtil.toBean(commonDic, CommonDictTreeDTO.class);
+                childNodeList.add(childNode);
+            }
+            parentNode.setChildDictTreeList(childNodeList);
+            // 继续迭代生成子集
+            recursionBuildTree(commonDicParentIdMap, childNodeList);
+        }
+    }
 
 }
 
diff --git a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml
index 95cd22a1..ed00334f 100644
--- a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml
@@ -6,6 +6,7 @@
 
     <resultMap id="BaseResultMap" type="com.supervision.model.AskTemplateQuestionLibrary">
         <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="dictId" column="dict_id" jdbcType="BIGINT"/>
         <result property="code" column="code" jdbcType="VARCHAR"/>
         <result property="description" column="description" jdbcType="VARCHAR"/>
         <result property="question" column="question" jdbcType="ARRAY"
@@ -20,7 +21,7 @@
 
     <sql id="Base_Column_List">
         id
-        ,code,description,
+        ,dict_id,code,description,
         question,default_answer,create_user_id,
         create_time,update_user_id,update_time
     </sql>
diff --git a/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml b/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml
index fa89bf5a..63810666 100644
--- a/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml
@@ -5,23 +5,25 @@
 <mapper namespace="com.supervision.mapper.CommonDicMapper">
 
     <resultMap id="BaseResultMap" type="com.supervision.model.CommonDic">
-            <id property="id" column="id" jdbcType="BIGINT"/>
-            <result property="code" column="code" jdbcType="VARCHAR"/>
-            <result property="nameCh" column="name_ch" jdbcType="VARCHAR"/>
-            <result property="nameEn" column="name_en" jdbcType="VARCHAR"/>
-            <result property="groupCode" column="group_code" jdbcType="VARCHAR"/>
-            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
-            <result property="priority" column="priority" jdbcType="INTEGER"/>
-            <result property="description" column="description" jdbcType="VARCHAR"/>
-            <result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-            <result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
-            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <id property="id" column="id" jdbcType="BIGINT"/>
+        <result property="code" column="code" jdbcType="VARCHAR"/>
+        <result property="nameZh" column="name_zh" jdbcType="VARCHAR"/>
+        <result property="nameEn" column="name_en" jdbcType="VARCHAR"/>
+        <result property="groupCode" column="group_code" jdbcType="VARCHAR"/>
+        <result property="parentId" column="parent_id" jdbcType="BIGINT"/>
+        <result property="priority" column="priority" jdbcType="INTEGER"/>
+        <result property="nameZhPath" column="name_zh_path" jdbcType="VARCHAR"/>
+        <result property="description" column="description" jdbcType="VARCHAR"/>
+        <result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <sql id="Base_Column_List">
-        id,code,name_ch,
-        name_en,group_code,parent_id,
+        id
+        ,code,name_ch,
+        name_en,group_code,parent_id,name_zh_path,
         priority,description,create_user_id,
         create_time,update_user_id,update_time
     </sql>