Commit f0835e96f983192152912c93f8f5554c28e678a9

Authored by dongqin
1 parent a2f74831b8

update

Showing 4 changed files with 299 additions and 0 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/IndividualCaseController.java View file @ f0835e9
  1 +package com.lyms.platform.operate.web.controller;
  2 +
  3 +import org.springframework.beans.factory.annotation.Autowired;
  4 +import org.springframework.stereotype.Controller;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RequestMethod;
  7 +import org.springframework.web.bind.annotation.ResponseBody;
  8 +
  9 +import com.lyms.platform.common.annotation.TokenRequired;
  10 +import com.lyms.platform.common.base.BaseController;
  11 +import com.lyms.platform.common.result.BaseResponse;
  12 +import com.lyms.platform.operate.web.service.IndividualCaseService;
  13 +
  14 +/**
  15 + * @author dongqin
  16 + * @description 个案
  17 + * @date 15:59 2019/11/21
  18 + **/
  19 +@Controller
  20 +@RequestMapping("/individualCase")
  21 +public class IndividualCaseController extends BaseController {
  22 +
  23 + @Autowired
  24 + IndividualCaseService service;
  25 +
  26 + /**
  27 + * 产前妊娠风险评估记录
  28 + *
  29 + * @param pid
  30 + * @return
  31 + */
  32 + @RequestMapping(method = RequestMethod.GET, value = "/highRiskList")
  33 + @ResponseBody
  34 + @TokenRequired
  35 + public BaseResponse highRiskList(String pid) {
  36 + return service.highRiskList(pid);
  37 + }
  38 +
  39 +
  40 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/IndividualCaseResult.java View file @ f0835e9
  1 +package com.lyms.platform.operate.web.result;
  2 +
  3 +import java.io.Serializable;
  4 +import java.util.List;
  5 +
  6 +/**
  7 + * @author dongqin
  8 + * @description
  9 + * @date 13:50 2019/11/22
  10 + **/
  11 +public class IndividualCaseResult<T> implements Serializable {
  12 +
  13 + private static final long serialVersionUID = 1634160181617894592L;
  14 +
  15 + private String name;
  16 +
  17 + private String idCard;
  18 +
  19 + private String doctorStr;
  20 +
  21 + private List<T> list;
  22 +
  23 + private String highRiskDesc;
  24 +
  25 + private String timeAxisStr;
  26 +
  27 + public String getTimeAxisStr() {
  28 + return timeAxisStr;
  29 + }
  30 +
  31 + public void setTimeAxisStr(String timeAxisStr) {
  32 + this.timeAxisStr = timeAxisStr;
  33 + }
  34 +
  35 + public List<T> getList() {
  36 + return list;
  37 + }
  38 +
  39 + public void setList(List<T> list) {
  40 + this.list = list;
  41 + }
  42 +
  43 + public String getName() {
  44 + return name;
  45 + }
  46 +
  47 + public void setName(String name) {
  48 + this.name = name;
  49 + }
  50 +
  51 + public String getIdCard() {
  52 + return idCard;
  53 + }
  54 +
  55 + public void setIdCard(String idCard) {
  56 + this.idCard = idCard;
  57 + }
  58 +
  59 + public String getDoctorStr() {
  60 + return doctorStr;
  61 + }
  62 +
  63 + public void setDoctorStr(String doctorStr) {
  64 + this.doctorStr = doctorStr;
  65 + }
  66 +
  67 + public String getHighRiskDesc() {
  68 + return highRiskDesc;
  69 + }
  70 +
  71 + public void setHighRiskDesc(String highRiskDesc) {
  72 + this.highRiskDesc = highRiskDesc;
  73 + }
  74 +
  75 + public static class Infos {
  76 + private String level;
  77 + private String name;
  78 + private String desc;
  79 +
  80 + public String getDesc() {
  81 + return desc;
  82 + }
  83 +
  84 + public void setDesc(String desc) {
  85 + this.desc = desc;
  86 + }
  87 +
  88 + public String getLevel() {
  89 + return level;
  90 + }
  91 +
  92 + public void setLevel(String level) {
  93 + this.level = level;
  94 + }
  95 +
  96 + public String getName() {
  97 + return name;
  98 + }
  99 +
  100 + public void setName(String name) {
  101 + this.name = name;
  102 + }
  103 + }
  104 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IndividualCaseService.java View file @ f0835e9
  1 +package com.lyms.platform.operate.web.service;
  2 +
  3 +import com.lyms.platform.common.result.BaseResponse;
  4 +
  5 +public interface IndividualCaseService {
  6 +
  7 + /**
  8 + * 产前妊娠风险评估记录
  9 + *
  10 + * @param parentId
  11 + * @return
  12 + */
  13 + BaseResponse highRiskList(String parentId);
  14 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/IndividualCaseServiceImpl.java View file @ f0835e9
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import java.util.Date;
  4 +import java.util.LinkedList;
  5 +import java.util.List;
  6 +import java.util.Map;
  7 +
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.data.domain.Sort;
  10 +import org.springframework.data.mongodb.core.MongoTemplate;
  11 +import org.springframework.data.mongodb.core.query.Criteria;
  12 +import org.springframework.data.mongodb.core.query.Query;
  13 +import org.springframework.stereotype.Service;
  14 +
  15 +import com.lyms.platform.biz.service.HosptialHighRiskService;
  16 +import com.lyms.platform.common.result.BaseResponse;
  17 +import com.lyms.platform.common.utils.DateUtil;
  18 +import com.lyms.platform.common.utils.JsonUtil;
  19 +import com.lyms.platform.common.utils.StringUtils;
  20 +import com.lyms.platform.operate.web.result.IndividualCaseResult;
  21 +import com.lyms.platform.operate.web.service.IndividualCaseService;
  22 +import com.lyms.platform.operate.web.utils.CollectionUtils;
  23 +import com.lyms.platform.operate.web.utils.ResolveUtils;
  24 +import com.lyms.platform.permission.model.Users;
  25 +import com.lyms.platform.permission.service.UsersService;
  26 +import com.lyms.platform.pojo.AntExChuModel;
  27 +import com.lyms.platform.pojo.AntenatalExaminationModel;
  28 +import com.lyms.platform.pojo.BasicConfig;
  29 +import com.lyms.platform.pojo.HosptialHighRisk;
  30 +import com.lyms.platform.pojo.Patients;
  31 +import com.lyms.platform.pojo.PersonModel;
  32 +
  33 +@Service
  34 +public class IndividualCaseServiceImpl implements IndividualCaseService {
  35 +
  36 + @Autowired
  37 + private MongoTemplate mongoTemplate;
  38 +
  39 + @Autowired
  40 + private UsersService usersService;
  41 +
  42 + @Autowired
  43 + private HosptialHighRiskService hosptialHighRiskService;
  44 +
  45 + /**
  46 + * 产前妊娠风险评估记录
  47 + *
  48 + * @param personId
  49 + * @return
  50 + */
  51 + @Override
  52 + public BaseResponse highRiskList(String personId) {
  53 +
  54 + List<IndividualCaseResult> results = new LinkedList<>();
  55 + List<PersonModel> personModels = mongoTemplate.find(Query.query(Criteria.where("id").is(personId)), PersonModel.class);
  56 + if (CollectionUtils.isNotEmpty(personModels)) {
  57 + List<Patients> patients = mongoTemplate.find(Query.query(Criteria.where("pid").is(personId)).with(new Sort(Sort.Direction.ASC, "created")), Patients.class);
  58 + if (CollectionUtils.isNotEmpty(patients)) {
  59 + Patients patient = patients.get(0);
  60 + String patientId = patient.getId();
  61 + List<AntExChuModel> antExChuModels = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patientId)), AntExChuModel.class);
  62 + if (CollectionUtils.isNotEmpty(antExChuModels)) {
  63 + AntExChuModel antExChuModel = antExChuModels.get(0);
  64 + String highRisks = antExChuModel.getHighrisk();
  65 + String otherHighRisk = antExChuModel.getOtherHighRisk();
  66 + IndividualCaseResult<IndividualCaseResult.Infos> result = getInfosIndividualCaseResult(patient, antExChuModel.getProdDoctor(), highRisks, antExChuModel.getHighriskDesc(), otherHighRisk, antExChuModel.getCheckTime());
  67 + results.add(result);
  68 +
  69 + }
  70 + List<AntenatalExaminationModel> antenatalExaminationModels = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patientId)).with(new Sort(Sort.Direction.ASC, "created")), AntenatalExaminationModel.class);
  71 + if (CollectionUtils.isNotEmpty(antenatalExaminationModels)) {
  72 + for (AntenatalExaminationModel examinationModel : antenatalExaminationModels) {
  73 + String riskFactors = examinationModel.getRiskFactor();
  74 + String otherRisk = examinationModel.getOtherRisk();
  75 + IndividualCaseResult<IndividualCaseResult.Infos> result = getInfosIndividualCaseResult(patient, examinationModel.getCheckDoctor(), riskFactors, examinationModel.getHighriskDesc(), otherRisk, examinationModel.getCheckDate());
  76 + results.add(result);
  77 +
  78 + }
  79 + }
  80 + BaseResponse baseResponse = new BaseResponse();
  81 + baseResponse.setObject(results);
  82 + return baseResponse;
  83 +
  84 + }
  85 + }
  86 + return new BaseResponse();
  87 + }
  88 +
  89 + /**
  90 + * 组装返回至前端对象
  91 + *
  92 + * @param patient 建档对象
  93 + * @param doctor 产检医生id
  94 + * @param highRisks 高危ids
  95 + * @param highRiskDesc 高危说明
  96 + * @param otherHighRisk 自定义高危
  97 + * @param checkTime 产检时间
  98 + * @return
  99 + */
  100 + private IndividualCaseResult<IndividualCaseResult.Infos> getInfosIndividualCaseResult(Patients patient, String doctor, String highRisks, String highRiskDesc, String otherHighRisk, Date checkTime) {
  101 + List<String> list = JsonUtil.toList(highRisks, String.class);
  102 + IndividualCaseResult<IndividualCaseResult.Infos> result = new IndividualCaseResult<>();
  103 + result.setName(patient.getUsername());
  104 + result.setIdCard(patient.getCardNo());
  105 + Users users = usersService.getUsers(Integer.parseInt(doctor));
  106 + result.setDoctorStr(users.getName());
  107 + result.setHighRiskDesc(highRiskDesc);
  108 + if (checkTime != null) {
  109 + result.setTimeAxisStr(DateUtil.getyyyy_MM_dd(checkTime));
  110 + }
  111 + List<IndividualCaseResult.Infos> infos = new LinkedList<>();
  112 + for (String higRisk : list) {
  113 + IndividualCaseResult.Infos info = new IndividualCaseResult.Infos();
  114 + BasicConfig basicConfig = mongoTemplate.findOne(Query.query(Criteria.where("id").is(higRisk)), BasicConfig.class);
  115 + info.setName(basicConfig.getName());
  116 + BasicConfig typeConfig = mongoTemplate.findOne(Query.query(Criteria.where("id").is(basicConfig.getParentId())), BasicConfig.class);
  117 + info.setLevel(typeConfig.getWeight().toString());
  118 + info.setDesc(typeConfig.getName());
  119 + infos.add(info);
  120 + }
  121 + if (StringUtils.isNotEmpty(otherHighRisk)) {
  122 + List<Map<String, Object>> mapList = new LinkedList<>();
  123 + List<Map<String, Object>> maps = ResolveUtils.queryOtherRisk(otherHighRisk, mapList);
  124 + for (Map<String, Object> map : maps) {
  125 + // {"fxysu":"123123","fyyse":"49a36aea-c5b6-4162-87d2-9eb3c6ec00c2","fxpf":"5769f0640cf2d37f034793a3","otherId":"5a5872d2c07de7aba3b5f505"}
  126 + String otherId = map.get("otherId").toString();
  127 + HosptialHighRisk hosptialHighRisk = hosptialHighRiskService.getOneHosptialHighRiskById(otherId);
  128 + BasicConfig basicConfig = mongoTemplate.findOne(Query.query(Criteria.where("id").is(hosptialHighRisk.getColor())), BasicConfig.class);
  129 + IndividualCaseResult.Infos info = new IndividualCaseResult.Infos();
  130 + info.setName(hosptialHighRisk.getName());
  131 + info.setLevel(basicConfig.getWeight().toString());
  132 + info.setDesc(basicConfig.getName());
  133 + infos.add(info);
  134 + }
  135 + }
  136 + result.setList(infos);
  137 + return result;
  138 + }
  139 +
  140 +
  141 +}