ソースを参照

取消给药方式和医嘱频率的拦截

huj 4 年 前
コミット
0e32b35649

+ 21 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR02985.java

@@ -58,10 +58,9 @@ public class THR02985 extends QCCatalogue {
                 .map(DoctorAdviceDoc::getStructureMap)
                 .filter(x -> StringUtil.isNotBlank(x.get("药品类型")) && x.get("药品类型").contains("抗生素"))
                 .filter(x -> StringUtil.isNotBlank(x.get("医嘱状态判别")) && !x.get("医嘱状态判别").contains("已停止"))
-                .filter(x -> StringUtil.isNotBlank(x.get("给药方式")) && x.get("给药方式").contains("静脉滴注"))
-                .filter(x -> StringUtil.isNotBlank(x.get("医嘱频率")) && !x.get("医嘱频率").equals("ONCE"))
                 .collect(Collectors.toList());
 
+        docAdvStruct.removeIf(x -> StringUtil.isNotBlank(x.get("给药方式")) && !filterKey.contains(x.get("给药方式")));
         //记录同一天内是否开过多次同一抗生素
         Map<String, Map<Date, Integer>> antibioticDateTimes = Maps.newHashMap();
         //记录同一抗生素同一天内是否开过多次,用于医嘱中需要处理的抗生素过滤(一天内同一抗生素开过多次的抗生素直接过滤)
@@ -72,7 +71,7 @@ public class THR02985 extends QCCatalogue {
             String drugName = adviceDoc.get("医嘱项目名称");
             String startDateStr = adviceDoc.get("医嘱开始时间");
             if (StringUtil.isNotBlank(drugName)) {
-                //                startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
+//                startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
                 startDate = StringUtil.parseDateTime(startDateStr);
                 if (antibioticDateTimes.get(drugName).get(startDate) > 0) {
                     continue;   //一天内同一抗生素开过多次的抗生素直接过滤
@@ -173,7 +172,7 @@ public class THR02985 extends QCCatalogue {
             if (drugs.contains(" ")) {
                 drugs = drugs.split(" ")[0];
             }
-            //            drugs = removeBracket(drugs).replaceAll("[^\u4e00-\u9fa5]", "");
+//            drugs = removeBracket(drugs).replaceAll("[^\u4e00-\u9fa5]", "");
             Set<String> splitDrugs = CatalogueUtil.getRegexWords(drugs, "[((\\[][^\\[\\]()()]+[\\]))]")
                     .stream().filter(x -> !x.equals("合资") && !x.equals("进口") && !x.equals("国产")).collect(Collectors.toSet());
             /**********************************************先文本匹配************************************************/
@@ -210,6 +209,7 @@ public class THR02985 extends QCCatalogue {
                     break;
                 }
             }
+
             if (StringUtil.isNotBlank(missDrug) && !modelFind && CatalogueUtil.compareTime(doctorAdviceDate, new Date(), 48 * 60L)) {
                 infoAppend(sb, drugs, DateUtil.formatDateTime(doctorAdviceDate));
                 data.put(doctorAdviceDate, splitDrugs.toString().replaceAll("[\\[\\]]", ""));
@@ -236,7 +236,7 @@ public class THR02985 extends QCCatalogue {
         for (Map<String, String> structMap : docAdvStruct) {
             drugName = structMap.get("医嘱项目名称");
             startDateStr = structMap.get("医嘱开始时间");
-            //            startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
+//            startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
             startDate = StringUtil.parseDateTime(startDateStr);
             if (antibioticDateTimes.containsKey(drugName)) {
                 Map<Date, Integer> map = antibioticDateTimes.get(drugName);
@@ -271,10 +271,18 @@ public class THR02985 extends QCCatalogue {
     }
 
     private void getInfo(Map<String, List<Drug>> info, String dateKey, List<Drug> drugs) {
+        List<Drug> tempDrugs = new ArrayList<>();
+        if (null != drugs && drugs.size() > 0) {
+            for (Drug drug : drugs) {
+                if (null != drug.getConsumption() && !drug.getConsumption().getName().contains("mg/Kg")) {
+                    tempDrugs.add(drug);
+                }
+            }
+        }
         if (info.containsKey(dateKey)) {
-            info.get(dateKey).addAll(drugs);
+            info.get(dateKey).addAll(tempDrugs);
         } else {
-            info.put(dateKey, drugs);
+            info.put(dateKey, tempDrugs);
         }
     }
 
@@ -389,6 +397,12 @@ public class THR02985 extends QCCatalogue {
         sb.append(drugKey).append("(").append(date).append(")").append("_");
     }
 
+    private static final List<String> filterKey = Lists.newArrayList("ACF", "ID", "IG", "IM", "IP", "IV",
+            "关节腔注射", "宫颈注射", "皮下注射", "皮下注射(儿童)", "皮下注射(免费)", "皮下注射(成人)", "皮内", "皮内注射",
+            "结膜下注射", "肌注", "肌肉注射(儿童)", "肌肉注射(公卫专用)", "肌肉注射(成人)", "胸腔注射", "腹腔内注射", "腹腔注射",
+            "静滴(儿童)", "静滴(成人)", "静脉注射", "静脉注射(儿童)", "静脉注射(免费)", "静脉注射(成人)", "静脉注射(泵)",
+            "静脉滴注", "静脉滴注(泵)", "鞘内注射");
+
     private static final String[] KSS = {
             "万古霉素",
             "两性霉素B",