Browse Source

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

zhangzw 4 years ago
parent
commit
d64f548ca8

+ 31 - 26
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/firstpagerecord/FIRP0178.java

@@ -9,16 +9,12 @@ 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.entity.Diag;
-import com.lantone.qc.pub.model.label.DiagLabel;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.lang.reflect.Array;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -38,14 +34,15 @@ public class FIRP0178 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getLeaveHospitalDoc() != null) {
+            String mainDiagnosis = "";
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
             List<Map<String, String>> dischargeDiag = (List) firstpageStructureMap.get(Content.dischargeDiag);
             if (ListUtil.isEmpty(dischargeDiag)) {
                 return;
             }
-//            if (dischargeDiag.get(0) != null) {
-//                mainDiagnosis = dischargeDiag.get(0).get("诊断名称");
-//            }
+            if (dischargeDiag.get(0) != null) {
+                mainDiagnosis = dischargeDiag.get(0).get("诊断名称");
+            }
 
             /* 病案首页出院小结诊断 除去主诊断*/
             List<String> firstpageLeaveDiags = getFirstPageDiag(dischargeDiag);
@@ -61,9 +58,9 @@ public class FIRP0178 extends QCCatalogue {
             List<String> leaveDiagsStr = putDiagToList(leaveDiags);*/
             //出院小结得出院诊断,模型提取出现问题,需要手动以1.2.3.为界限切开
             Map<String, String> leavehospitalStructureMap = inputInfo.getLeaveHospitalDoc().getStructureMap();
-            List<String> leaveDiagsStr = new ArrayList<>();
-            String leavediag = leavehospitalStructureMap.get("出院诊断");
-            leaveDiagsStr = cut(leaveDiagsStr, leavediag);
+
+            String leaveDiag = leavehospitalStructureMap.get("出院诊断");
+            List<String> leaveDiagsStr = cut(leaveDiag, mainDiagnosis);
 
             /* 修改为疾病相似度模型 */
             ModelAI modelAI = new ModelAI();
@@ -107,26 +104,34 @@ public class FIRP0178 extends QCCatalogue {
         return firstpageDiag;
     }
 
-    private List<String> putDiagToList(List<Diag> diagList) {
-        List<String> diags = new ArrayList<>();
-        for (Diag diag : diagList) {
-            // 去重
-            if (!diags.contains(diag.getHospitalDiagName())) {
-                diags.add(diag.getHospitalDiagName());
-            }
-        }
-        return diags;
-    }
+//    private List<String> putDiagToList(List<Diag> diagList) {
+//        List<String> diags = new ArrayList<>();
+//        for (Diag diag : diagList) {
+//            // 去重
+//            if (!diags.contains(diag.getHospitalDiagName())) {
+//                diags.add(diag.getHospitalDiagName());
+//            }
+//        }
+//        return diags;
+//    }
 
-    private List<String> cut(List<String> leaveDiagsStr, String leavediag) {
-        if (leavediag != null) {
-            String[] leavediags = leavediag.split(",?[0-9]\\.");
-            for (String string : leavediags) {
+    private List<String> cut(String leaveDiag, String mainDiagnosis) {
+        List<String> diags = new ArrayList<>();
+        if (leaveDiag != null) {
+            String[] leaveDiags = leaveDiag.split(",?,?[0-9]\\.");
+            for (String string : leaveDiags) {
                 if (!string.isEmpty()) {
-                    leaveDiagsStr.add(string);
+                    if (string.equals(mainDiagnosis)) {
+                        diags.add(0, string);
+                    } else {
+                        // 去重
+                        if (!diags.contains(string)) {
+                            diags.add(string);
+                        }
+                    }
                 }
             }
         }
-        return leaveDiagsStr;
+        return diags;
     }
 }

+ 3 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/threelevelward/THR0127.java

@@ -111,7 +111,9 @@ public class THR0127 extends QCCatalogue {
                 for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
                     int directorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.director);
                     int dept_doctorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.dept_doctor);
-                    if (directorNum + dept_doctorNum < 2) {
+                    //三级医师查房算一次主任查房
+                    int threeDoctorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), "三级医师查房");
+                    if (directorNum + dept_doctorNum + threeDoctorNum < 2) {
                         //每周无2次主任医师查房记录/科主任查房记录
                         status.set("-1");
                         resultInfos.add(lastWardDateRangeList.get(j));

+ 3 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/beilun/threelevelward/THR0128.java

@@ -132,10 +132,12 @@ public class THR0128 extends QCCatalogue {
                 List<String> resultInfos = new ArrayList<>();
                 for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
                     int indicationsNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.attend);
+                    //三级医师查房算一次主治查房
+                    int threeDoctorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), "三级医师查房");
                     if (j == 0 && firstRecordAttendExist) { //如果首程中医师签名为主治医师,第一周查房记录也要加上
                         indicationsNum += 1;
                     }
-                    if (indicationsNum < 3) {
+                    if (indicationsNum + threeDoctorNum < 3) {
                         //每周无3次主治医师查房记录
                         status.set("-1");
                         resultInfos.add(lastWardDateRangeList.get(j));

+ 4 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunThreeLevelWardDocTrans.java

@@ -75,6 +75,10 @@ public class BeiLunThreeLevelWardDocTrans extends ModelDocTrans {
         if (MapUtils.isEmpty(structureMap)) {
             return;
         }
+
+        if (structureMap.containsKey("病情记录")) {
+            structureMap.put("病情记录", structureMap.get("病情记录").replace(" ", ""));
+        }
         //structureMap.put("查房日期", structureMap.get("记录时间"));
 
         /*Map<String, String> cutWordMap = Maps.newHashMap();

+ 1 - 2
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunThreeLevelWardHtmlAnalysis.java

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