Просмотр исходного кода

Merge branch 'hb/beilun' into his/xszyy

liuqq 3 лет назад
Родитель
Сommit
0ac23a41e6

+ 264 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/behospitalized/BEH02980.java

@@ -0,0 +1,264 @@
+package com.lantone.qc.kernel.catalogue.hospital.xszyy.behospitalized;
+
+import com.alibaba.fastjson.JSONArray;
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.client.ChiefPresentSimilarityServiceClient;
+import com.lantone.qc.kernel.structure.ai.ModelAI;
+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.model.entity.Allergy;
+import com.lantone.qc.pub.model.entity.Diag;
+import com.lantone.qc.pub.model.entity.GeneralDesc;
+import com.lantone.qc.pub.model.entity.Negative;
+import com.lantone.qc.pub.model.label.DiagLabel;
+import com.lantone.qc.pub.model.label.PastLabel;
+import com.lantone.qc.pub.model.label.PresentLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH02980
+ * @Description : 病历前后描述不一致
+ * @Author : Mark
+ * @Date: 2020-06-23 11:02
+ */
+@Component
+public class BEH02980 extends QCCatalogue {
+    @Autowired
+    ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
+
+    private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
+    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
+        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+
+        List<String> pos_diags = new ArrayList<>();
+        List<String> neg_diags = new ArrayList<>();
+        //现病史需要取一般情况之后疾病
+        if (presentLabel != null) {
+            List<GeneralDesc> generals = presentLabel.getGenerals();
+            if (generals.size() > 0) {
+                String presentText = presentLabel.getText();
+                List<Diag> presentDiags = presentLabel.getDiags();
+                /* 取现病史中一般情况之后的疾病名称 */
+                if (StringUtil.isNotBlank(presentText) && presentDiags.size() > 0) {
+                    String lastGeneral = generals.get(generals.size() - 1).getName();
+                    int lastGeneralIndex = presentText.indexOf(lastGeneral);
+                    for (Diag presentDiag : presentDiags) {
+                        if (presentDiag.getNegative() != null || presentDiag.getHospitalDiagName().contains("否认")) {
+                            continue;
+                        }
+                        /* 现病史中一般情况之后的疾病名称 */
+                        if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
+                            if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
+                                String dgname = presentDiag.getHospitalDiagName();
+                                if (presentDiag.getNegative() == null) {
+                                    if (!pos_diags.contains(dgname)) {
+                                        pos_diags.add(dgname);
+                                    }
+                                } else {
+                                    if (!neg_diags.contains(dgname)) {
+                                        neg_diags.add(dgname);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        if (pastLabel != null && StringUtils.isNotEmpty(pastLabel.getText())) {
+            extract_diags(pastLabel.getDiags(), pos_diags, neg_diags);
+            //否认其他的情况
+            String pasttext = pastLabel.getText();
+            //冠状动脉支架植入术特殊情况,只要出现,就从否认的史中去掉
+            if (neg_diags.contains("冠状动脉支架植入术")) {
+                neg_diags.remove("冠状动脉支架植入术");
+            }
+            String neg_diags_first[] = pasttext.split("否认");
+            for (String str1 : neg_diags_first) {
+                String neg_diags_second[] = str1.split("、");
+                for (String str2 : neg_diags_second) {
+                    for (String neg_diag : neg_diags) {
+                        if (str2.contains(neg_diag)) {
+                            String str3 = str2.substring(0, str2.indexOf(neg_diag));
+                            if (str3.contains("其它") || str3.contains("其他")) {
+                                int index = neg_diags.indexOf(neg_diag);
+                                neg_diags.set(index, "其它的");
+                            }
+                        }
+                    }
+                }
+            }
+//            //过敏史
+//            if(!"7".equals(Content.hospital_Id))
+//            {
+//                extract_Allergy(pastLabel.getAllergies(), pos_diags, neg_diags, pastLabel.getText());
+//            }
+        } else {
+            //例如邵逸夫 台州这种结构化数据,判断高血压 和 糖尿病是否有冲突
+            List<Diag> pastDiags = new ArrayList<>();
+            Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+            String a1 = structureMap.get("高血压");
+            Diag diag = new Diag();
+            diag.setName("高血压");
+            diag.setHospitalDiagName("高血压");
+            if (StringUtils.isNotEmpty(a1) && "否认".equals(a1)) {
+                Negative negative = new Negative();
+                negative.setName("否认");
+                pastDiags.add(diag);
+            } else if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                pastDiags.add(diag);
+            }
+
+            a1 = structureMap.get("糖尿病");
+            diag = new Diag();
+            diag.setName("糖尿病");
+            diag.setHospitalDiagName("糖尿病");
+            if (StringUtils.isNotEmpty(a1) && "否认".equals(a1)) {
+                Negative negative = new Negative();
+                negative.setName("否认");
+                pastDiags.add(diag);
+            } else if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                pastDiags.add(diag);
+            }
+
+            extract_diags(pastDiags, pos_diags, neg_diags);
+        }
+        if (initialDiagLabel != null) {
+            extract_diags(initialDiagLabel.getDiags(), pos_diags, neg_diags);
+        }
+
+        String infoStr = "";
+        int matchSum = 0;
+        ModelAI modelAI = new ModelAI();
+        for (String negdiag : neg_diags) {
+            JSONArray jsonArray = modelAI.loadChiefPresentSimilarAI(negdiag, pos_diags, false
+                    , "diagnose", chiefPresentSimilarityServiceClient);
+            if (jsonArray.size() == 2) {
+                /* 相似度最高症状 */
+                String dgname = jsonArray.getString(0);
+                if ("糖尿病".equals(negdiag) && "妊娠期糖尿病".equals(dgname)) {
+                    continue;
+                }
+                if ("高血压史".equals(negdiag) && "高血压病".equals(dgname)) {
+                    matchSum++;
+                    if (StringUtils.isEmpty(infoStr)) {
+                        infoStr = negdiag;
+                    } else {
+                        infoStr = infoStr + "," + negdiag;
+                    }
+                    continue;
+                }
+                /* 相似度分数 */
+                double likeRate = jsonArray.getDoubleValue(1);
+                if (likeRate > 0.99) {
+                    matchSum++;
+                    if (StringUtils.isEmpty(infoStr)) {
+                        infoStr = negdiag;
+                    } else {
+                        infoStr = infoStr + "," + negdiag;
+                    }
+                    continue;
+                }
+            }
+        }
+        if (matchSum > 0) {
+            status.set("-1");
+            info.set(infoStr);
+        }
+
+    }
+
+    //疾病史
+    private List<String> extract_diags(List<Diag> diags, List<String> pos_diags, List<String> neg_diags) {
+        List<String> dgs = new ArrayList<>();
+        for (Diag dg : diags) {
+            String dgname = dg.getHospitalDiagName();
+            if (dg.getNegative() == null) {
+                if (!pos_diags.contains(dgname)) {
+                    pos_diags.add(dgname);
+                }
+            } else {
+                if (!neg_diags.contains(dgname)) {
+                    neg_diags.add(dgname);
+                    dgs.add(dgname);
+                }
+            }
+        }
+        return dgs;
+    }
+
+//    //过敏史
+//    private List<String> extract_Allergy(List<Allergy> allergys, List<String> pos_diags, List<String> neg_diags, String text) {
+//        List<String> dgs = new ArrayList<>();
+//        String content = text;
+//        int allergyNum = 0;
+//        for (Allergy dg : allergys) {
+//            String dgname = dg.getName();
+//            if (dg.getNegative() == null) {
+//                if (!pos_diags.contains(dgname)) {
+//                    pos_diags.add(dgname);
+//                }
+//                if (dg.getAllergyFood() != null) {
+//                    allergyNum = 1;
+//                }
+//                if (dg.getAllergyMedicine() != null) {
+//                    allergyNum = 2;
+//                }
+//            } else {
+//                int index = content.lastIndexOf(dgname);
+//                text = content.substring(Math.max(0, index - 10), index);
+//                if (allergyNum == 0 && !neg_diags.contains(dgname) && !text.contains("其他") && !text.contains("其它") && !text.contains("其余")) {
+//                    neg_diags.add(dgname);
+//                    dgs.add(dgname);
+//                }
+//                if (allergyNum == 1 && text.contains("食物") && !neg_diags.contains(dgname) && !text.contains("其他") && !text.contains("其它") && !text.contains("其余")) {
+//                    neg_diags.add(dgname);
+//                    dgs.add(dgname);
+//                }
+//                if (allergyNum == 2 && text.contains("药物") && !neg_diags.contains(dgname) && !text.contains("其他") && !text.contains("其它") && !text.contains("其余")) {
+//                    neg_diags.add(dgname);
+//                    dgs.add(dgname);
+//                }
+//            }
+//        }
+//        return dgs;
+//    }
+
+    private boolean isContains(String diagName) {
+        for (String c : containList) {
+            if (diagName.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean isFilter(String diagName) {
+        for (String c : filterList) {
+            if (diagName.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}

+ 29 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/deathcasediscuss/DEAC0556.java

@@ -0,0 +1,29 @@
+package com.lantone.qc.kernel.catalogue.hospital.xszyy.deathcasediscuss;
+
+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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0556
+ * @Description :  死亡病例讨论参加人员姓名及职称未填写
+ * @Author :kwz
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAC0556 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathCaseDiscussDoc() != null) {
+            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
+            String deathTime = deathCaseDiscussStructureMap.get("参加人员姓名及专业技术职称");
+            if (CatalogueUtil.isEmpty(deathTime)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 29 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/deathcasediscuss/DEAC0558.java

@@ -0,0 +1,29 @@
+package com.lantone.qc.kernel.catalogue.hospital.xszyy.deathcasediscuss;
+
+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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAC0558
+ * @Description :  死亡病例讨论无主持人小结意见
+ * @Author :kwz
+ * @Date: 2020-03-18 18:38
+ */
+@Component
+public class DEAC0558 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathCaseDiscussDoc() != null) {
+            Map<String, String> deathCaseDiscussStructureMap = inputInfo.getDeathCaseDiscussDoc().getStructureMap();
+            String deathTime = deathCaseDiscussStructureMap.get("主持人小结意见");
+            if (CatalogueUtil.isEmpty(deathTime)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 39 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/firstpagerecord/FIRP0516.java

@@ -0,0 +1,39 @@
+package com.lantone.qc.kernel.catalogue.hospital.xszyy.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.model.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0516
+ * @Description : 身份证号码与入院记录不一致
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28
+ */
+@Component
+public class FIRP0516 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        if (beHospitalizedDoc != null && firstPageRecordDoc != null) {
+            Map<String, String> structureMap_bh = beHospitalizedDoc.getStructureMap();
+            Map<String, String> structureMap_fpr = firstPageRecordDoc.getStructureMap();
+            String bhIdNumber = structureMap_bh.get("身份证号码");
+            String fprIdNumber = structureMap_fpr.get(Content.idNumber);
+            if (StringUtil.isBlank(bhIdNumber) || StringUtil.isBlank(fprIdNumber)) {
+                return;
+            }
+            if (!bhIdNumber.equals(fprIdNumber)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 28 - 19
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/xszyy/operationdiscussion/OPE03143.java

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.catalogue.hospital.xszyy.operationdiscussion;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
 import com.lantone.qc.pub.util.StringUtil;
@@ -30,32 +31,40 @@ public class OPE03143 extends QCCatalogue {
         boolean flag = true;
         //先判断有无手术记录
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if (operationDocs != null && operationDocs.size() > 0) {
-            for (OperationDoc operationDoc : operationDocs) {
-                if (operationDoc == null) {
+        if (operationDocs == null || operationDocs.size() == 0) {
+            return;
+        }
+        //先判断有无输血记录
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (clinicalBloodDocs == null) {
+            return;
+        }
+        for (OperationDoc operationDoc : operationDocs) {
+            if (operationDoc == null) {
+                continue;
+            }
+            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
+            if (operationRecordDoc != null) {
+                Map<String, String> structureMap = operationRecordDoc.getStructureMap();
+                if (structureMap == null) {
                     continue;
                 }
-                OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
-                if (operationRecordDoc != null) {
-                    Map<String, String> structureMap = operationRecordDoc.getStructureMap();
-                    if (structureMap == null) {
-                        continue;
-                    }
-                    String bloodTransfusion = structureMap.get("输血情况");
-                    if (StringUtil.isNotBlank(bloodTransfusion)) {
-                        flag = false;
-                    }
+                String bloodTransfusion = structureMap.get("输血情况");
+                if (StringUtil.isNotBlank(bloodTransfusion)) {
+                    flag = false;
+                }
 
-                    String afterOperation = structureMap.get("手术经过及处理");
-                    if (StringUtil.isNotBlank(afterOperation)) {
-                        if (afterOperation.contains("输血")) {
-                            flag = false;
-                        }
+                String afterOperation = structureMap.get("手术经过及处理");
+                if (StringUtil.isNotBlank(afterOperation)) {
+                    if (afterOperation.contains("输血")) {
+                        flag = false;
                     }
                 }
+                //不存在手术记录返回
+            } else {
+                return;
             }
         }
-
         if (flag) {
             status.set("-1");
             return;

+ 25 - 21
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE03143.java

@@ -1,15 +1,14 @@
 package com.lantone.qc.kernel.catalogue.operationdiscussion;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
-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.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
-import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -32,32 +31,37 @@ public class OPE03143 extends QCCatalogue {
         boolean flag = true;
         //先判断有无手术记录
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if (operationDocs != null && operationDocs.size() > 0) {
-            for (OperationDoc operationDoc : operationDocs) {
-                if (operationDoc == null) {
+        if (operationDocs == null || operationDocs.size() == 0) {
+            return;
+        }
+        //先判断有无输血记录
+        List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
+        if (clinicalBloodDocs == null) {
+            return;
+        }
+        for (OperationDoc operationDoc : operationDocs) {
+            if (operationDoc == null) {
+                continue;
+            }
+            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
+            if (operationRecordDoc != null) {
+                Map<String, String> structureMap = operationRecordDoc.getStructureMap();
+                if (structureMap == null) {
                     continue;
                 }
-                OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
-                if (operationRecordDoc != null) {
-                    Map<String, String> structureMap = operationRecordDoc.getStructureMap();
-                    if (structureMap == null) {
-                        continue;
-                    }
-                    String bloodTransfusion = structureMap.get("输血情况");
-                    if (StringUtil.isNotBlank(bloodTransfusion)) {
-                        flag = false;
-                    }
+                String bloodTransfusion = structureMap.get("输血情况");
+                if (StringUtil.isNotBlank(bloodTransfusion)) {
+                    flag = false;
+                }
 
-                    String afterOperation = structureMap.get("手术经过");
-                    if (StringUtil.isNotBlank(afterOperation)) {
-                        if (afterOperation.contains("输血")) {
-                            flag = false;
-                        }
+                String afterOperation = structureMap.get("手术经过");
+                if (StringUtil.isNotBlank(afterOperation)) {
+                    if (afterOperation.contains("输血")) {
+                        flag = false;
                     }
                 }
             }
         }
-
         if (flag) {
             status.set("-1");
             return;

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

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

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

@@ -51,7 +51,7 @@ public class BeHospitalizedHtmlAnalysis implements HtmlAnalysis {
 
         List<String> titles = Lists.newArrayList("姓  名", "性   别", "出生日期", "出 生 地", "职 业", "民 族", "宗教信仰", "婚 姻",
                 "联系地址", "联系电话", "入院日期", "记录日期", "身份证号码", "病史陈述者", "病史可靠程度", "产前检查", "丈夫姓名",
-                "主 诉", "现病史", "既往史", "个人史", "月经史", "婚姻史", "生育史", "家族史", "体格检查","一般体格检查一般情况","一般体格检查一般状况","辅助检查", "妇科检查","产科检查","实验室检查", "特殊检查",
+                "主 诉", "现病史", "既往史", "个人史", "月经史", "婚姻史", "生育史", "家族史", "体格检查","一般状况","一般体格检查一般情况","一般体格检查一般状况","体格检查一般情况","辅助检查", "妇科检查","产科检查","实验室检查", "特殊检查",
                 "初步诊断", "康复需求","营养需求","医生签名", "医师签名", "签名时间", "记录时间", "补充诊断", "修正诊断","其    他");
         //个人基础信息table解析
         String htmlContent = CommonAnalysisUtil.html2String(doc.toString());

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

@@ -39,6 +39,8 @@ public class LeaveHospitalHtmlAnalysis implements HtmlAnalysis {
             if (StringUtil.isNotBlank(htmlContent)) {
                 CommonAnalysisUtil.html2StructureMap(titles,htmlContent,structureMap);
             }
+            String s = structureMap.get("住院诊治经过(包括重要发现和结论、接受手术和操作、药物和其它治疗)");
+            structureMap.put("住院诊治经过", s);
 /*            if (StringUtil.isNotBlank(CommonAnalysisUtil.extractDate(structureMap.get("出院日期")))) {
                 structureMap.put("住院天数", structureMap.get("出院日期").replace(CommonAnalysisUtil.extractDate(structureMap.get("出院日期")), ""));
                 structureMap.put("出院日期", CommonAnalysisUtil.extractDate(structureMap.get("出院日期")));*/

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

@@ -42,9 +42,9 @@ public class OperationRecordHtmlAnalysis implements HtmlAnalysis {
     private void analysisGeneral(Element bigDivElement, Map<String, String> map) {
         String text = HtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
         text = text.replaceAll("第1页", "")
-                .replace("(包括体位、切口处理经过,病灶所见及手术步骤等):", "");
+                .replace("输入血/血制品", "输入血或血制品");
         List<String> titles = Lists.newArrayList(
-                "手术开始时间", "手术结束时间", "手术全程时间", "术前诊断", "手术名称", "手术指征", "术后诊断", "主刀医师", "麻醉人员", "器械护士",
+                "手术时间","手术开始时间", "手术结束时间", "手术全程时间", "术前诊断", "手术名称", "手术指征", "术后诊断", "主刀医师", "麻醉人员", "器械护士",
                 "儿科医生", "护婴人", "指导人", "麻醉方式", "麻醉体位", "麻醉效果", "手术经过", "术中并发症", "冰冻切片诊断", "送检手术标本",
                 "失血量", "输入血/血制品", "植入物", "手术医生签名", "日 期");
         titles = CommonAnalysisUtil.sortTitles(titles, text);

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

@@ -61,8 +61,9 @@ public class PreoperativeHtmlAnalysis implements HtmlAnalysis {
                 .replace("年月日时\n" + "分", "")
                 .replace("一、简要病情", "简要病情");*/
         text = text.replace("参加人员(姓名及专业技术职务) ", "参加人员");
+        text = text.replace("患者目前心理状态/文化需求 ", "患者目前心理状态或文化需求");
         List<String> titles = Lists.newArrayList("记录时间", "术前讨论时间", "讨论方式", "参加人员", "简要病情", "术前诊断", "手术指征"
-                ,  "术前诊断", "手术指征", "术前准备", "手术禁忌证", "患者目前心理状态/文化需求", "拟行手术方案",
+                ,  "术前诊断", "手术指征", "术前准备", "手术禁忌证", "患者目前心理状态文化需求", "拟行手术方案",
                 "拟施麻醉", "手术目标",
                 "手术中注意点", "术后注意点", "出院后潜在的医疗与康复需求", "主刀医师意见与手术安排","医生签名");
         CommonAnalysisUtil.cutByTitles(text, titles, 0, map);

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

@@ -38,10 +38,12 @@ public class BeiLunDeathCaseDiscussHtmlAnalysis implements BeiLunHtmlAnalysis {
             String htmlContent = XszyyCommonAnalysisUtil.html2String(doc.toString());
 
             if (StringUtil.isNotBlank(htmlContent)) {
+                XszyyCommonAnalysisUtil.html2StructureMap(titles,htmlContent,map);
                 //无冒号版本
                 XszyyCommonAnalysisUtil.html2StructureMapNoColon(titles,htmlContent,map);
+
                 //死亡诊断包含医师发言
-                if(map.containsKey("死亡诊断")&&map.get("死亡诊断").contains("主任医师")){
+                if(map.containsKey("死亡诊断") && map.get("死亡诊断").contains("主任医师")){
                     String swzd = map.get("死亡诊断");
                     map.put("死亡诊断",swzd.substring(0,swzd.indexOf("主任医师")));
                     map.put("医师发言",swzd.substring(swzd.indexOf("主任医师")+"主任医师:".length()));