|
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Component;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @ClassName : THR02985
|
|
* @ClassName : THR02985
|
|
@@ -134,24 +135,25 @@ public class THR02985 extends QCCatalogue {
|
|
for (Map.Entry<Date, String> doctorAdviceDrug : doctorAdviceDrugMap.entrySet()) {
|
|
for (Map.Entry<Date, String> doctorAdviceDrug : doctorAdviceDrugMap.entrySet()) {
|
|
Date doctorAdviceDate = doctorAdviceDrug.getKey();
|
|
Date doctorAdviceDate = doctorAdviceDrug.getKey();
|
|
String drugs = doctorAdviceDrug.getValue();
|
|
String drugs = doctorAdviceDrug.getValue();
|
|
- String[] drugArr = drugs.split(regex);
|
|
|
|
|
|
+ Set<String> splitDrugs = CatalogueUtil.getRegexWords(drugs, "[((\\[][^\\[\\]()()]+[\\]))]")
|
|
|
|
+ .stream().filter(x -> !x.equals("合资") && !x.equals("进口") && !x.equals("国产")).collect(Collectors.toSet());
|
|
String missDrug = "";
|
|
String missDrug = "";
|
|
//入院记录中找药
|
|
//入院记录中找药
|
|
if (StringUtil.isNotBlank(behospContent) && behospDate != null) {
|
|
if (StringUtil.isNotBlank(behospContent) && behospDate != null) {
|
|
- missDrug = getMissDrug(behospContent, behospDate, doctorAdviceDate, drugArr, 2, missDrug);
|
|
|
|
|
|
+ missDrug = getMissDrug(behospContent, behospDate, doctorAdviceDate, splitDrugs, 2, missDrug);
|
|
if (StringUtil.isBlank(missDrug)) {//文本中已找到该抗生素
|
|
if (StringUtil.isBlank(missDrug)) {//文本中已找到该抗生素
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//从首程治疗计划中找药
|
|
//从首程治疗计划中找药
|
|
if (StringUtil.isNotBlank(firstCourseContent) && firstCourseDate != null) {
|
|
if (StringUtil.isNotBlank(firstCourseContent) && firstCourseDate != null) {
|
|
- missDrug = getMissDrug(firstCourseContent, firstCourseDate, doctorAdviceDate, drugArr, 2, missDrug);
|
|
|
|
|
|
+ missDrug = getMissDrug(firstCourseContent, firstCourseDate, doctorAdviceDate, splitDrugs, 2, missDrug);
|
|
if (StringUtil.isBlank(missDrug)) {
|
|
if (StringUtil.isBlank(missDrug)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (Map.Entry<String, Date> info : operInfo.entrySet()) {
|
|
for (Map.Entry<String, Date> info : operInfo.entrySet()) {
|
|
- missDrug = getMissDrug(info.getKey(), info.getValue(), doctorAdviceDate, drugArr, 2, missDrug);
|
|
|
|
|
|
+ missDrug = getMissDrug(info.getKey(), info.getValue(), doctorAdviceDate, splitDrugs, 2, missDrug);
|
|
//当前抗生素药(drugs)在手术记录或术后首次病程录中已找到,直接跳出当前循环
|
|
//当前抗生素药(drugs)在手术记录或术后首次病程录中已找到,直接跳出当前循环
|
|
if (StringUtil.isBlank(missDrug)) {
|
|
if (StringUtil.isBlank(missDrug)) {
|
|
break;
|
|
break;
|
|
@@ -167,14 +169,14 @@ public class THR02985 extends QCCatalogue {
|
|
String wardDateStr = wardDocStructureMap.get("查房日期");
|
|
String wardDateStr = wardDocStructureMap.get("查房日期");
|
|
String content = wardDocStructureMap.get("病情记录") + wardDocStructureMap.get("治疗计划和措施");
|
|
String content = wardDocStructureMap.get("病情记录") + wardDocStructureMap.get("治疗计划和措施");
|
|
Date wardDate = StringUtil.parseDateTime(wardDateStr);
|
|
Date wardDate = StringUtil.parseDateTime(wardDateStr);
|
|
- missDrug = getMissDrug(content, wardDate, doctorAdviceDate, drugArr, 2, missDrug);
|
|
|
|
|
|
+ missDrug = getMissDrug(content, wardDate, doctorAdviceDate, splitDrugs, 2, missDrug);
|
|
//当前抗生素药(drugs)在查房记录中已找到,直接跳出当前查房记录的循环
|
|
//当前抗生素药(drugs)在查房记录中已找到,直接跳出当前查房记录的循环
|
|
/*****************药品相似度模型******************/
|
|
/*****************药品相似度模型******************/
|
|
List<ThreeLevelWardLabel> label = threeLevelWardDoc.getThreeLevelWardLabel();
|
|
List<ThreeLevelWardLabel> label = threeLevelWardDoc.getThreeLevelWardLabel();
|
|
if (label.size() > 0) {
|
|
if (label.size() > 0) {
|
|
List<Drug> drugList = label.get(0).getDrugs();
|
|
List<Drug> drugList = label.get(0).getDrugs();
|
|
for (Drug drug : drugList) {
|
|
for (Drug drug : drugList) {
|
|
- for (String adDrug : drugArr) {
|
|
|
|
|
|
+ for (String adDrug : splitDrugs) {
|
|
if (compareStandard(drug.getName(), adDrug)) {
|
|
if (compareStandard(drug.getName(), adDrug)) {
|
|
modelFind = true;
|
|
modelFind = true;
|
|
break;
|
|
break;
|
|
@@ -212,7 +214,7 @@ public class THR02985 extends QCCatalogue {
|
|
* @param days
|
|
* @param days
|
|
* @return 如果文本中找到该药,则返回空字符串
|
|
* @return 如果文本中找到该药,则返回空字符串
|
|
*/
|
|
*/
|
|
- private String getMissDrug(String content, Date wardDate, Date doctorAdviceDate, String[] drugs, int days, String missDrug) {
|
|
|
|
|
|
+ private String getMissDrug(String content, Date wardDate, Date doctorAdviceDate, Set<String> drugs, int days, String missDrug) {
|
|
if ("时间不匹配".equals(missDrug)) {
|
|
if ("时间不匹配".equals(missDrug)) {
|
|
missDrug = "";//初始化缺失药物
|
|
missDrug = "";//初始化缺失药物
|
|
}
|
|
}
|