ソースを参照

Merge remote-tracking branch 'origin/hb/beilun' into hb/beilun

lipc 3 年 前
コミット
d95d206c9b
33 ファイル変更531 行追加58 行削除
  1. 45 0
      dbanaly/src/main/resources/application-db.yml
  2. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03213.java
  3. 47 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0306.java
  4. 54 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0307.java
  5. 55 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0308.java
  6. 44 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0562.java
  7. 46 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0564.java
  8. 72 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0569.java
  9. 66 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/firstcourserecord/FIRC03086.java
  10. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunThreeLevelWardHtmlAnalysis.java
  11. 3 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/BeHospitalizedDocTrans.java
  12. 4 3
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/HangzhoufubaoDocTrans.java
  13. 2 2
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/OperationDocTrans.java
  14. 1 2
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/RescueDocTrans.java
  15. 1 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/TransferRecordDocTrans.java
  16. 5 5
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/BeHospitalizedHtmlAnalysis.java
  17. 1 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/CrisisValueReportHtmlAnalysis.java
  18. 1 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/FirstCourseRecordHtmlAnalysis.java
  19. 4 4
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/LeaveHospitalHtmlAnalysis.java
  20. 1 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/OperationHtmlAnalysis.java
  21. 3 3
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/OperationRecordHtmlAnalysis.java
  22. 1 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/PreoperativeHtmlAnalysis.java
  23. 1 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/RescueHtmlAnalysis.java
  24. 3 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/TransferIntoHtmlAnalysis.java
  25. 2 1
      trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/TransferOutHtmlAnalysis.java
  26. 3 1
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunBeHospitalizedDocTrans.java
  27. 11 4
      trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunOperationDocTrans.java
  28. 9 9
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunBeHospitalizedHtmlAnalysis.java
  29. 2 1
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunFirstCourseRecordHtmlAnalysis.java
  30. 9 3
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunOperationRecordHtmlAnalysis.java
  31. 16 4
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunPreoperativeHtmlAnalysis.java
  32. 2 3
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunThreeLevelWardHtmlAnalysis.java
  33. 13 4
      trans/src/main/java/com/lantone/qc/trans/xszyy/util/comsis/XszyyCommonAnalysisUtil.java

+ 45 - 0
dbanaly/src/main/resources/application-db.yml

@@ -0,0 +1,45 @@
+spring:
+  datasource:
+    name: druidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      lantone:
+        driver-class-name: com.mysql.jdbc.Driver
+        url: jdbc:mysql://192.168.2.122:3306/qc?useUnicode=true&characterEncoding=utf8
+        username: root
+        password: lantone
+        initial-size: 8
+        min-idle: 1
+        max-active: 20
+        max-wait: 60000
+        time-between-eviction-runsMillis: 60000
+        min-evictable-idle-timeMillis: 300000
+        validation-query: select 'x' FROM DUAL
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        pool-prepared-statements: true
+        max-open-prepared-statements: 20
+        max-pool-prepared-statement-per-connection-size: 20
+        filters: stat
+        connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+        use-global-data-source-stat: true
+  redis:
+    database: 10
+    host: 192.168.2.121
+    port: 6379
+    password: lantone
+    timeout: 2000
+    lettuce:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-wait: -1ms
+        max-idle: 8
+
+mybatis-plus:
+  type-aliases-package: com.lantone.qc.dbanaly.lt.entity
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+xml-is-encryped: true

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03213.java

@@ -70,7 +70,7 @@ public class FIRP03213 extends QCCatalogue {
         }
 
         for (String noMatchWord : noMatchWords) {
-            if (icdCode.contains(noMatchWord)) {
+            if (icdCode.equals(noMatchWord)) {
                 status.set("-1");
                 info.set(noMatchWord);
                 return;

+ 47 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0306.java

@@ -0,0 +1,47 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0306
+ * @Description : 输血记录中无输血指征
+ * CRF缺少足够标注数据,使用规则判断输血原因是否有数字
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0306 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
+            status.set("0");
+            return;
+        }
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                if (cliBStructureMap.containsKey("病历内容")) {
+                    String bloodType = cliBStructureMap.get("病历内容");
+                    if (StringUtil.isNotBlank(bloodType)) {
+                        if (bloodType.contains("血常规")) {
+                            status.set("0");
+                            return;
+                        }
+                    }
+                }
+            }
+        } else {
+            status.set("0");
+        }
+    }
+}

+ 54 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0307.java

@@ -0,0 +1,54 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0307
+ * @Description : 输血记录中无血液制品种类及量
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0307 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
+            status.set("0");
+            return;
+        }
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            int matchSum = 0;
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                //台州
+                if (StringUtils.isNotEmpty(cliBStructureMap.get("输血计划"))) {
+                    matchSum++;
+                    continue;
+                }
+                if (cliBStructureMap.containsKey("病历内容")){
+                    String bloodType = cliBStructureMap.get("病历内容");
+                    if (StringUtil.isNotBlank(bloodType)) {
+                        if (bloodType.contains("今日予")) {
+                            matchSum++;
+                        }
+                    }
+                }
+            }
+            if (matchSum == clinicalBloodDocs.size()) {
+                status.set("0");
+            }
+        }
+
+    }
+}

+ 55 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0308.java

