Browse Source

日志分析

lyr 8 years ago
parent
commit
fe12b737ec

+ 10 - 30
patient-co-analysis/src/main/java/com/yihu/wlyy/analysis/entity/UserPortrait.java

@ -18,13 +18,9 @@ public class UserPortrait {
    // 居民code
    private String userCode;
    // 标签类型
    private Integer labelType;
    // 标签名称
    private String labelName;
    private String category;
    // 子标签类型
    private Integer subType;
    // 子标签名称
    private String subName;
    private String subCategory;
    // 标签值
    private String value;
    // 创建日期
@ -48,36 +44,20 @@ public class UserPortrait {
        this.userCode = userCode;
    }
    public Integer getLabelType() {
        return labelType;
    public String getCategory() {
        return category;
    }
    public void setLabelType(Integer labelType) {
        this.labelType = labelType;
    public void setCategory(String category) {
        this.category = category;
    }
    public String getLabelName() {
        return labelName;
    public String getSubCategory() {
        return subCategory;
    }
    public void setLabelName(String labelName) {
        this.labelName = labelName;
    }
    public Integer getSubType() {
        return subType;
    }
    public void setSubType(Integer subType) {
        this.subType = subType;
    }
    public String getSubName() {
        return subName;
    }
    public void setSubName(String subName) {
        this.subName = subName;
    public void setSubCategory(String subCategory) {
        this.subCategory = subCategory;
    }
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")

+ 24 - 33
patient-co-analysis/src/main/java/com/yihu/wlyy/analysis/etl/transform/ConsultLogTransform.java

@ -3,12 +3,8 @@ 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.ILogTransform;
import org.ansj.domain.Result;
import org.ansj.domain.Term;
import org.ansj.splitWord.analysis.ToAnalysis;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -23,7 +19,7 @@ public class ConsultLogTransform implements ILogTransform {
    private final BusinessTypeEnum logType = BusinessTypeEnum.consult;
    @Override
    public List<UserPortrait> transform(JSONObject log) throws UnsupportedEncodingException {
    public List<UserPortrait> transform(JSONObject log) {
        JSONObject logData = log.getJSONObject("data");
        JSONObject businessData = logData.getJSONObject("data");
        List<UserPortrait> labelInfoList = new ArrayList<>();
@ -43,57 +39,52 @@ public class ConsultLogTransform implements ILogTransform {
        return logType.name();
    }
    public List<UserPortrait> transformGxyTnbMb(JSONObject log) throws UnsupportedEncodingException {
    /**
     * 慢病分析
     *
     * @param log
     * @return
     */
    public List<UserPortrait> transformGxyTnbMb(JSONObject log) {
        String symptoms = log.getString("symptoms");
        Result fc = ToAnalysis.parse(symptoms);
        List<String> wordList = new ArrayList<>();
        List<UserPortrait> UserPortraits = new ArrayList<>();
        List<UserPortrait> userPortraits = new ArrayList<>();
        for(Term term : fc.getTerms()) {
            wordList.add(term.getName());
        }
        if(wordList.contains("糖尿病")) {
        if(symptoms.contains("糖尿病")) {
            UserPortrait labelInfo = new UserPortrait();
            labelInfo.setUserCode(log.getString("patient"));
            labelInfo.setLabelType(1);
            labelInfo.setLabelName("基础特征");
            labelInfo.setSubType(3);
            labelInfo.setSubName("疾病");
            labelInfo.setCategory("1002");
            labelInfo.setSubCategory("1002001");
            labelInfo.setValue("糖尿病");
            labelInfo.setCzrq(new Date());
            UserPortraits.add(labelInfo);
            userPortraits.add(labelInfo);
        }
        if(wordList.contains("高血压")) {
        if(symptoms.contains("高血压")) {
            UserPortrait labelInfo = new UserPortrait();
            labelInfo.setUserCode(log.getString("patient"));
            labelInfo.setLabelType(1);
            labelInfo.setLabelName("基础特征");
            labelInfo.setSubType(3);
            labelInfo.setSubName("疾病");
            labelInfo.setCategory("1002");
            labelInfo.setSubCategory("1002001");
            labelInfo.setValue("高血压");
            labelInfo.setCzrq(new Date());
            UserPortraits.add(labelInfo);
            userPortraits.add(labelInfo);
        }
        if(wordList.contains("慢病")) {
        if(symptoms.contains("慢病")) {
            UserPortrait labelInfo = new UserPortrait();
            labelInfo.setUserCode(log.getString("patient"));
            labelInfo.setLabelType(1);
            labelInfo.setLabelName("基础特征");
            labelInfo.setSubType(3);
            labelInfo.setSubName("疾病");
            labelInfo.setValue("慢病");
            labelInfo.setCategory("1002");
            labelInfo.setSubCategory("1002001");
            labelInfo.setValue("慢病人群");
            labelInfo.setCzrq(new Date());
            UserPortraits.add(labelInfo);
            userPortraits.add(labelInfo);
        }
        return UserPortraits;
        return userPortraits;
    }
}

+ 66 - 0
patient-co-analysis/src/main/java/com/yihu/wlyy/analysis/etl/transform/HealthArchiveLogTransform.java

@ -0,0 +1,66 @@
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.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/22.
 */
public class HealthArchiveLogTransform implements ILogTransform {
    private final BusinessTypeEnum logType = BusinessTypeEnum.archive;
    @Override
    public List<UserPortrait> transform(JSONObject log) throws Exception {
        JSONObject logData = log.getJSONObject("data");
        JSONObject businessData = logData.getJSONObject("data");
        List<UserPortrait> labelInfoList = new ArrayList<>();
        return labelInfoList;
    }
    @Override
    public int getLogType() {
        return logType.ordinal();
    }
    @Override
    public String getLogTypeName() {
        return logType.name();
    }
    /**
     * 获取诊断结果
     *
     * @param log
     * @return
     */
    public UserPortrait transformDiagnosis(JSONObject log) {
        String diagnosis = log.getString("diagnosis");
        if(StringUtils.isEmpty(diagnosis)) {
            return null;
        }
        UserPortrait userPortrait = new UserPortrait();
        userPortrait.setUserCode(log.getString("patient"));
        userPortrait.setCategory("1002");
        userPortrait.setSubCategory("1002001");
        userPortrait.setValue(diagnosis);
        userPortrait.setCzrq(new Date());
        return userPortrait;
    }
}

+ 19 - 13
patient-co-analysis/src/main/java/com/yihu/wlyy/analysis/etl/transform/RegisterLogTransform.java

@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@ -32,8 +33,8 @@ public class RegisterLogTransform implements ILogTransform {
        if (sexInfo != null) labelInfoList.add(sexInfo);
        // 年龄
        UserPortrait ageInfo = tranformAge(businessData);
        if (ageInfo != null) labelInfoList.add(ageInfo);
        List<UserPortrait> ageInfo = tranformAge(businessData);
        if (ageInfo != null && ageInfo.size() > 0) labelInfoList.addAll(ageInfo);
        return labelInfoList;
    }
@ -65,10 +66,8 @@ public class RegisterLogTransform implements ILogTransform {
        }
        labelInfo.setUserCode(log.getString("code"));
        labelInfo.setLabelType(1);
        labelInfo.setLabelName("基础特征");
        labelInfo.setSubType(1);
        labelInfo.setSubName("性别");
        labelInfo.setCategory("1001");
        labelInfo.setSubCategory("1001001");
        labelInfo.setValue(ETLConstantData.sexName(sex));
        labelInfo.setCzrq(new Date());
@ -81,9 +80,9 @@ public class RegisterLogTransform implements ILogTransform {
     * @param log
     * @return
     */
    private UserPortrait tranformAge(JSONObject log) throws Exception {
    private List<UserPortrait> tranformAge(JSONObject log) throws Exception {
        String idcard = log.getString("idcard");
        UserPortrait labelInfo = new UserPortrait();
        int age = 0;
        if (StringUtils.isNotEmpty(idcard)) {
            age = IdcardUtil.getAgeFromIdcard(idcard);
@ -91,15 +90,22 @@ public class RegisterLogTransform implements ILogTransform {
            return null;
        }
        UserPortrait labelAgeInfo = new UserPortrait();
        labelAgeInfo.setUserCode(log.getString("code"));
        labelAgeInfo.setCategory("1001");
        labelAgeInfo.setSubCategory("1001002");
        labelAgeInfo.setValue(String.valueOf(age));
        labelAgeInfo.setCzrq(new Date());
        UserPortrait labelInfo = new UserPortrait();
        labelInfo.setUserCode(log.getString("code"));
        labelInfo.setLabelType(1);
        labelInfo.setLabelName("基础特征");
        labelInfo.setSubType(2);
        labelInfo.setSubName("年龄");
        labelInfo.setCategory("1001");
        labelInfo.setSubCategory("1001003");
        labelInfo.setValue(ETLConstantData.ageInterval(age));
        labelInfo.setCzrq(new Date());
        return labelInfo;
        return Arrays.asList(labelAgeInfo, labelInfo);
    }
}