|
@@ -7,6 +7,7 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
|
|
import com.lantone.qc.kernel.util.SimilarityUtil;
|
|
import com.lantone.qc.kernel.util.SimilarityUtil;
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
import com.lantone.qc.pub.model.OutputInfo;
|
|
import com.lantone.qc.pub.model.OutputInfo;
|
|
|
|
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
|
|
import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
|
|
import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
|
|
import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
|
|
import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
|
|
import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
|
|
import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
|
|
@@ -23,9 +24,9 @@ import com.lantone.qc.pub.util.StringUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
-import java.util.Objects;
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.regex.Matcher;
|
|
|
|
+import java.util.regex.Pattern;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -40,14 +41,89 @@ public class THR03077 extends QCCatalogue {
|
|
|
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
status.set("0");
|
|
status.set("0");
|
|
|
|
+ List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
|
|
List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
|
|
List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
|
|
FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
|
|
FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
|
|
List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
|
|
List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
|
|
List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
|
|
List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
|
|
LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
|
|
LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
|
|
|
|
+ if (doctorAdviceDocs.size() == 0) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ Map<Date, String> extData = null;
|
|
|
|
+ if (outputInfo.getResult().get("THR02985") != null) {
|
|
|
|
+ extData = (Map<Date, String>) outputInfo.getResult().get("THR02985").get("extData");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<Map<String, String>> docAdvStruct = doctorAdviceDocs
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
+ .map(DoctorAdviceDoc::getStructureMap)
|
|
|
|
+ .filter(x -> StringUtil.isNotBlank(x.get("药品类型")) && x.get("药品类型").contains("抗生素") && StringUtil.isNotBlank(x.get("医嘱单次剂量")))
|
|
|
|
+ .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());
|
|
|
|
+
|
|
|
|
+ //抗生素及开医嘱时间(包括加用过抗生素的时间) key:抗生素名 "2020-08-20,2020-08-21 ..."
|
|
|
|
+ Map<String, List<String>> antibioticDate = Maps.newHashMap();
|
|
|
|
+ //抗生素加用集合 key:抗生素名 value: 0:未加用,1及以上:加用次数
|
|
|
|
+ Map<String, Integer> antibioticStatus = Maps.newHashMap();
|
|
|
|
+ //抗生素及各初始剂量 key:抗生素名 value:抗生素第一次使用时剂量
|
|
|
|
+ Map<String, List<Double>> antibioticValue = Maps.newHashMap();
|
|
|
|
+ //记录同一天内是否开过多次同一抗生素
|
|
|
|
+ Map<String, Map<Date, Integer>> antibioticDateTimes = Maps.newHashMap();
|
|
|
|
+ String drugName = null, value = null, startDateStr = null;
|
|
|
|
+ Date startDate = null;
|
|
|
|
+ getAntibioticTimes(docAdvStruct, antibioticDateTimes);
|
|
|
|
+ for (Map<String, String> structMap : docAdvStruct) {
|
|
|
|
+ drugName = structMap.get("医嘱项目名称");
|
|
|
|
+ value = structMap.get("医嘱单次剂量");
|
|
|
|
+ startDateStr = structMap.get("医嘱开始时间");
|
|
|
|
+ startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
|
|
|
|
+
|
|
|
|
+ if (StringUtil.isNotBlank(drugName)) {
|
|
|
|
+ if (antibioticDateTimes.get(drugName).get(startDate) > 0) {
|
|
|
|
+ continue; //一天内同一抗生素开过多次的抗生素直接过滤
|
|
|
|
+ }
|
|
|
|
+ drugName = removeBracket(drugName).replaceAll("[^\u4e00-\u9fa5]", "");
|
|
|
|
+ String drugStandardWord = similarityUtil.getDrugStandardWord(drugName);
|
|
|
|
+ if (StringUtil.isNotBlank(drugStandardWord)) {
|
|
|
|
+ drugName = drugStandardWord;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (extData != null && extData.containsKey(startDate) && extData.get(startDate).equals(drugName)) {
|
|
|
|
+ continue; //THR02985 医嘱有抗生素使用病程无记录,规则中没报未记录的抗生素继续走这条规则,报未记录的抗生素过滤
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Arrays.asList(KSS).contains(drugName)) {
|
|
|
|
+ collectAntibioticInfo(antibioticDate, antibioticStatus, antibioticValue, drugName, value, startDateStr);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //把抗生素使用剂量没变化过的抗生素删除
|
|
|
|
+ antibioticStatus.forEach((x, y) -> {
|
|
|
|
+ if (y == 0) {
|
|
|
|
+ antibioticDate.remove(x);
|
|
|
|
+ antibioticValue.remove(x);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ //把同一天内同一个抗生素开过多次的抗生素删除
|
|
|
|
+// antibioticDateTimes.forEach((x, y) -> {
|
|
|
|
+// if (y > 0) {
|
|
|
|
+// antibioticDate.remove(x);
|
|
|
|
+// antibioticValue.remove(x);
|
|
|
|
+// }
|
|
|
|
+// });
|
|
|
|
+ //抗生素加用过的集合如果为空,则一个抗生素都没有加用过,直接返回0
|
|
|
|
+ if (antibioticDate.size() == 0) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
|
|
//病程记录中没有用量的抗生素及查房时间 key:抗生素名 "2020-08-20,2020-08-21 ..."
|
|
//病程记录中没有用量的抗生素及查房时间 key:抗生素名 "2020-08-20,2020-08-21 ..."
|
|
- Map<String, Map<String, List<String>>> antibioticDateCourse = Maps.newHashMap();
|
|
|
|
|
|
+// Map<String, Map<String, List<String>>> antibioticDateCourse = Maps.newHashMap();
|
|
|
|
+ Map<String, List<String>> antibioticDateCourse = Maps.newHashMap();
|
|
String dateStr = null;
|
|
String dateStr = null;
|
|
/*********************************************首程治疗计划********************************************************/
|
|
/*********************************************首程治疗计划********************************************************/
|
|
if (firstCourseRecordDoc != null) {
|
|
if (firstCourseRecordDoc != null) {
|
|
@@ -120,39 +196,121 @@ public class THR03077 extends QCCatalogue {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //将病程日期排序
|
|
|
|
+ antibioticDateCourse.forEach((x, y) -> y.sort(Comparator.naturalOrder()));
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 1.antibioticDate:从医嘱中取 key:抗生素名 value:医嘱中该抗生素所有剂量变化的时间(包括初始使用时间)
|
|
* 1.antibioticDate:从医嘱中取 key:抗生素名 value:医嘱中该抗生素所有剂量变化的时间(包括初始使用时间)
|
|
* 2.antibioticDateWard:从查房记录中取 key:抗生素名 value:病程记录中该抗生素所有没有用量时的查房时间(包括初始使用时间)
|
|
* 2.antibioticDateWard:从查房记录中取 key:抗生素名 value:病程记录中该抗生素所有没有用量时的查房时间(包括初始使用时间)
|
|
- * 3.医嘱中该抗生素初始使用时间往后两天内,查房记录中出现该抗生素并且该抗生素没有用量,报出该抗生素
|
|
|
|
*/
|
|
*/
|
|
- StringBuffer sb = new StringBuffer();
|
|
|
|
- String source = null, drugKey = null;
|
|
|
|
|
|
+ String drugKey = null, source = null;
|
|
|
|
+ Map<String, Map<String, List<String>>> sourceDateMap = Maps.newHashMap();
|
|
|
|
+ String[] date_missInfo = null;
|
|
|
|
+ for (Map.Entry<String, List<String>> ad : antibioticDate.entrySet()) {
|
|
|
|
+ drugKey = ad.getKey();
|
|
|
|
+ drugKey = removeBracket(drugKey).replaceAll("[^\u4e00-\u9fa5]", "");
|
|
|
|
+ String drugStandardWord = similarityUtil.getDrugStandardWord(drugKey);
|
|
|
|
+ if (StringUtil.isNotBlank(drugStandardWord)) {
|
|
|
|
+ drugKey = drugStandardWord;
|
|
|
|
+ }
|
|
|
|
+ if (antibioticDateCourse.containsKey(drugKey)) {
|
|
|
|
+ for (Map.Entry<String, List<String>> adc : antibioticDateCourse.entrySet()) {
|
|
|
|
+ List<String> dateMissInfos = adc.getValue();
|
|
|
|
+ for (String dateMissInfo : dateMissInfos) {
|
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
|
+ date_missInfo = dateMissInfo.split("=");
|
|
|
|
+ source = date_missInfo[2];
|
|
|
|
+ sb.append(source).append("=").append(date_missInfo[0]).append("=").append(date_missInfo[1]);
|
|
|
|
+
|
|
|
|
+ if (date_missInfo.length > 0) {
|
|
|
|
+ if (sourceDateMap.containsKey(source)) {
|
|
|
|
+ Map<String, List<String>> drugData = sourceDateMap.get(source);
|
|
|
|
+ if (drugData.containsKey(drugKey)) {
|
|
|
|
+ drugData.get(drugKey).add(sb.toString());
|
|
|
|
+ } else {
|
|
|
|
+ drugData.put(drugKey, Lists.newArrayList(sb.toString()));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ Map<String, List<String>> drugData = Maps.newHashMap();
|
|
|
|
+ drugData.put(drugKey, Lists.newArrayList(sb.toString()));
|
|
|
|
+ sourceDateMap.put(source, drugData);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //表示提示信息
|
|
|
|
+ if (sourceDateMap.size() > 0) {
|
|
|
|
+ infoDisplay(sourceDateMap, source, drugKey);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 表示提示信息
|
|
|
|
+ *
|
|
|
|
+ * @param sourceDateMap
|
|
|
|
+ */
|
|
|
|
+ private void infoDisplay(Map<String, Map<String, List<String>>> sourceDateMap, String source, String drugKey) {
|
|
|
|
+ StringBuffer strBuf = new StringBuffer();
|
|
List<String> dateList = null;
|
|
List<String> dateList = null;
|
|
- for (Map.Entry<String, Map<String, List<String>>> ad : antibioticDateCourse.entrySet()) {
|
|
|
|
|
|
+ for (Map.Entry<String, Map<String, List<String>>> ad : sourceDateMap.entrySet()) {
|
|
source = ad.getKey();
|
|
source = ad.getKey();
|
|
Map<String, List<String>> drugInfo = ad.getValue();
|
|
Map<String, List<String>> drugInfo = ad.getValue();
|
|
- sb.append(source).append("(");
|
|
|
|
|
|
+ strBuf.append(source).append("(");
|
|
for (Map.Entry<String, List<String>> drug : drugInfo.entrySet()) {
|
|
for (Map.Entry<String, List<String>> drug : drugInfo.entrySet()) {
|
|
drugKey = drug.getKey();
|
|
drugKey = drug.getKey();
|
|
- sb.append(drugKey).append(":");
|
|
|
|
|
|
+ strBuf.append(drugKey).append(":");
|
|
dateList = drug.getValue();
|
|
dateList = drug.getValue();
|
|
for (String date_miss : dateList) {
|
|
for (String date_miss : dateList) {
|
|
- String[] date_missInfo = date_miss.split("=");
|
|
|
|
- sb.append(DateUtil.formatDate(StringUtil.parseDateTime(date_missInfo[0]))).append(",").append(date_missInfo[1]).append("、");
|
|
|
|
|
|
+ String[] date_miss_nfo = date_miss.split("=");
|
|
|
|
+ strBuf.append(DateUtil.formatDate(StringUtil.parseDateTime(date_miss_nfo[1]))).append(",").append(date_miss_nfo[2]).append("、");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- sb.deleteCharAt(sb.length() - 1);
|
|
|
|
- sb.append(")").append("、");
|
|
|
|
|
|
+
|
|
|
|
+ strBuf.deleteCharAt(strBuf.length() - 1);
|
|
|
|
+ strBuf.append(")").append("、");
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
- if (sb.toString().length() > 0) {
|
|
|
|
|
|
+ if (strBuf.toString().length() > 0) {
|
|
status.set("-1");
|
|
status.set("-1");
|
|
- info.set("医嘱:" + sb.toString().substring(0, sb.toString().length() - 1));
|
|
|
|
|
|
+ info.set("(医嘱:" + strBuf.toString().substring(0, strBuf.toString().length() - 1) + ")");
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 记录同一抗生素同一天内是否开过多次,用于医嘱中需要处理的抗生素过滤(一天内同一抗生素开过多次的抗生素直接过滤)
|
|
|
|
+ *
|
|
|
|
+ * @param docAdvStruct
|
|
|
|
+ * @param antibioticDateTimes
|
|
|
|
+ */
|
|
|
|
+ private void getAntibioticTimes(List<Map<String, String>> docAdvStruct, Map<String, Map<Date, Integer>> antibioticDateTimes) {
|
|
|
|
+ String drugName;
|
|
|
|
+ String startDateStr;
|
|
|
|
+ Date startDate;
|
|
|
|
+ Map<Date, Integer> antibioticDateTime;
|
|
|
|
+ for (Map<String, String> structMap : docAdvStruct) {
|
|
|
|
+ drugName = structMap.get("医嘱项目名称");
|
|
|
|
+ startDateStr = structMap.get("医嘱开始时间");
|
|
|
|
+ startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
|
|
|
|
+ if (antibioticDateTimes.containsKey(drugName)) {
|
|
|
|
+ Map<Date, Integer> map = antibioticDateTimes.get(drugName);
|
|
|
|
+ if (map.containsKey(startDate)) {
|
|
|
|
+ map.put(startDate, map.get(startDate) + 1);
|
|
|
|
+ } else {
|
|
|
|
+ map.put(startDate, 0);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ antibioticDateTime = Maps.newHashMap();
|
|
|
|
+ antibioticDateTime.put(startDate, 0);
|
|
|
|
+ antibioticDateTimes.put(drugName, antibioticDateTime);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 收集各模块药品信息
|
|
* 收集各模块药品信息
|
|
*
|
|
*
|
|
@@ -160,7 +318,7 @@ public class THR03077 extends QCCatalogue {
|
|
* @param dateStr 记录日期
|
|
* @param dateStr 记录日期
|
|
* @param drugs 模型提取出的药品列表
|
|
* @param drugs 模型提取出的药品列表
|
|
*/
|
|
*/
|
|
- private void getCourseDrugInfo(Map<String, Map<String, List<String>>> antibioticDateWard, String dateStr, List<Drug> drugs, String content, String source) {
|
|
|
|
|
|
+ private void getCourseDrugInfo(Map<String, List<String>> antibioticDateWard, String dateStr, List<Drug> drugs, String content, String source) {
|
|
StringBuffer sb = null;
|
|
StringBuffer sb = null;
|
|
for (Drug drug : drugs) {
|
|
for (Drug drug : drugs) {
|
|
sb = new StringBuffer();
|
|
sb = new StringBuffer();
|
|
@@ -171,6 +329,10 @@ public class THR03077 extends QCCatalogue {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
wardDrug = removeBracket(wardDrug);
|
|
wardDrug = removeBracket(wardDrug);
|
|
|
|
+ String drugStandardWord = similarityUtil.getDrugStandardWord(wardDrug);
|
|
|
|
+ if (StringUtil.isNotBlank(drugStandardWord)) {
|
|
|
|
+ wardDrug = drugStandardWord;
|
|
|
|
+ }
|
|
if (drug.getConsumption() == null) {
|
|
if (drug.getConsumption() == null) {
|
|
concatInfo(dateStr, sb, "用量");
|
|
concatInfo(dateStr, sb, "用量");
|
|
}
|
|
}
|
|
@@ -181,17 +343,11 @@ public class THR03077 extends QCCatalogue {
|
|
concatInfo(dateStr, sb, "频率");
|
|
concatInfo(dateStr, sb, "频率");
|
|
}
|
|
}
|
|
if (sb.toString().length() > 0) {
|
|
if (sb.toString().length() > 0) {
|
|
- if (antibioticDateWard.containsKey(source)) {
|
|
|
|
- Map<String, List<String>> drugData = antibioticDateWard.get(source);
|
|
|
|
- if (drugData.containsKey(wardDrug)) {
|
|
|
|
- drugData.get(wardDrug).add(sb.toString());
|
|
|
|
- } else {
|
|
|
|
- drugData.put(wardDrug, Lists.newArrayList(sb.toString()));
|
|
|
|
- }
|
|
|
|
|
|
+ sb.append("=").append(source);
|
|
|
|
+ if (antibioticDateWard.containsKey(wardDrug)) {
|
|
|
|
+ antibioticDateWard.get(wardDrug).add(sb.toString());
|
|
} else {
|
|
} else {
|
|
- Map<String, List<String>> drugData = Maps.newHashMap();
|
|
|
|
- drugData.put(wardDrug, Lists.newArrayList(sb.toString()));
|
|
|
|
- antibioticDateWard.put(source, drugData);
|
|
|
|
|
|
+ antibioticDateWard.put(wardDrug, Lists.newArrayList(sb.toString()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -211,6 +367,69 @@ public class THR03077 extends QCCatalogue {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 收集抗生素各种信息
|
|
|
|
+ *
|
|
|
|
+ * @param antibioticDate 抗生素使用所有时间
|
|
|
|
+ * @param antibioticStatus 抗生素用量改变状态
|
|
|
|
+ * @param antibioticValue 抗生素及用量
|
|
|
|
+ * @param drugName 抗生素名称
|
|
|
|
+ * @param value 抗生素用量
|
|
|
|
+ * @param startDateStr 抗生素使用时间(医嘱开始时间或查房时间)
|
|
|
|
+ */
|
|
|
|
+ private void collectAntibioticInfo(Map<String, List<String>> antibioticDate, Map<String, Integer> antibioticStatus,
|
|
|
|
+ Map<String, List<Double>> antibioticValue, String drugName, String value, String startDateStr) {
|
|
|
|
+ double v = -1;
|
|
|
|
+ try {
|
|
|
|
+ v = Double.parseDouble(getNumber(value));
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("THR03077: " + drugName + ":" + value + "解析异常");
|
|
|
|
+ }
|
|
|
|
+ if (v < 0) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (v > 100) {
|
|
|
|
+ v = v / 1000;
|
|
|
|
+ }
|
|
|
|
+ if (!antibioticValue.containsKey(drugName)) {
|
|
|
|
+ antibioticValue.put(drugName, Lists.newArrayList(v));
|
|
|
|
+ antibioticDate.put(drugName, Lists.newArrayList(startDateStr));
|
|
|
|
+ antibioticStatus.put(drugName, 0);
|
|
|
|
+ } else {
|
|
|
|
+ //1.如果抗生素剂量有变化,则记录该抗生素开始时间
|
|
|
|
+ List<Double> beforeValue = antibioticValue.get(drugName);
|
|
|
|
+ if (beforeValue.get(beforeValue.size() - 1) != v) {
|
|
|
|
+ beforeValue.add(v);
|
|
|
|
+ antibioticValue.put(drugName, beforeValue);//添加该抗生素更大的值
|
|
|
|
+ antibioticStatus.put(drugName, antibioticStatus.get(drugName) + 1);
|
|
|
|
+ antibioticDate.get(drugName).add(startDateStr);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ //2.如果抗生素剂量两次开启的时间间隔相差3天,也记录该抗生素开始时间
|
|
|
|
+ List<String> currentAntibioticDate = antibioticDate.get(drugName);
|
|
|
|
+ if (currentAntibioticDate.size() > 0) {
|
|
|
|
+ String lastDate = currentAntibioticDate.get(currentAntibioticDate.size() - 1);
|
|
|
|
+ if (CatalogueUtil.compareTime(StringUtil.parseDateTime(lastDate), StringUtil.parseDateTime(startDateStr), 72 * 60L)) {
|
|
|
|
+ beforeValue.add(v);
|
|
|
|
+ antibioticValue.put(drugName, beforeValue);//添加该抗生素值
|
|
|
|
+ antibioticStatus.put(drugName, antibioticStatus.get(drugName) + 1);
|
|
|
|
+ antibioticDate.get(drugName).add(startDateStr);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static String getNumber(String content) {
|
|
|
|
+ String group = "";
|
|
|
|
+ String compile = "([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9]|\\.\\d*[1-9]|0)";
|
|
|
|
+ Pattern p = Pattern.compile(compile);
|
|
|
|
+ Matcher matcher = p.matcher(content);
|
|
|
|
+ if (matcher.find()) {
|
|
|
|
+ group = matcher.group(0);
|
|
|
|
+ }
|
|
|
|
+ return group;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 如果文本包含中括号([海正]美罗培南针),取括号之后的文字
|
|
* 如果文本包含中括号([海正]美罗培南针),取括号之后的文字
|
|
*
|
|
*
|
|
@@ -224,31 +443,83 @@ public class THR03077 extends QCCatalogue {
|
|
return str;
|
|
return str;
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 拼接提示信息
|
|
|
|
- *
|
|
|
|
- * @param sb
|
|
|
|
- * @param source
|
|
|
|
- * @param drugKey
|
|
|
|
- * @param date
|
|
|
|
- */
|
|
|
|
- private void infoAppend(StringBuffer sb, String source, String drugKey, String date, String missType) {
|
|
|
|
- sb.append(drugKey).append("(").append(source).append(",").append(DateUtil.formatDate(StringUtil.parseDateTime(date)))
|
|
|
|
- .append(",").append(missType).append(")").append("、");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
private static final String[] KSS = {
|
|
private static final String[] KSS = {
|
|
- "阿昔洛韦片",
|
|
|
|
- "阿昔洛韦针",
|
|
|
|
- "[国产]伐昔洛韦分散片",
|
|
|
|
- "阿昔洛韦针",
|
|
|
|
- "[进口]伐昔洛韦片"
|
|
|
|
- , "[浓缩型]双黄连口服液",
|
|
|
|
- "异烟肼片",
|
|
|
|
- "[黄连素]小檗碱片",
|
|
|
|
- "乙胺丁醇片",
|
|
|
|
- "利福平胶囊",
|
|
|
|
- "异烟肼针"
|
|
|
|
|
|
+ "万古霉素",
|
|
|
|
+ "两性霉素B",
|
|
|
|
+ "亚胺培南西司他丁",
|
|
|
|
+ "伊曲康唑",
|
|
|
|
+ "伏立康唑",
|
|
|
|
+ "依替米星氯化钠",
|
|
|
|
+ "克拉霉素",
|
|
|
|
+ "克林霉素",
|
|
|
|
+ "利奈唑胺",
|
|
|
|
+ "利奈唑胺葡萄糖",
|
|
|
|
+ "利福昔明",
|
|
|
|
+ "制霉菌素",
|
|
|
|
+ "卡泊芬净",
|
|
|
|
+ "厄他培南",
|
|
|
|
+ "吗啉硝唑氯化钠",
|
|
|
|
+ "呋喃唑酮",
|
|
|
|
+ "哌拉西林他唑巴坦",
|
|
|
|
+ "复方磺胺甲噁唑",
|
|
|
|
+ "多粘菌素B",
|
|
|
|
+ "多西环素",
|
|
|
|
+ "夫西地酸",
|
|
|
|
+ "头孢丙烯",
|
|
|
|
+ "头孢他啶",
|
|
|
|
+ "头孢他啶阿维巴坦",
|
|
|
|
+ "头孢他美酯",
|
|
|
|
+ "头孢克洛",
|
|
|
|
+ "头孢克肟",
|
|
|
|
+ "头孢吡肟",
|
|
|
|
+ "头孢呋辛",
|
|
|
|
+ "头孢哌酮舒巴坦",
|
|
|
|
+ "头孢唑林",
|
|
|
|
+ "头孢噻肟",
|
|
|
|
+ "头孢地嗪",
|
|
|
|
+ "头孢地尼",
|
|
|
|
+ "头孢拉定",
|
|
|
|
+ "头孢曲松",
|
|
|
|
+ "头孢替安",
|
|
|
|
+ "头孢美唑",
|
|
|
|
+ "头孢西丁",
|
|
|
|
+ "奥硝唑",
|
|
|
|
+ "妥布霉素",
|
|
|
|
+ "妥布霉素地塞米松",
|
|
|
|
+ "左氧氟沙星",
|
|
|
|
+ "左氧氟沙星氯化钠",
|
|
|
|
+ "庆大霉素",
|
|
|
|
+ "异帕米星",
|
|
|
|
+ "拉氧头孢",
|
|
|
|
+ "替加环素",
|
|
|
|
+ "替硝唑",
|
|
|
|
+ "替考拉宁",
|
|
|
|
+ "比阿培南",
|
|
|
|
+ "氟康唑",
|
|
|
|
+ "氟康唑氯化钠",
|
|
|
|
+ "氟胞嘧啶",
|
|
|
|
+ "氨曲南",
|
|
|
|
+ "氨苄西林",
|
|
|
|
+ "泊沙康唑",
|
|
|
|
+ "特比萘芬",
|
|
|
|
+ "甲硝唑",
|
|
|
|
+ "甲硝唑氯化钠",
|
|
|
|
+ "磷霉素",
|
|
|
|
+ "磷霉素氨丁三醇",
|
|
|
|
+ "米卡芬净",
|
|
|
|
+ "米诺环素",
|
|
|
|
+ "红霉素",
|
|
|
|
+ "美罗培南",
|
|
|
|
+ "苄星青霉素",
|
|
|
|
+ "莫西沙星",
|
|
|
|
+ "莫西沙星氯化钠",
|
|
|
|
+ "达托霉素",
|
|
|
|
+ "阿奇霉素",
|
|
|
|
+ "阿奇霉素枸橼酸二氢钠",
|
|
|
|
+ "阿洛西林",
|
|
|
|
+ "阿米卡星",
|
|
|
|
+ "阿莫西林",
|
|
|
|
+ "阿莫西林克拉维酸",
|
|
|
|
+ "青霉素"
|
|
};
|
|
};
|
|
-
|
|
|
|
}
|
|
}
|