@@ -0,0 +1,55 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0308
+ * @Description :  输血记录中未记录是否有不良反应
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0308 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
+            status.set("0");
+            return;
+        }
+
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            String regex = ".*(未.*|无.*|否.*).*(输血反应|不良反应).*";
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                if (StringUtils.isNotEmpty(cliBStructureMap.get("输注后效果评价")) && (cliBStructureMap.get("输注后效果评价").contains("不良反应")
+                        || cliBStructureMap.get("输注后效果评价").contains("不适") || cliBStructureMap.get("输注后效果评价").contains("未见"))) {
+                    status.set("0");
+                    break;
+                }
+
+                String infusion_process = cliBStructureMap.get("病历内容");
+                if (StringUtils.isNotEmpty(infusion_process)) {
+                    if (infusion_process.matches(regex) || infusion_process.contains("无") || infusion_process.contains("未见")
+                            || infusion_process.contains("未觉")) {
+                        status.set("0");
+                    } else {
+                        status.set("-1");
+                    }
+                }
+
+            }
+        } else {
+            status.set("0");
+        }
+    }
+}
+

+ 44 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0562.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0562
+ * @Description : 输血记录开始输血时间未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0562 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if(ListUtil.isEmpty(clinicalBloodDocs)){
+            return;
+        }
+
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                String start = cliBStructureMap.get("输注开始");
+                String record = cliBStructureMap.get("病历内容");
+                if(StringUtil.isNotBlank(start) || StringUtil.isNotBlank(cliBStructureMap.get("输血开始日期"))) break;
+                if (StringUtil.isBlank(start) && !record.contains("开始")) {
+                    status.set("-1");
+                    break;
+                }
+            }
+        }
+
+    }
+}

+ 46 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0564.java

@@ -0,0 +1,46 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.clinicalblood;
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : CLI0564
+ * @Description : 输血记录输血结束时间未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0564 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if(ListUtil.isEmpty(clinicalBloodDocs)){
+            return;
+        }
+
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+//            List<ClinicalBloodDoc> bloodDocs = clinicalBloodDocs.stream().filter(bloodDoc -> bloodDoc.getStructureMap().get("输血后效果评价") == null).collect(Collectors.toList());
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                String start = cliBStructureMap.get("输注结束");
+                String record = cliBStructureMap.get("病历内容");
+                if(StringUtil.isNotBlank(start) || StringUtil.isNotBlank(cliBStructureMap.get("输血结束日期"))) break;
+                if (StringUtil.isBlank(start) && !record.contains("输注结束")&& !record.contains("完毕")
+                        && !record.contains("输血结束")) {
+                    status.set("-1");
+                    break;
+                }
+            }
+        }
+
+    }
+}

+ 72 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ningbozhongyi/clinicalblood/CLI0569.java

@@ -0,0 +1,72 @@
+package com.lantone.qc.kernel.catalogue.hospital.ningbozhongyi.clinicalblood;
+
+
+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.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @ClassName : CLI0569
+ * @Description :  输血记录血型未填写
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class CLI0569 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (ListUtil.isEmpty(clinicalBloodDocs)) {
+            return;
+        }
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            int matchSum = 0;
+            for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
+                Map<String, String> cliBStructureMap = cliB.getStructureMap();
+                //台州
+                if (StringUtils.isNotEmpty(cliBStructureMap.get("血型"))) {
+                    matchSum++;
+                    continue;
+                }
+                String title = cliBStructureMap.get("标题");
+                if (StringUtil.isNotBlank(title) && title.contains("蛋白")){
+                    matchSum++;
+                    continue;
+                }
+                String record = cliBStructureMap.get("病历内容");
+                if (record.contains("A型") || record.contains("AB型") || record.contains("B型") || record.contains("O型")) {
+                    matchSum++;
+                    continue;
+                }
+                Pattern compile = Pattern.compile("[a-zA-Z]+型");
+                Matcher matcher = compile.matcher(StringUtil.removeBlank(cliBStructureMap.get("输注种类、血型、数量")));
+                if (matcher.find()) {
+                    matchSum++;
+                }
+                if (cliBStructureMap.containsKey("输注种类、血型、数量")) {
+                    String bloodType = cliBStructureMap.get("输注种类、血型、数量");
+                    if (StringUtils.isNotEmpty(bloodType) &&
+                            (bloodType.contains("白蛋白") || bloodType.contains("凝血酶原复合物")
+                                    || bloodType.contains("血浆"))) {
+                        matchSum++;
+                        continue;
+                    }
+                }
+            }
+            if (matchSum != clinicalBloodDocs.size()) {
+                status.set("-1");
+            }
+        }
+
+    }
+}

+ 66 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/firstcourserecord/FIRC03086.java

