Jelajahi Sumber

初步诊断不完整
初步诊断不完整
主要诊断与出院小结不一致
主要手术及操作名称与手术记录不一致
病历中出现男的卵巢,女的出现睾丸这种错误,这一类问题需要质控
现病史中发现的药物没有在目前使用的药物中显示出来
诊疗计划里如果写了监测生命体征,那里必须写“测血压,心率”
病案首页中住址要具体写到门牌号

内涵质控修改

louhr 5 tahun lalu
induk
melakukan
60cc2fb0ac

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

@@ -90,12 +90,6 @@ public class BEH0011 extends QCCatalogue {
                     pastDiags.add(diag);
                 }
             }
-//            a1 = structureMap.get("心脏病");
-//            if  (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
-//                Diag diag = new Diag();
-//                diag.setName("心脏病");
-//                pastDiags.add(diag);
-//            }
             a1 = structureMap.get("糖尿病");
             if  (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
                 Diag diag = new Diag();

+ 59 - 21
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0095.java

@@ -13,13 +13,11 @@ 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.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @ClassName : FIRC0095
@@ -33,13 +31,16 @@ public class FIRC0095 extends QCCatalogue {
     @Autowired
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
 
+    private List<String> containList = Arrays.asList("脑萎缩", "慢性", "纤颤", "高血压", "糖尿", "冠状", "冠心病", "支架", "起搏器", "房颤", "风湿");
+    private List<String> filterList = Arrays.asList("心脏病", "低血糖", "急性", ";");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         if (inputInfo.getFirstCourseRecordDoc() == null) {
             status.set("0");
             return;
         }
         PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
-        DiagLabel initialDiagLabel = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel();
+        DiagLabel initialDiagLabel = inputInfo.getFirstCourseRecordDoc().getInitialDiagLabel();
         PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
         if (initialDiagLabel == null) {
             status.set("0");
@@ -61,14 +62,8 @@ public class FIRC0095 extends QCCatalogue {
                         }
                         /* 现病史中一般情况之后的疾病名称 */
                         if (presentText.indexOf(presentDiag.getHospitalDiagName()) > lastGeneralIndex) {
-                            if (presentDiag.getHospitalDiagName().contains("心")
-                                    || presentDiag.getHospitalDiagName().contains("脑萎缩")
-                                    || presentDiag.getHospitalDiagName().contains("慢性")
-                                    || presentDiag.getHospitalDiagName().contains("血糖")) {
-                                if (!presentDiag.getHospitalDiagName().contains("心脏病")
-                                        && !presentDiag.getHospitalDiagName().contains("低血糖")) {
-                                    presentPastDiags.add(presentDiag.getHospitalDiagName());
-                                }
+                            if (isContains(presentDiag.getHospitalDiagName()) && !isFilter(presentDiag.getHospitalDiagName())) {
+                                presentPastDiags.add(presentDiag.getHospitalDiagName());
                             }
                         }
                     }
@@ -79,6 +74,28 @@ public class FIRC0095 extends QCCatalogue {
         if (pastLabel != null) {
             List<Diag> pastDiags = pastLabel.getDiags();
             addDiagHospitalName(presentPastDiags, pastDiags);
+        } else {            //结构化数据
+            List<Diag> pastDiags = new ArrayList<>();
+            Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+            String a1 = structureMap.get("高血压");
+            if (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                Diag diag = new Diag();
+                diag.setName("高血压");
+                diag.setHospitalDiagName("高血压");
+                if (!isHave(presentPastDiags, "高血压")) {
+                    pastDiags.add(diag);
+                }
+            }
+            a1 = structureMap.get("糖尿病");
+            if  (StringUtils.isNotEmpty(a1) && !"否认".equals(a1)) {
+                Diag diag = new Diag();
+                diag.setName("糖尿病");
+                diag.setHospitalDiagName("糖尿病");
+                if (!isHave(presentPastDiags, "糖尿病")) {
+                    pastDiags.add(diag);
+                }
+            }
+            addDiagHospitalName(presentPastDiags, pastDiags);
         }
         /* 取初步诊断中疾病名称 */
         List<String> initDiags = new ArrayList<>();
@@ -121,14 +138,8 @@ public class FIRC0095 extends QCCatalogue {
             if (pastDiag.getNegative() != null) {
                 continue;
             }
-            if (pastDiag.getHospitalDiagName().contains("心")
-                    || pastDiag.getHospitalDiagName().contains("脑萎缩")
-                    || pastDiag.getHospitalDiagName().contains("慢性")
-                    || pastDiag.getHospitalDiagName().contains("血糖")) {
-                if (!pastDiag.getHospitalDiagName().contains("心脏病")
-                        && !pastDiag.getHospitalDiagName().contains("低血糖")) {
-                    presentPastDiag.add(pastDiag.getHospitalDiagName());
-                }
+            if (isContains(pastDiag.getHospitalDiagName()) && !isFilter(pastDiag.getHospitalDiagName())) {
+                presentPastDiag.add(pastDiag.getHospitalDiagName());
             }
         }
     }
@@ -141,4 +152,31 @@ public class FIRC0095 extends QCCatalogue {
             presentPastDiag.add(pastDiag.getHospitalDiagName());
         }
     }
+
+    private boolean isHave(Set<String> presentDiag, String diagName) {
+        for (String haveDiag : presentDiag) {
+            if (haveDiag.contains(diagName) || diagName.contains(haveDiag)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    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;
+    }
 }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC02970.java

@@ -28,7 +28,7 @@ public class FIRC02970 extends QCCatalogue {
             return;
         }
         Map<String, String> firstCourseRecordStructureMap = inputInfo.getFirstCourseRecordDoc().getStructureMap();
-        List<String> keys = Lists.newArrayList("需求评估", "预期目标", "诊疗计划", "治疗监测计划");
+        List<String> keys = Lists.newArrayList("需求评估", "预期目标", "诊疗计划", "治疗监测计划", "治疗计划", "检查计划");
         String text = structureMapJoin(firstCourseRecordStructureMap, keys);
         if (StringUtil.isNotBlank(text) && text.contains("生命体征") && !text.contains("血压") && !text.contains("心率") && !text.contains("心电监护")) {
             status.set("-1");

+ 9 - 0
trans/src/main/java/com/lantone/qc/trans/taizhou/TaiZhouFirstPageRecordDocTrans.java

@@ -41,6 +41,15 @@ public class TaiZhouFirstPageRecordDocTrans extends ModelDocTrans {
         /* structureExtMap.put(Content.outpatientEmergencyDiag, FastJsonUtils.getJsonToBean(content.get(Content.outpatientEmergencyDiag), Object.class));*/
         structureExtMap.put(Content.operative_information, FastJsonUtils.getJsonToBean(content.get(Content.operative_information), Object.class));
         structureExtMap.put(Content.dischargeDiag, FastJsonUtils.getJsonToBean(content.get(Content.dischargeDiag), Object.class));
+
+        List<Map<String, String>> dischargeDiag = (List) structureExtMap.get(Content.dischargeDiag);
+        for (Map<String, String> diag : dischargeDiag) {
+            String diagCategory = diag.get("诊断类别");
+            if (StringUtil.isNotBlank(diagCategory) && "1".equals(diagCategory)) {
+                diag.put("诊断类别", "主要诊断");
+                break;
+            }
+        }
         //        structureExtMap.put(Content.pathologyDiagnose, FastJsonUtils.getJsonToBean(content.get(Content.pathologyDiagnose), Object.class));
         firstPageRecordDoc.setStructureExtMap(structureExtMap);