lyr 8 rokov pred
rodič
commit
48b9477aa3

+ 2 - 0
patient-co-analysis/src/main/java/com/yihu/wlyy/analysis/etl/BusinessTypeEnum.java

@ -24,4 +24,6 @@ public enum  BusinessTypeEnum {
    , archive
    // 签约
    , sign
    // 体征
    , index
}

+ 36 - 0
patient-co-analysis/src/main/java/com/yihu/wlyy/analysis/etl/ETLConstantData.java

@ -1,10 +1,36 @@
package com.yihu.wlyy.analysis.etl;
import com.mongodb.util.JSON;
import org.json.JSONArray;
import org.springframework.boot.json.JsonParser;
import java.util.Map;
/**
 * Created by lyr-pc on 2017/2/20.
 */
public class ETLConstantData {
    /***************************体征指标正常范围*******************************/
    // 血糖餐前最小值
    public static final String HEALTH_STANDARD_ST_MIN_BEFORE = "4";
    // 血糖餐前最大值
    public static final String HEALTH_STANDARD_ST_MAX_BEFORE = "7";
    // 血糖餐后最小值
    public static final String HEALTH_STANDARD_ST_MIN_AFTER = "4";
    // 血糖餐后最大值
    public static final String HEALTH_STANDARD_ST_MAX_AFTER = "11.1";
    // 舒张压最小值
    public static final String HEALTH_STANDARD_SZY_MIN = "60";
    // 舒张压最大值
    public static final String HEALTH_STANDARD_SZY_MAX = "90";
    // 收缩压最小值
    public static final String HEALTH_STANDARD_SSY_MIN = "90";
    // 收缩压最大值
    public static final String HEALTH_STANDARD_SSY_MAX = "140";
    /**
     * 性别
     *
@ -40,4 +66,14 @@ public class ETLConstantData {
            return "老年";
        }
    }
    /**
     * 获取城市名称
     *
     * @param city
     * @return
     */
    public static String cityName(String city) {
        return "";
    }
}

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

@ -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;
    }
}

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

@ -108,4 +108,28 @@ public class RegisterLogTransform implements ILogTransform {
        return Arrays.asList(labelAgeInfo, labelInfo);
    }
    /**
     * 获取城市信息
     *
     * @param log
     * @return
     */
    private UserPortrait transformCity(JSONObject log) {
        String city = log.has("city") ? log.get("city").toString() : "";
        String idcard = log.getString("idcard");
        if(StringUtils.isEmpty(city)) {
            city = idcard.substring(0, 5);
        }
        UserPortrait labelAgeInfo = new UserPortrait();
        labelAgeInfo.setUserCode(log.getString("code"));
        labelAgeInfo.setCategory("1001");
        labelAgeInfo.setSubCategory("1001004");
        labelAgeInfo.setValue(ETLConstantData.cityName(city));
        labelAgeInfo.setCzrq(new Date());
        return labelAgeInfo;
    }
}

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/HealthEduArticleDoctorService.java

@ -101,7 +101,7 @@ public class HealthEduArticleDoctorService extends BaseService {
		}
		List<Object> params = new ArrayList<Object>();
		StringBuffer sql = new StringBuffer();
		sql.append("select a.id,a.article,a.doctor,a.title,a.url,a.czrq,b.summary content,b.keyword");
		sql.append("select a.id,a.article,a.doctor,a.title,a.url,a.czrq,b.content,b.keyword");
		sql.append(",(select count(1) from wlyy_health_edu_article_op_history c where c.code = a.article and c.status = 1) as readAmount");
		sql.append(",(select count(1) from wlyy_health_edu_article_op_history c where c.code = a.article and c.status = 2) as collectionAmount");
		sql.append(",(select count(1) from wlyy_health_edu_article_op_history c where c.code = a.article and c.status = 3) as repeatAmount");

+ 14 - 19
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/HealthEduArticleService.java