@@ -0,0 +1,66 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.firstcourserecord;
+
+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.FirstCourseRecordDoc;
+import com.lantone.qc.pub.model.label.TreatPlanLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRC03086
+ * @Description : 治疗措施不具体(缺护理级别)
+ * @Author : wsy
+ * @Date: 2021-01-07 15:21
+ */
+@Component
+public class FIRC03086 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
+        if (firstCourseRecordDoc == null) {
+            status.set("0");
+            return;
+        }
+        TreatPlanLabel treatPlanLabel = firstCourseRecordDoc.getTreatPlanLabel();
+        if (treatPlanLabel == null) {
+            status.set("0");
+            return;
+        }
+        String text = treatPlanLabel.getText();
+        boolean findText = false;
+        if (StringUtil.isNotBlank(text) && text.contains("护理")) {
+            findText = true;
+        }
+        Map<String, String> structureMap = firstCourseRecordDoc.getStructureMap();
+        String structureV = structureMap.get("诊疗计划");
+        if (StringUtil.isBlank(structureV) && StringUtil.isBlank(text)) {
+            status.set("0");
+            return;
+        }
+        //规则匹配增加
+        if (structureV.contains("一级") || structureV.contains("二级") || structureV.contains("三级") ||
+                structureV.contains("Ⅰ级") || structureV.contains("Ⅱ级") || structureV.contains("Ⅲ级") ||
+                structureV.contains("I级") || structureV.contains("II级") || structureV.contains("III级") ||
+                structureV.contains("I护") || structureV.contains("II护") || structureV.contains("III护") ||
+                structureV.contains("Ⅰ护") || structureV.contains("Ⅱ护") || structureV.contains("Ⅲ护")) {
+            status.set("0");
+            return;
+        }
+        if (StringUtil.isNotBlank(structureV) && structureV.contains("护理")) {
+            findText = true;
+        }
+        if (treatPlanLabel.getNursingLevel() != null) {
+            if (findText && !"护理常规".equals(treatPlanLabel.getNursingLevel().getName())) {
+                status.set("0");
+                return;
+            }
+        }
+        if (treatPlanLabel.getNursingLevel() == null || "护理常规".equals(treatPlanLabel.getNursingLevel().getName())) {
+            status.set("-1");
+            return;
+        }
+    }
+}

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunThreeLevelWardHtmlAnalysis.java

