瀏覽代碼

1.义乌入院记录trans修改
2.规则逻辑修改

hujing 4 年之前
父節點
當前提交
09a7b2e220

+ 22 - 25
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/operationdiscussion/OPE0352.java

@@ -3,12 +3,16 @@ package com.lantone.qc.kernel.catalogue.beilun.operationdiscussion;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
-import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.model.label.OperationDiscussionLabel;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @Description: 术后首次病程记录未记录术后风险
@@ -20,37 +24,30 @@ public class OPE0352 extends QCCatalogue {
     @Override
     protected void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        //医嘱
-        //        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
-        //        if (ListUtil.isEmpty(doctorAdviceDocs)) {
-        //            return;
-        //        }
-        //        boolean isOperativePatient = CatalogueUtil.isOperativePatients(doctorAdviceDocs);
-        //        boolean isOperativePatient = true;//是手术患者(暂时默认是)
-        //        if (isOperativePatient) {
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
         if (operationDocs == null || operationDocs.size() == 0) {
             status.set("0");
             return;
         }
-        if (ListUtil.isNotEmpty(operationDocs)) {
-            long count = operationDocs.stream().filter(operationDoc -> {
-                boolean flag = false;
-                if (operationDoc.getOperationDiscussionDoc() != null
-                        && operationDoc.getOperationDiscussionDoc().getOperationDiscussionLabel() != null
-                        && (StringUtil.isBlank(operationDoc.getOperationDiscussionDoc().getOperationDiscussionLabel().getRiskAfterOp())
-                        || operationDoc.getOperationDiscussionDoc().getOperationDiscussionLabel().getRiskAfterOp().length() < 10)
-                        && (StringUtil.isBlank(operationDoc.getOperationDiscussionDoc().getStructureMap().get("术后可能出现的并发症及预防措施"))
-                        || operationDoc.getOperationDiscussionDoc().getStructureMap().get("术后可能出现的并发症及预防措施").length() < 10)) {
-                    flag = true;
-                }
-                return flag;
-            }).count();
-            if (count > 0) {
+        for (OperationDoc operationDoc : operationDocs) {
+            OperationDiscussionDoc doc = operationDoc.getOperationDiscussionDoc();
+            if (doc == null) {
+                continue;
+            }
+            Map<String, String> map = doc.getStructureMap();
+            String originText = map.get("原始文本");
+            String regex = ".*术后.*意外.*";
+            Pattern p = Pattern.compile(regex);
+            Matcher matcher = p.matcher(originText);
+            if (StringUtil.isNotBlank(originText) && matcher.find()) {
+                continue;
+            }
+            OperationDiscussionLabel label = doc.getOperationDiscussionLabel();
+            if (label != null && (StringUtil.isBlank(label.getRiskAfterOp()) || label.getRiskAfterOp().length() < 10)
+                    && (StringUtil.isBlank(map.get("术后可能出现的并发症及预防措施")) || map.get("术后可能出现的并发症及预防措施").length() < 10)) {
                 status.set("-1");
+                return;
             }
         }
-        //        }
     }
-
 }

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/behospitalized/BEH0014.java

@@ -104,8 +104,8 @@ public class BEH0014 extends QCCatalogue {
 
     //判断一般情况和现病史中是否含有containList字样
     private boolean isInducement(String text) {
-        if (text.length() > 30) {
-            text = text.substring(0, 30);
+        if (text.length() > 50) {
+            text = text.substring(0, 50);
         }
         text = text.replaceAll("[\"“”]", "");
         for (String word : containList) {

+ 12 - 14
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/behospitalized/BEH0029.java

@@ -45,13 +45,11 @@ public class BEH0029 extends QCCatalogue {
             status.set("0");
             return;
         }
-        if (pastLabel != null ) {
-            if(pastLabel.getText()!=null){
-                String pastText = pastLabel.getText();
-                if (pastText.contains("详见原病历") || pastText.contains("预防接种")) {
-                    status.set("0");
-                    return;
-                }
+        if (pastLabel != null && pastLabel.getText() != null) {
+            String pastText = pastLabel.getText();
+            if (pastText.contains("详见原病历") || pastText.contains("预防接种")) {
+                status.set("0");
+                return;
             }
             List<Vaccinate> vaccinates = pastLabel.getVaccinates();
             if (ListUtil.isNotEmpty(vaccinates)) {
@@ -60,7 +58,7 @@ public class BEH0029 extends QCCatalogue {
                 }
             }
         }
-        if (personalLabel != null && personalLabel.getText()!=null) {
+        if (personalLabel != null && personalLabel.getText() != null) {
             String personText = personalLabel.getText();
             if (StringUtil.isNotBlank(personText) && (personText.contains("详见原病历") || personText.contains("预防接种"))) {
                 status.set("0");
@@ -68,16 +66,16 @@ public class BEH0029 extends QCCatalogue {
             }
         }
         //直接map拿既往史、个人史
-        if(structureMap.get("既往史")!=null ){
-            String pastText =structureMap.get("既往史");
-            if(pastText.contains("详见原病历") || pastText.contains("预防接种")){
+        if (structureMap.get("既往史") != null) {
+            String pastText = structureMap.get("既往史");
+            if (pastText.contains("详见原病历") || pastText.contains("预防接种")) {
                 status.set("0");
                 return;
             }
         }
-        if(structureMap.get("个人史")!=null ){
-            String personText =structureMap.get("个人史");
-            if(personText.contains("详见原病历") || personText.contains("预防接种")){
+        if (structureMap.get("个人史") != null) {
+            String personText = structureMap.get("个人史");
+            if (personText.contains("详见原病历") || personText.contains("预防接种")) {
                 status.set("0");
                 return;
             }

+ 13 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/preoperativediscussion/PRE0329.java

@@ -4,11 +4,13 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 术前讨论记录无手术指征
@@ -23,12 +25,20 @@ public class PRE0329 extends QCCatalogue {
         status.set("0");
         boolean isOperativePatient = true;//是手术患者(暂时默认是)
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if(operationDocs == null || operationDocs.size()== 0){
+        if (operationDocs == null || operationDocs.size() == 0) {
             return;
         }
         for (OperationDoc operationDoc : operationDocs) {
-            if (operationDoc.getPreoperativeDiscussionDoc() != null
-                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("手术指征与禁忌"))) {
+            PreoperativeDiscussionDoc doc = operationDoc.getPreoperativeDiscussionDoc();
+            if (doc == null) {
+                continue;
+            }
+            Map<String, String> map = doc.getStructureMap();
+            String originText = map.get("原始文本");
+            if (StringUtil.isNotBlank(originText) && originText.contains("手术指征")) {
+                continue;
+            }
+            if (map.containsKey("手术指征与禁忌") && StringUtil.isEmpty(map.get("手术指征与禁忌"))) {
                 status.set("-1");
             }
         }

+ 10 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/preoperativediscussion/PRE0330.java

@@ -4,6 +4,7 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -27,9 +28,15 @@ public class PRE0330 extends QCCatalogue {
             return;
         }
         for (OperationDoc operationDoc : operationDocs) {
-            if (operationDoc.getPreoperativeDiscussionDoc() != null
-                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("拟施手术方式名称及可能的变更与禁忌症"))
-                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("拟施手术名称和方式及可能的变更"))) {
+            PreoperativeDiscussionDoc doc = operationDoc.getPreoperativeDiscussionDoc();
+            if (doc == null) {
+                continue;
+            }
+            Map<String, String> map = doc.getStructureMap();
+            if (!map.containsKey("拟施手术方式名称及可能的变更与禁忌症") && !map.containsKey("拟施手术名称和方式及可能的变更")) {
+                continue;
+            }
+            if (StringUtil.isEmpty(map.get("拟施手术方式名称及可能的变更与禁忌症")) && StringUtil.isEmpty(map.get("拟施手术名称和方式及可能的变更"))) {
                 status.set("-1");
             }
         }

+ 13 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/preoperativediscussion/PRE0332.java

@@ -4,11 +4,13 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 术前讨论记录无术前准备内容
@@ -22,12 +24,20 @@ public class PRE0332 extends QCCatalogue {
     protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
         status.set("0");
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if(operationDocs == null || operationDocs.size()== 0){
+        if (operationDocs == null || operationDocs.size() == 0) {
             return;
         }
         for (OperationDoc operationDoc : operationDocs) {
-            if (operationDoc.getPreoperativeDiscussionDoc() != null
-                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("术前准备"))) {
+            PreoperativeDiscussionDoc doc = operationDoc.getPreoperativeDiscussionDoc();
+            if (doc == null) {
+                continue;
+            }
+            Map<String, String> map = doc.getStructureMap();
+            String originText = map.get("原始文本");
+            if (StringUtil.isNotBlank(originText) && originText.contains("术前准备")) {
+                continue;
+            }
+            if (StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("术前准备"))) {
                 status.set("-1");
             }
         }

+ 15 - 13
trans/src/main/java/com/lantone/qc/trans/yiwu/YiWuBeHospitalizedDocTrans.java

@@ -53,25 +53,27 @@ public class YiWuBeHospitalizedDocTrans extends ModelDocTrans {
         } else {
             Map<String, String> sourceMap = YiWuXmlUtil.xmlToMap(content);
             sourceMap.put("mode_id", ModuleMappingUtil.getDeptModuleId(modeId));
-            String text = sourceMap.get("原始文本").replace(":", ":").replace("■", "");
+            String text = sourceMap.get("原始文本").replace(":", ":").replaceAll("■| ", "");
             //日间病历单独处理
             String behDeptId = behospitalInfoVO.getBehDeptId();
             if ("51923".equals(behDeptId) || "52883".equals(behDeptId) || "52903".equals(behDeptId) || "52923".equals(behDeptId) || "53523".equals(behDeptId)) {
                 dailyTrans(sourceMap, text, behDeptId);
             } else {
                 List<String> titles = Lists.newArrayList("婚    姻", "婚姻状况", "住      址", "供 史 者", "性      别", "婚  姻", "民  族", "民    族", "个人史", "妇科检查", "产科检查",
-                        "实验室", "诊断和诊断修正", "婚 育 史", "家 族 史", "体格检查(一)","体 格 检 查(一)", "现 病 史", "既 往 史", "系统回顾");
+                        "实验室", "诊断和诊断修正", "婚 育 史", "家 族 史", "体格检查(一)", "体 格 检 查(一)", "现 病 史", "既 往 史", "系统回顾");
                 List<String> sortTitles = CommonAnalysisUtil.sortTitlesNoColon(titles, text);
                 CommonAnalysisUtil.cutByTitlesNoColon(text, sortTitles, 0, sourceMap);
                 List<String> modifyKey = Lists.newArrayList("初步诊断", "修正诊断", "补充诊断");
                 sortTitles = CommonAnalysisUtil.sortTitlesNoColon(modifyKey, text);
-                text = text.substring(text.indexOf("初步诊断:")).replaceAll("[ ]","");
-                for (String key : sortTitles) {
-                    text = modifyDiagKey(text, key);
+                if (text.contains("初步诊断:")) {
+                    text = text.substring(text.indexOf("初步诊断:")).replaceAll("[ ]", "");
+                    for (String key : sortTitles) {
+                        text = modifyDiagKey(text, key);
+                    }
+                    modifyKey = Lists.newArrayList("初步诊断", "修正诊断", "补充诊断", "初步诊断医师", "修正诊断医师", "补充诊断医师", "初步诊断时间", "修正诊断时间", "补充诊断时间");
+                    sortTitles = CommonAnalysisUtil.sortTitles(modifyKey, text);
+                    CommonAnalysisUtil.cutByTitles(text, sortTitles, 0, sourceMap);
                 }
-                modifyKey = Lists.newArrayList("初步诊断", "修正诊断", "补充诊断", "初步诊断医师", "修正诊断医师", "补充诊断医师", "初步诊断时间", "修正诊断时间", "补充诊断时间");
-                sortTitles = CommonAnalysisUtil.sortTitles(modifyKey, text);
-                CommonAnalysisUtil.cutByTitles(text, sortTitles, 0, sourceMap);
                 if (sourceMap.containsKey("修正诊断") && (sourceMap.get("修正诊断").contains(":") || sourceMap.get("修正诊断").contains(":"))) {
                     sourceMap.put("修正诊断", "");
                 }
@@ -373,35 +375,35 @@ public class YiWuBeHospitalizedDocTrans extends ModelDocTrans {
         List<String> titles = Lists.newArrayList();
         switch (behDeptId) {
             case "51923":
-                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "与患者关系", "性别",
+                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "辅助检查", "与患者关系", "性别",
                         "年龄", "职业", "入院时间", "婚姻", "出院时间", "民族", "身份证号", "联系电话", "邮政编码",
                         "工作单位", "联系地址", "病史提供者", "病史陈述者", "主诉", "入院情况", "入院诊断", "诊疗情况",
                         "诊疗经过", "出院情况", "出院诊断", "出院医嘱", "医师签名", "记录医师", "主刀医师签名",
                         "记录时间", "时间");
                 break;
             case "52883":
-                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "与患者关系", "性别",
+                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "辅助检查", "与患者关系", "性别",
                         "年龄", "职业", "入院时间", "婚姻", "出院时间", "民族", "身份证号", "联系电话", "邮政编码",
                         "工作单位", "联系地址", "病史提供者", "病史陈述者", "主诉", "入院情况", "入院诊断", "诊疗情况",
                         "诊疗经过", "出院情况", "出院诊断", "出院医嘱", "注意事项", "出院带药", "随访计划", "医师签名",
                         "记录医师", "记录时间", "时间");
                 break;
             case "52903":
-                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "与患者关系", "性别",
+                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "辅助检查", "与患者关系", "性别",
                         "年龄", "职业", "入院时间", "婚姻", "出院时间", "民族", "身份证号", "联系电话", "邮政编码",
                         "工作单位", "联系地址", "病史提供者", "病史陈述者", "主诉", "入院情况", "入院诊断", "诊疗情况",
                         "诊疗经过", "出院情况", "出院诊断", "出院医嘱", "注意事项", "出院带药", "随访计划", "医师签名",
                         "记录医师", "记录时间", "时间");
                 break;
             case "52923":
-                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "与患者关系", "性别",
+                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "辅助检查", "与患者关系", "性别",
                         "年龄", "职业", "入院时间", "婚姻", "出院时间", "民族", "身份证号", "联系电话", "邮政编码",
                         "工作单位", "联系地址", "病史提供者", "病史陈述者", "主诉", "入院情况", "入院诊断", "诊疗情况",
                         "诊疗经过", "出院情况", "出院诊断", "出院医嘱", "注意事项", "出院带药", "随访计划", "医师签名",
                         "记录医师", "记录时间", "时间");
                 break;
             case "53523":
-                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "与患者关系", "性别",
+                titles = Lists.newArrayList("姓名", "出生日期", "出生地", "其他", "辅助检查", "与患者关系", "性别",
                         "年龄", "职业", "入院时间", "婚姻", "出院时间", "民族", "身份证号", "联系电话", "邮政编码",
                         "工作单位", "联系地址", "病史提供者", "病史陈述者", "主诉", "入院情况", "入院诊断", "诊疗情况",
                         "诊疗经过", "出院情况", "出院诊断", "出院医嘱", "注意事项", "出院带药", "随访计划", "医师签名",