浏览代码

查体测试

zhoutg 4 年之前
父节点
当前提交
42e9d7479a

+ 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(); // 收缩压
 }

+ 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;