Explorar el Código

河北演示项目问诊内容生成接口上传

“wangdsYun hace 7 meses
padre
commit
a7f95fd6fe

+ 4 - 0
src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -346,4 +346,8 @@ public interface CdssCoreClient {
     //根据录入内容查询有效规则的明细
     @PostMapping("/klRule/getRuleDetail")
     RespDTO<RuleDTO> getRuleDetail(@RequestBody @Valid RuleQueryKeyVO ruleQueryKeyVO);
+
+    //
+//    @PostMapping("/klDisease/getSymptoms")
+//    KlConceptDTO getSymptoms();
 }

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -156,6 +156,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/dataPage/docking/addUserAndRole").permitAll()
                 .antMatchers("/demo/moduleInfo/getModuleInfo").permitAll()
                 .antMatchers("/demo/moduleInfo/getModuleById").permitAll()
+                .antMatchers("/demo/moduleInfo/createContent").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -198,6 +198,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/dataPage/docking/addUserAndRole", request)
                 || matchers("/demo/moduleInfo/getModuleInfo", request)
                 || matchers("/demo/moduleInfo/getModuleById", request)
+                || matchers("/demo/moduleInfo/createContent", request)
                 || matchers("/", request)) {
             return true;
         }

+ 40 - 0
src/main/java/com/diagbot/dto/KlConceptDTO.java

@@ -0,0 +1,40 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * @author dsYun
+ * @Description:
+ * @date 2024-10-11 14:07
+ */
+@Setter
+@Getter
+public class KlConceptDTO {
+
+    /**
+     * 概念id
+     */
+    private Long id;
+
+    /**
+     * 对应术语id
+     */
+    private Long libId;
+
+    /**
+     * 概念名称(冗余)
+     */
+    private String libName;
+
+    /**
+     * 概念词性type(冗余)
+     */
+    private Integer libType;
+
+    /**
+     * 启用状态(0:禁用,1:启用)
+     */
+    private Integer status;
+}

+ 91 - 2
src/main/java/com/diagbot/facade/ModuleInfoFacade.java

@@ -7,6 +7,8 @@ import com.diagbot.entity.ModuleInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.ModuleInfoServiceImpl;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.ModuleDetaillVO;
 import com.diagbot.vo.ModuleInfoVO;
 import com.google.common.collect.Lists;
 import org.springframework.stereotype.Component;
@@ -70,8 +72,95 @@ public class ModuleInfoFacade extends ModuleInfoServiceImpl {
                 list2.add(questionModuleInfoDTO);
             }
         }
-        map.put("咳嗽",list1);
-        map.put("咳痰",list2);
+        map.put("咳嗽", list1);
+        map.put("咳痰", list2);
         return map;
     }
