Browse Source

宁海一院修改规则合并

wangsy 4 years ago
parent
commit
ec7d11e783
38 changed files with 574 additions and 54 deletions
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0007.java
  2. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0378.java
  3. 7 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java
  4. 44 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0008.java
  5. 78 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0372.java
  6. 88 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/leavehospital/LEA0149.java
  7. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/operationdiscussion/OPE0369.java
  8. 15 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR02900.java
  9. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03126.java
  10. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03127.java
  11. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03128.java
  12. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03129.java
  13. 34 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03130.java
  14. 46 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03131.java
  15. 63 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03132.java
  16. 1 0
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiFirstCourseRecordDocTrans.java
  17. 4 0
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiOperationDocTrans.java
  18. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java
  19. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicBloodEffectHtmlAnalysis.java
  20. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicalBloodHtmlAnalysis.java
  21. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationHtmlAnalysis.java
  22. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationRecordHtmlAnalysis.java
  23. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCrisisValueReportHtmlAnalysis.java
  24. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCriticallyIllNoticeHtmlAnalysis.java
  25. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathCaseDiscussHtmlAnalysis.java
  26. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathRecordHtmlAnalysis.java
  27. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDifficultCaseDiscussHtmlAnalysis.java
  28. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDutyShiftSystemHtmlAnalysis.java
  29. 3 3
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiFirstCourseRecordHtmlAnalysis.java
  30. 28 20
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiLeaveHospitalHtmlAnalysis.java
  31. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationHtmlAnalysis.java
  32. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationRecordHtmlAnalysis.java
  33. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiPreoperativeHtmlAnalysis.java
  34. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiRescueHtmlAnalysis.java
  35. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiStagesSummaryHtmlAnalysis.java
  36. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiThreeLevelWardHtmlAnalysis.java
  37. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferIntoHtmlAnalysis.java
  38. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferOutHtmlAnalysis.java

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

