Selaa lähdekoodia

1.病程中抗生素记录不规范,病程中抗生素之前10个字包含“继续”,跳过该抗生素

huj 4 vuotta sitten
vanhempi
commit
8b61eca7c0

+ 17 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR03077.java

@@ -117,7 +117,8 @@ public class THR03077 extends QCCatalogue {
             dateStr = firstCourseRecordDoc.getStructureMap().get("记录时间");
             if (drugLabel != null && StringUtil.isNotBlank(dateStr)) {
                 List<Drug> drugs = drugLabel.getDrugs();
-                getCourseDrugInfo(antibioticDateCourse, dateStr, drugs);
+                getCourseDrugInfo(antibioticDateCourse, dateStr, drugs,
+                        CatalogueUtil.structureMapJoin(firstCourseRecordDoc.getStructureMap(), Lists.newArrayList("治疗计划")));
             }
         }
         /*********************************************查房记录********************************************************/
@@ -130,7 +131,8 @@ public class THR03077 extends QCCatalogue {
                 dateStr = doc.getStructureMap().get("查房日期");
                 ThreeLevelWardLabel label = doc.getThreeLevelWardLabel().get(0);
                 List<Drug> drugs = label.getDrugs();
-                getCourseDrugInfo(antibioticDateCourse, dateStr, drugs);
+                getCourseDrugInfo(antibioticDateCourse, dateStr, drugs,
+                        CatalogueUtil.structureMapJoin(doc.getStructureMap(), Lists.newArrayList("病情记录", "治疗计划和措施")));
             }
         }
         /*********************************************手术记录、术后首程************************************************/
@@ -142,14 +144,16 @@ public class THR03077 extends QCCatalogue {
                     .filter(Objects::nonNull)
                     .filter(x -> x.getOperationRecordLabel() != null && StringUtil.isNotBlank(x.getStructureMap().get("病历日期")))
                     .collect(Collectors.toList());
-            operationRecordDocs.forEach(x -> getCourseDrugInfo(antibioticDateCourse, x.getStructureMap().get("病历日期"), x.getOperationRecordLabel().getDrugs()));
+            operationRecordDocs.forEach(x -> getCourseDrugInfo(antibioticDateCourse, x.getStructureMap().get("病历日期"), x.getOperationRecordLabel().getDrugs()
+                    , CatalogueUtil.structureMapJoin(x.getStructureMap(), Lists.newArrayList("手术经过"))));
             List<OperationDiscussionDoc> operationDiscussionDocs = operationDocs
                     .stream()
                     .map(OperationDoc::getOperationDiscussionDoc)
                     .filter(Objects::nonNull)
                     .filter(x -> x.getOperationDiscussionLabel() != null && StringUtil.isNotBlank(x.getStructureMap().get("记录日期")))
                     .collect(Collectors.toList());
-            operationDiscussionDocs.forEach(x -> getCourseDrugInfo(antibioticDateCourse, x.getStructureMap().get("记录日期"), x.getOperationDiscussionLabel().getDrugs()));
+            operationDiscussionDocs.forEach(x -> getCourseDrugInfo(antibioticDateCourse, x.getStructureMap().get("记录日期"), x.getOperationDiscussionLabel().getDrugs()
+                    , CatalogueUtil.structureMapJoin(x.getStructureMap(), Lists.newArrayList("手术经过", "治疗计划和措施"))));
         }
         /*********************************************会诊结果单********************************************************/
         if (consultationDocs.size() > 0) {
@@ -159,7 +163,8 @@ public class THR03077 extends QCCatalogue {
                     .filter(Objects::nonNull)
                     .filter(x -> x.getConsultationResultLabel() != null && StringUtil.isNotBlank(x.getStructureMap().get("会诊日期及时间")))
                     .collect(Collectors.toList());
-            consultationResultsDocs.forEach(x -> getCourseDrugInfo(antibioticDateCourse, x.getStructureMap().get("会诊日期及时间"), x.getConsultationResultLabel().getDrugs()));
+            consultationResultsDocs.forEach(x -> getCourseDrugInfo(antibioticDateCourse, x.getStructureMap().get("会诊日期及时间"), x.getConsultationResultLabel().getDrugs()
+                    , CatalogueUtil.structureMapJoin(x.getStructureMap(), Lists.newArrayList("会诊意见"))));
         }
         /*********************************************出院小结********************************************************/
         if (leaveHospitalDoc != null) {
@@ -167,7 +172,8 @@ public class THR03077 extends QCCatalogue {
             dateStr = leaveHospitalDoc.getStructureMap().get("出院时间");
             if (leaveHospitalLabel != null && StringUtil.isNotBlank(dateStr)) {
                 List<Drug> drugs = leaveHospitalLabel.getDrugs();
-                getCourseDrugInfo(antibioticDateCourse, dateStr, drugs);
+                getCourseDrugInfo(antibioticDateCourse, dateStr, drugs
+                        , CatalogueUtil.structureMapJoin(leaveHospitalDoc.getStructureMap(), Lists.newArrayList("诊治经过", "出院带药")));
             }
         }
         //将病程日期排序
@@ -251,11 +257,15 @@ public class THR03077 extends QCCatalogue {
      * @param dateStr            记录日期
      * @param drugs              模型提取出的药品列表
      */
-    private void getCourseDrugInfo(Map<String, List<String>> antibioticDateWard, String dateStr, List<Drug> drugs) {
+    private void getCourseDrugInfo(Map<String, List<String>> antibioticDateWard, String dateStr, List<Drug> drugs, String content) {
         StringBuffer sb = null;
         for (Drug drug : drugs) {
             sb = new StringBuffer();
             String wardDrug = drug.getName();
+            int position = content.indexOf(wardDrug);
+            if (content.substring(Math.max(0, position - 10), position).contains("继续")) {
+                continue;
+            }
             wardDrug = removeBracket(wardDrug);
             String drugStandardWord = similarityUtil.getDrugStandardWord(wardDrug);
             if (StringUtil.isNotBlank(drugStandardWord)) {