+
+    /**
+     * 生成问诊内容
+     *
+     * @return 生成问诊内容
+     */
+    public Map<String, String> createContent(ModuleDetaillVO moduleDetaillVO) {
+        Map<String, String> map = new HashMap<>();
+        StringBuilder chiefSb = new StringBuilder(); //主诉成文
+        StringBuilder symptomSb = new StringBuilder(); //现病史成文
+        StringBuilder coughTimeStr = new StringBuilder(); //咳嗽主时间
+        StringBuilder coughAggravateTimeStr = new StringBuilder(); //咳嗽加重时间
+        StringBuilder sputumTimeStr = new StringBuilder(); //咳痰主时间
+        StringBuilder sputumAggravateTimeStr = new StringBuilder(); //咳痰加重时间
+        if (moduleDetaillVO.getId() == 0) {
+            //咳嗽主时间
+            if (StringUtil.isNotBlank(moduleDetaillVO.getCoughTime()) && StringUtil.isNotBlank(moduleDetaillVO.getCoughTimeUnit())) {
+                coughTimeStr.append(moduleDetaillVO.getCoughTime() + moduleDetaillVO.getCoughTimeUnit());
+            }
+
+            //咳嗽加重时间
+            if (StringUtil.isNotBlank(moduleDetaillVO.getCoughAggravateTime()) && StringUtil.isNotBlank(moduleDetaillVO.getCoughAggravateTimeUnit())) {
+                coughAggravateTimeStr.append(moduleDetaillVO.getCoughAggravateTime() + moduleDetaillVO.getCoughAggravateTimeUnit());
+            }
+
+            //咳痰主时间
+            if (StringUtil.isNotBlank(moduleDetaillVO.getSputumTime()) && StringUtil.isNotBlank(moduleDetaillVO.getSputumTimeUnit())) {
+                sputumTimeStr.append(moduleDetaillVO.getSputumTime() + moduleDetaillVO.getSputumTimeUnit());
+            }
+
+            //咳痰加重时间
+            if (StringUtil.isNotBlank(moduleDetaillVO.getSputumAggravateTime()) && StringUtil.isNotBlank(moduleDetaillVO.getSputumAggravateTimeUnit())) {
+                sputumAggravateTimeStr.append(moduleDetaillVO.getSputumAggravateTime() + moduleDetaillVO.getSputumAggravateTimeUnit());
+            }
+
+            //存在咳嗽和咳痰
+            if (StringUtil.isNotBlank(coughTimeStr.toString()) && StringUtil.isNotBlank(sputumTimeStr.toString()) && StringUtil.isNotBlank(coughAggravateTimeStr.toString()) && StringUtil.isNotBlank(sputumAggravateTimeStr.toString())) {
+                if (coughTimeStr.toString().equals(sputumTimeStr.toString()) && coughAggravateTimeStr.toString().equals(sputumAggravateTimeStr.toString())) {
+                    chiefSb.append("咳嗽、咳痰" + coughTimeStr.toString() + ",加重" + coughAggravateTimeStr.toString() + "。");
+                } else if (coughTimeStr.toString().equals(sputumTimeStr.toString()) && !coughAggravateTimeStr.toString().equals(sputumAggravateTimeStr.toString())) {
+                    chiefSb.append("咳嗽、咳痰" + coughTimeStr.toString() + ",加重" + coughAggravateTimeStr.toString() + ",加重" + sputumAggravateTimeStr.toString() + "。");
+                } else if (!coughTimeStr.toString().equals(sputumTimeStr.toString()) && !coughAggravateTimeStr.toString().equals(sputumAggravateTimeStr.toString())) {
+                    chiefSb.append("咳嗽" + coughTimeStr.toString() + ",加重" + coughAggravateTimeStr.toString() + ",咳痰" + sputumTimeStr.toString() + ",加重" + sputumAggravateTimeStr.toString() + "。");
+                }
+            } else if (StringUtil.isNotBlank(coughTimeStr.toString()) && StringUtil.isNotBlank(coughAggravateTimeStr.toString()) && StringUtil.isBlank(sputumTimeStr.toString())) {
+                chiefSb.append("咳嗽" + coughTimeStr.toString() + ",加重" + coughAggravateTimeStr.toString() + "。");
+            } else if (StringUtil.isNotBlank(coughTimeStr.toString()) && StringUtil.isBlank(coughAggravateTimeStr.toString()) && StringUtil.isBlank(sputumTimeStr.toString())) {
+                chiefSb.append("咳嗽" + coughTimeStr.toString() + "。");
+            }
+            if (StringUtil.isNotBlank(chiefSb.toString())) {
+                map.put("主诉", chiefSb.toString());
+            }
+
+            if (StringUtil.isNotBlank(coughTimeStr.toString()) && StringUtil.isNotBlank(sputumTimeStr.toString())) {
+                if (coughTimeStr.toString().equals(sputumTimeStr.toString())) {
+                    symptomSb.append(coughTimeStr.toString() + "前" + isNull(moduleDetaillVO.getCoughCause()) + "出现咳嗽、咳痰。咳嗽呈" + isNull(moduleDetaillVO.getCoughNature()) + isNull(moduleDetaillVO.getCoughDegree())
+                            + "伴有" + isNull(moduleDetaillVO.getCoughAccompanyingSymptoms()) + ",咳痰呈" + isNull(moduleDetaillVO.getSputumParoxysm()) + "," + isNull(moduleDetaillVO.getSputumColour()) + isNull(moduleDetaillVO.getSputumNature())
+                            + "," + isNull(moduleDetaillVO.getSputumAmount()) + ",每次可咳约" + isNull(moduleDetaillVO.getSputumSpecificAmount()) + "ml,一天总共可咳约" + isNull(moduleDetaillVO.getSputumSpecificAmount()) + "ml,"
+                            + isNull(moduleDetaillVO.getSputumIsUnobstructed()) + "伴有" + isNull(moduleDetaillVO.getSputumAccompanyingSymptoms() + "。")
+                    );
+                } else {
+                    symptomSb.append(coughTimeStr.toString() + "前" + isNull(moduleDetaillVO.getCoughCause()) + "出现咳嗽,咳嗽呈" + isNull(moduleDetaillVO.getCoughNature()) + isNull(moduleDetaillVO.getCoughDegree())
+                            + "伴有" + isNull(moduleDetaillVO.getCoughAccompanyingSymptoms()) + "。" + sputumTimeStr.toString() + "前" + isNull(moduleDetaillVO.getSputumCause()) + "出现咳痰,咳痰呈" + isNull(moduleDetaillVO.getSputumParoxysm()) + "," + isNull(moduleDetaillVO.getSputumColour()) + isNull(moduleDetaillVO.getSputumNature())
+                            + "," + isNull(moduleDetaillVO.getSputumAmount()) + isNull(moduleDetaillVO.getSputumParoxysm()) + ",每次可咳约" + isNull(moduleDetaillVO.getSputumSpecificAmount()) + "ml,一天总共可咳约" + isNull(moduleDetaillVO.getSputumSpecificAmount()) + "ml,"
+                            + isNull(moduleDetaillVO.getSputumIsUnobstructed()) + "伴有" + isNull(moduleDetaillVO.getSputumAccompanyingSymptoms() + "。")
+                    );
+                }
+            } else if (StringUtil.isNotBlank(coughTimeStr.toString()) && StringUtil.isBlank(sputumTimeStr.toString())) {
+                symptomSb.append(coughTimeStr.toString() + "前" + isNull(moduleDetaillVO.getCoughCause()) + "出现咳嗽,咳嗽呈" + isNull(moduleDetaillVO.getCoughNature()) +
+                        isNull(moduleDetaillVO.getCoughDegree()) + "伴有" + isNull(moduleDetaillVO.getCoughAccompanyingSymptoms() + "。")
+                );
+            }
+
+            if (StringUtil.isNotBlank(symptomSb.toString())) {
+                map.put("现病史", symptomSb.toString());
+            }
+        }
+        return map;
+    }
+
+    /**
+     * 判断字段是否为空
+     */
+    public String isNull(String text) {
+        return text == null ? "" : text;
+    }
+
 }

