Explorar el Código

Merge branch 'dev' of chenweida/patient-co-management into dev

chenweida hace 8 años
padre
commit
ef5bbf3074

+ 2 - 3
patient-co-figure/src/main/java/com/yihu/figure/config/SwaggerConfig.java

@ -40,10 +40,9 @@ public class SwaggerConfig extends WebMvcConfigurerAdapter {
                .pathMapping("/")
                .select()
                .paths(or(
                        regex("/medicinal/.*"),
                        regex("/diet/.*"),
                        regex("/suggest/.*"),
                        regex("/patient/.*"),
                        regex("/disease/.*"),
                        regex("/data/.*"),
                        regex("/health/.*")
                ))
                .build()

+ 46 - 0
patient-co-figure/src/main/java/com/yihu/figure/controller/PatientController.java

@ -0,0 +1,46 @@
package com.yihu.figure.controller;
import com.yihu.figure.model.PatientInfo;
import com.yihu.figure.service.PatientInfoService;
import com.yihu.figure.util.DateUtil;
import com.yihu.figure.util.IdCardUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by chenweida on 2017/3/7.
 */
@RestController
@RequestMapping(value = "/patient", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "患者信息")
public class PatientController extends BaseController{
    @Autowired
    private PatientInfoService patientInfoService;
    @ApiOperation(value = "获取患者信息")
    @RequestMapping(value = "getPatientInfo", method = RequestMethod.GET)
    public String getPatientInfo(
            @ApiParam(name = "patientCode", value = "患者code", required = true) @RequestParam(value = "patientCode", required = true) String patientCode) {
        try {
            PatientInfo patientInfo= patientInfoService.getPatientInfo(patientCode);
            JSONObject jsonObject=new JSONObject();
            jsonObject.put("name",patientInfo.getName());
            jsonObject.put("sex",patientInfo.getSex());
            jsonObject.put("age", DateUtil.getAgeByBirthday(patientInfo.getBirthday()));
            jsonObject.put("userPortraits",patientInfo.getUserPortraits());
            jsonObject.put("suggests",patientInfo.getSuggests());
            return write(200, "获取成功!", "patient", jsonObject);
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
}

+ 41 - 0
patient-co-figure/src/main/java/com/yihu/figure/controller/SuggestController.java

@ -0,0 +1,41 @@
package com.yihu.figure.controller;
import com.yihu.figure.model.PatientInfo;
import com.yihu.figure.model.suggest.Suggest;
import com.yihu.figure.service.SuggestService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/3/7.
 */
@RestController
@RequestMapping(value = "/suggest", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "建议")
public class SuggestController extends BaseController {
    @Autowired
    private SuggestService suggestService;
    @ApiOperation(value = "获取患者建议")
    @RequestMapping(value = "getPatientSuggest", method = RequestMethod.GET)
    public String getPatientInfo(
            @ApiParam(name = "patientCode", value = "患者code", required = true) @RequestParam(value = "patientCode", required = true) String patientCode) {
        try {
            Map<String, List<Suggest>> patientInfo = suggestService.getPatientSuggest(patientCode);
            return write(200, "获取成功!", "suggest", patientInfo);
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
}

+ 3 - 0
patient-co-figure/src/main/java/com/yihu/figure/dao/PatientInfoDao.java

@ -1,10 +1,13 @@
package com.yihu.figure.dao;
import com.yihu.figure.model.PatientInfo;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2017/3/6.
 */
public interface PatientInfoDao extends PagingAndSortingRepository<PatientInfo, Long> {
    @Query("from PatientInfo p where p.code=?1 ")
    PatientInfo findByCode(String patientCode);
}

+ 17 - 0
patient-co-figure/src/main/java/com/yihu/figure/dao/SuggestDao.java

@ -0,0 +1,17 @@
package com.yihu.figure.dao;
import com.yihu.figure.model.disease.Inspection;
import com.yihu.figure.model.suggest.Suggest;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by chenweida on 2017/3/7.
 */
public interface SuggestDao  extends PagingAndSortingRepository<Suggest, Long>, JpaSpecificationExecutor<Suggest> {
   @Query("from Suggest s where s.keyword like ?1")
    List<Suggest> findByKeyword(String keyword);
}

+ 17 - 0
patient-co-figure/src/main/java/com/yihu/figure/dao/UserPortraitDao.java

@ -0,0 +1,17 @@
package com.yihu.figure.dao;
import com.yihu.figure.model.UserPortrait;
import com.yihu.figure.model.suggest.Suggest;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by chenweida on 2017/3/7.
 */
public interface UserPortraitDao extends PagingAndSortingRepository<UserPortrait, Long>, JpaSpecificationExecutor<UserPortrait> {
   @Query("from UserPortrait u where u.userCode=?1 ")
    List<UserPortrait> findByPatientCode(String patientCode);
}

+ 28 - 1
patient-co-figure/src/main/java/com/yihu/figure/model/PatientInfo.java

@ -1,17 +1,21 @@
package com.yihu.figure.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.figure.model.suggest.Suggest;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2017/3/6.
 */
@Entity
@Table(name = "wlyy_patient")
@Table(name = "wlyy_patient_info")
public class PatientInfo extends IdEntity implements Serializable{
    // 业务主键
    private String code;
@ -34,6 +38,29 @@ public class PatientInfo extends IdEntity implements Serializable{
    // 更新時間
    private Date createTime;
    //标签列表
    private List<UserPortrait> userPortraits;
    //建议列表
    private Map<String,List<Suggest>> suggests;
    @Transient
    public Map<String, List<Suggest>> getSuggests() {
        return suggests;
    }
    public void setSuggests(Map<String, List<Suggest>> suggests) {
        this.suggests = suggests;
    }
    @Transient
    public List<UserPortrait> getUserPortraits() {
        return userPortraits;
    }
    public void setUserPortraits(List<UserPortrait> userPortraits) {
        this.userPortraits = userPortraits;
    }
    public String getCode() {
        return code;
    }

+ 77 - 0
patient-co-figure/src/main/java/com/yihu/figure/model/UserPortrait.java

@ -0,0 +1,77 @@
package com.yihu.figure.model;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by chenweida on 2017/3/7.
 */
@Entity
@Table(name = "figure_user_portrait")
public class UserPortrait extends IdEntity{
    private String userCode;//用户code
    private String category;//标签类别
    private String categoryName;//类别名称
    private String subCategory;//标签子类别
    private String subCategoryName;//标签子类别名称
    private String value;//标签名称
    private Date czrq;//
    public String getUserCode() {
        return userCode;
    }
    public String getCategoryName() {
        return categoryName;
    }
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    public String getSubCategory() {
        return subCategory;
    }
    public void setSubCategory(String subCategory) {
        this.subCategory = subCategory;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    public String getSubCategoryName() {
        return subCategoryName;
    }
    public void setSubCategoryName(String subCategoryName) {
        this.subCategoryName = subCategoryName;
    }
}

+ 19 - 1
patient-co-figure/src/main/java/com/yihu/figure/model/suggest/Suggest.java

@ -13,7 +13,17 @@ import javax.persistence.Table;
@Table(name = "figure_suggest")
public class Suggest extends IdEntity {
    private String content;//建议内容
    private String type;//建议类型 (字典表SUGGEST)1:生活方式 2:饮食  3用药
    private String type;//建议类型 (字典表SUGGEST)1:生活方式 2:饮食 3运动 4用药
    private String typeName;//
    private String keyword;//关键字 匹配居民标签
    public String getTypeName() {
        return typeName;
    }
    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }
    public String getContent() {
        return content;
@ -30,4 +40,12 @@ public class Suggest extends IdEntity {
    public void setType(String type) {
        this.type = type;
    }
    public String getKeyword() {
        return keyword;
    }
    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }
}

+ 0 - 17
patient-co-figure/src/main/java/com/yihu/figure/model/suggest/SuggestPortrait.java

@ -1,17 +0,0 @@
package com.yihu.figure.model.suggest;
import com.yihu.figure.model.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by chenweida on 2017/3/7.
 * 建议标签中间表
 */
@Entity
@Table(name = "figure_suggest_portrait")
public class SuggestPortrait extends IdEntity {
    private Integer suggestId;//'建议id'
    private Integer portraitCategoryId;//'标签id'
}

+ 37 - 1
patient-co-figure/src/main/java/com/yihu/figure/service/PatientInfoService.java

@ -1,15 +1,51 @@
package com.yihu.figure.service;
import com.yihu.figure.dao.PatientInfoDao;
import com.yihu.figure.dao.SuggestDao;
import com.yihu.figure.dao.UserPortraitDao;
import com.yihu.figure.model.PatientInfo;
import com.yihu.figure.model.UserPortrait;
import com.yihu.figure.model.suggest.Suggest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2017/3/6.
 */
@Service
public class PatientInfoService extends BaseService{
public class PatientInfoService extends BaseService {
    @Autowired
    private PatientInfoDao patientInfoDao;
    @Autowired
    private UserPortraitDao userPortraitDao;
    @Autowired
    private SuggestDao suggesdao;
    public PatientInfo getPatientInfo(String patientCode) {
        PatientInfo patient = patientInfoDao.findByCode(patientCode);
        //得到用户标签
        List<UserPortrait> userPortraits = userPortraitDao.findByPatientCode(patientCode);
        patient.setUserPortraits(userPortraits);
        //根据用户的标签得到建议
        Map<String, List<Suggest>> map = new HashMap<>();
        userPortraits.stream().forEach(u -> {
            List<Suggest> ss = suggesdao.findByKeyword("%" + u.getValue() + "%");
            ss.stream().forEach(s -> {
                if (map.containsKey(s.getTypeName())) {
                    map.get(s.getTypeName()).add(s);
                } else {
                    List<Suggest> suggests=new ArrayList<Suggest>();
                    suggests.add(s);
                    map.put(s.getTypeName(), suggests);
                }
            });
        });
        patient.setSuggests(map);
        return patient;
    }
}

+ 45 - 0
patient-co-figure/src/main/java/com/yihu/figure/service/SuggestService.java

@ -0,0 +1,45 @@
package com.yihu.figure.service;
import com.yihu.figure.dao.SuggestDao;
import com.yihu.figure.dao.UserPortraitDao;
import com.yihu.figure.model.UserPortrait;
import com.yihu.figure.model.suggest.Suggest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/3/7.
 */
@Service
public class SuggestService {
    @Autowired
    private UserPortraitDao userPortraitDao;
    @Autowired
    private SuggestDao suggesdao;
    public Map<String, List<Suggest>> getPatientSuggest(String patientCode) {
        //得到用户标签
        List<UserPortrait> userPortraits = userPortraitDao.findByPatientCode(patientCode);
        //根据用户的标签得到建议
        Map<String, List<Suggest>> map = new HashMap<>();
        userPortraits.stream().forEach(u -> {
            List<Suggest> ss = suggesdao.findByKeyword("%" + u.getValue() + "%");
            ss.stream().forEach(s -> {
                if (map.containsKey(s.getTypeName())) {
                    map.get(s.getTypeName()).add(s);
                } else {
                    List<Suggest> suggests = new ArrayList<Suggest>();
                    suggests.add(s);
                    map.put(s.getTypeName(), suggests);
                }
            });
        });
        return map;
    }
}