@@ -41,6 +41,9 @@ public class BeiLunThreeLevelWardHtmlAnalysis implements BeiLunHtmlAnalysis {
             String htmlText = BeiLunHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
             htmlText = htmlText.replace("注意:上级医师查房主要记 录:患者病情、诊断、鉴别诊断、当前治疗措施和疗效的分析及下一步诊疗意见等,能反应上级医 师的水平。", "")
                     .replace("提醒:有创诊疗操作记录内容包括操作名称、时间、步骤、结果及患者的一般情况,记录操作过 程是否顺利,有无不良反应,术后注意事项,操作医师签名、记录时间等。 手术室完成的、治疗性质的及全麻下完成的有创诊疗操作参照手术管理。(包括介入治疗、胃肠镜 下肿瘤切除/粘膜下肿瘤剥除等)", "");
+            if (htmlText.contains("SignControl-")) {
+                htmlText = htmlText.substring(0, htmlText.indexOf("SignControl-"));
+            }
             CommonAnalysisUtil.extractWardInfo(recTitle, htmlText, structureMap);
             BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/BeHospitalizedDocTrans.java

@@ -67,10 +67,12 @@ public class BeHospitalizedDocTrans extends ModelDocTrans {
             "疼痛评估=疼痛",
             "代诉=主诉",
             "入院日期=入院时间",
+            "入院于=入院时间",
             "记录日期=记录时间",
             "体格检查一般情况=一般体格检查一般情况",
             "一般体格检查一般状况=一般体格检查一般情况",
-            "一般状况=一般体格检查一般情况"
+            "一般状况=一般体格检查一般情况",
+            "联系电话=电话"
 //            "西医诊断"
     );
 

+ 4 - 3
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/HangzhoufubaoDocTrans.java

@@ -30,6 +30,7 @@ public class HangzhoufubaoDocTrans extends com.lantone.qc.trans.DocTrans {
                 if (i.getTitle().equals("会诊")) {
                     ConsultationDocTrans consultationDocTrans = new ConsultationDocTrans();
                     inputInfo.setConsultationDocs(consultationDocTrans.extract(i));
+
                 }
                 if (i.getTitle().equals("手术")) {
                     OperationDocTrans operationDocTrans = new OperationDocTrans();
@@ -51,7 +52,7 @@ public class HangzhoufubaoDocTrans extends com.lantone.qc.trans.DocTrans {
                     ClinicBloodEffectDocTrans clinicBloodEffectDocTrans = new ClinicBloodEffectDocTrans();
                     inputInfo.setClinicBloodEffectDocs(clinicBloodEffectDocTrans.extract(i));
                 }
-                if (i.getTitle().equals("危急值记录")) {
+                         if (i.getTitle().equals("危急值记录")) {
                     CrisisValueReportDocTrans crisisValueReportDocTrans = new CrisisValueReportDocTrans();
                     inputInfo.setCrisisValueReportDocs(crisisValueReportDocTrans.extract(i));
                 }
@@ -85,7 +86,7 @@ public class HangzhoufubaoDocTrans extends com.lantone.qc.trans.DocTrans {
                 }
                 if (i.getTitle().equals("首次病程录")) {
                     FirstCourseRecordDocTrans firstCourseRecordDocTrans = new FirstCourseRecordDocTrans();
-                    inputInfo.setFirstCourseRecordDoc(firstCourseRecordDocTrans.extract(i));
+                     inputInfo.setFirstCourseRecordDoc(firstCourseRecordDocTrans.extract(i));
                 }
                 if (i.getTitle().equals("病案首页")) {
                     FirstPageRecordDocTrans firstPageRecordDocTrans = new FirstPageRecordDocTrans();
@@ -125,7 +126,7 @@ public class HangzhoufubaoDocTrans extends com.lantone.qc.trans.DocTrans {
                     inputInfo.setBeHospitalizedDoc(outDepDocTrans.extract(i));
                 }
                 /*******************************VTE评分 trans解析*****************************************/
-                if (i.getTitle().equals("VTE评分")) {
+                 if (i.getTitle().equals("VTE评分")) {
                     VTEGradeDocTrans vteGradeDocTrans = new VTEGradeDocTrans();
                     inputInfo.setVteGradeDoc(vteGradeDocTrans.extract(i));
                 }

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/OperationDocTrans.java

@@ -107,7 +107,7 @@ public class OperationDocTrans extends ModelDocTrans {
         } else {
             String recTitle = contentMap.get("recTitle").toString();
             String recTypeId = contentMap.get("recTypeId").toString();
-            HtmlAnalysis ningBoZhongYiHtmlAnalysis = new OperationHtmlAnalysis();
+            OperationHtmlAnalysis ningBoZhongYiHtmlAnalysis = new OperationHtmlAnalysis();
             Map<String, String> sourceMap = ningBoZhongYiHtmlAnalysis.analysis(content, recTitle, recTypeId);
             if (MapUtils.isNotEmpty(sourceMap)) {
                 structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationDiscussion_keyContrasts);
@@ -191,7 +191,7 @@ public class OperationDocTrans extends ModelDocTrans {
             "手术经过及处理(包括患者的体位、切口处理、病灶所见及手术步骤等)=手术经过",
             "术(中)后诊断=术中诊断",
             "手术主刀医师=主刀医师",
-            "主刀医师签名=主刀签字"
+            "主刀医师签名=主刀签字","输入血/血制品=输入血或血制品","时 间=时间"
     );
 
 

+ 1 - 2
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/RescueDocTrans.java

@@ -66,8 +66,7 @@ public class RescueDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "病历标题=标题",
-            "病情记录=抢救内容"
+            "病情记录=抢救内容","病历日期=抢救记录"
     );
 
 }

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/TransferRecordDocTrans.java

@@ -296,7 +296,7 @@ public class TransferRecordDocTrans extends ModelDocTrans {
     }
 
     private List<String> keyContrasts = Lists.newArrayList(
-            "医师签名=记录医生",
+
             "病历标题=标题",
             "病情记录=病历内容",
             "签名时间=记录时间"

+ 5 - 5
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/BeHospitalizedHtmlAnalysis.java

@@ -49,16 +49,16 @@ public class BeHospitalizedHtmlAnalysis implements HtmlAnalysis {
     //一般模板
     private void analysisGeneral(Document doc, String recTitle, Map<String, String> map) {
 
-        List<String> titles = Lists.newArrayList("姓  名", "性   别", "出生日期", "出  地", "职 业", "民 族", "宗教信仰", "婚 姻",
+        List<String> titles = Lists.newArrayList("姓名", "性别", "年龄","出生日期","父母姓名", "出生地", "职业", "民族", "宗教信仰", "婚 姻","入院时间","籍贯","入院于","生于","电话","供史者",
                 "联系地址", "联系电话", "入院日期", "记录日期", "身份证号码", "病史陈述者", "病史可靠程度", "产前检查", "丈夫姓名",
-                "主 诉", "现病史", "既往史", "个人史", "月经史", "婚姻史", "生育史", "家族史", "体格检查","一般状况","一般体格检查一般情况","一般体格检查一般状况","体格检查一般情况","辅助检查", "妇科检查","产科检查","实验室检查", "特殊检查",
-                "初步诊断", "康复需求","营养需求","医生签名", "医师签名", "签名时间", "记录时间", "补充诊断", "修正诊断","其    他");
+                "主诉", "现病史", "既往史", "个人史", "月经史", "婚姻史", "生育史", "家族史", "体格检查","一般状况","一般体格检查一般情况","一般体格检查一般状况","体格检查一般情况","辅助检查", "妇科检查","产科检查","实验室检查", "特殊检查",
+                "初步诊断", "康复需求","营养需求","医生签名", "医师签名", "签名时间", "记录时间", "补充诊断", "修正诊断","其他");
         //个人基础信息table解析
-        String htmlContent = CommonAnalysisUtil.html2String(doc.toString());
+        String htmlContent = CommonAnalysisUtil.html2String(doc.toString()).replaceAll(" ","").replaceAll("[   ]", "").replaceAll(" ", "");
         if (StringUtil.isNotBlank(htmlContent)) {
             CommonAnalysisUtil.html2StructureMap(titles,htmlContent,map);
         }
-        //去掉生育史里面的表格jj
+        //去掉生育史里面的表格
         String reproductiveHistory = map.get("生育史");
         if (StringUtil.isNotBlank(reproductiveHistory)) {
             int index = reproductiveHistory.indexOf("孕次生产年月流产早产足月产");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/CrisisValueReportHtmlAnalysis.java

@@ -44,7 +44,7 @@ public class CrisisValueReportHtmlAnalysis implements HtmlAnalysis {
         }
 
         String text = HtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
-        ArrayList<String> strings = Lists.newArrayList("报告时间", "报告内容", "处理情况", "记录医师");
+        ArrayList<String> strings = Lists.newArrayList("病历日期","报告时间", "报告内容", "处理情况", "记录医师");
         HangzhoufubaoTranUtils.getStructureMapSplitCommonCutByList(map, text, recTitle, strings);
     }
 

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/FirstCourseRecordHtmlAnalysis.java

@@ -32,7 +32,7 @@ public class FirstCourseRecordHtmlAnalysis implements HtmlAnalysis {
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
-            List<String> titles = Lists.newArrayList("记录时间","一般情况","病史特点", "初步诊断", "诊断依据", "鉴别诊断","治疗目标","诊疗计划","医生签名");
+            List<String> titles = Lists.newArrayList("记录时间","一般情况","一、病史特点", "二、初步诊断", "三、诊断依据", "四、鉴别诊断","五、治疗目标","六、诊疗计划","医生签名");
             String htmlContent = HtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
             if (StringUtil.isNotBlank(htmlContent)) {
                 CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);

+ 4 - 4
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/LeaveHospitalHtmlAnalysis.java

@@ -25,10 +25,10 @@ public class LeaveHospitalHtmlAnalysis implements HtmlAnalysis {
     public Map<String, String> analysis(String... args) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
-            List<String> titles = Lists.newArrayList("姓名", "性别","出生年月","主诊医师",
-                    "入院日期", "出院日期", "入院诊断", "出院诊断","疗效评价", "住院天数","入院情况", "住院诊治经过(包括重要发现和结论、接受手术和操作、药物和其它治疗)","辅助检查"
-                    ,"出院情况","出院去向", "出院带药","出院指导","复诊", "健康宣教",
-                    "可能需要的紧急医疗", "出院交通需求", "监护人意见", "监护人签名",
+            List<String> titles = Lists.newArrayList("姓名", "性别", "出生年月", "主诊医师",
+                    "入院日期", "出院日期", "入院诊断", "出院诊断", "疗效评价", "住院天数", "入院情况", "住院诊治经过(包括重要发现和结论、接受手术和操作、药物和其它治疗)", "辅助检查"
+                    , "出院情况", "出院去向", "出院带药", "出院指导", "复诊", "健康宣教",
+                    "可能需要的紧急医疗", "出院交通需求", "监护人意见", "监护人签名", "时间", "医生签名", "患者或家属意见", "患方签名",
                     "健康指导");
             String html = args[0];
             String recTitle = args[1];

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/OperationHtmlAnalysis.java

@@ -34,7 +34,7 @@ public class OperationHtmlAnalysis implements HtmlAnalysis {
           /*  analysisGeneral(recTitle, bigDivElement, map);
             CommonAnalysisUtil.makeEmpty(map, "医生签名");*/
 
-            getStructureMap(structureMap, htmlText, recTitle);
+            HangzhoufubaoTranUtils.getStructureMapSplitCommonCutByList(structureMap,htmlText,recTitle,null);
 
             //  structureMap.put("记录医生")
             HtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/OperationRecordHtmlAnalysis.java

@@ -44,9 +44,9 @@ public class OperationRecordHtmlAnalysis implements HtmlAnalysis {
         text = text.replaceAll("第1页", "")
                 .replace("输入血/血制品", "输入血或血制品");
         List<String> titles = Lists.newArrayList(
-                "手术时间","手术开始时间", "手术结束时间", "手术全程时间", "术前诊断", "手术名称", "手术指征", "术后诊断", "主刀医师", "麻醉人员", "器械护士",
-                "儿科医生", "护婴人", "指导人", "麻醉方式", "麻醉体位", "麻醉效果", "手术经过", "术中并发症", "冰冻切片诊断", "送检手术标本",
-                "失血量", "输入血/血制品", "植入物", "手术医生签名", "日 期");
+                "手术时间", "手术结束时间", "手术全程时间", "术前诊断", "手术名称", "手术指征", "术后诊断", "主刀医师", "麻醉人员", "器械护士",
+                "儿科医生", "护婴人", "指导人", "麻醉方式", "麻醉体位", "麻醉效果", "手术经过", "术中并发症", "冰冻切片诊断", "送检手术标本","手术切口类别",
+                "失血量", "输入血/血制品", "植入物", "手术医生签名", "时 间");
         titles = CommonAnalysisUtil.sortTitles(titles, text);
         CommonAnalysisUtil.cutByTitles(text, titles, 0, map);
 /*        CommonAnalysisUtil.processTypeRight(map, "NNIS分级");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/PreoperativeHtmlAnalysis.java

@@ -60,7 +60,7 @@ public class PreoperativeHtmlAnalysis implements HtmlAnalysis {
                 .replace("(如高血压病、冠心病、糖尿病、脑梗、心梗、心肺肝肾功能不全、口服抗凝药等)", "")
                 .replace("年月日时\n" + "分", "")
                 .replace("一、简要病情", "简要病情");*/
-        text = text.replace("参加人员(姓名及专业技术职务) ", "参加人员");
+        text = text.replace("参加人员(姓名及专业技术职务)", "参加人员");
         text = text.replace("患者目前心理状态/文化需求 ", "患者目前心理状态或文化需求");
         List<String> titles = Lists.newArrayList("记录时间", "术前讨论时间", "讨论方式", "参加人员", "简要病情", "术前诊断", "手术指征"
                 ,  "术前诊断", "手术指征", "术前准备", "手术禁忌证", "患者目前心理状态或文化需求", "拟行手术方案",

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/RescueHtmlAnalysis.java

@@ -44,7 +44,7 @@ public class RescueHtmlAnalysis implements HtmlAnalysis {
         }
         String htmlText = HtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
         List<String> titles = Lists.newArrayList(
-                "抢救时间", "抢救内容", "参加人员", "记录医师"
+                "病例标题","病例日期","抢救开始时间","抢救结束时间","注意事项","参加抢救的医务人员姓名","病情变化情况","抢救经过及措施","记录医师"
         );
         HangzhoufubaoTranUtils.getStructureMapSplitByLineCutByList(structureMap, htmlText, recTitle, titles);
 

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/TransferIntoHtmlAnalysis.java

@@ -44,9 +44,11 @@ public class TransferIntoHtmlAnalysis implements HtmlAnalysis {
             bigDivElement.selectFirst("hr").previousElementSiblings().remove();
         }
         String text = HtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
+        text.replaceAll("患者姓名", "患者姓名:");
         List<String> titles = Lists.newArrayList(
-                "入院情况", "入院诊断", "诊疗经过", "目前情况", "目前诊断", "转科目的", "诊疗计划", "医师签名", "时间"
+                "入院情况", "入院诊断", "诊疗经过", "目前情况", "目前诊断", "转科目的", "诊疗计划", "医师签名", "时间","患者姓名"
         );
+
         HangzhoufubaoTranUtils.getStructureMapSplitCommonCutByList(map, text, recTitle, titles);
     }
 

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/hangzhoufubao/util/TransferOutHtmlAnalysis.java

@@ -44,6 +44,7 @@ public class TransferOutHtmlAnalysis implements HtmlAnalysis {
             bigDivElement.selectFirst("hr").previousElementSiblings().remove();
         }
         String text = HtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
+        text.replaceAll("患者姓名", "患者姓名:");
         List<String> titles = Lists.newArrayList(
                 "入院情况",
                 "入院诊断",
@@ -53,7 +54,7 @@ public class TransferOutHtmlAnalysis implements HtmlAnalysis {
                 "转科目的",
                 "注意事项",
                 "医师签名",
-                "时间"
+                "时间","患者姓名"
         );
         HangzhoufubaoTranUtils.getStructureMapSplitCommonCutByList(map, text, recTitle, titles);
 

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunBeHospitalizedDocTrans.java

@@ -75,7 +75,9 @@ public class BeiLunBeHospitalizedDocTrans extends ModelDocTrans {
             "补充及专科检查=专科检查",
             "辅 助 检 查=辅助检查",
             "入 院 诊 断=入院诊断",
-            "初步诊断=入院诊断"
+            "初步诊断=入院诊断",
+            "住址=单位或住址",
+            "住院号=住院号码"
     );
 
 }

+ 11 - 4
trans/src/main/java/com/lantone/qc/trans/xszyy/BeiLunOperationDocTrans.java

@@ -205,12 +205,16 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
     }
 
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
-            "术后诊断=术中后诊断",
-            "麻醉人员=麻醉医师",
+            "术后诊断=术中后诊断","手术后诊断=术中后诊断",
+            "麻醉人员=麻醉医师","手法方式=手术名称","手术方式=手术名称","手术方案=手术名称","手术前诊断=术前诊断",
+            "手术经过(包括病人体位、切口选择、病灶所见、术中出现情况及处理等)=手术经过及处理",
+            "口选择、病灶所见、术中出现情况及处理等)=手术经过及处理",
+            "手术前诊断=术前诊断",
             "手术经过=手术经过及处理",
             "主刀医师签名=主刀医师",
             "记录医师签名=记录医生",
             "记录医师=记录医生",
+            "医师签名=记录医生",
             "手术时间=手术日期"
     );
 
@@ -304,9 +308,12 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
             "主 持 人=主持人",
             "参加人员姓名及专业技术职称=参加人员",
             "报告病史=简要病情",
+            "讨论意见内容记录=具体讨论意见","讨论记录=具体讨论意见",
+            "拟施手术名称和方式=拟施手术名称及方式","手术方式=拟施手术名称及方式",
             "讨论意见内容记录=具体讨论意见",
-            "记录者签名=记录医生",
-            "记录者签名=记录医生"
+            "入院时间=入院日期","麻醉方式=拟施麻醉方式",
+            "(6)目前诊断=术前诊断","(2)术前准备=术前准备",
+            "(4)可能出现的意外及防范措施=注意事项","(1)手术指征=手术指征","报告病史=简要病情","(3)手术方案=拟施手术名称及方式"
 
     );
 

+ 9 - 9
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunBeHospitalizedHtmlAnalysis.java

@@ -46,17 +46,17 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
 
     //一般模板
     private void analysisGeneral(Document doc, String recTitle, Map<String, String> map) {
-        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","入 院 记 录","住 院 大 病 历",
-                "姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
+        List<String> titles = Lists.newArrayList("家长姓名","病区","床号","住院号码","病案号","住院号","入 院 记 录","住 院 大 病 历",
+                "姓 名","职业", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
                 "民 族","身份证号码","发病节气","病案号","单位或住址","主 诉","现病史","既往史","个人史","婚育史","家族史",
                 "专项 评估","专项评估",
-                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
-                "书写医生","医师签名","书写医师","修正诊断"
+                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查","辅助检查", "入 院 诊 断","初步诊断",
+                "书写医生","医师签名","书写医师","修正诊断","家长电话","出生年月","住 址"
         );
         String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
         if (StringUtil.isNotBlank(htmlContent)) {
             //有冒号版本
-//            XszyyCommonAnalysisUtil.html2StructureMap(titles,htmlContent,map);
+            XszyyCommonAnalysisUtil.html2StructureMap(titles,htmlContent,map);
             //无冒号版本
             XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
         }
@@ -83,11 +83,11 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
 
     //24小时出入院记录、24小时出入院记录(全院)、24小时入出院记录(全院通用)、24小时内入院死亡记录(全院通用)
     private void analysis24h(Document doc, Map<String, String> map) {
-        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","入 院 记 录","住 院 大 病 历",
+        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","病案号","住院号","入 院 记 录","住 院 大 病 历",
                 "姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
                 "民 族","身份证号码","发病节气","病案号","单位或住址","主 诉","现病史","既往史","个人史","婚育史","家族史",
                 "专项 评估","专项评估",
-                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
+                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查","辅助检查", "入 院 诊 断","初步诊断",
                 "书写医生","医师签名","书写医师","修正诊断"
         );
         String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
@@ -121,11 +121,11 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
 
     //原-日间病历入出院记录、日间病历-性早熟
     private void analysisDay(Document doc, Map<String, String> map) {
-        List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号码","入 院 记 录","住 院 大 病 历",
+        List<String> titles = Lists.newArrayList("家长姓名","病区","床号","住院号码","病案号","住院号","入 院 记 录","住 院 大 病 历",
                 "姓 名", "职 业", "性 别", "入院日期","年 龄", "记录日期", "婚 姻","病史陈述者", "出生地","可靠程度",
                 "民 族","身份证号码","发病节气","病案号","单位或住址","主 诉","现病史","既往史","个人史","婚育史","家族史",
                 "专项 评估","专项评估",
-                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查", "入 院 诊 断","初步诊断",
+                "体 格 检 查","体 格 检 查 表 ( 一 )","补充及专科检查","辅 助 检 查","辅助检查", "入 院 诊 断","初步诊断",
                 "书写医生","医师签名","书写医师","修正诊断"
         );
         String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunFirstCourseRecordHtmlAnalysis.java

@@ -29,7 +29,8 @@ public class BeiLunFirstCourseRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
-            List<String> titles = Lists.newArrayList("病例特点","拟诊讨论","初步诊断","诊疗方案","医师签名"
+            List<String> titles = Lists.newArrayList("病例特点","拟诊讨论","初步诊断","诊疗方案",
+                    "医师签名","诊疗计划"
             );
             String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
             if (StringUtil.isNotBlank(htmlContent)) {

+ 9 - 3
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunOperationRecordHtmlAnalysis.java

@@ -32,8 +32,9 @@ public class BeiLunOperationRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             List<String> titles = Lists.newArrayList("姓名","病区","床号","住院号","手 术 记 录 单",
-                    "手术日期","手术时间","开始时间","结束时间","术前诊断","手术名称","术后诊断","手术人员","麻醉方式","麻醉人员","手术经过",
-                    "记录医师签名","主刀医师签名","主刀医师","记录医师","科室意见","科主任"
+                    "手术日期","手术时间","开始时间","结束时间","手术前诊断","术前诊断","手法方式","手术方式","手术方案","手术名称","手术后诊断","术后诊断","手术人员","麻醉方式","麻醉人员","手术经过",
+                    "手术经过(包括病人体位、切口选择、病灶所见、术中出现情况及处理等)","口选择、病灶所见、术中出现情况及处理等)",
+                    "记录医师签名","主刀医师签名","主刀医师","记录医师","科室意见","科主任","医师签名"
             );
             String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
 
@@ -45,11 +46,16 @@ public class BeiLunOperationRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
                     map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("主刀医师签名")));
                     map.put("主刀医师签名",map.get("主刀医师签名").substring(0,map.get("主刀医师签名").indexOf(map.get("记录时间"))));
                 }
-                //记录医师存在记录时间
+                //记录医师存在记录时间
                 if(map.containsKey("记录医师")&&XszyyCommonAnalysisUtil.extractDate(map.get("记录医师"))!=null){
                     map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("记录医师")));
                     map.put("记录医师",map.get("记录医师").substring(0,map.get("记录医师").indexOf(map.get("记录时间"))));
                 }
+                //医师签名存在记录时间
+                if(map.containsKey("医师签名")&&XszyyCommonAnalysisUtil.extractDate(map.get("医师签名"))!=null){
+                    map.put("记录时间",XszyyCommonAnalysisUtil.extractDate(map.get("医师签名")));
+                    map.put("医师签名",map.get("医师签名").substring(0,map.get("医师签名").indexOf(map.get("记录时间"))));
+                }
             }
 
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);

+ 16 - 4
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunPreoperativeHtmlAnalysis.java

@@ -32,10 +32,10 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             List<String> titles = Lists.newArrayList("简要病情","术前诊断","手术指征","拟施手术名称和方式","拟施麻醉方式",
-                    "注意事项","术者术前查房情况","书写医师",
-
-                    "入院日期","讨论日期","讨论地点","主 持 人","参加人员姓名及专业技术职称","报告病史", "讨论意见内容记录","主持人小结意见","记录者签名","记录者",
-                    "主持人签名"
+                    "注意事项","术者术前查房情况","书写医师","医师签名",
+                    "术前准备","麻醉方式","手术人员","手术方式",
+                    "入院日期","入院时间","讨论日期","讨论时间","讨论地点","主 持 人","参加人员姓名及专业技术职称","参加人员","报告病史", "讨论记录","讨论意见内容记录","记录者签名","记录者",
+                    "主持人签名","(4)可能出现的意外及防范措施","(3)手术方案","(2)术前准备","(1)手术指征","主持人小结意见","主持人小结"
             );
             String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
 
@@ -47,6 +47,18 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
                 }
             }
 
+            if(StringUtil.isNotEmpty(structureMap.get("主持人小结意见")) && structureMap.get("主持人小结意见").contains("手术指征")){
+                String operationDesc=structureMap.get("主持人小结意见").substring(structureMap.get("主持人小结意见").lastIndexOf("手术指征")+4);
+                structureMap.put("手术指征",operationDesc);
+            }
+            if(StringUtil.isNotEmpty(structureMap.get("主持人小结")) && structureMap.get("主持人小结").contains("手术指征")){
+                String operationDesc=structureMap.get("主持人小结").substring(structureMap.get("主持人小结").lastIndexOf("手术指征")+4);
+                structureMap.put("手术指征",operationDesc);
+            }
+            if(StringUtil.isNotEmpty(structureMap.get("报告病史")) && structureMap.get("报告病史").contains("目前诊断")){
+                String diag=structureMap.get("报告病史").substring(structureMap.get("报告病史").lastIndexOf("目前诊断"),structureMap.get("报告病史").lastIndexOf("讨论目的")-3);
+                structureMap.put("(6)目前诊断",diag);
+            }
             structureMap.put("文书标题",recTitle);
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {

+ 2 - 3
trans/src/main/java/com/lantone/qc/trans/xszyy/util/BeiLunThreeLevelWardHtmlAnalysis.java

@@ -35,7 +35,7 @@ public class BeiLunThreeLevelWardHtmlAnalysis implements BeiLunHtmlAnalysis {
             XszyyCommonAnalysisUtil.xszyyExtractWardInfo(recTitle, htmlContent, structureMap);
 
             //病情记录存在副主任医师和书写医师字段
-            if(structureMap.containsKey("病情记录")){
+            /*if(structureMap.containsKey("病情记录")){
                 String bqtext = structureMap.get("病情记录");
 
                 //无冒号版本
@@ -45,8 +45,7 @@ public class BeiLunThreeLevelWardHtmlAnalysis implements BeiLunHtmlAnalysis {
                 if(bqtext.contains("副主任医师")){
                     structureMap.put("病情记录",bqtext.substring(0,bqtext.lastIndexOf("副主任医师")));
                 }
-            }
-
+            }*/
 
             XszyyHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         } catch (Exception e) {

+ 13 - 4
trans/src/main/java/com/lantone/qc/trans/xszyy/util/comsis/XszyyCommonAnalysisUtil.java

@@ -282,10 +282,10 @@ public class XszyyCommonAnalysisUtil {
         Pattern pattern2 = Pattern.compile("[0-9]{4}[年][0-9]{1,2}[月][0-9]{1,2}[日]([ ])?([0-9]{1,2}[时]?[:]?)?([0-9]{1,2}[分]?[:]?)?([0-9]{1,2}[秒]?)?");
         Matcher matcher = pattern.matcher(top);
         Matcher matcher2 = pattern2.matcher(top);
-        if (matcher2.find()) {
-            return matcher2.group(0);
-        } else if (matcher.find()) {
+        if (matcher.find()) {
             return matcher.group(0);
+        } else if (matcher2.find()) {
+            return matcher2.group(0);
         } else {
             Pattern p1 = Pattern.compile("[0-9]{4}年[0-9]+月[0-9]+日[0-9]+时[0-9]+分");
             Matcher m1 = p1.matcher(top);
@@ -674,6 +674,12 @@ public class XszyyCommonAnalysisUtil {
             }
             String content = sb.toString();
             structureMap.put("病情记录", content);
+            /*if(content.contains("/书写医师签名")){
+                structureMap.put("记录医生",content.substring(content.lastIndexOf("/书写医师签名")+1));
+            }else if(content.contains("/书写医师")){
+                structureMap.put("记录医生",content.substring(content.lastIndexOf("/书写医师")+1));
+            }*/
+            /*
             if (structureMap.containsKey("病情记录")) {
                 String info = structureMap.get("病情记录");
                 if (info.contains("记录医师")) {
@@ -682,8 +688,11 @@ public class XszyyCommonAnalysisUtil {
                 } else if (info.contains("医师签名")) {
                     structureMap.put("病情记录", info.substring(0, info.lastIndexOf("医师签名")));
                     structureMap.put("医师签名", info.substring(info.lastIndexOf("医师签名") + "医师签名:".length()));
+                }else if (info.contains("主治医师")) {
+                    structureMap.put("病情记录", info.substring(0, info.lastIndexOf("主治医师")));
+                    structureMap.put("医师签名", info.substring(info.lastIndexOf("主治医师") + "主治医师:".length()));
                 }
-            }
+            }*/
         }
     }