@ -42,13 +42,12 @@ public class HealthEduArticleService extends BaseService {
    /**
     * 保存福州健康教育文章
     *
     * @param result xml格式
     * @return
     * @throws Exception
     */
    public int saveHealthEduArticles(String result) throws Exception {
        List<Map<String, String>> listmap = Xml2ListMap.xml2List(result);
        List<Map<String,String>> listmap= Xml2ListMap.xml2List(result);
        String code = null;
        String title = null;
        String imgUrl = null;
@ -56,13 +55,13 @@ public class HealthEduArticleService extends BaseService {
        String keyWord = null;
        String type = null;
        int rows = 0;
        for (Map<String, String> temp : listmap) {
        for(Map<String,String> temp : listmap){
            code = temp.get("xml.Result.MessageId");
            title = temp.get("xml.Result.MessageTitle");
            imgUrl = temp.get("xml.Result.ImageUrlSmall");
            content = temp.get("xml.Result.MessageContent");
            keyWord = temp.get("xml.Result.MessageType");
            switch (keyWord) {
            switch (keyWord){
                case "1":
                    keyWord = "高血压";
                    type = "2";
@ -102,19 +101,15 @@ public class HealthEduArticleService extends BaseService {
            }
            String sql = "INSERT INTO wlyy_health_edu_article  " +
                    "VALUES(NULL,?,?,?,?,?,NULL,?,?)";
            String summary = content.replaceAll("</?[^>]+>", "")
                    .replaceAll("<a>\\s*|\t|\r|\n</a>", "")
                    .replaceAll("&nbsp;", "").replaceAll(" ", "");
            rows = jdbcTemplate.update(sql, code, title, summary, imgUrl, content, keyWord, type);
            rows += rows;
                    "VALUES(NULL,?,?,?,?,NULL,?,?)";
            rows = jdbcTemplate.update(sql,code,title,imgUrl,content,keyWord,type);
            rows+=rows;
        }
        return rows;
    }
    /**
     * 由请求参数获取福州健康教育文章
     *
     * @param params
     * @return
     * @throws Exception
@ -125,19 +120,19 @@ public class HealthEduArticleService extends BaseService {
//      获取远程地址url 、App Key 和 App secret  
        String prixUrl = SystemConf.getInstance().getYihuOpenPlatformUrl();
//        String prixUrl ="http://apitest.yihu.com.cn/OpenPlatform/cgiBin/1.0/";
        String appId = SystemConf.getInstance().getYihuOpenPlatformAppId();
        String appId =SystemConf.getInstance().getYihuOpenPlatformAppId();
//        String appId = "9000276";
        String secret = SystemConf.getInstance().getYihuOpenPlatformSecret();
//        String secret = "OKC8BS1KGXTDE9GPP1EO4VYLUXF8DJ7QUP72H613ZXA";
//      请求参数(i健康接口说明文档)正式接口 由prixUrl获取apixUrl
        String apiUrl = prixUrl + "jkjy/JkjyImpl/queryHealtheducationForIHealth";
        String apiUrl = prixUrl+"jkjy/JkjyImpl/queryHealtheducationForIHealth";
//      获取加密后参数集合
        Map<String, String> param = httpClientUtil.getSecretParams(params, appId, secret);
        Map<String,String> param = httpClientUtil.getSecretParams(params,appId,secret);
//      拼接请求URL (加密签名+apiUrl)
//      获取返回数据( HTTP post请求,参数需要utf-8编码)
        String results = httpClientUtil.httpPost(apiUrl, param);
        String  results = httpClientUtil.httpPost(apiUrl,param);
        return results;
@ -169,7 +164,7 @@ public class HealthEduArticleService extends BaseService {
        }
        List<Object> params = new ArrayList<Object>();
        StringBuffer sql = new StringBuffer();
        sql.append("select a.id,a.code,a.title,a.url,a.czrq,a.summary content,a.keyword");
        sql.append("select a.id,a.code,a.title,a.url,a.czrq,a.content,a.keyword");
        sql.append(",(select count(1) from wlyy_health_edu_article_op_history c where c.code = a.code and c.status = 1) as readAmount");
        sql.append(",(select count(1) from wlyy_health_edu_article_op_history c where c.code = a.code and c.status = 2) as collectionAmount");
        sql.append(",(select count(1) from wlyy_health_edu_article_op_history c where c.code = a.code and c.status = 3) as repeatAmount");
@ -217,7 +212,7 @@ public class HealthEduArticleService extends BaseService {
                "    ,a.title" +
                "    ,a.url" +
                "    ,a.czrq" +
                "    ,a.summary content" +
                "    ,a.content" +
                "    ,d.code" +
                "    ,d.name" +
                "    ,d.photo" +
@ -229,9 +224,9 @@ public class HealthEduArticleService extends BaseService {
                "    a.doctor = d.code " +
                "    and a.patient = ?" +
                "    and a.admin_team_code = ?" +
                "  order by a.czrq desc limit " + page * pageSize + "," + pageSize;
                "  order by a.czrq desc limit " + page*pageSize + "," + pageSize;
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{patient, teamCode});
        List<Map<String,Object>> result = jdbcTemplate.queryForList(sql,new Object[]{patient,teamCode});
        return result;
    }

+ 3 - 3
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java

@ -101,7 +101,7 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                    json.put("url", map.get("url"));
                    // 文章简介
                    json.put("content", map.get("content").toString());
                    json.put("content", parsrHtml(map.get("content").toString()));
                    // 添加日期
                    json.put("czrq", DateUtil.dateToStrLong((Date) map.get("czrq")));
@ -165,7 +165,7 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                    // 文章查看URL
                    json.put("url", map.get("url"));
                    // 文章简介
                    json.put("content", map.get("content").toString());
                    json.put("content", parsrHtml(map.get("content").toString()));
                    // 发送日期
                    json.put("czrq", DateUtil.dateToStrLong((Date) map.get("czrq")));
                    // 发送团队
@ -203,7 +203,7 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                json.put("url", map.get("url"));
                // 文章简介
                json.put("content", map.get("content").toString());
                json.put("content", parsrHtml(map.get("content").toString()));
                // 添加日期
                json.put("czrq", DateUtil.dateToStrLong((Date) map.get("czrq")));