huj 4 роки тому
батько
коміт
c9c292752c

+ 6 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02902.java

@@ -26,13 +26,18 @@ public class BEH02902 extends QCCatalogue {
             return;
         }
 
+        String pacsText = inputInfo.getBeHospitalizedDoc().getStructureMap().get("辅助检查");
+        if (StringUtil.isNotBlank(pacsText) && (pacsText.contains("暂缺") || pacsText.contains("暂无"))) {
+            return;
+        }
+
         PacsLabel pacsLabel = inputInfo.getBeHospitalizedDoc().getPacsLabel();
         if (pacsLabel == null || StringUtil.isBlank(pacsLabel.getText())) {
             status.set("0");
             return;
         }
         boolean findPlace = false;
-        String pacsText = pacsLabel.getText();
+        pacsText = pacsLabel.getText();
         List<Pacs> pacses = pacsLabel.getPacses();
         if (pacses != null) {
             for (Pacs pacs : pacses) {

+ 6 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH02903.java

@@ -5,6 +5,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Pacs;
 import com.lantone.qc.pub.model.label.PacsLabel;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -24,6 +25,11 @@ public class BEH02903 extends QCCatalogue {
             return;
         }
 
+        String pacsText = inputInfo.getBeHospitalizedDoc().getStructureMap().get("辅助检查");
+        if (StringUtil.isNotBlank(pacsText) && (pacsText.contains("暂缺") || pacsText.contains("暂无"))) {
+            return;
+        }
+
         PacsLabel pacsLabel = inputInfo.getBeHospitalizedDoc().getPacsLabel();
         if (pacsLabel == null) {
             status.set("0");

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0376.java

@@ -46,7 +46,7 @@ public class BEH0376 extends QCCatalogue {
         }
         //硬规则 匹配未育
         String marry = structureMap_beh.get(Content.marry);
-        if(StringUtil.isBlank(marry)){
+        if (StringUtil.isBlank(marry)) {
             marry = structureMap_beh.get("婚姻状况");
         }
         if ("未婚".equals(marry)) {
@@ -55,7 +55,7 @@ public class BEH0376 extends QCCatalogue {
         }
         String maritalText = maritalLabel.getText();
         if (StringUtil.isNotBlank(maritalText)) {
-            List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女", "详见原病历");
+            List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女", "详见原病历", "无子女");
             for (String word : words) {
                 if (maritalText.contains(word)) {
                     status.set("0");
@@ -63,7 +63,7 @@ public class BEH0376 extends QCCatalogue {
                 }
             }
             String regex = ".*\\d+-\\d+-\\d+-0.*";
-            if (maritalText.matches(regex)){
+            if (maritalText.matches(regex)) {
                 status.set("0");
                 return;
             }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0442.java

@@ -34,7 +34,8 @@ public class BEH0442 extends QCCatalogue {
         }
         String presentText = presentLabel.getText();
         if (StringUtil.isNotBlank(presentText)) {
-            List<String> words = Lists.newArrayList("二便", "大小便", "小便", "大便", "尿","便秘","腹泻");
+            presentText = presentText.replaceAll("糖尿病|尿片", "");
+            List<String> words = Lists.newArrayList("二便", "大小便", "小便", "大便", "尿", "便秘", "腹泻");
             for (String word : words) {
                 if (presentText.contains(word)) {
                     status.set("0");

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0092.java

@@ -44,7 +44,7 @@ public class FIRC0092 extends QCCatalogue {
                         || treatPlanLabel.getPacs().size() > 0)) {
             status.set("0");
         }
-        if (treatPlanLabel.getNursingLevel() == null) {
+        if (!findText && treatPlanLabel.getNursingLevel() == null) {
             info.set("无护理级别");
         }
     }

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0158.java

@@ -26,10 +26,10 @@ public class FIRP0158 extends QCCatalogue {
             Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
             String firstAdmissionName = firstpageStructureMap.get(Content.name);
             String admissionName = beHospitalStructureMap.get(Content.name);
-            if (StringUtil.isBlank(firstAdmissionName) || StringUtil.isBlank(admissionName)){
+            if (StringUtil.isBlank(firstAdmissionName) || StringUtil.isBlank(admissionName)) {
                 return;
             }
-            if (!CatalogueUtil.compareToken(firstAdmissionName, admissionName)) {
+            if (!CatalogueUtil.compareToken(firstAdmissionName.trim(), admissionName.trim())) {
                 status.set("-1");
             }
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE0333.java

@@ -27,7 +27,7 @@ public class PRE0333 extends QCCatalogue {
         }
         for (OperationDoc operationDoc : operationDocs) {
             if (operationDoc.getPreoperativeDiscussionDoc() != null
-                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("主要术中、术后风险及防范措施"))) {
+                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("风险及防范措施"))) {
                 status.set("-1");
             }
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE0334.java

@@ -27,7 +27,7 @@ public class PRE0334 extends QCCatalogue {
         }
         for (OperationDoc operationDoc : operationDocs) {
             if (operationDoc.getPreoperativeDiscussionDoc() != null
-                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("术后注意事项"))) {
+                    && StringUtil.isEmpty(operationDoc.getPreoperativeDiscussionDoc().getStructureMap().get("术中术后注意事项"))) {
                 status.set("-1");
             }
         }

+ 3 - 3
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/OperationAI.java

@@ -36,8 +36,8 @@ public class OperationAI extends ModelAI {
     public static String entityRelationObject = "entity_relation_object";
     public static String outputs = "outputs";
     public static String content = "content";
-    public static List<String> discussionKey = Lists.newArrayList("术前诊断", "术中诊断", "手术名称", "麻醉方式"
-            , "手术经过", "目前情况", "术后注意事项");
+    public static List<String> discussionKey = Lists.newArrayList("术前诊断", "术中诊断", "手术名称", "麻醉方式"
+            , "手术简要经过", "目前情况", "术后注意事项");
 
     public void medrec(InputInfo inputInfo, CRFServiceClient crfServiceClient) {
         JSONArray crfContent = new JSONArray();
@@ -47,7 +47,7 @@ public class OperationAI extends ModelAI {
                 OperationRecordDoc operationRecordDoc = operationDocs.get(i).getOperationRecordDoc();
                 Map<String, String> structureMap = operationRecordDoc.getStructureMap();
                 //存放抓取的药品
-                String content = CatalogueUtil.structureMapJoin(structureMap, Lists.newArrayList("手术经过"));
+                String content = CatalogueUtil.structureMapJoin(structureMap, Lists.newArrayList("手术简要经过"));
                 putContent(crfContent, medicalTextType.get(1), content, "手术记录" + i + "药物");
             }
             if (operationDocs.get(i).getOperationDiscussionDoc() != null) {

+ 6 - 5
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunOperationDocTrans.java

@@ -12,14 +12,12 @@ import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.beilun.util.BeiLunHtmlAnalysis;
-import com.lantone.qc.trans.beilun.util.BeiLunOperationHtmlAnalysis;
-import com.lantone.qc.trans.beilun.util.BeiLunOperationRecordHtmlAnalysis;
-import com.lantone.qc.trans.beilun.util.BeiLunPreoperativeHtmlAnalysis;
+import com.lantone.qc.trans.beilun.util.*;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
+import org.jsoup.Jsoup;
 
 import java.util.List;
 import java.util.Map;
@@ -109,6 +107,8 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
         }
         if (MapUtils.isNotEmpty(structureMap)) {
             OperationDiscussionDoc operationDiscussionDoc = ModelDocGenerate.operationDiscussionDocGen(structureMap);
+            String text = BeiLunHtmlAnalysisUtil.blockDivToStr(Jsoup.parse(content).selectFirst("body").child(0), true);
+            operationDiscussionDoc.setText(text);
             operationDiscussionDoc.setPageData((Map) structureMap);
             return operationDiscussionDoc;
         } else {
@@ -119,7 +119,8 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
     private List<String> operationDiscussion_keyContrasts = Lists.newArrayList(
             "病情记录=手术简要经过",
             "术后诊断=术中后诊断",
-            "患者手术后情况=患者术后情况"
+            "患者手术后情况=患者术后情况",
+            "术后应当特别注意观察的事项:=术后注意事项"
     );
 
 

+ 7 - 5
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunFirstCourseRecordHtmlAnalysis.java

@@ -25,16 +25,18 @@ public class BeiLunFirstCourseRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
             List<String> titles = Lists.newArrayList("(一)病历特点", "(二)诊断依据", "(三)鉴别诊断",
-                    "(四)初步诊断", "(五)诊疗计划", "医生签名");
-            String html = args[0];;
+                    "(四)初步诊断", "(五)诊疗计划", "(二)拟诊讨论", "(三)诊疗计划", "心理治疗",
+                    "疼痛治疗", "营养治疗", "康复治疗", "VTE预防", "医生签名");
+            String html = args[0];
             String recTitle = args[1];
             Document doc = Jsoup.parse(html);
             String htmlContent = BeiLunHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
             if (StringUtil.isNotBlank(htmlContent)) {
-                htmlContent = htmlContent.replace("建议先书写大病", "")
+                htmlContent = htmlContent.replace("—/—", "")
+                        .replace("第1页", "")
+                        .replace("建议先书写大病", "")
                         .replace("历,并对导入的既往史和现病史进行归纳", "")
-                        .replace("若书写者为诊疗组长本人,以下签名框中可只签一个名字", "")
-                        .replace("第1页", "");
+                        .replace("若书写者为诊疗组长本人,以下签名框中可只签一个名字", "");
                 String[] lines = htmlContent.split("\n\n");
                 if (lines.length > 1) {
                     String text = "";

+ 7 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/CommonAnalysisUtil.java

@@ -363,6 +363,13 @@ public class CommonAnalysisUtil {
             } else {
                 structureMap.put("病情记录", content);
             }
+            if (structureMap.containsKey("病情记录")) {
+                String info = structureMap.get("病情记录");
+                if (info.contains("医生签名")) {
+                    structureMap.put("病情记录", info.substring(0, info.lastIndexOf("医生签名")));
+                    structureMap.put("记录医生", "");
+                }
+            }
         }
     }