@@ -41,7 +41,7 @@ public class BEH0007 extends QCCatalogue {
             status.set("0");
         } else {
             List<Clinical> clinicals = chiefLabel.getClinicals();
-            if (clinicals.size() > 0) {
+            if (clinicals != null && clinicals.size() > 0) {
                 Clinical clinical = clinicals.get(0);
                 List<PD> timestamp = clinical.getTimestamp();
                 if (timestamp.size() > 0) {

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

@@ -48,6 +48,9 @@ public class BEH0378 extends QCCatalogue {
         }
         if (maritalLabel != null && maritalLabel.getFamily() != null) {
             familiesMl = maritalLabel.getFamily();
+            if (familiesMl == null) {
+                return;
+            }
             for (Family family : familiesMl) {
                 if (family.getDead() != null && family.getName() != null) {
                     String maritalText = maritalLabel.getText();

+ 7 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02905.java

@@ -5,6 +5,7 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -24,7 +25,13 @@ public class FIRP02905 extends QCCatalogue {
         }
         if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String outWay = firstpageStructureMap.get(Content.outWay);
             String name = firstpageStructureMap.get(Content.receivingOrganization);
+            //医嘱离院不需要接受机构(宁海一院)
+            if (StringUtil.isNotBlank(outWay) && "医嘱离院".equals(outWay)) {
+                status.set("0");
+                return;
+            }
             if (!CatalogueUtil.isEmpty(name)) {
                 status.set("0");
             }

+ 44 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0008.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.behospitalized;
+
+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.entity.Clinical;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+/**
+ * @ClassName : BEH0008
+ * @Description :主诉症状超过3个
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class BEH0008 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
+        if (chiefLabel == null) {
+            return;
+        }
+        String chiefText = chiefLabel.getText();
+        if (StringUtil.isBlank(chiefText)) {
+            return;
+        }
+        List<Clinical> clinicals = chiefLabel.getClinicals();
+        if (clinicals == null) {
+            return;
+        }
+        if (clinicals.size() > 3) {
+            status.set("-1");
+        }
+
+    }
+}

+ 78 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0372.java

@@ -0,0 +1,78 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.behospitalized;
+
+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.entity.MaritalStatus;
+import com.lantone.qc.pub.model.label.MaritalLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 婚姻状况前后不一致
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0372 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+
+        String basicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚育史");
+        String bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻状况");
+        if (StringUtil.isBlank(bhbasicInfoStatus)) {
+            bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻");
+        }
+        if (StringUtil.isBlank(basicInfoStatus) || StringUtil.isBlank(bhbasicInfoStatus)) {
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("结婚")) {
+            status.set("-1");
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("未婚")) {
+            return;
+        }
+
+        if (StringUtil.isNotBlank(bhbasicInfoStatus) && basicInfoStatus.equals("其他")) {
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("丧偶") &&
+                (basicInfoStatus.contains("已故") || basicInfoStatus.contains("丧偶") || basicInfoStatus.contains("去世") ||
+                        basicInfoStatus.contains("亡故") || basicInfoStatus.contains("已逝"))) {
+            return;
+        }
+
+        if ((bhbasicInfoStatus.equals("离婚") || bhbasicInfoStatus.equals("离异")) &&
+                (basicInfoStatus.contains("离异") || bhbasicInfoStatus.equals("离婚"))) {
+            return;
+        }
+
+        if (bhbasicInfoStatus.equals("已婚") && (basicInfoStatus.contains("结婚") || basicInfoStatus.contains("再婚") || basicInfoStatus.contains("已婚") || basicInfoStatus.contains("配偶") )) {
+            return;
+        }
+
+        MaritalStatus mts = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getMaritalStatus();
+        if (mts != null && StringUtil.isNotBlank(mts.getName())) {
+            String maritalStatus = mts.getName();
+            if (basicInfoStatus.equals(maritalStatus)) {
+                return;
+            }
+        }
+
+        //无婚育史
+        MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
+        if (maritalLabel == null || maritalLabel.getText() == null) {
+            return;
+        }
+    }
+
+}

+ 88 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/leavehospital/LEA0149.java

@@ -0,0 +1,88 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.doc.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 出院记录内容缺主诉
+ * @author: rengb
+ * @time: 2020/3/10 13:53
+ */
+@Component
+public class LEA0149 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        if (leaveHospitalDoc == null || beHospitalizedDoc == null) {
+            return;
+        }
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if (deathRecordDoc != null) {
+            return;
+        }
+        Map<String, String> lhStructureMap = leaveHospitalDoc.getStructureMap();
+        ChiefLabel chiefLabel = beHospitalizedDoc.getChiefLabel();
+        if (lhStructureMap != null && chiefLabel != null && StringUtil.isNotBlank(chiefLabel.getText())) {
+            String bhChief = CatalogueUtil.int2ChineseNum(chiefLabel.getText().replaceAll("[\\p{Punct}\\pP。-]", ""));
+            String leaveChief = lhStructureMap.get("主诉");
+            String bhThings = lhStructureMap.get("入院情况");
+            String reThings = lhStructureMap.get("病史摘要");   //宁海一院主诉在病史摘要内
+            if (StringUtil.isNotBlank(bhThings)) {
+                bhThings = CatalogueUtil.int2ChineseNum(bhThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (bhThings.contains("\n")) {
+                    bhThings = bhThings.replace("\n", "");
+                }
+            }
+            if (StringUtil.isNotBlank(reThings)) {
+                reThings = CatalogueUtil.int2ChineseNum(reThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (reThings.contains("\n")) {
+                    reThings = reThings.replace("\n", "");
+                }
+            }
+
+            //如果出院小结结构化数据能取出主诉,则直接用该主诉和入院记录主诉比较
+            if (StringUtil.isNotBlank(leaveChief)) {
+                leaveChief = CatalogueUtil.int2ChineseNum(leaveChief.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (bhChief.equals(leaveChief)) {
+                    return;
+                }
+            }
+            if (StringUtil.isNotBlank(bhThings) && bhThings.replace(" ", "").contains(bhChief.replace(" ", ""))) {
+                return;
+            }
+            //宁海一院主诉在病史摘要内
+            if (StringUtil.isNotBlank(reThings) && reThings.replace(" ", "").contains(bhChief.replace(" ", ""))) {
+                return;
+            }
+            if (StringUtils.isNotBlank(bhThings)) {
+                Pattern compile = Pattern.compile("(?<=2.).*(?=3.体格检查)");
+                Matcher matcher = compile.matcher(bhThings);
+                while (matcher.find()) {
+                    String number = matcher.group(0);
+                    if (CatalogueUtil.isEmpty(number)) {
+                        status.set("-1");
+                    }
+                }
+                //处理台州的
+                if (bhThings.contains("患者因")) {
+                    return;
+                }
+            }
+        }
+    }
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/operationdiscussion/OPE0369.java

@@ -21,7 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * @Description: 手术患者缺术前主刀医师查房记录
+ * @Description: 主刀医师术前查房未在术前24小时内完成
  * @author: WANGSY
  * @time: 2020/11/11 11:22
  */

+ 15 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR02900.java

@@ -64,17 +64,25 @@ public class THR02900 extends QCCatalogue {
             if (StringUtil.isNotBlank(opeAssName)) {
                 split = opeAssName.split("、");
                 firstAssistant = structureMap.get("助手");
-                opeEndTime = structureMap.get("手术日期");
             } else {
                 firstAssistant = structureMap.get("一助");
-                //取得手术时间截取结束时间(格式 2020-07-24 10:30-2020-07-24 11:45)
-                opeEndTime = structureMap.get("手术日期");
-                if (StringUtil.isBlank(opeEndTime) || opeEndTime.contains("年月日")) {
-                    continue;
+            }
+            //取得手术时间截取结束时间(格式 2020-07-24 10:30-2020-07-24 11:45)
+            opeEndTime = structureMap.get("手术日期");
+            if (StringUtil.isNotBlank(opeEndTime)) {
+                if (opeEndTime.contains("结束")) {
+                    opeEndTime = opeEndTime.substring(0, opeEndTime.indexOf("结束")).replace("开始:", "");
+                }
+                if (opeEndTime.contains("年月日")) {
+                    opeEndTime = DateUtil.nowString();
+                }
+                //取不到时间不判断规则
+                if (StringUtil.parseDateTime(opeEndTime) == null) {
+                    return;
                 }
             }
             String chiefSurgeon = structureMap.get("主刀医师");
-            if (chiefSurgeon.contains("、")) {
+            if (StringUtil.isNotBlank(chiefSurgeon) && chiefSurgeon.contains("、")) {
                 chiefSurgeon = chiefSurgeon.split("、")[0];
             }
             Date opeEndDate = CatalogueUtil.parseStringDate(opeEndTime);
@@ -126,7 +134,7 @@ public class THR02900 extends QCCatalogue {
                     StringUtil.isNotBlank(firstAssistant) && !allTitle.contains(firstAssistant)) {
                 status.set("-1");
                 return;
-            } else if (StringUtil.isBlank(chiefSurgeon) && StringUtil.isBlank(firstAssistant) && split.length > 1) {
+            } else if (StringUtil.isBlank(chiefSurgeon) && StringUtil.isBlank(firstAssistant) && split != null && split.length > 1) {
                 for (int i = 0; i < split.length; i++) {
                     if (allTitle.contains(split[i])) {
                         return;

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03126.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 复诊及下一步诊疗计划未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03126 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("1、复诊及下一步诊疗计划")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("1、复诊及下一步诊疗计划"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03127.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 生活自理未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03127 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("4、生活自理")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("4、生活自理"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03128.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 康复指导未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03128 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("5、康复指导")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("5、康复指导"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03129.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 营养指导未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03129 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("6、营养指导")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("6、营养指导"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 34 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03130.java

@@ -0,0 +1,34 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 出院随访指导未填写
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03130 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null && structureMap.containsKey("7、随访指导")) {
+            if (CatalogueUtil.isEmpty(structureMap.get("7、随访指导"))) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 46 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03131.java

@@ -0,0 +1,46 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Description: 出院记录的住院经过不完善
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+public class LEA03131 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        if (leaveHospitalDoc == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null) {
+            String curePass = structureMap.get("诊治经过");
+            if (CatalogueUtil.isEmpty(curePass)) {
+                return;
+            }
+            if (!curePass.contains("查") && !curePass.contains("检验")) {
+                status.set("-1");
+                info.set("住院经过缺少检验检查");
+                return;
+            }
+
+            if (!curePass.contains("治疗")) {
+                status.set("-1");
+                info.set("住院经过缺少诊治经过");
+                return;
+            }
+
+        }
+    }
+}

+ 63 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA03132.java

@@ -0,0 +1,63 @@
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 住院经过与手术记录中手术名称不一致
+ * @author: wsy
+ * @time: 2021/6/23 15:15
+ */
+@Component
+@Slf4j
+public class LEA03132 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (leaveHospitalDoc == null || operationDocs == null) {
+            return;
+        }
+
+        //获取手术名称
+        List<String> operationNameList = new ArrayList<>();
+        for (OperationDoc operationDoc : operationDocs) {
+            if (operationDoc.getOperationRecordDoc() != null) {
+                String operationName = operationDoc.getOperationRecordDoc().getStructureMap().get("手术名称");
+                if (StringUtil.isNotBlank(operationName)) {
+                    operationNameList.add(operationName);
+                }
+            }
+        }
+
+        if (operationNameList.size() == 0) {
+            return;
+        }
+
+        Map<String, String> structureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
+        if (structureMap != null) {
+            String curePass = structureMap.get("诊治经过");
+            if (CatalogueUtil.isEmpty(curePass)) {
+                return;
+            }
+            for (String operationName : operationNameList) {
+                if (!curePass.contains(operationName)) {
+                    status.set("-1");
+                    return;
+                }
+            }
+        }
+    }
+}

+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiFirstCourseRecordDocTrans.java

@@ -77,6 +77,7 @@ public class NingHaiYiYiFirstCourseRecordDocTrans extends ModelDocTrans {
             "病历特点=病例特点",
             "入院查体=查体",
             "辅助检查=辅检",
+            "、根据人民卫生出版社《妇产科学》第九版拟定如下诊疗计划=诊疗计划",
             "2.诊断依据=诊断依据",
             "3.鉴别诊断=鉴别诊断",
             "1.初步诊断=初步诊断"

+ 4 - 0
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiOperationDocTrans.java

@@ -191,6 +191,7 @@ public class NingHaiYiYiOperationDocTrans extends ModelDocTrans {
                 structureMap.put("记录编号", contentMap.get("recId").toString());
                 structureMap.put("病历号", contentMap.get("behospitalCode") == null ? null : contentMap.get("behospitalCode").toString());
             }
+
             List<String> titles = Lists.newArrayList("手术开始时间", "手术结束时间");
             for (String title : titles) {
                 eliminateDate(structureMap, title);
@@ -201,6 +202,9 @@ public class NingHaiYiYiOperationDocTrans extends ModelDocTrans {
             if (structureMap.containsKey("接生者")) {
                 structureMap.put("接生者", structureMap.get("接生者").replace("\n", "").replaceAll("接生者签名", ""));
             }
+            if (StringUtil.isBlank(structureMap.get("主刀医师")) && structureMap.containsKey("手术人员")) {
+                structureMap.put("主刀医师", structureMap.get("手术人员").split("、")[0]);
+            }
         }
         if (MapUtils.isNotEmpty(structureMap)) {
             OperationRecordDoc operationRecordDoc = ModelDocGenerate.operationRecordDocGen(structureMap);

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java

@@ -28,7 +28,7 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
@@ -55,7 +55,7 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
         List<String> titles = Lists.newArrayList("姓 名", "入院时间", "出生日期", "性 别", "性别", "记录时间","年 龄", "出 生 地", "职 业", "职业", "入院时间", "民 族", "民族",
                 "联系地址", "婚 姻", "婚姻", "病史陈述者", "病史可靠度", "家长姓名","住 址","联系电话", "主诉", "主 诉", "现 病 史","现病史", "既 往 史", "个 人 史", "母 孕 史", "出 生 史", "喂 养 史",
                 "既往史", "个人史", "母孕史", "出生史", "喂养史","婚育史","家族史","年龄","姓名","出生地","住址",
-                "末次月经","身份证号","户籍地址","联 系 人","孕/产 次","预 产 期","产前检查","籍贯","",
+                "末次月经","身份证号","户籍地址","联 系 人","孕/产 次","预 产 期","产前检查","籍贯",
                 "生长发育史", "预防接种史", "生活习惯史", "婚 育 史", "月经婚育史", "家 族 史", "辅助检查", "记录医生", "初步诊断", "补充诊断");
         String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("main"), true);
         if (StringUtil.isNotBlank(htmlContent)) {

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicBloodEffectHtmlAnalysis.java

@@ -26,7 +26,7 @@ public class NingHaiYiYiClinicBloodEffectHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicalBloodHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiClinicalBloodHtmlAnalysis implements NingHaiYiYiHtmlAnal
                 "开始时间", "结束时间", "输血过程");
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationHtmlAnalysis.java

@@ -31,7 +31,7 @@ public class NingHaiYiYiConsultationHtmlAnalysis implements NingHaiYiYiHtmlAnaly
                     "会诊类型", "被邀医院", "被邀科室", "被邀医师", "申请时间", "患者病情及诊疗经过、申请会诊的理由及目的", "申请会诊科别",
                     "被邀会诊科别", "申请会诊医师", "会诊意见", "会诊时间", "科主任", "会诊到达时间", "查体", "会诊建议",
                     "会诊诊断", "由受邀医生填写,本次会诊是否必要","会诊科室", "会诊医师", "外院会诊医师所在医疗机构名称", "会诊医师所在医疗机构名称");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             String htmlContent = null;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationRecordHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiConsultationRecordHtmlAnalysis implements NingHaiYiYiHtm
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCrisisValueReportHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiCrisisValueReportHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCriticallyIllNoticeHtmlAnalysis.java

@@ -29,7 +29,7 @@ public class NingHaiYiYiCriticallyIllNoticeHtmlAnalysis implements NingHaiYiYiHt
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科室", "科别", "病区", "床号", "住院号",
                     "单位或地址", "联系电话", "初步诊断", "临床诊断", "病情摘要", "主要症状", "体格检查", "辅助检查", "告知医师签名",
                     "告知时间", "患方意见", "患方签名", "手印说明", "与患者关系", "患者(或被授权人)签名与患方关系", "医师签名", "时间", "签字时间");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathCaseDiscussHtmlAnalysis.java

@@ -25,7 +25,7 @@ public class NingHaiYiYiDeathCaseDiscussHtmlAnalysis implements NingHaiYiYiHtmlA
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Element bigDivElement = doc.selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathRecordHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiDeathRecordHtmlAnalysis implements NingHaiYiYiHtmlAnalys
         try {
             List<String> titles = Lists.newArrayList("入院日期", "入院时间", "死亡时间", "记录时间", "入院诊断", "入院情况",
                     "诊疗经过(重点记录病情演变、抢救经过)", "诊治经过", "死亡原因", "死亡诊断", "医师签字");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDifficultCaseDiscussHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiDifficultCaseDiscussHtmlAnalysis implements NingHaiYiYiH
         try {
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科别", "住址(或单位)", "讨论日期",
                     "讨论主持人", "参加讨论人", "发言记录(包括病历简要、讨论意见及结论)", "病史简介", "讨论意见", "主持人小结意见", "记录者(签名)", "科主任(签名)");
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDutyShiftSystemHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiDutyShiftSystemHtmlAnalysis implements NingHaiYiYiHtmlAn
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiFirstCourseRecordHtmlAnalysis.java

@@ -25,8 +25,8 @@ public class NingHaiYiYiFirstCourseRecordHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
-            List<String> titles = Lists.newArrayList("一. 病例特点", "二. 拟诊讨论", "三. 诊疗计划","三、诊疗计划", "医师签名");
-            Document doc = Jsoup.parse(args[0]);
+            List<String> titles = Lists.newArrayList("一. 病例特点", "二. 拟诊讨论", "三. 诊疗计划", "三、诊疗计划", "三、根据人民卫生出版社《妇产科学》第九版拟定如下诊疗计划", "医师签名");
+            Document doc = Jsoup.parse(args[0].replace("&nbsp;", " "));
             String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
             if (StringUtil.isNotBlank(htmlContent)) {
                 CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
@@ -34,7 +34,7 @@ public class NingHaiYiYiFirstCourseRecordHtmlAnalysis implements NingHaiYiYiHtml
             if (structureMap.containsKey("二.拟诊讨论")) {
                 List<String> listTitle = CommonAnalysisUtil.sortTitles(
                         Lists.newArrayList("1.初步诊断", "2.诊断依据", "3.鉴别诊断"
-                                ,"诊断依据","鉴别诊断","初步诊断"), structureMap.get("二.拟诊讨论")
+                                , "诊断依据", "鉴别诊断", "初步诊断"), structureMap.get("二.拟诊讨论")
                 );
                 CommonAnalysisUtil.cutByTitles(structureMap.get("二.拟诊讨论"), listTitle, 0, structureMap);
             }

+ 28 - 20
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiLeaveHospitalHtmlAnalysis.java

@@ -27,9 +27,9 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
         try {
             List<String> titles = Lists.newArrayList("姓名", "出生年月", "性别", "年龄", "出生日期", "科室", "床位", "床号", "病区", "住院号 ", "住院号",
                     "病理号", "B超", "X片号", "CT号", "MRI号", "内镜", "入院诊断", "出院诊断", "入院日期", "出院日期", "地址", "住院天数", "婚姻", "分娩日期",
-                    "分娩方式", "手术指征", "入院情况", "辅助检查","诊治经过", "住院经过", "入院后检查化验结果", "入院后化验检查结果", "诊疗经过", "治疗结果", "转归情况", "出院计划",
-                    "病理检查结果","出院情况","出院时情况", "婴儿情况", "治疗效果", "出院医嘱", "医师签名", "日期", "时 间", "其它", "主治医师", "住院医师");
-            String html = args[0];
+                    "分娩方式", "手术指征", "入院情况", "辅助检查", "诊治经过", "住院经过", "入院后检查化验结果", "入院后化验检查结果", "诊疗经过", "治疗结果", "转归情况", "出院计划",
+                    "病理检查结果", "出院情况", "出院时情况", "婴儿情况", "治疗效果", "出院医嘱", "医师签名", "日期", "时 间", "其它", "主治医师", "住院医师");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
@@ -37,7 +37,7 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
             if (StringUtil.isNotBlank(htmlContent)) {
                 htmlContent = htmlContent.replaceAll("[   ]", " ")
                         .replace("第1页", "")
-                        .replace("出院后请注意接听本院的随访电话:825592278255916565578435","");
+                        .replace("出院后请注意接听本院的随访电话:825592278255916565578435", "");
                 htmlContent = htmlContent.replace("\n", "");
                 List<String> sortTitles = CommonAnalysisUtil.sortTitles(titles, htmlContent.replace("复诊时间", ""));
                 sortTitles.add("时间");
@@ -49,27 +49,25 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
                 structureMap.put("出院诊断", discharge.substring(0, index));
                 structureMap.put("入院情况", discharge.substring(index + 4));
             }
+
+            //出院医嘱中字段解析
+            doctorsAdviceAnalysis(structureMap);
+
             //产科出院记录 出院时情况、诊治经过(入院情况、治疗经过及重要辅助检查) title没有 :故在此特殊处理
-            try
-            {
+            try {
                 String headerContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("header"), true);
-                if("产科".equals(StringUtil.trim(headerContent.substring(headerContent.indexOf("科室:")+"科室:".length()
-                        ,headerContent.indexOf("床号")))))
-                {
-                    if(htmlContent.contains("诊治经过(入院情况、治疗经过及重要辅助检查)")&&htmlContent.contains("辅助检查:"))
-                    {
-                        structureMap.put("诊疗经过",htmlContent.substring(htmlContent.indexOf("诊治经过(入院情况、治疗经过及重要辅助检查)")
-                                +"诊治经过(入院情况、治疗经过及重要辅助检查)".length(),htmlContent.indexOf("辅助检查:")));
+                if ("产科".equals(StringUtil.trim(headerContent.substring(headerContent.indexOf("科室:") + "科室:".length()
+                        , headerContent.indexOf("床号"))))) {
+                    if (htmlContent.contains("诊治经过(入院情况、治疗经过及重要辅助检查)") && htmlContent.contains("辅助检查:")) {
+                        structureMap.put("诊疗经过", htmlContent.substring(htmlContent.indexOf("诊治经过(入院情况、治疗经过及重要辅助检查)")
+                                + "诊治经过(入院情况、治疗经过及重要辅助检查)".length(), htmlContent.indexOf("辅助检查:")));
                     }
-                    if(htmlContent.contains("出院时情况")&&htmlContent.contains("出院医嘱:"))
-                    {
-                        structureMap.put("出院情况",htmlContent.substring(htmlContent.indexOf("出院时情况")
-                                +"出院时情况".length(),htmlContent.indexOf("出院医嘱:")));
+                    if (htmlContent.contains("出院时情况") && htmlContent.contains("出院医嘱:")) {
+                        structureMap.put("出院情况", htmlContent.substring(htmlContent.indexOf("出院时情况")
+                                + "出院时情况".length(), htmlContent.indexOf("出院医嘱:")));
                     }
                 }
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 log.error(e.getMessage(), e);
             }
 
@@ -81,4 +79,14 @@ public class NingHaiYiYiLeaveHospitalHtmlAnalysis implements NingHaiYiYiHtmlAnal
         return structureMap;
     }
 
+    //出院医嘱字处理
+    private void doctorsAdviceAnalysis(Map<String, String> structureMap) {
+        String doctorsAdvice = structureMap.get("出院医嘱");
+        if (StringUtil.isBlank(doctorsAdvice)) {
+            return;
+        }
+        List<String> titles = Lists.newArrayList("1、复诊及下一步诊疗计划", "2、注意事项", "3、出院带药", "4、生活自理", "5、康复指导", "6、营养指导",
+                "7、随访指导", "8、出院后如需门诊复诊,可通过如下方式提前两周进行预约");
+        CommonAnalysisUtil.cutByTitles(doctorsAdvice, titles, 0, structureMap);
+    }
 }

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiOperationHtmlAnalysis implements NingHaiYiYiHtmlAnalysis
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
@@ -52,7 +52,7 @@ public class NingHaiYiYiOperationHtmlAnalysis implements NingHaiYiYiHtmlAnalysis
                 .replace("手术室完成的、治疗性质的及全麻下完成的有创诊疗操作参照手术管理。(包括介入治疗、胃肠镜","")
                 .replace("下肿瘤切除/粘膜下肿瘤剥除等)","");
         List<String> titles = Lists.newArrayList(
-                "病情记录", "患者手术后情况", "手术简要经过(包括手术方式、术中所见、过程是否顺利、有无并发症等)", "术后去向", "术后去向", "术后诊断", "术后处理措施", "术后应当特别注意观察的事项:", "术后治疗计划(包括术后应当特别注意观察的事项)", "医生签名", "医师签名"
+                "病情记录", "患者手术后情况", "手术简要经过(包括手术方式、术中所见、过程是否顺利、有无并发症等)", "术后去向", "术后去向", "术后诊断", "术后告知","术后处理措施", "术后应当特别注意观察的事项:", "术后治疗计划(包括术后应当特别注意观察的事项)", "医生签名", "医师签名"
         );
         titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
         CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationRecordHtmlAnalysis.java

@@ -25,7 +25,7 @@ public class NingHaiYiYiOperationRecordHtmlAnalysis implements NingHaiYiYiHtmlAn
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             NingHaiYiYiHtmlAnalysisUtil.tableStyle1InsertMap(Jsoup.parse(html).selectFirst("body").child(0).getElementById("header"), map);
@@ -105,7 +105,7 @@ public class NingHaiYiYiOperationRecordHtmlAnalysis implements NingHaiYiYiHtmlAn
                 "姓名", "性别", "出生日期", "出生年月", "科别", "科室", "病区", "床号", "床位", "住院号", "手术开始时间", "手术结束时间",
                 "手术时间", "手术日期", "术前诊断", "手术指征", "手术人员", "外邀指导专家", "麻醉方式", "麻醉人员", "麻 醉 者", "洗手护士", "本次手术是否属于非计划再次手术", "接生者",
                 "术前胎心", "手术名称", "术后诊断", "手术者及助手名称", "术中取病理标本", "麻醉方法", "手术经过(包括病人体位、切口处理、病灶所见及手术步骤等)",
-                "诊断手术/操作简要经过(包括术中有无并发症及具体描述和处理)", "手术经过", "医师签名",
+                "诊断手术/操作简要经过(包括术中有无并发症及具体描述和处理)", "手术经过", "主刀医师签名",
                 "医生签名", "手术/操作医生", "记录者", "记录时间", "术中输血", "术前宫颈准备日期", "药物名称及用法", "导管或其他", "插入深度",
                 "阴道填塞纱布条", "准备者", "取出日期", "手术方法", "术中特殊情况", "病理检查", "其他", "手术者",
                 "检查子宫位置", "开始", "结束"

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiPreoperativeHtmlAnalysis.java

@@ -25,7 +25,7 @@ public class NingHaiYiYiPreoperativeHtmlAnalysis implements NingHaiYiYiHtmlAnaly
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiRescueHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiRescueHtmlAnalysis implements NingHaiYiYiHtmlAnalysis {
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiStagesSummaryHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiStagesSummaryHtmlAnalysis implements NingHaiYiYiHtmlAnal
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiThreeLevelWardHtmlAnalysis.java

@@ -27,7 +27,7 @@ public class NingHaiYiYiThreeLevelWardHtmlAnalysis implements NingHaiYiYiHtmlAna
     public Map<String, String> analysis(String... args) {
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferIntoHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiTransferIntoHtmlAnalysis implements NingHaiYiYiHtmlAnaly
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferOutHtmlAnalysis.java

@@ -24,7 +24,7 @@ public class NingHaiYiYiTransferOutHtmlAnalysis implements NingHaiYiYiHtmlAnalys
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0];
+            String html = args[0].replace("&nbsp;"," ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");