diff --git a/src/main/java/com/luca/pilot/entity/PlanModule.java b/src/main/java/com/luca/pilot/entity/PlanModule.java
index 02c677af840dec299d4c3f3f30fa0aca03eaf5c0..405a747ab75d9026b2fe2b86272b3d824c0c5d60 100644
--- a/src/main/java/com/luca/pilot/entity/PlanModule.java
+++ b/src/main/java/com/luca/pilot/entity/PlanModule.java
@@ -4,7 +4,7 @@ import lombok.Data;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 @Data
-@Document(collection="plan_module")
+@Document(collection="plan_module_hj")
 public class PlanModule {
 
     private String key;
@@ -22,6 +22,7 @@ public class PlanModule {
      * plan
      */
     private String projectCode;
+    private Long siteId;
     private String projectName;
     private String siteName;
     private Long planId;
@@ -74,7 +75,7 @@ public class PlanModule {
     /**
      * 缁勮
      */
-    private String result;
+    private Object result;
     private String digitalModuleTableName;
 
     /**
diff --git a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java
index 80c907df565c7874a4150ada1bcc31a3fcc9e71c..188bce5e06b59d74e2778778e96d3f84d2f3c2ac 100644
--- a/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java
+++ b/src/main/java/com/luca/pilot/service/impl/PlanServiceImpl.java
@@ -99,7 +99,7 @@ public class PlanServiceImpl implements PlanService {
 
             Map<Long, String> relationNameMap = queryRelateMoudleName(planMoudleRelates);
 
-            Map<Long, Map<String, String>> resultMap = queryPlanTaskDetailResult(planTaskDetails);
+            Map<Long, Map<String, Object>> resultMap = queryPlanTaskDetailResult(planTaskDetails);
 
             Map<Long, Map<Long, Long>> digitalMedicalEventMap = queryDigitalMedicalEvent(planTaskDetails);
             Map<Long, Map<Long, String>> digitalMedicalTypeMap = queryDigitalMedicalType(planTaskDetails);
@@ -142,6 +142,7 @@ public class PlanServiceImpl implements PlanService {
                     }
                     if (Objects.nonNull(site)) {
                         planMoudle.setSiteName(site.getSiteName());
+                        planMoudle.setSiteId(site.getId());
                     }
 
                     if (Objects.nonNull(plan)) {
@@ -186,10 +187,10 @@ public class PlanServiceImpl implements PlanService {
                     }
 
                     if (MapUtil.isNotEmpty(resultMap)) {
-                        Map<String, String> planTaskDetailMap = resultMap.get(planTaskDetail.getId());
+                        Map<String, Object> planTaskDetailMap = resultMap.get(planTaskDetail.getId());
 
                         if (MapUtil.isNotEmpty(planTaskDetailMap)) {
-                            String result = planTaskDetailMap.get(String.valueOf(relate.getRelationId()));
+                            Object result = planTaskDetailMap.get(String.valueOf(relate.getRelationId()));
                             if (!StringUtils.isEmpty(result)) {
                                 planMoudle.setResult(result);
                             }
@@ -403,11 +404,11 @@ public class PlanServiceImpl implements PlanService {
         return map;
     }
 
-    private Map<Long, Map<String, String>> queryPlanTaskDetailResult(List<PlanTaskDetails> planTaskDetails) {
-        Map<Long, Map<String, String>> map = new HashMap<>();
-        Map<Long, Map<String, String>> scaleMap = queryScaleResult(planTaskDetails);
+    private Map<Long, Map<String, Object>> queryPlanTaskDetailResult(List<PlanTaskDetails> planTaskDetails) {
+        Map<Long, Map<String, Object>> map = new HashMap<>();
+        Map<Long, Map<String, Object>> scaleMap = queryScaleResult(planTaskDetails);
         map.putAll(scaleMap);
-        Map<Long, Map<String, String>> questonaireMap = queryQuestionaireResult(planTaskDetails);
+        Map<Long, Map<String, Object>> questonaireMap = queryQuestionaireResult(planTaskDetails);
 
         questonaireMap.forEach((k, v) -> {
             if (map.containsKey(k)) {
@@ -417,7 +418,7 @@ public class PlanServiceImpl implements PlanService {
             }
         });
 
-        Map<Long, Map<String, String>> crfMap = queryCrfResult(planTaskDetails);
+        Map<Long, Map<String, Object>> crfMap = queryCrfResult(planTaskDetails);
         crfMap.forEach((k, v) -> {
             if (map.containsKey(k)) {
                 map.get(k).putAll(v);
@@ -429,7 +430,7 @@ public class PlanServiceImpl implements PlanService {
         return map;
     }
 
-    private Map<Long, Map<String, String>> queryCrfResult(List<PlanTaskDetails> planTaskDetails) {
+    private Map<Long, Map<String, Object>> queryCrfResult(List<PlanTaskDetails> planTaskDetails) {
         Set<Long> planTskDetailIds = planTaskDetails.stream().map(PlanTaskDetails::getId).collect(Collectors.toSet());
         if (CollectionUtils.isEmpty(planTskDetailIds)) {
             return new HashMap<>();
@@ -443,15 +444,15 @@ public class PlanServiceImpl implements PlanService {
         Map<Long, String> crfMap = mongoTemplate.find(new Query().addCriteria(where("id").in(crfIds)), Crf.class)
                 .stream().collect(Collectors.toMap(Crf::getId, Crf::getQuestionJson, (k1, k2) -> k2));
 
-        Map<Long, Map<String, String>> map = new HashMap<>();
+        Map<Long, Map<String, Object>> map = new HashMap<>();
         crfAnswersMap.forEach((k, v) -> {
             if (!CollectionUtils.isEmpty(v)) {
-                Map<String, String> innerMap = new HashMap<>();
+                Map<String, Object> innerMap = new HashMap<>();
                 v.forEach(crfAnswer -> {
                     String questionJson = crfMap.get(crfAnswer.getCrfId());
                     if (Objects.nonNull(questionJson) && Objects.nonNull(crfAnswer.getAnswerJson())) {
                         try {
-                            String result = CrfUtil.parseCrfProblemAndAnswer(questionJson, crfAnswer.getAnswerJson());
+                            Map<String, Object> result = CrfUtil.parseCrfProblemAndAnswer(questionJson, crfAnswer.getAnswerJson());
                             if (Objects.nonNull(result)) {
                                 innerMap.put(crfAnswer.getCrfTopId().toString(), result);
                             }
@@ -468,7 +469,7 @@ public class PlanServiceImpl implements PlanService {
         return map;
     }
 
-    private Map<Long, Map<String, String>> queryQuestionaireResult(List<PlanTaskDetails> planTaskDetails) {
+    private Map<Long, Map<String, Object>> queryQuestionaireResult(List<PlanTaskDetails> planTaskDetails) {
         Set<Long> planTskDetailIds = planTaskDetails.stream().map(PlanTaskDetails::getId).collect(Collectors.toSet());
         if (CollectionUtils.isEmpty(planTskDetailIds)) {
             return new HashMap<>();
@@ -486,54 +487,55 @@ public class PlanServiceImpl implements PlanService {
         Set<Long> ansowerIds = answers.stream().map(QuestionnaireAnswer::getId).collect(Collectors.toSet());
         List<QuestionnaireAnswerOption> answerOptions = mongoTemplate.find(new Query().addCriteria(where("answer_id").in(ansowerIds)), QuestionnaireAnswerOption.class);
 
-        Map<Long, Map<String, String>> map = new HashMap<>();
+        Map<Long, Map<String, Object>> map = new HashMap<>();
 
         for (QuestionnaireAnswerRecord record : records) {
 
             List<QuestionnaireAnswer> answerList = answers.stream().filter(x -> x.getRecordId().equals(record.getId())).collect(Collectors.toList());
 
-            Map<String, String> resultMap = new HashMap<>();
-            List<String> keyValueNewVos = new ArrayList<>();
+            Map<String, Object> resultMap = new HashMap<>();
+//            List<String> keyValueNewVos = new ArrayList<>();
+            Map<String,Object> keyValueNewVos = new HashMap<>();
             for (QuestionnaireAnswer answer : answerList) {
                 Stream<QuestionnaireAnswerOption> questionnaireAnswerOptionStream = answerOptions.stream().filter(x -> x.getAnswerId().equals(answer.getId()) && x.getQuestionId().equals(answer.getQuestionId()));
                 Optional<QuestionnaireAnswerOption> optionalAnswerOption = questionnaireAnswerOptionStream.findAny();
 
                 switch (answer.getType()) {
                     case "CHOICE":
-                        keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(QuestionnaireAnswerOption::getOptionName).orElse("-"));
+                        keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(QuestionnaireAnswerOption::getOptionName).orElse("-"));
                         break;
                     case "SLIDE":
                     case "DATE_SELECT":
                     case "NUMBER":
-                        keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(option -> String.valueOf(option.getNumberAnswer())).orElse("-"));
+                        keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(option -> String.valueOf(option.getNumberAnswer())).orElse("-"));
                         break;
                     case "MULTIPLE_CHOICE":
                         List<String> optionNames = answerOptions.stream()
                                 .filter(x -> x.getAnswerId().equals(answer.getId()) && x.getQuestionId().equals(answer.getQuestionId()))
                                 .map(QuestionnaireAnswerOption::getOptionName)
                                 .collect(Collectors.toList());
-                        keyValueNewVos.add(answer.getQuestionName() + ":" + (optionNames.isEmpty() ? "-" : String.join(",", optionNames)));
+                        keyValueNewVos.put(answer.getQuestionName() , (optionNames.isEmpty() ? "-" : String.join(",", optionNames)));
                         break;
                     case "DATE":
-                        keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(QuestionnaireAnswerOption::getDateAt).orElse("-"));
+                        keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(QuestionnaireAnswerOption::getDateAt).orElse("-"));
                         break;
 
                     case "SECTION_NUMBER":
-                        keyValueNewVos.add(answer.getQuestionName() + ":" + (optionalAnswerOption.map(option -> option.getLeftMin() + "-" + option.getRightMax()).orElse("-")));
+                        keyValueNewVos.put(answer.getQuestionName() , (optionalAnswerOption.map(option -> option.getLeftMin() + "-" + option.getRightMax()).orElse("-")));
                         break;
                     case "TEXT":
-                        keyValueNewVos.add(answer.getQuestionName() + ":" + optionalAnswerOption.map(QuestionnaireAnswerOption::getContent).orElse("-"));
+                        keyValueNewVos.put(answer.getQuestionName() , optionalAnswerOption.map(QuestionnaireAnswerOption::getContent).orElse("-"));
                         break;
                 }
             }
-            resultMap.put(String.valueOf(record.getTopId()), JSONUtil.toJsonStr(keyValueNewVos));
+            resultMap.put(String.valueOf(record.getTopId()), keyValueNewVos);
             map.put(record.getPlanTaskDetailsId(), resultMap);
         }
 
         return map;
     }
 
-    private Map<Long, Map<String, String>> queryScaleResult(List<PlanTaskDetails> planTaskDetails) {
+    private Map<Long, Map<String, Object>> queryScaleResult(List<PlanTaskDetails> planTaskDetails) {
         Set<Long> planTskDetailIds = planTaskDetails.stream().map(PlanTaskDetails::getId).collect(Collectors.toSet());
         if (CollectionUtils.isEmpty(planTskDetailIds)) {
             return new HashMap<>();
@@ -543,21 +545,24 @@ public class PlanServiceImpl implements PlanService {
                 mongoTemplate.find(new Query().addCriteria(where("plan_task_details_id").in(planTskDetailIds)), PatientScaleEvaluatingEntity.class)
                         .stream().collect(Collectors.groupingBy(PatientScaleEvaluatingEntity::getPlanTaskDetailsId));
 
-        Map<Long, Map<String, String>> map = new HashMap<>();
+        Map<Long, Map<String, Object>> map = new HashMap<>();
 
         scaleEvaluatMap.forEach((k, v) -> {
             if (!CollectionUtils.isEmpty(v)) {
-                Map<String, String> result = new HashMap<>();
+                Map<String, Object> result = new HashMap<>();
                 v.forEach(item -> {
-                    List<String> sb = new ArrayList<>();
+//                    List<String> sb = new ArrayList<>();
+                    Map<String,Object> resultMap = new HashMap<>();
                     if (Objects.nonNull(item.getScaleResult())) {
-                        sb.add("result:" + item.getScaleResult());
+//                        sb.add("result:" + item.getScaleResult());
+                        resultMap.put("result",item.getScaleResult());
                     }
                     if (Objects.nonNull(item.getTotalScore())) {
-                        sb.add("totalScore:" + item.getTotalScore());
+//                        sb.add("totalScore:" + item.getTotalScore());
+                        resultMap.put("totalScore",item.getTotalScore());
                     }
-                    if (!CollectionUtils.isEmpty(sb)) {
-                        result.put(item.getScaleCode(), JSONUtil.toJsonStr(sb));
+                    if (!MapUtil.isEmpty(resultMap)) {
+                        result.put(item.getScaleCode(), resultMap);
                     }
 
                 });
diff --git a/src/main/java/com/luca/pilot/util/CrfUtil.java b/src/main/java/com/luca/pilot/util/CrfUtil.java
index ccffa6c857708a9e60dfdd8a94e2c4421ac5b537..a7e34ed5d4011725706f864230c348cf27eae4f0 100644
--- a/src/main/java/com/luca/pilot/util/CrfUtil.java
+++ b/src/main/java/com/luca/pilot/util/CrfUtil.java
@@ -1,6 +1,7 @@
 package com.luca.pilot.util;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.parser.Feature;
@@ -12,10 +13,10 @@ import java.util.stream.Collectors;
 
 public class CrfUtil {
 
-    public static String parseCrfProblemAndAnswer(String crfProblemJson, String crfAswerJson) {
+    public static Map<String, Object> parseCrfProblemAndAnswer(String crfProblemJson, String crfAswerJson) {
         if (Objects.isNull(crfProblemJson) || "".equals(crfProblemJson)
                 || Objects.isNull(crfAswerJson) || "".equals(crfAswerJson)) {
-            return "";
+            return new HashMap<>();
         }
 
         List<CrfProblemBo> crfProblemBos = crfProblemJsonAnalysisNew(crfProblemJson);
@@ -25,16 +26,17 @@ public class CrfUtil {
 
         List<CrfJsonValueBo> crfJsonValueBos = crfJsonAnalysis(crfAswerJson);
 
-        List<String> crfAswers = new ArrayList<>();
+//        List<String> crfAswers = new ArrayList<>();
+        Map<String,Object> crfAswers = new HashMap<>();
         crfJsonValueBos.stream().filter(x -> dataIds.contains(x.getKey())).forEach(item -> {
             if (Objects.nonNull(item.getName()) && Objects.nonNull(item.getText())) {
-                crfAswers.add(item.getName() + ":" + item.getText());
+                crfAswers.put(item.getName() , item.getText());
             }
         });
-        if (CollectionUtil.isEmpty(crfAswers)) {
+        if (MapUtil.isEmpty(crfAswers)) {
             return null;
         }
-        return JSONUtil.toJsonStr(crfAswers);
+        return crfAswers;
     }
 
     /**