|
@@ -351,6 +351,7 @@ public class ParamsDataProxy {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //血压既满足血压≥140/90mmHg,又满足血压小于90/60mmHg时,只取前者
|
|
|
String addStandWords = "";
|
|
|
String smallerStandWord = "";
|
|
|
boolean flag = true;
|
|
@@ -372,7 +373,15 @@ public class ParamsDataProxy {
|
|
|
return sData;
|
|
|
}
|
|
|
|
|
|
- //将标准词中体征指标值(数字)与分词结果中体征指标值(数字)比较
|
|
|
+ /**
|
|
|
+ * 将标准词中体征指标值(数字)与分词结果中体征指标值(数字)比较
|
|
|
+ * 除了血压>140/90mmHg类似标准词,其他标准词直接添加在症状后面
|
|
|
+ * @param features
|
|
|
+ * @param standWordMap
|
|
|
+ * @param standWord
|
|
|
+ * @param sData
|
|
|
+ * @return 血压>140/90mmHg或血压小于90/60mmHg或同时返回,在addStandWord()中进一步处理
|
|
|
+ */
|
|
|
private String judgment(String[] features, Map<String, String> standWordMap, String standWord,SearchData sData) {
|
|
|
if (hasDigit(features[1])) {
|
|
|
try {
|
|
@@ -402,12 +411,12 @@ public class ParamsDataProxy {
|
|
|
if (standWordMap.get("value").contains("/")) {
|
|
|
if (features[1].contains("/")) {
|
|
|
String[] feature = features[1].split("/");
|
|
|
- Integer featuresSBP = Integer.valueOf(feature[0]); //收缩压
|
|
|
- Integer featuresDBP = Integer.valueOf(feature[1]); //舒张压
|
|
|
+ Integer featuresSBP = Integer.valueOf(feature[0]); //分词特征收缩压
|
|
|
+ Integer featuresDBP = Integer.valueOf(feature[1]); //分词特征舒张压
|
|
|
|
|
|
String[] values = standWordMap.get("value").split("/");
|
|
|
- Integer standWordSBP = Integer.valueOf(values[0]); //收缩压
|
|
|
- Integer standWordDBP = Integer.valueOf(values[1]); //舒张压
|
|
|
+ Integer standWordSBP = Integer.valueOf(values[0]); //标准词收缩压
|
|
|
+ Integer standWordDBP = Integer.valueOf(values[1]); //标准词舒张压
|
|
|
if (featuresSBP < standWordSBP || featuresDBP < standWordDBP) {
|
|
|
standWord += "," + standWordMap.get("standword");
|
|
|
}
|
|
@@ -423,12 +432,12 @@ public class ParamsDataProxy {
|
|
|
if (standWordMap.get("value").contains("/")) {
|
|
|
if (features[1].contains("/")) {
|
|
|
String[] feature = features[1].split("/");
|
|
|
- Integer featuresSBP = Integer.valueOf(feature[0]); //收缩压
|
|
|
- Integer featuresDBP = Integer.valueOf(feature[1]); //舒张压
|
|
|
+ Integer featuresSBP = Integer.valueOf(feature[0]); //分词特征收缩压
|
|
|
+ Integer featuresDBP = Integer.valueOf(feature[1]); //分词特征舒张压
|
|
|
|
|
|
String[] values = standWordMap.get("value").split("/");
|
|
|
- Integer standWordSBP = Integer.valueOf(values[0]); //收缩压
|
|
|
- Integer standWordDBP = Integer.valueOf(values[1]); //舒张压
|
|
|
+ Integer standWordSBP = Integer.valueOf(values[0]); //标准词收缩压
|
|
|
+ Integer standWordDBP = Integer.valueOf(values[1]); //标准词舒张压
|
|
|
if (featuresSBP >= standWordSBP || featuresDBP >= standWordDBP) {
|
|
|
standWord += "," + standWordMap.get("standword");
|
|
|
}
|
|
@@ -444,12 +453,12 @@ public class ParamsDataProxy {
|
|
|
if (standWordMap.get("value").contains("/")) {
|
|
|
if (features[1].contains("/")) {
|
|
|
String[] feature = features[1].split("/");
|
|
|
- Integer featuresSBP = Integer.valueOf(feature[0]); //收缩压
|
|
|
- Integer featuresDBP = Integer.valueOf(feature[1]); //舒张压
|
|
|
+ Integer featuresSBP = Integer.valueOf(feature[0]); //分词特征收缩压
|
|
|
+ Integer featuresDBP = Integer.valueOf(feature[1]); //分词特征舒张压
|
|
|
|
|
|
String[] values = standWordMap.get("value").split("/");
|
|
|
- Integer standWordSBP = Integer.valueOf(values[0]); //收缩压
|
|
|
- Integer standWordDBP = Integer.valueOf(values[1]); //舒张压
|
|
|
+ Integer standWordSBP = Integer.valueOf(values[0]); //标准词收缩压
|
|
|
+ Integer standWordDBP = Integer.valueOf(values[1]); //标准词舒张压
|
|
|
if (featuresSBP <= standWordSBP || featuresDBP <= standWordDBP) {
|
|
|
standWord += "," + standWordMap.get("standword");
|
|
|
}
|
|
@@ -468,6 +477,11 @@ public class ParamsDataProxy {
|
|
|
return standWord;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 判断分词后的特征中是否含有数字
|
|
|
+ * @param content
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private boolean hasDigit(String content) {
|
|
|
boolean flag = false;
|
|
|
if (Pattern.compile(".*\\d+.*").matcher(content).matches()) {
|
|
@@ -476,6 +490,11 @@ public class ParamsDataProxy {
|
|
|
return flag;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 将字符串中的数字提取出来,针对分词结果中"90."类似情况
|
|
|
+ * @param standWord
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private String getNum(String standWord) {
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
for (String num : standWord.replaceAll("[^0-9]", ",").split(",")) {
|
|
@@ -486,6 +505,11 @@ public class ParamsDataProxy {
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 将血压超过标准值的标准词改为血压升高
|
|
|
+ * @param standWord
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private String proxy(String standWord){
|
|
|
if (standWord.contains("压") && (standWord.contains("≥") || standWord.contains("大于"))){
|
|
|
standWord = "血压升高";
|