|
@ -0,0 +1,200 @@
|
|
|
package com.yihu.wlyy.analysis.etl.transform;
|
|
|
|
|
|
import com.yihu.wlyy.analysis.entity.UserPortrait;
|
|
|
import com.yihu.wlyy.analysis.etl.BusinessTypeEnum;
|
|
|
import com.yihu.wlyy.analysis.etl.ETLConstantData;
|
|
|
import com.yihu.wlyy.analysis.etl.ILogTransform;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* Created by lyr-pc on 2017/2/28.
|
|
|
*/
|
|
|
public class HealthIndexTransform implements ILogTransform {
|
|
|
|
|
|
private final BusinessTypeEnum logType = BusinessTypeEnum.index;
|
|
|
|
|
|
@Override
|
|
|
public List<UserPortrait> transform(JSONObject log) throws Exception {
|
|
|
JSONObject logData = log.getJSONObject("data");
|
|
|
JSONObject businessData = logData.getJSONObject("data");
|
|
|
List<UserPortrait> labelInfoList = new ArrayList<>();
|
|
|
String type = businessData.has("type") ? businessData.get("type").toString() : "";
|
|
|
|
|
|
if (type.equals("1")) {
|
|
|
labelInfoList.addAll(transformXueTang(businessData));
|
|
|
} else if (type.equals("2")) {
|
|
|
labelInfoList.addAll(transformXueYa(businessData));
|
|
|
} else if (type.equals("3")) {
|
|
|
|
|
|
} else if (type.equals("4")) {
|
|
|
|
|
|
}
|
|
|
|
|
|
return labelInfoList;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public int getLogType() {
|
|
|
return logType.ordinal();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public String getLogTypeName() {
|
|
|
return logType.name();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 血糖分析
|
|
|
*
|
|
|
* @param log
|
|
|
* @return
|
|
|
*/
|
|
|
public List<UserPortrait> transformXueTang(JSONObject log) {
|
|
|
List<UserPortrait> portraits = new ArrayList<>();
|
|
|
boolean higher = false, lower = false;
|
|
|
|
|
|
// 早餐前
|
|
|
String value1 = log.has("value1") ? log.get("value1").toString() : "";
|
|
|
// 早餐后
|
|
|
String value2 = log.has("value2") ? log.get("value2").toString() : "";
|
|
|
// 午餐前
|
|
|
String value3 = log.has("value3") ? log.get("value3").toString() : "";
|
|
|
// 午餐后
|
|
|
String value4 = log.has("value4") ? log.get("value4").toString() : "";
|
|
|
// 晚餐前
|
|
|
String value5 = log.has("value5") ? log.get("value5").toString() : "";
|
|
|
// 晚餐后
|
|
|
String value6 = log.has("value6") ? log.get("value6").toString() : "";
|
|
|
// 睡觉前
|
|
|
String value7 = log.has("value7") ? log.get("value7").toString() : "";
|
|
|
|
|
|
if (!StringUtils.isEmpty(value1) && value1.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value1) && value1.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value2) && value2.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value2) && value2.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value3) && value3.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value3) && value3.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value4) && value4.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value4) && value4.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value5) && value5.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value5) && value5.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value6) && value6.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_AFTER) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value6) && value6.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_AFTER) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value7) && value7.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MIN_BEFORE) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(value7) && value7.compareTo(ETLConstantData.HEALTH_STANDARD_ST_MAX_BEFORE) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
|
|
|
if (higher) {
|
|
|
UserPortrait labelInfo = new UserPortrait();
|
|
|
|
|
|
labelInfo.setUserCode(log.getString("patient"));
|
|
|
labelInfo.setCategory("1002");
|
|
|
labelInfo.setSubCategory("1002002");
|
|
|
labelInfo.setValue("血糖偏高");
|
|
|
labelInfo.setCzrq(new Date());
|
|
|
|
|
|
portraits.add(labelInfo);
|
|
|
}
|
|
|
|
|
|
if (lower) {
|
|
|
UserPortrait labelInfo = new UserPortrait();
|
|
|
|
|
|
labelInfo.setUserCode(log.getString("patient"));
|
|
|
labelInfo.setCategory("1002");
|
|
|
labelInfo.setSubCategory("1002002");
|
|
|
labelInfo.setValue("血糖偏低");
|
|
|
labelInfo.setCzrq(new Date());
|
|
|
|
|
|
portraits.add(labelInfo);
|
|
|
}
|
|
|
|
|
|
return portraits;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 血压分析
|
|
|
*
|
|
|
* @param log
|
|
|
* @return
|
|
|
*/
|
|
|
public List<UserPortrait> transformXueYa(JSONObject log) {
|
|
|
List<UserPortrait> portraits = new ArrayList<>();
|
|
|
boolean higher = false, lower = false;
|
|
|
|
|
|
// 收缩压
|
|
|
String value1 = log.has("value1") ? log.get("value1").toString() : "";
|
|
|
// 舒张压
|
|
|
String value2 = log.has("value2") ? log.get("value2").toString() : "";
|
|
|
|
|
|
if (value1.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MIN) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (value1.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MAX) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
if (value2.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MIN) < 0) {
|
|
|
lower = true;
|
|
|
}
|
|
|
if (value2.compareTo(ETLConstantData.HEALTH_STANDARD_SSY_MIN) > 0) {
|
|
|
higher = true;
|
|
|
}
|
|
|
|
|
|
if (higher) {
|
|
|
UserPortrait labelInfo = new UserPortrait();
|
|
|
|
|
|
labelInfo.setUserCode(log.getString("patient"));
|
|
|
labelInfo.setCategory("1002");
|
|
|
labelInfo.setSubCategory("1002003");
|
|
|
labelInfo.setValue("血压偏高");
|
|
|
labelInfo.setCzrq(new Date());
|
|
|
|
|
|
portraits.add(labelInfo);
|
|
|
}
|
|
|
|
|
|
if (lower) {
|
|
|
UserPortrait labelInfo = new UserPortrait();
|
|
|
|
|
|
labelInfo.setUserCode(log.getString("patient"));
|
|
|
labelInfo.setCategory("1002");
|
|
|
labelInfo.setSubCategory("1002003");
|
|
|
labelInfo.setValue("血压偏低");
|
|
|
labelInfo.setCzrq(new Date());
|
|
|
|
|
|
portraits.add(labelInfo);
|
|
|
}
|
|
|
|
|
|
return portraits;
|
|
|
}
|
|
|
}
|