Browse Source

Merge remote-tracking branch 'origin/master'

MarkHuang 4 years ago
parent
commit
43ab857e8e

+ 4 - 4
src/main/java/com/diagbot/dto/IndicationDTO.java

@@ -12,14 +12,14 @@ import java.util.List;
  */
 @Data
 public class IndicationDTO {
-    // 检查内容注意事项
-    private List<BillMsg> noteList = new ArrayList<>();
+    // 危机值提醒
+    private List<BillMsg> criticalValList = new ArrayList<>();
     // 开单合理性提示信息
     private List<BillMsg> billMsgList = new ArrayList<>();
     // 高危药品、手术
     private List<BillMsg> highRiskList = new ArrayList<>();
-    // 危机值提醒
-    private List<BillMsg> criticalValList = new ArrayList<>();
+    // 检查内容注意事项
+    private List<BillMsg> noteList = new ArrayList<>();
     // 记录调试信息
     private List<String> dubugStr = new ArrayList<>();
 }

+ 51 - 10
src/main/java/com/diagbot/facade/TestFacade.java

@@ -101,19 +101,39 @@ public class TestFacade {
                     //     lisBean.setUniqueName(lisArr[0]);
                     //     lisBean.setName(lisArr[0]);
                     //     lisBean.setDetailName(lisArr[0]);
-                    //     if ("<".equals(lisArr[1])) {
-                    //         lisBean.setValue(Double.parseDouble(lisArr[2]) - 1);
-                    //     } else if (">".equals(lisArr[1])) {
-                    //         lisBean.setValue(Double.parseDouble(lisArr[2]) + 1);
-                    //     }
+                    //     lisBean.setValue(getValue(lisArr));
                     //     lisList.add(lisBean);
                     //     indicationPushVO.setLis(lisList);
                     //     break;
                     // case "3" : // 临床表现
                     //     indicationPushVO.setChief(bean.getNeoName());
                     //     break;
-                    case "5" : // 诊断
-                        indicationPushVO.setDiagString(bean.getNeoName());
+                    // case "5" : // 诊断
+                    //     indicationPushVO.setDiagString(bean.getNeoName());
+                    //     break;
+                    case "12" : // 体征
+                        String[] vitalArr = bean.getNeoName().split(",");
+                        StringBuffer sbVital = new StringBuffer();
+                        if ("体温".equals(vitalArr[0])) {
+                            sbVital.append("体温");
+                            sbVital.append(getValue(vitalArr));
+                            sbVital.append(vitalArr[3]);
+                            indicationPushVO.setVital(sbVital.toString());
+                        }
+                        // else if ("收缩压".equals(vitalArr[0]) || "舒张压".equals(vitalArr[0])){
+                        //     if ("收缩压".equals(vitalArr[0])) {
+                        //         sbVital.append("血压");
+                        //         sbVital.append(getValue(vitalArr) + "/100mmHg");
+                        //         indicationPushVO.setVital(sbVital.toString());
+                        //     } else if ("舒张压".equals(vitalArr[0])) {
+                        //         sbVital.append("血压");
+                        //         sbVital.append("100/" + getValue(vitalArr) + "mmHg");
+                        //         indicationPushVO.setVital(sbVital.toString());
+                        //     }
+                        // }
+                        else {
+                            continue;
+                        }
                         break;
                     default:
                         continue;
@@ -125,19 +145,40 @@ public class TestFacade {
         Map<String, Object> map = new LinkedHashMap<>();
 
         List<String> msg = new ArrayList<>();
+        List<String> errMsg = new ArrayList<>();
         for (IndicationPushVO indicationPushVO : indicationPushVOList) {
-            IndicationDTO indicationDTO = indicationFacade.indicationFac(indicationPushVO);
-            if (ListUtil.isEmpty(indicationDTO.getBillMsgList())) {
-                msg.add("第【" + indicationPushVO.getIdNum() + "】行未匹配");
+            try {
+                IndicationDTO indicationDTO = indicationFacade.indicationFac(indicationPushVO);
+                if (ListUtil.isEmpty(indicationDTO.getBillMsgList())) {
+                    msg.add("第【" + indicationPushVO.getIdNum() + "】行未匹配");
+                }
+            } catch (Exception e) {
+                errMsg.add(indicationPushVO.getIdNum() + "行出错了");
             }
         }
         map.put("总条数", indicationPushVOList.size() + "条");
         map.put("出错条数", msg.size() + "条");
         map.put("出错信息", msg);
+        map.put("程序报错", errMsg);
         return map;
     }
 
 
+    /**
+     * 返回数值
+     *
+     * @param arr
+     * @return
+     */
+    public double getValue(String[] arr) {
+        if ("<".equals(arr[1]) || "≤".equals(arr[1])) {
+            return Double.parseDouble(arr[2])-1;
+        } else if (">".equals(arr[1]) || "≥".equals(arr[1])) {
+            return Double.parseDouble(arr[2])+1;
+        }
+        return 0.0;
+    }
+
     /**
      * 标准词转换
      *

+ 27 - 0
src/main/java/com/diagbot/model/ai/BeHospitalizedAI.java

@@ -18,6 +18,7 @@ import com.diagbot.model.ai.process.EntityProcessPersonal;
 import com.diagbot.model.ai.process.EntityProcessVital;
 import com.diagbot.model.entity.Diag;
 import com.diagbot.model.entity.Lis;
+import com.diagbot.model.entity.PD;
 import com.diagbot.model.entity.Pacs;
 import com.diagbot.model.entity.Vital;
 import com.diagbot.model.label.ChiefLabel;
@@ -37,6 +38,8 @@ import org.springframework.stereotype.Component;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @ClassName : InHospitalDoc
@@ -587,6 +590,30 @@ public class BeHospitalizedAI extends ModelAI {
         List<Vital> vitals = entityProcessVital.extractEntity(aiOut);
         VitalLabel vitalLabel = new VitalLabel();
         vitalLabel.setVitals(vitals);
+
+        // 血压特殊处理
+        for (Vital vi : vitals) {
+            if ("血压".equals(vi.getName())) {
+                Pattern pattern = Pattern.compile("\\d+ \\d+");
+                Matcher matcher = pattern.matcher(vi.getPd().getName());
+                if (matcher.find()) {
+                    String val = matcher.group();
+                    String[] bp = val.split(" ");
+
+                    PD dbp = new PD(); // 舒张压
+                    dbp.setValue(bp[0]);
+                    dbp.setName("舒张压");
+                    dbp.setStandName("舒张压");
+                    vitalLabel.setDbp(dbp);
+
+                    PD sbp = new PD(); // 收缩压
+                    sbp.setValue(bp[1]);
+                    sbp.setName("收缩压");
+                    sbp.setStandName("收缩压");
+                    vitalLabel.setSbp(sbp);
+                }
+            }
+        }
         wordCrfDTO.setVitalLabel(vitalLabel);
     }
 }

+ 3 - 0
src/main/java/com/diagbot/model/label/VitalLabel.java

@@ -1,5 +1,6 @@
 package com.diagbot.model.label;
 
+import com.diagbot.model.entity.PD;
 import com.diagbot.model.entity.Vital;
 import lombok.Data;
 
@@ -15,4 +16,6 @@ import java.util.List;
 @Data
 public class VitalLabel extends GeneralLabel{
     private List<Vital> vitals = new ArrayList<>();
+    private PD dbp = new PD(); // 舒张压
+    private PD sbp = new PD(); // 收缩压
 }

+ 1 - 1
src/main/java/com/diagbot/vo/IndicationPushVO.java

@@ -14,7 +14,7 @@ import javax.validation.constraints.NotBlank;
 @Setter
 public class IndicationPushVO extends SearchData {
     /**
-     * 规则类型(1:危急值提醒,2:开单合理项,3:)
+     * 规则类型(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:检查内容注意事项
      */
     @NotBlank(message = "ruleType不能为空")
     private String ruleType = "";

+ 1 - 1
src/main/java/com/diagbot/vo/PushVO.java

@@ -12,7 +12,7 @@ import lombok.Setter;
 @Setter
 public class PushVO extends SearchData {
     /**
-     * 推理类型(1:症状,4:查体结果,5:检验,6:检查,7:诊断)
+     * 推理类型(1:症状,4:查体结果,5:检验,6:检查,7:诊断,8:药品,9:手术
      */
     private String featureType = "";
 }

+ 5 - 3
src/main/java/com/diagbot/vo/TestIndicationVO.java

@@ -170,13 +170,15 @@ public class TestIndicationVO implements Serializable {
 
 
     /************************************************扩展字段开始***********************/
-    @Excel(name="类型")
+    @Excel(name="1.实验室检查," +
+            "2辅助检查," +
+            "3手术和操作")
     private String orderType;
     @Excel(name="标准名称")
     private String standName;
-    @Excel(name="图谱标准名称")
+    @Excel(name="内容标准名称")
     private String neoName;
-    @Excel(name="图谱类型")
+    @Excel(name="1性别,2实验室检查,3临床表现,4辅助检查描述,5疾病,6服用药品,7药物过敏原,8食物过敏原,9手术,10人群,11过敏原,12体征,13医疗器械及物品")
     private String neoType;
     @Excel(name="序号")
     private String idNum;

+ 2 - 2
src/main/java/com/diagbot/web/CoreController.java

@@ -33,14 +33,14 @@ public class CoreController {
     @Autowired
     private PushFacade pushFacade;
 
-    @ApiOperation(value = "开单合理性API[zhoutg]", notes = "ruleType(1:危急值提醒,2:开单合理项,3:管理评估,4:不良反应,5:药物推荐,6:异常值)")
+    @ApiOperation(value = "开单合理性API[zhoutg]", notes = "ruleType(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:检查内容注意事项)")
     @PostMapping("/indication")
     public RespDTO<IndicationDTO> indication(@Valid @RequestBody IndicationPushVO indicationPushVO) {
         IndicationDTO indicationDTO = indicationFacade.indicationFac(indicationPushVO);
         return RespDTO.onSuc(indicationDTO);
     }
 
-     @ApiOperation(value = "推送API[zhoutg]", notes = "类型(多选必填),1:症状,4:查体结果,5:检验,6:检查,7:诊断")
+     @ApiOperation(value = "推送API[zhoutg]", notes = "类型(多选必填),1:症状,4:查体结果,5:检验,6:检查,7:诊断,8:药品,9:手术")
      @PostMapping("/push")
      public RespDTO<PushDTO> push(@RequestBody PushVO pushVo) {
          PushDTO pushDTO = pushFacade.pushFac(pushVo);