+ 7 - 0
src/main/java/com/diagbot/facade/MrqcFacade.java

@@ -1,7 +1,11 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.client.CdssCoreClient;
 import com.diagbot.client.MrqcClient;
 import com.diagbot.dto.AnalyzeRunDTO;
+import com.diagbot.dto.DiseaseIndexDTO;
+import com.diagbot.dto.KlConceptDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.util.AgeUtil;
 import com.diagbot.util.RespDTOUtil;
@@ -23,6 +27,8 @@ import java.util.Map;
 public class MrqcFacade {
     @Autowired
     private MrqcClient mrqcClient;
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
 
     public AnalyzeRunDTO analyzeRun(@Valid @RequestBody AnalyzeRunVO analyzeRunVO) {
         RespDTO<AnalyzeRunDTO> analyzeRunDTO = mrqcClient.analyzeRun(analyzeRunVO);
@@ -32,6 +38,7 @@ public class MrqcFacade {
 
     public Map<String, String> caseWritingPrompt(AnalyzeCdsVO analyzeCdsVO) {
         analyzeCdsVO.setAgeNum(AgeUtil.convertAge(analyzeCdsVO.getAge()));
+//        KlConceptDTO respDTO = cdssCoreClient.getSymptoms();
         RespDTO<Map<String, String>> caseWritingDTO = mrqcClient.caseWritingPrompt(analyzeCdsVO);
         RespDTOUtil.respNGDealCover(caseWritingDTO, "远程调用病历质控接口失败");
         return caseWritingDTO.data;

+ 86 - 0
src/main/java/com/diagbot/vo/ModuleDetaillVO.java

@@ -0,0 +1,86 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author dsYun
+ * @Description:
+ * @date 2024年11月1日
+ */
+@Getter
+@Setter
+public class ModuleDetaillVO {
+
+    //生成类型(0:全部 1:主诉 2:现病史)
+    private Integer id = 0;
+    //咳嗽主时间
+    private String coughTime;
+    //咳嗽主时间单位
+    private String coughTimeUnit;
+//    //咳嗽主时间天
+//    private String coughTimeDay;
+//    //咳嗽主时间小时
+//    private String coughTimeHour;
+//    //咳嗽主时间分钟
+//    private String coughTimeMinute;
+    //咳嗽加重时间
+    private String coughAggravateTime;
+    //咳嗽加重时间单位
+    private String coughAggravateTimeUnit;
+//    //咳嗽加重主时间天
+//    private String coughAggravateTimeDay;
+//    //咳嗽加重主时间小时
+//    private String coughAggravateTimeHour;
+//    //咳嗽加重主时间分钟
+//    private String coughAggravateTimeMinute;
+    //咳嗽诱因
+    private String coughCause;
+    //咳嗽性质
+    private String coughNature;
+    //咳嗽程度
+    private String coughDegree;
+    //咳嗽伴随症状
+    private String coughAccompanyingSymptoms;
+
+    //咳痰主时间
+    private String sputumTime;
+    //咳痰主时间单位
+    private String sputumTimeUnit;
+//    //咳痰主时间天
+//    private String sputumTimeDay;
+//    //咳痰主时间小时
+//    private String sputumTimeHour;
+//    //咳痰主时间分钟
+//    private String sputumTimeMinute;
+    //咳痰加重时间年
+    private String sputumAggravateTime;
+    //咳痰加重时间月
+    private String sputumAggravateTimeUnit;
+//    //咳痰加重主时间天
+//    private String sputumAggravateTimeDay;
+//    //咳痰加重主时间小时
+//    private String sputumAggravateTimeHour;
+//    //咳痰加重主时间分钟
+//    private String sputumAggravateTimeMinute;
+    //咳痰诱因
+    private String sputumCause;
+    //咳痰发作特点
+    private String sputumParoxysm;
+    //咳痰颜色特点
+    private String sputumColour;
+    //咳痰性质
+    private String sputumNature;
+    //咳痰量
+    private String sputumAmount;
+    //具体咳痰量次数
+    private String sputumSpecificAmount;
+    //具体咳痰量天数
+    private String sputumSpecificAmountDay;
+    //咳痰是否通畅易咳出
+    private String sputumIsUnobstructed;
+    //咳痰伴随症状
+    private String sputumAccompanyingSymptoms;
+}

+ 9 - 0
src/main/java/com/diagbot/web/ModuleInfoController.java

@@ -50,4 +50,13 @@ public class ModuleInfoController {
         Map<String,List<QuestionModuleInfoDTO>> data = moduleInfoFacade.getModuleById(moduleInfoVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "生成问诊内容[by:dsYun]",
+            notes = "")
+    @PostMapping("/createContent")
+    @SysLogger("createContent")
+    public RespDTO<Map<String,String>> createContent(@Valid @RequestBody ModuleDetaillVO moduleDetaillVO) {
+        Map<String,String> data = moduleInfoFacade.createContent(moduleDetaillVO);
+        return RespDTO.onSuc(data);
+    }
 }