浏览代码

Merge branch 'dev-1.2' of http://192.168.2.236:10080/louhr/qc into dev-1.2

Conflicts:
	trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java
louhr 5 年之前
父节点
当前提交
dbcd479625
共有 30 个文件被更改,包括 242 次插入118 次删除
  1. 7 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java
  2. 2 19
      dbanaly/src/main/resources/application-db.yml
  3. 15 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0025.java
  4. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0030.java
  5. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0035.java
  6. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0049.java
  7. 10 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0054.java
  8. 11 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0072.java
  9. 6 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0074.java
  10. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0415.java
  11. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0442.java
  12. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0443.java
  13. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0444.java
  14. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0491.java
  15. 12 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0309.java
  16. 31 13
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java
  17. 8 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0092.java
  18. 8 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0144.java
  19. 6 1
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/BeHospitalizedAI.java
  20. 13 4
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/FirstCourseRecordAI.java
  21. 6 2
      kernel/src/main/java/com/lantone/qc/kernel/structure/ai/LeaveHospitalAI.java
  22. 19 5
      kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java
  23. 3 4
      kernel/src/main/resources/application.yml
  24. 2 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxBeHospitalizedDocTrans.java
  25. 3 3
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java
  26. 8 1
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxDocTrans.java
  27. 15 4
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxOperationDocTrans.java
  28. 2 2
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxRescueDocTrans.java
  29. 33 1
      trans/src/main/java/com/lantone/qc/trans/comsis/OrdinaryAssistant.java
  30. 10 41
      trans/src/main/java/com/lantone/qc/trans/taizhou/TaizhouDocTrans.java

+ 7 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/XmlDataAnalysisFacade.java

