Browse Source

1.与诊断相关的主要体征未描述修改提示信息
2.入院记录体格检查血压与专科检查血压提取血压具体值

hujing 5 years atrás
parent
commit
3a8ff78eaf

+ 23 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03051.java

@@ -32,13 +32,13 @@ public class BEH03051 extends QCCatalogue {
      */
 
     Map<String, String> diagVital = ImmutableMap.<String, String>builder()
-            .put("急性阑尾炎", "右下腹/反跳痛|麦氏点/麦氏点压痛/阑尾点")
-            .put("冠状动脉粥样硬化性心脏病", "心率/律|瓣膜/二尖瓣/三尖瓣/主动脉瓣")
-            .put("高血压病", "血压")
-            .put("高血压病1级", "血压")
-            .put("高血压病2级", "血压")
-            .put("高血压病3级", "血压")
-            .put("心房颤动", "心率/律|心音/脉搏")
+            .put("急性阑尾炎", "右下腹:专科查体无右下腹描述/反跳痛:专科查体无反跳痛描述|麦氏点:专科查体无麦氏点描述/麦氏点压痛/阑尾点")
+            .put("冠状动脉粥样硬化性心脏病", "心率:专科查体无心率描述/律:专科查体无心律描述|瓣膜:专科查体无各瓣膜区听诊描述/二尖瓣/三尖瓣/主动脉瓣")
+            .put("高血压病", "血压:专科查体无血压值描述")
+            .put("高血压病1级", "血压:专科查体无血压值描述")
+            .put("高血压病2级", "血压:专科查体无血压值描述")
+            .put("高血压病3级", "血压:专科查体无血压值描述")
+            .put("心房颤动", "心率:专科查体无心率描述/律:专科查体无心律描述|脉搏:专科查体无脉搏描述/心音:专科查体无心音描述")
             .build();
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
@@ -74,24 +74,34 @@ public class BEH03051 extends QCCatalogue {
                 String vitals = diagVital.get(initDiagStr);
                 String[] vitalArr = vitals.split("\\|");
                 String vitalAnd = vitalArr[0];//体征且的关系,每个必须有
-                for (String vital : vitalAnd.split("/")) {
-                    if (!vitalSpecialText.contains(vital)) {
+                for (String vitalInfo : vitalAnd.split("/")) {
+                    String[] vitalInfoArr = vitalInfo.split(":");
+                    String vital = "";
+                    if (!vitalSpecialText.contains(vitalInfoArr[0])) {
                         status.set("-1");
-                        info.set(initDiagStr + ":" + vital);
+                        if (vitalInfoArr.length > 1) {
+                            vital = ":" + vitalInfoArr[1];
+                        }
+                        info.set(initDiagStr + vital);
                         return;
                     }
                 }
                 if (vitalArr.length == 2) {
                     String vitalOr = vitalArr[1];//体征或的关系,有一个就行
                     int existNum = 0;
-                    for (String vital : vitalOr.split("/")) {
-                        if (vitalSpecialText.contains(vital)) {
+                    String vital = "";
+                    for (String vitalInfo : vitalOr.split("/")) {
+                        String[] vitalInfoArr = vitalInfo.split(":");
+                        if (vitalSpecialText.contains(vitalInfoArr[0])) {
                             existNum++;
                         }
+                        if (vitalInfoArr.length > 1) {
+                            vital = ":" + vitalInfoArr[1];
+                        }
                     }
                     if (existNum == 0) {
                         status.set("-1");
-                        info.set(initDiagStr + ":" + vitalOr.split("/")[0]);
+                        info.set(initDiagStr + vital);
                         return;
                     }
                 }

+ 10 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03057.java

@@ -26,11 +26,19 @@ public class BEH03057 extends QCCatalogue {
         }
         Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
         String souval = structureMap.get("血压");
+        if (StringUtil.isBlank(souval)) {
+            return;
+        }
+        Pattern pattern = Pattern.compile("[0-9]+[./]*[0-9]*");
+        Matcher matcher = pattern.matcher(souval);
+        if (matcher.find()) {
+            souval = matcher.group();
+        }
         String tarval = null;
         String vitalLabelSpecial = structureMap.get("专科体格检查");
         if (StringUtil.isNotBlank(vitalLabelSpecial)) {
-            Pattern pattern = Pattern.compile("(血压)[^体温|脉搏|呼吸|血压|疼痛]+");
-            Matcher matcher = pattern.matcher(vitalLabelSpecial);
+            pattern = Pattern.compile("(血压)[^体温|脉搏|呼吸|血压|疼痛]+");
+            matcher = pattern.matcher(vitalLabelSpecial);
             if (matcher.find()) {
                 pattern = Pattern.compile("[0-9]+[./]*[0-9]*");
                 matcher = pattern.matcher(matcher.group());