diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/TemporaryBloodSugar.java b/platform-dal/src/main/java/com/lyms/platform/pojo/TemporaryBloodSugar.java index 2218899..10942b5 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/TemporaryBloodSugar.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/TemporaryBloodSugar.java @@ -4,6 +4,7 @@ import com.lyms.platform.common.result.BaseModel; import java.util.Date; import java.util.List; +import java.util.Map; public class TemporaryBloodSugar extends BaseModel { private String id; @@ -45,6 +46,49 @@ public class TemporaryBloodSugar extends BaseModel { private Integer bloodSugarType; + private String creatYmdDate; + + private String bloodSugar; + + + private Map dayWeights; + + + // 前囟 单胎/双胎/多胎 + private String bregmatic; + + public String getBregmatic() { + return bregmatic; + } + + public void setBregmatic(String bregmatic) { + this.bregmatic = bregmatic; + } + + public Map getDayWeights() { + return dayWeights; + } + + public void setDayWeights(Map dayWeights) { + this.dayWeights = dayWeights; + } + + public String getBloodSugar() { + return bloodSugar; + } + + public void setBloodSugar(String bloodSugar) { + this.bloodSugar = bloodSugar; + } + + public String getCreatYmdDate() { + return creatYmdDate; + } + + public void setCreatYmdDate(String creatYmdDate) { + this.creatYmdDate = creatYmdDate; + } + public Integer getBloodSugarType() { return bloodSugarType; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryBloodSugarController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryBloodSugarController.java index 26890cf..1459c92 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryBloodSugarController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryBloodSugarController.java @@ -1,36 +1,77 @@ package com.lyms.platform.operate.web.controller; +import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.operate.web.service.ITemporaryBloodSugarService; +import com.lyms.platform.pojo.TemporaryBloodSugar; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; @RequestMapping("/blood/sugar") @Controller public class TemporaryBloodSugarController extends BaseController { + @Autowired + private ITemporaryBloodSugarService bloodSugarService; + + @RequestMapping(value = "/addAndUpate", method = RequestMethod.POST) + @TokenRequired + @ResponseBody + public BaseResponse addTempraryBloodSugar(TemporaryBloodSugar bloodSugar) { - @RequestMapping(value = "/addAndUpate") - public BaseResponse addTempraryBloodSugar() { + return bloodSugarService.addAndUpdate(bloodSugar); + } - return new BaseResponse(); + @RequestMapping(value = "/delete", method = RequestMethod.DELETE) + @TokenRequired + @ResponseBody + public BaseResponse deleteBloodSugar(@RequestParam(value = "id") String id) { + return bloodSugarService.deleteBloodSugar(id); } - @RequestMapping(value = "/delete") - public BaseResponse deleteBloodSugar() { - return new BaseResponse(); + + @RequestMapping(value = "/querOne", method = RequestMethod.GET) + @TokenRequired + @ResponseBody + public BaseResponse queryOne(@RequestParam(value = "id") String id) { + return bloodSugarService.queryOne(id); + } + @RequestMapping(value = "/queryAll", method = RequestMethod.GET) + @TokenRequired + @ResponseBody + public BaseResponse queryAll(Integer page, Integer limit) { + return bloodSugarService.queryAll(page, limit); + } - @RequestMapping(value = "/querOne") - public BaseResponse queryOne() { - return new BaseResponse(); + @ResponseBody + @RequestMapping(value = "/{id}/{type}/{time}", method = RequestMethod.GET) + @TokenRequired + public BaseResponse info(@PathVariable String id, @PathVariable Integer type, @PathVariable Date time) { + return bloodSugarService.info(id, type, time); } - @RequestMapping(value = "/queryAll") - public BaseResponse queryAll() { - return new BaseResponse(); + /** + * 院内系统血糖报告 + * + * @param id + * @return + */ + @ResponseBody + @RequestMapping(value = "/getBloodSugarReport/{id}", method = RequestMethod.GET) + @TokenRequired + public BaseResponse getSysBloodSugarReport(@PathVariable String id + , HttpServletRequest httpServletRequest) { + LoginContext loginState = (LoginContext) httpServletRequest.getAttribute("loginContext"); + return bloodSugarService.getSysBloodSugarReport(id, loginState.getId()); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryWeightController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryWeightController.java index a44ded6..388ffd6 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryWeightController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TemporaryWeightController.java @@ -52,8 +52,8 @@ public class TemporaryWeightController extends BaseController { @RequestMapping(value = "/queryAll", method = RequestMethod.GET) @TokenRequired @ResponseBody - public BaseResponse queryAll(Integer page, Integer limit) { - return temporaryWeightService.queryAll(page, limit); + public BaseResponse queryAll(String key, Integer stateWeek, Integer endWeek, Integer age, Integer page, Integer limit) { + return temporaryWeightService.queryAll(key, stateWeek, endWeek, age, page, limit); } @ResponseBody diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITemporaryBloodSugarService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITemporaryBloodSugarService.java index 90fd406..89d490b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITemporaryBloodSugarService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITemporaryBloodSugarService.java @@ -3,6 +3,8 @@ package com.lyms.platform.operate.web.service; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.pojo.TemporaryBloodSugar; +import java.util.Date; + public interface ITemporaryBloodSugarService extends IBaseService { BaseResponse addAndUpdate(TemporaryBloodSugar bloodSugar); @@ -13,4 +15,7 @@ public interface ITemporaryBloodSugarService extends IBaseService { BaseResponse queryAll(Integer page, Integer limit); + BaseResponse info(String parentId, Integer type, Date time); + + BaseResponse getSysBloodSugarReport(String patientId, Integer userId); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/TemporaryWeightService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/TemporaryWeightService.java index cc67609..e8acfaa 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/TemporaryWeightService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/TemporaryWeightService.java @@ -14,7 +14,7 @@ public interface TemporaryWeightService extends IBaseService { BaseResponse queryOne(String phone); - BaseResponse queryAll(Integer page, Integer limit); + BaseResponse queryAll(String key, Integer stateWeek, Integer endWeek, Integer age, Integer page, Integer limit); BaseResponse info(String phone); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryBloodSugarServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryBloodSugarServiceImpl.java index d115ade..3e58b31 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryBloodSugarServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryBloodSugarServiceImpl.java @@ -1,13 +1,20 @@ package com.lyms.platform.operate.web.service.impl; import com.lyms.platform.biz.dal.ITemporaryBloodSugarDao; +import com.lyms.platform.biz.service.BasicConfigService; import com.lyms.platform.common.constants.ErrorCodeConstants; -import com.lyms.platform.common.result.BaseObjectResponse; -import com.lyms.platform.common.result.BaseResponse; -import com.lyms.platform.common.result.PageResult; -import com.lyms.platform.common.result.RespBuilder; +import com.lyms.platform.common.enums.BloodSugarEnums; +import com.lyms.platform.common.enums.BloodSugarEnums2; +import com.lyms.platform.common.result.*; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.service.ITemporaryBloodSugarService; -import com.lyms.platform.pojo.TemporaryBloodSugar; +import com.lyms.platform.operate.web.service.PatientWeightService; +import com.lyms.platform.operate.web.utils.ReportConfig; +import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.pojo.*; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; @@ -17,8 +24,7 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.util.*; @Service @@ -30,9 +36,22 @@ public class TemporaryBloodSugarServiceImpl extends BaseServiceImpl implements I @Autowired private ITemporaryBloodSugarDao temporaryBloodSugarDao; + @Autowired + private ComputeKulServiceManager computeKulServiceManager; - @Override + @Autowired + private AutoMatchFacade autoMatchFacade; + + @Autowired + private OrganizationService organizationService; + + @Autowired + private BasicConfigService basicConfigService; + @Autowired + private PatientWeightService patientWeightService; + + @Override public BaseResponse addAndUpdate(TemporaryBloodSugar bloodSugar) { List bloodSugars = mongoTemplate.findAll(TemporaryBloodSugar.class); if (CollectionUtils.isNotEmpty(bloodSugars)) { @@ -77,5 +96,183 @@ public class TemporaryBloodSugarServiceImpl extends BaseServiceImpl implements I } + @Override + public BaseResponse info(String id, Integer type, Date time) { + List> tabList = new ArrayList<>(); + List betweenDay = DateUtil.getBetweenDay(time, 7); + Object[] xAxis = betweenDay.toArray(); + com.lyms.platform.operate.web.utils.CollectionUtils.reverseArray(xAxis); + List minAxis; + List maxAxis; + List bloodSugarAxis = new LinkedList<>(); + if (type == BloodSugarEnums.A.getId()) { + minAxis = Arrays.asList(3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3); + maxAxis = Arrays.asList(5.6, 5.6, 5.6, 5.6, 5.6, 5.6, 5.6); + } else if (type == BloodSugarEnums.B.getId() || type == BloodSugarEnums.D.getId() || type == BloodSugarEnums.F.getId()) { + minAxis = Arrays.asList(3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3); + maxAxis = Arrays.asList(5.8, 5.8, 5.8, 5.8, 5.8, 5.8, 5.8); + } else if (type == BloodSugarEnums.I.getId()) { + minAxis = Arrays.asList(6.1, 6.1, 6.1, 6.1, 6.1, 6.1, 6.1); + maxAxis = Arrays.asList(7.8, 7.8, 7.8, 7.8, 7.8, 7.8, 7.8); + } else { + minAxis = Arrays.asList(4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4); + maxAxis = Arrays.asList(6.7, 6.7, 6.7, 6.7, 6.7, 6.7, 6.7); + } + + List bloodSugars = mongoTemplate.find(Query.query(Criteria.where("_id").is(id)), TemporaryBloodSugar.class); + if (com.lyms.platform.operate.web.utils.CollectionUtils.isNotEmpty(bloodSugars)) { + for (int i = 0; i < betweenDay.size(); i++) { + String day = betweenDay.get(i); + Map temp = new LinkedHashMap<>(); + for (TemporaryBloodSugar bloodSugar : bloodSugars) { + if (day.equals(bloodSugar.getCreatYmdDate())) { + if (type == bloodSugar.getBloodSugarType()) { + bloodSugarAxis.add(0, bloodSugar.getBloodSugar()); + } + for (BloodSugarEnums2 sugarEnums : BloodSugarEnums2.values()) { + if (sugarEnums.getId() == (bloodSugar.getBloodSugarType())) { + temp.put(sugarEnums.getId(), bloodSugar.getBloodSugar()); + } + } + } + } + for (BloodSugarEnums2 sugarEnums : BloodSugarEnums2.values()) { + if (!temp.containsKey(sugarEnums.getId())) { + temp.put(sugarEnums.getId(), "--"); + } + } + if (bloodSugarAxis.size() < i + 1) { + bloodSugarAxis.add(0, "0"); + } + temp.put("date", day); + tabList.add(temp); + } + } + return RespBuilder.buildSuccess("tabList", tabList, "xAxis", xAxis, "minAxis", minAxis, "maxAxis", maxAxis, "bloodSugarAxis", bloodSugarAxis); + + } + + @Override + public BaseResponse getSysBloodSugarReport(String id, Integer userId) { + BaseObjectResponse resp = new BaseObjectResponse(); + + TemporaryBloodSugar bloodSugar = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), TemporaryBloodSugar.class); + + //Patients patients = patientsService.findOnePatientById(patientId); + + List risks = bloodSugar.getRiskFactorId(); //妊娠期糖尿病(无需药物治疗) //糖尿病合并妊娠(无需药物治疗) + if (!(com.lyms.platform.operate.web.utils.CollectionUtils.isNotEmpty(risks) && (risks.contains("5aab6d3d422b03d4ad2bf83e") || risks.contains("5aab6d3e422b03d4ad2bf83f") + //需药物治疗的糖尿病 + || risks.contains("de7468e6-1bb5-4fab-ae84-78857868409a")))) { + resp.setErrorcode(ResponseCode.DATA_ERROR.getCode()); + resp.setErrormsg("孕妇没有糖尿病不能出报告"); + return resp; + } + + // PatientWeight patientWeight = mongoTemplate.findOne(Query.query(Criteria.where("patientId").is(patientId)), PatientWeight.class); + + if (bloodSugar == null) { + resp.setErrorcode(ResponseCode.DATA_ERROR.getCode()); + resp.setErrormsg("没有体重测量记录"); + return resp; + } + + Map dayWeights = bloodSugar.getDayWeights(); + + //当天没有体重测量 + if (!(dayWeights != null && dayWeights.size() > 0 && StringUtils.isNotEmpty(dayWeights.get(DateUtil.getyyyy_MM_dd(new Date()))))) { + resp.setErrorcode(ResponseCode.DATA_ERROR.getCode()); + resp.setErrormsg("当天没有测量体重,不能出报告"); + return resp; + } + + String rid = ""; + + int week = DateUtil.getWeek(bloodSugar.getLastMenses(), new Date()); + + if (week < 6) { + resp.setErrorcode(ResponseCode.DATA_ERROR.getCode()); + resp.setErrormsg("小于6孕周,不能出报告"); + return resp; + } + Map data = new HashMap(); + + //妊娠期糖尿病(无需药物治疗) //糖尿病合并妊娠(无需药物治疗) + if (risks.contains("5aab6d3d422b03d4ad2bf83e") && (risks.contains("5aab6d3e422b03d4ad2bf83f") + //需药物治疗的糖尿病 + || risks.contains("de7468e6-1bb5-4fab-ae84-78857868409a"))) { + rid = week < 24 ? "5aab6d3e422b03d4ad2bf83f" : "5aab6d3d422b03d4ad2bf83e"; + } //糖尿病合并妊娠(无需药物治疗) //需药物治疗的糖尿病 + else if (risks.contains("5aab6d3e422b03d4ad2bf83f") || risks.contains("de7468e6-1bb5-4fab-ae84-78857868409a")) { + rid = "5aab6d3e422b03d4ad2bf83f"; + } else { + rid = "5aab6d3d422b03d4ad2bf83e"; + } + + //1:妊娠期糖尿病(无需药物治疗) 2:糖尿病合并妊娠(无需药物治疗)(需药物治疗的糖尿病) + data.put("riskType", "5aab6d3d422b03d4ad2bf83e".equals(rid) ? "1" : "2"); + + //算出bmi值 + + String bmiStr = patientWeightService.getBmi(bloodSugar.getBeforeWeight(), bloodSugar.getBeforeHeight()); + double bmi = Double.parseDouble(bmiStr); + //根据高危获取不同的卡路里计算公式 + Map kmap = computeKulServiceManager.getComputeKulByRisk(rid).getComputeKul(Double.parseDouble(bloodSugar.getBeforeWeight()), + Double.parseDouble(bloodSugar.getNowWeight()), week, bmi, bloodSugar.getBregmatic(), bloodSugar.getBeforeHeight()); + + + String weekYyzl = ""; + WeightConfigModel weightConfigModel = patientWeightService.getWeightConfigByWeek(week); + if (weightConfigModel != null) { + weekYyzl = weightConfigModel.getWeekContent(); + } + data.put("weekYyzl", weekYyzl); + + String hospitalId = autoMatchFacade.getHospitalId(userId); + Organization org = organizationService.getOrganization(Integer.parseInt(hospitalId)); + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(org.getProvinceId()); + + + Map breakfast = new LinkedHashMap<>(); // 早餐 + Map breakfast2 = new LinkedHashMap<>(); // 上午加餐 + Map lunch = new LinkedHashMap<>(); // 午餐 + Map lunch2 = new LinkedHashMap<>(); // 下午加餐 + Map dinner = new LinkedHashMap<>(); // 晚餐 + Map dinner2 = new LinkedHashMap<>(); // 晚加餐 + + String nsArea = ReportConfig.getNSArea(basicConfig.getName()); + WeightConfigModel configModel = patientWeightService.getWeightConfigBykcal(kmap, nsArea, rid); + + if (configModel != null) { + setData(breakfast, "早餐", configModel.getBreakfast()); + setData(breakfast2, "上午加餐", configModel.getBreakfastAdd()); + setData(lunch, "午餐", configModel.getLunch()); + setData(lunch2, "下午加餐", configModel.getLunchAdd()); + setData(dinner, "晚餐", configModel.getDinner()); + setData(dinner2, "晚加餐", configModel.getDinnerAdd()); + } + + data.put("food", Arrays.asList(breakfast, breakfast2, lunch, lunch2, dinner, dinner2)); + + String weekRange = ""; + if (week < 12) { + weekRange = "1"; + } else if (week > 12 && week < 28) { + weekRange = "2"; + } else { + weekRange = "3"; + } + data.put("weekRange", weekRange); + + resp.setData(data); + resp.setErrorcode(ResponseCode.SUCCESS.getCode()); + resp.setErrormsg("成功"); + return resp; + } + + private void setData(Map map, String key, String value) { + map.put("id", key); + map.put("name", value); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryWeightServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryWeightServiceImpl.java index 2b2148d..5c5ece8 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryWeightServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TemporaryWeightServiceImpl.java @@ -55,6 +55,7 @@ public class TemporaryWeightServiceImpl extends BaseServiceImpl implements Tempo @Autowired private BasicConfigService basicConfigService; + @Override public BaseResponse addTemporaryWeight(TemporaryWeightModel weightModel) { if (StringUtils.isNotEmpty(weightModel.getPhone())) { @@ -97,17 +98,44 @@ public class TemporaryWeightServiceImpl extends BaseServiceImpl implements Tempo } @Override - public BaseResponse queryOne(String phone) { - if (StringUtils.isNotEmpty(phone)) { - TemporaryWeightModel temporaryWeightModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(phone)), TemporaryWeightModel.class); + public BaseResponse queryOne(String id) { + if (StringUtils.isNotEmpty(id)) { + TemporaryWeightModel temporaryWeightModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), TemporaryWeightModel.class); return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(temporaryWeightModel); } return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("请选择一条记录"); } @Override - public BaseResponse queryAll(Integer page, Integer limit) { - Criteria criteria = Criteria.where("yn").ne(0); + public BaseResponse queryAll(String key, Integer stateWeek, Integer endWeek, Integer age, Integer page, Integer limit) { + boolean flag = false; + Criteria pCriteria = Criteria.where("yn").ne("0"); + Criteria criteria = Criteria.where("yn").ne("0"); + if (org.apache.commons.lang.StringUtils.isNotBlank(key)) { + pCriteria.orOperator(Criteria.where("phone").regex(key), Criteria.where("username").regex(key)); + flag = true; + } + if (stateWeek != null && endWeek != null) { + Date start = DateUtil.getWeekStart(stateWeek); + Date end = DateUtil.getWeekEnd(endWeek); + pCriteria.and("lastMenses").gt(start).lte(end); + flag = true; + } + if (age != null) { + Date start = DateUtil.getBeforeAge(age); + pCriteria.and("age").is(start); + flag = true; + } + if (flag) { + List patients = mongoTemplate.find(Query.query(pCriteria), TemporaryBloodModel.class); + List ids = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(patients)) { + for (TemporaryBloodModel patient : patients) { + ids.add(patient.getId()); + } + } + criteria.and("_id").in(ids); + } PageResult pageResult = findMongoPage(TemporaryWeightModel.class, new Query(criteria).with(new Sort(Sort.Direction.DESC, "modified")), page, limit); return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(pageResult); }