@@ -278,6 +278,13 @@ public class XmlDataAnalysisFacade {
     private List<Map.Entry<Set<String>, String>> getKeysBehospitalCodeEntryList(long hospitalId, long modelId, String recTitle, String sex, List<String> recIds, Map<String, String> recIdBehospitalCodeMap, EncrypDES encrypDES) throws Exception {
         List<Map.Entry<Set<String>, String>> ret = Lists.newArrayList();
 
+        QueryWrapper<MedicalRecord> medicalRecordQe = new QueryWrapper<>();
+        medicalRecordQe.eq("hospital_id",hospitalId);
+        medicalRecordQe.in("rec_id",recIds);
+        MedicalRecord medicalRecord = new MedicalRecord();
+        medicalRecord.setStatus(1);
+        medicalRecordService.update(medicalRecord,medicalRecordQe);
+
         //根据文书记录id集合,找出文书内容,有的文书记录可能没有对应文书内容,如果文书的xml是加密过的,还需要解密
         QueryWrapper<MedicalRecordContent> medicalRecordContentQe = new QueryWrapper<>();
         medicalRecordContentQe.eq("is_deleted", "N");

+ 2 - 19
dbanaly/src/main/resources/application-db.yml

@@ -5,26 +5,9 @@ spring:
     druid:
       lantone:
         driver-class-name: com.mysql.jdbc.Driver
-        ##236数据库 内网
-        url: jdbc:mysql://192.168.2.236:3306/qc?useUnicode=true&characterEncoding=utf8&useSSL=false
+        url: jdbc:mysql://192.168.2.121:3306/qc?useUnicode=true&characterEncoding=utf8
         username: root
-        password: lantone
-        ##236数据库 外网
-        #        url: jdbc:mysql://223.93.170.82:23606/qc?useUnicode=true&characterEncoding=utf8
-        #        username: root
-        #        password: lantone
-        ##121数据库 内网
-#        url: jdbc:mysql://192.168.2.121:3306/qc?useUnicode=true&characterEncoding=utf8
-#        username: root
-#        password: QuGDHNG35r
-        ##121数据库 外网
-        #        url: jdbc:mysql://223.93.170.82:23606/qc?useUnicode=true&characterEncoding=utf8
-        #        username: root
-        #        password: QuGDHNG35r
-        ##190数据库 内网
-        #        url: jdbc:mysql://192.168.2.190:3306/qc?useUnicode=true&characterEncoding=utf8
-        #        username: root
-        #        password: lantone
+        password: QuGDHNG35r
         initial-size: 8
         min-idle: 1
         max-active: 20

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

@@ -3,6 +3,7 @@ package com.lantone.qc.kernel.catalogue.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.Diag;
 import com.lantone.qc.pub.model.entity.Operation;
 import com.lantone.qc.pub.model.label.PastLabel;
 import com.lantone.qc.pub.util.ListUtil;
@@ -46,9 +47,22 @@ public class BEH0025 extends QCCatalogue {
                 return;
             }
         }
+        /* 疾病名称:**术后**,算是有手术史 */
+        List<Diag> diags = pastLabel.getDiags();
+        for (Diag diag : diags) {
+            String hospitalDiagName = diag.getHospitalDiagName();
+            if (StringUtil.isBlank(hospitalDiagName)) {
+                continue;
+            }
+            if (hospitalDiagName.contains("术后")) {
+                status.set("0");
+                return;
+            }
+        }
         //规则硬匹配
         String pastLabelText = pastLabel.getText();
-        if (pastLabelText.contains("手术") || pastLabelText.contains("详见原病历")) {
+        if (pastLabelText.contains("手术") || pastLabelText.contains("详见原病历")
+                || pastLabelText.contains("体外碎石")) {
             status.set("0");
         }
     }

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

@@ -47,7 +47,8 @@ public class BEH0030 extends QCCatalogue {
             status.set("0");
         }
         String pastText = pastLabel.getText();
-        if (pastText.contains("肝炎") || pastText.contains("结核") || pastText.contains("详见原病历")) {
+        if (pastText.contains("肝炎") || pastText.contains("结核") || pastText.contains("详见原病历")
+                || pastText.contains("乙肝")) {
             status.set("0");
         }
     }

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

@@ -40,6 +40,9 @@ public class BEH0035 extends QCCatalogue {
                         .map(i -> i.getAllergyMedicine().getName()).distinct().collect(Collectors.toList()),
                 pastLabel.getText()
         );
+        if(wtAmNames.contains("止痛片")){
+            return;
+        }
         if (ListUtil.isNotEmpty(wtAmNames)) {
             status.set("-1");
             for (String wtAmName : wtAmNames) {

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

@@ -28,7 +28,7 @@ public class BEH0049 extends QCCatalogue {
             return;
         }
         String personalText = personalLabel.getText();
-        if (personalText.contains("详见原病历")) {
+        if (personalText.contains("详见原病历") || personalText.contains("特殊嗜好")) {
             status.set("0");
             return;
         }

+ 10 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0054.java

@@ -5,6 +5,7 @@ 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.Consanguineous;
+import com.lantone.qc.pub.model.label.FamilyLabel;
 import com.lantone.qc.pub.model.label.MaritalLabel;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
@@ -26,6 +27,7 @@ public class BEH0054 extends QCCatalogue {
         //硬规则 未婚
         String marry = inputInfo.getBeHospitalizedDoc().getStructureMap().get(Content.marry);
         MaritalLabel maritalLabel = inputInfo.getBeHospitalizedDoc().getMaritalLabel();
+        FamilyLabel familyLabel = inputInfo.getBeHospitalizedDoc().getFamilyLabel();
         if (maritalLabel == null) {
             status.set("0");
             return;
@@ -35,6 +37,14 @@ public class BEH0054 extends QCCatalogue {
             status.set("0");
             return;
         }
+        /* 有少数病历的近亲结婚时会写在家族史中(普通病历会写在婚育史里) */
+        if (familyLabel != null) {
+            String familyText = familyLabel.getText();
+            if (StringUtil.isNotBlank(familyText) && familyText.contains("近亲结婚")) {
+                status.set("0");
+                return;
+            }
+        }
         Consanguineous consanguineous = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getConsanguineous();
         if (consanguineous != null && StringUtil.isNotBlank(consanguineous.getName())) {
             status.set("0");

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

@@ -25,6 +25,16 @@ public class BEH0072 extends QCCatalogue {
         status.set("0");
         if (inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getFamilyLabel() != null) {
             FamilyLabel familyLabel = inputInfo.getBeHospitalizedDoc().getFamilyLabel();
+            if (familyLabel == null) {
+                return;
+            }
+            String familyText = familyLabel.getText();
+            if (StringUtil.isNotBlank(familyText)) {
+                familyText = familyText.substring(0, Math.min(10, familyText.length()));
+                if (familyText.contains("死因") || familyText.contains("原因") || familyText.contains("不详")) {
+                    return;
+                }
+            }
             List<Family> families = familyLabel.getFamilies();
             if (ListUtil.isEmpty(families)) {
                 return;
@@ -32,7 +42,7 @@ public class BEH0072 extends QCCatalogue {
             for (Family family : families) {
                 if (family.getDead() != null) {
                     Dead dead = family.getDead();
-                    if(family.getName().contains("年迈")){
+                    if (family.getName().contains("年迈")) {
                         continue;
                     }
                     if (dead.getDeadReason() != null || dead.getUnknow() != null) {

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

@@ -7,6 +7,7 @@ import com.lantone.qc.pub.model.entity.Diag;
 import com.lantone.qc.pub.model.entity.Family;
 import com.lantone.qc.pub.model.label.FamilyLabel;
 import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -30,6 +31,11 @@ public class BEH0074 extends QCCatalogue {
             status.set("0");
             return;
         }
+        String familyText = familyLabel.getText();
+        if (StringUtil.isNotBlank(familyText) && (familyText.contains("瘤") || familyText.contains("癌"))) {
+            status.set("0");
+            return;
+        }
         List<Family> families = familyLabel.getFamilies();
         if (ListUtil.isEmpty(families)) {
             status.set("0");

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

@@ -29,7 +29,7 @@ public class BEH0415 extends QCCatalogue {
             String contactAddress_bh = structureMap.get("民族");
             String contactAddress_first = firstStructMap.get(Content.nation);
             if (!CatalogueUtil.isEmpty(contactAddress_bh) && !CatalogueUtil.isEmpty(contactAddress_first)) {
-                if (!contactAddress_first.equals(contactAddress_bh)) {
+                if (!contactAddress_first.equals(contactAddress_bh)&&!contactAddress_bh.contains(contactAddress_first)&&!contactAddress_first.contains(contactAddress_bh)) {
                     status.set("-1");
                 }
             }

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

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

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

@@ -31,7 +31,7 @@ public class BEH0443 extends QCCatalogue {
         PresentLabel presentLabel = beHospitalizedDoc.getPresentLabel();
         if (presentLabel != null) {
             String presentLabelText = presentLabel.getText();
-            if (StringUtil.isNotBlank(presentLabelText) && presentLabelText.contains("体重")) {
+            if (StringUtil.isNotBlank(presentLabelText) && (presentLabelText.contains("体重") || presentLabelText.contains("体型"))) {
                 status.set("0");
                 return;
             }

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

@@ -31,7 +31,7 @@ public class BEH0444 extends QCCatalogue {
         }
         PresentLabel presentLabel = beHospitalizedDoc.getPresentLabel();
         if (presentLabel != null) {
-            List<String> words = Lists.newArrayList("神志", "神清", "神不清", "意识清", "意识不清", "昏迷","精神");
+            List<String> words = Lists.newArrayList("神志", "神清", "神不清", "意识清", "意识不清", "昏迷","精神","意识");
             String presentLabelText = presentLabel.getText();
             if (StringUtil.isNotBlank(presentLabelText)) {
                 for (String word : words) {

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

@@ -13,7 +13,7 @@ import java.util.List;
 
 /**
  * @ClassName : BEH0491
- * @Description : 实验室检查未注明时间和地点
+ * @Description : 辅助检查未注明时间和地点
  * @Author : 胡敬
  * @Date: 2020-06-03 13:34
  */
@@ -58,7 +58,7 @@ public class BEH0491 extends QCCatalogue {
             }
              */
         }
-        String prefixText = pacsText.substring(0, Math.min(10, pacsText.length()));
+        String prefixText = pacsText.substring(0, Math.min(20, pacsText.length()));
         if (prefixText.contains("院")) {
             findPlace = true;
         }

+ 12 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0309.java

@@ -6,11 +6,9 @@ import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.ClinicBloodEffectDoc;
 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 : CLI0309
@@ -23,18 +21,25 @@ public class CLI0309 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();//输血记录
-        if(ListUtil.isEmpty(clinicalBloodDocs)){
+        List<ClinicBloodEffectDoc> clinicBloodEffectDocs = inputInfo.getClinicBloodEffectDocs();//输血效果评价
+        if (ListUtil.isEmpty(clinicalBloodDocs) || ListUtil.isEmpty(clinicBloodEffectDocs)) {
             return;
         }
-        List<ClinicBloodEffectDoc> clinicBloodEffectDocs = inputInfo.getClinicBloodEffectDocs();//输血效果评价
-        if(clinicalBloodDocs != null && clinicalBloodDocs.size()>0){
-            for (ClinicBloodEffectDoc cliB:clinicBloodEffectDocs) {
+        if (clinicalBloodDocs.size() != clinicBloodEffectDocs.size()) {
+            status.set("-1");
+            info.set("部分输血记录未找到对应输血后效果评价");
+        }
+        /*
+        if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
+            for (ClinicBloodEffectDoc cliB : clinicBloodEffectDocs) {
                 Map<String, String> cliBStructureMap = cliB.getStructureMap();
-                if(StringUtils.isEmpty(cliBStructureMap.get("输注后效果评价"))){
+                if (StringUtils.isEmpty(cliBStructureMap.get("输注后效果评价"))) {
                     status.set("-1");
                     break;
                 }
             }
         }
+
+         */
     }
 }

+ 31 - 13
kernel/src/main/java/com/lantone/qc/kernel/catalogue/dutyshiftsystem/DUT0296.java

@@ -1,7 +1,6 @@
 package com.lantone.qc.kernel.catalogue.dutyshiftsystem;
 
 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;
@@ -39,6 +38,20 @@ public class DUT0296 extends QCCatalogue {
         Map<String, String> structureMap_leave = leaveHospitalDoc.getStructureMap();
         String beDate = structureMap_leave.get("入院时间"); //2019-12-07 08:48
         String leaveDate = structureMap_leave.get("出院时间");//2019-12-10 10:49
+        /* 住院天数小于30天不报错*/
+        int lengthOfStayNum = 0;
+        if (StringUtil.isNotBlank(beDate) || StringUtil.isNotBlank(leaveDate)) {
+            lengthOfStayNum = dateDifference(beDate, leaveDate);
+            if (lengthOfStayNum < 30) {
+                return;
+            }
+        }
+        lengthOfStayNum = getLengthOfStay(structureMap_leave);
+        if (lengthOfStayNum < 30) {
+            return;
+        }
+
+
         if (transferRecordDoc != null) {
             List<TransferRecordDoc> allTransferDocs = transferRecordDoc.getAllTransferDocs();
             String firstOutRecordDate = getFirstOutRecordDate(allTransferDocs);
@@ -75,30 +88,35 @@ public class DUT0296 extends QCCatalogue {
                 if (dateDifference > 30 && (stagesSummaryDocs == null || stagesSummaryDocs.size() == 0)) {
                     status.set("-1");
                 }
-                if (!checkDays(stagesSummaryDocs, dateDifference)) {
+                if (checkDays(stagesSummaryDocs, dateDifference)) {
                     status.set("-1");
                     return;
                 }
             }
 
-            String lengthOfStay = structureMap_leave.get("住院天数");
-            if (StringUtil.isNotBlank(lengthOfStay)) {
-                int lengthOfStayNum = onlyNum(lengthOfStay);
-                if (!checkDays(stagesSummaryDocs, lengthOfStayNum)) {
-                    status.set("-1");
-                }
+            int lengthOfStay = getLengthOfStay(structureMap_leave);
+            if (checkDays(stagesSummaryDocs, lengthOfStay)) {
+                status.set("-1");
             }
-
         }
 
     }
 
+    private int getLengthOfStay(Map<String, String> structureMap_leave) {
+        int lengthOfStayNum = 0;
+        String lengthOfStay = structureMap_leave.get("住院天数");
+        if (StringUtil.isNotBlank(lengthOfStay)) {
+            lengthOfStayNum = onlyNum(lengthOfStay);
+        }
+        return lengthOfStayNum;
+    }
+
     private boolean checkDays(List<StagesSummaryDoc> stagesSummaryDocs, int dateDifference) {
         if (stagesSummaryDocs != null && stagesSummaryDocs.size() > 0) {
             double sum = Math.floor(dateDifference / 30);
-            return sum == stagesSummaryDocs.size();
+            return sum != stagesSummaryDocs.size();
         }
-        return false;
+        return true;
     }
 
     /**
@@ -183,7 +201,7 @@ public class DUT0296 extends QCCatalogue {
         return day;
     }
 
-    private int onlyNum (String str){
-        return Integer.parseInt(str.replaceAll("[^0-9]",""));
+    private int onlyNum(String str) {
+        return Integer.parseInt(str.replaceAll("[^0-9]", ""));
     }
 }

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

@@ -8,6 +8,8 @@ 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 : FIRC0092
  * @Description : 治疗措施不具体
@@ -31,6 +33,12 @@ public class FIRC0092 extends QCCatalogue {
         if (StringUtil.isNotBlank(text) && text.contains("护理")) {
             findText = true;
         }
+
+        Map<String,String> structureMap = firstCourseRecordDoc.getStructureMap();
+        String structureV= structureMap.get("治疗监测计划");
+        if(StringUtil.isNotBlank(structureV) && structureV.contains("护理")){
+            findText = true;
+        }
         if ((treatPlanLabel.getNursingLevel() != null || findText) &&
                 (treatPlanLabel.getMedicine() != null || treatPlanLabel.getTreat().size() > 0
                         || treatPlanLabel.getPacs().size() > 0)) {

+ 8 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0144.java

@@ -5,6 +5,8 @@ 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.model.doc.DeathCaseDiscussDoc;
+import com.lantone.qc.pub.model.doc.DeathRecordDoc;
 import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
@@ -25,6 +27,12 @@ public class THR0144 extends QCCatalogue {
             status.set("0");
             return;
         }
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        DeathCaseDiscussDoc deathCaseDiscussDoc = inputInfo.getDeathCaseDiscussDoc();
+        if (deathRecordDoc != null || deathCaseDiscussDoc != null){
+            status.set("0");
+            return;
+        }
         List<ThreeLevelWardDoc> allDoctorWradDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();
         if (allDoctorWradDocs.size() == 0) {
             status.set("0");

+ 6 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/BeHospitalizedAI.java

@@ -109,14 +109,19 @@ public class BeHospitalizedAI extends ModelAI {
                 putContent(crfContent, medicalTextType.get(3), pacs_text, Content.pacs);//辅助检查(暂用主诉现病史模型,之后会新训练单独模型再做修改)
             }
             if (beHospitalizedDoc.getInitialDiagLabel().isCrfLabel()) {
-                putContent(crfContent, medicalTextType.get(6), initial_diag_text, Content.initial_diag);//初步诊断
+                if (StringUtil.isNotBlank(initial_diag_text)) {
+                    //initial_diag_text = CatalogueUtil.removeBetweenWordSpace(initial_diag_text);
+                    putContent(crfContent, medicalTextType.get(6), initial_diag_text, Content.initial_diag);//初步诊断
+                }
             }
             if (StringUtils.isNotEmpty(revised_diag_text) && beHospitalizedDoc.getRevisedDiagLabel().isCrfLabel()) {
                 //修正诊断
+                //revised_diag_text = CatalogueUtil.removeBetweenWordSpace(revised_diag_text);
                 putContent(crfContent, medicalTextType.get(6), revised_diag_text, Content.revised_diag);
             }
             if (StringUtils.isNotEmpty(supple_diag_text) && beHospitalizedDoc.getSuppleDiagLabel().isCrfLabel()) {
                 //补充诊断
+                //supple_diag_text = CatalogueUtil.removeBetweenWordSpace(supple_diag_text);
                 putContent(crfContent, medicalTextType.get(6), supple_diag_text, Content.supple_diag);
             }
             JSONObject midData = loadAI(crfContent, crfServiceClient);

+ 13 - 4
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/FirstCourseRecordAI.java

@@ -7,6 +7,7 @@ import com.lantone.qc.kernel.client.SimilarityServiceClient;
 import com.lantone.qc.kernel.structure.ai.process.EntityProcessClinic;
 import com.lantone.qc.kernel.structure.ai.process.EntityProcessDiag;
 import com.lantone.qc.kernel.structure.ai.process.EntityProcessTreatPlan;
+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.doc.FirstCourseRecordDoc;
@@ -45,18 +46,26 @@ public class FirstCourseRecordAI extends ModelAI {
             //putContent(crfContent, medicalTextType.get(0), firstCourseRecordDoc.getCaseCharacteristicLabel().getText(), Content.case_feature);
             //初步诊断
             if (StringUtils.isNotEmpty(structureMap.get(Content.initial_diag))) {
-                putContent(crfContent, medicalTextType.get(1), structureMap.get(Content.initial_diag), Content.initial_diag);
+                //String initial_diag = CatalogueUtil.removeBetweenWordSpace(structureMap.get(Content.initial_diag));
+                String initial_diag = structureMap.get(Content.initial_diag);
+                putContent(crfContent, medicalTextType.get(1), initial_diag, Content.initial_diag);
             } else if (firstCourseRecordDoc.getInitialDiagLabel() != null && StringUtil.isNotBlank(firstCourseRecordDoc.getInitialDiagLabel().getText())) {
-                putContent(crfContent, medicalTextType.get(1), firstCourseRecordDoc.getInitialDiagLabel().getText(), Content.initial_diag);
+                //String initial_diag = CatalogueUtil.removeBetweenWordSpace(firstCourseRecordDoc.getInitialDiagLabel().getText());
+                String initial_diag = firstCourseRecordDoc.getInitialDiagLabel().getText();
+                putContent(crfContent, medicalTextType.get(1), initial_diag, Content.initial_diag);
             }
 
             //诊断依据
             //putContent(crfContent, medicalTextType.get(0), firstCourseRecordDoc.getDiagnosisLabel().getText(), Content.diag_basis);
             //鉴别诊断
             if (StringUtils.isNotEmpty(structureMap.get("鉴别诊断"))) {
-                putContent(crfContent, medicalTextType.get(1), structureMap.get("鉴别诊断"), "鉴别诊断");
+                //String diffDiag = CatalogueUtil.removeBetweenWordSpace(structureMap.get("鉴别诊断"));
+                String diffDiag = structureMap.get("鉴别诊断");
+                putContent(crfContent, medicalTextType.get(1), diffDiag, "鉴别诊断");
             } else if (firstCourseRecordDoc.getDifferentialDiagLabel() != null && StringUtil.isNotBlank(firstCourseRecordDoc.getDifferentialDiagLabel().getText())) {
-                putContent(crfContent, medicalTextType.get(1), firstCourseRecordDoc.getDifferentialDiagLabel().getText(), "鉴别诊断");
+                //String diffDiag = CatalogueUtil.removeBetweenWordSpace(firstCourseRecordDoc.getDifferentialDiagLabel().getText());
+                String diffDiag = firstCourseRecordDoc.getDifferentialDiagLabel().getText();
+                putContent(crfContent, medicalTextType.get(1), diffDiag, "鉴别诊断");
             }
             //诊疗计划
             if (StringUtils.isNotEmpty(structureMap.get("诊疗计划")) && StringUtils.isNotEmpty(structureMap.get("需求评估"))) {

+ 6 - 2
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/LeaveHospitalAI.java

@@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.lantone.qc.kernel.client.CRFServiceClient;
 import com.lantone.qc.kernel.structure.ai.process.EntityProcessLeaveHospital;
+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.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.label.DiagLabel;
 import com.lantone.qc.pub.model.label.LeaveHospitalLabel;
+import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.Arrays;
@@ -46,8 +48,10 @@ public class LeaveHospitalAI extends ModelAI {
                 //                    putContent(crfContent, medicalTextType.get(1), leaveHospitalStructureMap.get(Content.inStatus), Content.inStatus);
                 //                }
                 //出院诊断
-                if (leaveHospitalStructureMap.get(Content.dischargeDiag) != null) {
-                    putContent(crfContent, medicalTextType.get(1), leaveHospitalStructureMap.get(Content.dischargeDiag), Content.dischargeDiag);
+                if (StringUtil.isNotBlank(leaveHospitalStructureMap.get(Content.dischargeDiag))) {
+                    //String dischargeDiag = CatalogueUtil.removeBetweenWordSpace(leaveHospitalStructureMap.get(Content.dischargeDiag));
+                    String dischargeDiag = leaveHospitalStructureMap.get(Content.dischargeDiag);
+                    putContent(crfContent, medicalTextType.get(1), dischargeDiag, Content.dischargeDiag);
                 }
             }
         }

+ 19 - 5
kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

@@ -91,8 +91,11 @@ public class CatalogueUtil {
                 index++;
             }
             for (String word : words) {
-                if (StringUtil.isNotBlank(word) && sections.stream().filter(section -> section.indexOf(word) != -1).count() == 0) {
-                    retWords.add(word);
+                if (StringUtil.isNotBlank(word)) {
+                    String newWord = word.replaceAll("[“”]", "");
+                    if (sections.stream().noneMatch(section -> section.contains(newWord))) {
+                        retWords.add(word);
+                    }
                 }
             }
         }
@@ -330,7 +333,7 @@ public class CatalogueUtil {
         StringBuffer sb = new StringBuffer();
         char[] contentArr = content.toCharArray();
         for (int i = 0; i < contentArr.length; i++) {
-            if (isNumeric(contentArr[i])){
+            if (isNumeric(contentArr[i])) {
                 int num = Integer.parseInt(String.valueOf(contentArr[i]));
                 sb.append(intMapString.get(num));
             } else {
@@ -348,10 +351,21 @@ public class CatalogueUtil {
         return true;
     }
 
-    public static Date parseStringDate(String dateStr){
-        if (StringUtil.isBlank(dateStr)){
+    public static Date parseStringDate(String dateStr) {
+        if (StringUtil.isBlank(dateStr)) {
             return null;
         }
         return StringUtil.parseDateTime(dateStr);
     }
+
+    /**
+     * 去除两个中文字之间空格
+     * @param str
+     * @return
+     */
+    public static String removeBetweenWordSpace(String str){
+        Pattern pattern = Pattern.compile("(?<=[\\x{4e00}-\\x{9fa5}])\\s(?=[\\x{4e00}-\\x{9fa5}])");
+        Matcher m = pattern.matcher(str);
+        return m.replaceAll("");
+    }
 }

+ 3 - 4
kernel/src/main/resources/application.yml

@@ -30,14 +30,13 @@ qc:
   hospital_id: 1,3
 
 CRF:
-  url: http://192.168.3.150:3456/api/mr_info_ex/entity_predict
+  url: http://192.168.2.234:3456/api/mr_info_ex/entity_predict
 
 Similarity:
-  url: http://192.168.3.150:3456/api/mr_info_ex/similarity
+  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
 
 ChiefPresentSimilarity:
-  url: http://192.168.3.150:3456/api/mr_info_ex/chief_present_similarity
-
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity
 
 logging:          # 日志
   config: classpath:logback-spring.xml

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxBeHospitalizedDocTrans.java

@@ -115,7 +115,8 @@ public class ChangxBeHospitalizedDocTrans extends ModelDocTrans {
             "++++胸闷心悸史=胸闷心悸史",
             "实验室检查++++辅助检查=辅助检查",
             "签名++++=医师签名",
-            "兄弟姐妹健康状况++++兄弟姐妹=兄弟姐妹健康状况"
+            "兄弟姐妹健康状况++++兄弟姐妹=兄弟姐妹健康状况",
+            "++++(外)祖父母=外祖父母"
     );
 
     private String concatString(String item) {

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/changx/ChangxConsultationDocTrans.java

@@ -234,13 +234,13 @@ public class ChangxConsultationDocTrans extends ModelDocTrans {
             "床号=",
             "++++病案号=病案号",
             "新会诊-简要病情及诊疗=简要病情及诊疗",
-            "新会诊-申请理由目的=申请理由目的",
+            "新会诊-申请理由目的=会诊目的",
             "新会诊-受邀科室=受邀科室",
             "新会诊-会诊分类=会诊分类",
             "新会诊-会诊时间=会诊时间",
             "新会诊-会诊地点=会诊地点",
-            "新会诊-接待医生=受邀医生",
-            "新会诊-会诊科室=会诊科室",
+            "新会诊-接待医生=会诊医师",
+            "新会诊-会诊意见=会诊意见",
             "签名++++=签名",
             "++++会诊医师=会诊医师"
     );

+ 8 - 1
trans/src/main/java/com/lantone/qc/trans/changx/ChangxDocTrans.java

@@ -6,6 +6,7 @@ import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.model.vo.QueryVo;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.trans.DocTrans;
+import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 
 import java.util.List;
 import java.util.Map;
@@ -164,7 +165,13 @@ public class ChangxDocTrans extends DocTrans {
             inputInfo.setClinicalBloodDocs(inputInfo.getClinicalBloodDocs().stream().filter(i -> i.getText().indexOf("输白蛋白") == -1).collect(Collectors.toList()));
         }
         if (ListUtil.isNotEmpty(inputInfo.getClinicBloodEffectDocs())) {
-            inputInfo.getPageData().put("输血后效果评价", inputInfo.getClinicBloodEffectDocs().stream().map(i -> i.getPageData()).collect(Collectors.toList()));
+            inputInfo.getPageData().put(
+                    "输血后效果评价",
+                    inputInfo.getClinicBloodEffectDocs()
+                            .stream()
+                            .map(i -> i.getPageData())
+                            .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "记录时间", "yyyy-MM-dd HH:mm"))
+                            .collect(Collectors.toList()));
         }
         if (ListUtil.isNotEmpty(inputInfo.getCrisisValueReportDocs())) {
             inputInfo.getPageData().put("危急值记录", inputInfo.getCrisisValueReportDocs().stream().map(i -> i.getPageData()).collect(Collectors.toList()));

+ 15 - 4
trans/src/main/java/com/lantone/qc/trans/changx/ChangxOperationDocTrans.java

@@ -3,6 +3,7 @@ package com.lantone.qc.trans.changx;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationInformedConsentDoc;
@@ -13,7 +14,6 @@ import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.Preproc;
@@ -100,9 +100,18 @@ public class ChangxOperationDocTrans extends ModelDocTrans {
             structureMap.put("记录医师", structureMap.get("签名"));
         }
 
-        String text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Region/Content_Text");
-        if (StringUtil.isBlank(text)) {
-            text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Region");
+        String text = null;
+        String[] nodePaths = {
+                "//DocObjContent/Region/Content_Text",
+                "//DocObjContent/Region",
+                "//DocObjContent/Content_Text",
+                "//DocObjContent"
+        };
+        for (String nodePath : nodePaths) {
+            text = CxXmlUtil.getTextByNodePath(content, nodePath);
+            if (StringUtil.isNotBlank(text)) {
+                break;
+            }
         }
         Map<String, String> cutWordMap = Preproc.getCutWordMap(true, operationDiscussion_sourceTitles, text);
         cutWordMap.putAll(structureMap);
@@ -139,7 +148,9 @@ public class ChangxOperationDocTrans extends ModelDocTrans {
             "手术结束时间=",
             "麻醉方式=",
             "手术方式=",
+            "手术方式++++手术名称=手术方式",
             "术中诊断++++初步诊断=术中诊断",
+            "术中诊断++++术后诊断=术中诊断",
             "手术经过=手术简要经过",
             "患者术后情况=",
             "术后处理措施=",

+ 2 - 2
trans/src/main/java/com/lantone/qc/trans/changx/ChangxRescueDocTrans.java

@@ -65,8 +65,8 @@ public class ChangxRescueDocTrans extends ModelDocTrans {
             "抢救时间及措施++++抢救措施=",
             "参加抢救者的姓名及专业技术职称++++参加现场抢救的医师及护理人员=参与人员",
             "签名++++=记录医师",
-            "签名时间=抢救时间",
-            "参与人员=参加人员及职称"
+            "签名时间=抢救时间"
+//            "参与人员=参加人员及职称"
     );
 
 }

+ 33 - 1
trans/src/main/java/com/lantone/qc/trans/comsis/OrdinaryAssistant.java

@@ -2,9 +2,11 @@ package com.lantone.qc.trans.comsis;
 
 import com.google.common.collect.Maps;
 import com.lantone.qc.dbanaly.util.ModuleMappingUtil;
+import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.pub.util.StringUtil;
 
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -37,7 +39,7 @@ public class OrdinaryAssistant {
                 targetKey = arry[1];
             }
             if (StringUtil.isNotBlank(sourceMap_.get(sourceKey))
-                    &&(!retMap.containsKey(targetKey)||StringUtil.isBlank(retMap.get(targetKey)))) {
+                    && (!retMap.containsKey(targetKey) || StringUtil.isBlank(retMap.get(targetKey)))) {
                 retMap.put(targetKey, sourceMap_.get(sourceKey));
             }
             removeKey.add(sourceKey);
@@ -53,4 +55,34 @@ public class OrdinaryAssistant {
         return retMap;
     }
 
+    /**
+     * 返回给前端的页面数据多条时排序
+     *
+     * @param map1
+     * @param map2
+     * @param key
+     * @param format
+     * @return
+     */
+    public static int pageDataTimeSort(Map<String, Object> map1, Map<String, Object> map2, String key, String format) {
+        Date date1 = null, date2 = null;
+        if (map1.get(key) != null) {
+            date1 = DateUtil.parseDate(map1.get(key).toString(), format);
+        }
+        if (map2.get(key) != null) {
+            date2 = DateUtil.parseDate(map2.get(key).toString(), format);
+        }
+        long time1 = date1 == null ? 0 : date1.getTime();
+        long time2 = date2 == null ? 0 : date2.getTime();
+
+        if (time1 == time2) {
+            return 0;
+        }
+        if (time1 > time2) {
+            return -1;
+        } else {
+            return 1;
+        }
+    }
+
 }

+ 10 - 41
trans/src/main/java/com/lantone/qc/trans/taizhou/TaizhouDocTrans.java

@@ -4,11 +4,10 @@ import com.google.common.collect.Lists;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.model.vo.QueryVo;
-import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.trans.DocTrans;
+import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -167,7 +166,7 @@ public class TaizhouDocTrans extends DocTrans {
                     inputInfo.getCrisisValueReportDocs()
                             .stream()
                             .map(i -> i.getPageData())
-                            .sorted((map1, map2) -> pageDataTimeSort(map1, map2, "病历日期", "yyyy-MM-dd HH:mm"))
+                            .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "病历日期", "yyyy-MM-dd HH:mm"))
                             .collect(Collectors.toList())
             );
         }
@@ -189,7 +188,7 @@ public class TaizhouDocTrans extends DocTrans {
                     inputInfo.getRescueDocs()
                             .stream()
                             .map(i -> i.getPageData())
-                            .sorted((map1, map2) -> pageDataTimeSort(map1, map2, "事件日期", "yyyy/MM/dd HH:mm"))
+                            .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "事件日期", "yyyy/MM/dd HH:mm"))
                             .collect(Collectors.toList())
             );
         }
@@ -212,7 +211,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(consultationDoc -> consultationDoc != null && consultationDoc.getConsultationRecordDoc() != null)
                     .map(consultationDoc -> consultationDoc.getConsultationRecordDoc().getPageData())
-                    .sorted((map1, map2) -> -pageDataTimeSort(map1, map2, "记录时间", "yyyy/MM/dd HH:mm"))
+                    .sorted((map1, map2) -> -OrdinaryAssistant.pageDataTimeSort(map1, map2, "记录时间", "yyyy/MM/dd HH:mm"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(crePageDataList)) {
                 inputInfo.getPageData().put("会诊记录", crePageDataList);
@@ -222,7 +221,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(consultationDoc -> consultationDoc != null && consultationDoc.getConsultationApplicationDoc() != null)
                     .map(consultationDoc -> consultationDoc.getConsultationApplicationDoc().getPageData())
-                    .sorted((map1, map2) -> -pageDataTimeSort(map1, map2, "申请日期", "yyyy/MM/dd HH:mm"))
+                    .sorted((map1, map2) -> -OrdinaryAssistant.pageDataTimeSort(map1, map2, "申请日期", "yyyy/MM/dd HH:mm"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(caPageDataList)) {
                 inputInfo.getPageData().put("会诊申请单", caPageDataList);
@@ -232,7 +231,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(consultationDoc -> consultationDoc != null && consultationDoc.getConsultationResultsDoc() != null)
                     .map(consultationDoc -> consultationDoc.getConsultationResultsDoc().getPageData())
-                    .sorted((map1, map2) -> -pageDataTimeSort(map1, map2, "申请日期", "yyyy/MM/dd HH:mm"))
+                    .sorted((map1, map2) -> -OrdinaryAssistant.pageDataTimeSort(map1, map2, "申请日期", "yyyy/MM/dd HH:mm"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(crsPageDataList)) {
                 inputInfo.getPageData().put("会诊结果单", crsPageDataList);
@@ -243,7 +242,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(operationDoc -> operationDoc != null && operationDoc.getOperationDiscussionDoc() != null)
                     .map(operationDoc -> operationDoc.getOperationDiscussionDoc().getPageData())
-                    .sorted((map1, map2) -> pageDataTimeSort(map1, map2, "手术日期", "yyyy/MM/dd"))
+                    .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "手术日期", "yyyy/MM/dd"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(odPageDataList)) {
                 inputInfo.getPageData().put("术后首次病程及谈话记录", odPageDataList);
@@ -253,7 +252,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(operationDoc -> operationDoc != null && operationDoc.getOperationRecordDoc() != null)
                     .map(operationDoc -> operationDoc.getOperationRecordDoc().getPageData())
-                    .sorted((map1, map2) -> pageDataTimeSort(map1, map2, "开始时间", "yyyy/MM/dd HH:mm"))
+                    .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "开始时间", "yyyy/MM/dd HH:mm"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(orPageDataList)) {
                 inputInfo.getPageData().put("手术记录", orPageDataList);
@@ -263,7 +262,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(operationDoc -> operationDoc != null && operationDoc.getPreoperativeDiscussionDoc() != null)
                     .map(operationDoc -> operationDoc.getPreoperativeDiscussionDoc().getPageData())
-                    .sorted((map1, map2) -> pageDataTimeSort(map1, map2, "讨论时间", "yyyy年MM月dd日 HH时mm分"))
+                    .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "讨论时间", "yyyy年MM月dd日 HH时mm分"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(pdPageDataList)) {
                 inputInfo.getPageData().put("术前讨论、术前小结", pdPageDataList);
@@ -273,7 +272,7 @@ public class TaizhouDocTrans extends DocTrans {
                     .stream()
                     .filter(operationDoc -> operationDoc != null && operationDoc.getOperationInformedConsentDoc() != null)
                     .map(operationDoc -> operationDoc.getOperationInformedConsentDoc().getPageData())
-                    .sorted((map1, map2) -> pageDataTimeSort(map1, map2, "谈话日期", "yyyy/MM/dd HH:mm"))
+                    .sorted((map1, map2) -> OrdinaryAssistant.pageDataTimeSort(map1, map2, "谈话日期", "yyyy/MM/dd HH:mm"))
                     .collect(Collectors.toList());
             if (ListUtil.isNotEmpty(oicPageDataList)) {
                 inputInfo.getPageData().put("手术知情同意书", oicPageDataList);
@@ -290,34 +289,4 @@ public class TaizhouDocTrans extends DocTrans {
         }
     }
 
-    /**
-     * 返回给前端的页面数据多条时排序
-     *
-     * @param map1
-     * @param map2
-     * @param key
-     * @param format
-     * @return
-     */
-    private int pageDataTimeSort(Map<String, Object> map1, Map<String, Object> map2, String key, String format) {
-        Date date1 = null, date2 = null;
-        if (map1.get(key) != null) {
-            date1 = DateUtil.parseDate(map1.get(key).toString(), format);
-        }
-        if (map2.get(key) != null) {
-            date2 = DateUtil.parseDate(map2.get(key).toString(), format);
-        }
-        long time1 = date1 == null ? 0 : date1.getTime();
-        long time2 = date2 == null ? 0 : date2.getTime();
-
-        if (time1 == time2) {
-            return 0;
-        }
-        if (time1 > time2) {
-            return -1;
-        } else {
-            return 1;
-        }
-    }
-
 }