diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/BloodSugarEnums2.java b/platform-common/src/main/java/com/lyms/platform/common/enums/BloodSugarEnums2.java index 4747f5e..3326aea 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/enums/BloodSugarEnums2.java +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/BloodSugarEnums2.java @@ -4,8 +4,18 @@ package com.lyms.platform.common.enums; * 血糖时间段枚举 */ public enum BloodSugarEnums2 { - - A(1, "空腹"), B(2, "早餐前"), C(3, "早餐后"), D(4, "午餐前"), E(5, "午餐后"), F(6, "晚餐前"), G(7, "晚餐后") ,H(8, "夜间"), I(9, "睡前"); + //空腹 早餐后 午餐前 午餐后 晚餐前 晚餐后 0点 + A(1, "空腹"), + + C(3, "早餐后"), + D(4, "午餐前"), + E(5, "午餐后"), + F(6, "晚餐前"), + G(7, "晚餐后"), + H(8, "0点"); + //B(2, "早餐前"), + //H(8, "夜间"); + //I(9, "睡前"); BloodSugarEnums2(Integer id, String name) { this.id = id; diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java index b486f67..3db07b1 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java @@ -2175,12 +2175,14 @@ public class PatientFacade { patientBaseResult.setHeight(StringUtils.isNotEmpty(chuModel.getHeight()) ? chuModel.getHeight() : ""); patientBaseResult.setWeight(StringUtils.isNotEmpty(chuModel.getWeight()) ? chuModel.getWeight() : ""); patientBaseResult.setBeforWeight(StringUtils.isNotEmpty(chuModel.getYqWeight()) ? chuModel.getYqWeight() : ""); + patientBaseResult.setBmi(patientWeightService.getBmi(chuModel.getYqWeight(),chuModel.getHeight())); } else { PatientWeight patientWeight = mongoTemplate.findOne(Query.query(Criteria.where("patientId").is(p.getId())), PatientWeight.class); if (patientWeight != null) { patientBaseResult.setHeight(StringUtils.isNotEmpty(patientWeight.getBeforeHeight()) ? patientWeight.getBeforeHeight() : ""); patientBaseResult.setWeight(StringUtils.isNotEmpty(patientWeight.getNowWeight()) ? patientWeight.getNowWeight() : ""); patientBaseResult.setBeforWeight(StringUtils.isNotEmpty(patientWeight.getBeforeWeight()) ? patientWeight.getBeforeWeight() : ""); + patientBaseResult.setBmi(patientWeight.getBmi()); List> dayWeights2 = patientWeight.getDayWeights2(); String doctorId = patientWeightService.getDoctorId(dayWeights2); patientBaseResult.setDoctorId(doctorId); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientBaseResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientBaseResult.java index 26039b2..9659387 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientBaseResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientBaseResult.java @@ -66,6 +66,16 @@ public class PatientBaseResult { //限制三周打印 private boolean hasPrintInWeek; + private String bmi; + + public String getBmi() { + return bmi; + } + + public void setBmi(String bmi) { + this.bmi = bmi; + } + public boolean isHasPrintInWeek() { return hasPrintInWeek; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java index c44107b..cf74e0f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java @@ -1083,6 +1083,26 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga Patients patients = patientsService.findOnePatientById(patientId); + //判断开通血糖服务没有 + if (patients != null) + { + //根据用户id获取医院ID + // String hospitalId = autoMatchFacade.getHospitalId(id); + PatientServiceQuery patientQuery = new PatientServiceQuery(); + patientQuery.setPid(patients.getPid()); + patientQuery.setSerStatus(1);//'服务状态(1-开通、2-退订、3-过期、4-暂停)', + patientQuery.setSerType(PatientSerEnums.SerTypeEnums.xt.getId()); + patientQuery.setSort("create_date desc"); + List patientServices = patientServiceService.queryPatientService(patientQuery); + if (!CollectionUtils.isNotEmpty(patientServices)) + { + resp.setErrorcode(ResponseCode.DATA_ERROR.getCode()); + resp.setErrormsg("孕妇开通血糖服务才能打印报告"); + return resp; + } + } + + List risks = patients.getRiskFactorId(); //妊娠期糖尿病(无需药物治疗) //糖尿病合并妊娠(无需药物治疗) if (!(CollectionUtils.isNotEmpty(risks) && (risks.contains("5aab6d3d422b03d4ad2bf83e") || risks.contains("5aab6d3e422b03d4ad2bf83f") //需药物治疗的糖尿病 @@ -1121,6 +1141,20 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga } Map data = new HashMap(); + + List bloodSugars = mongoTemplate.find(Query.query(Criteria.where("pid").is(patients.getPid()).and("created").gt(DateUtil.getYMDTime())), BloodSugar.class); + if (CollectionUtils.isNotEmpty(bloodSugars)) + { + Map bloodData = new HashMap(); + for (BloodSugar bloodSugar : bloodSugars) + { + bloodData.put(bloodSugar.getBloodSugarType(),bloodSugar.getBloodSugar()); + } + + data.put("bloodData",bloodData); + } + + //妊娠期糖尿病(无需药物治疗) //糖尿病合并妊娠(无需药物治疗) if (risks.contains("5aab6d3d422b03d4ad2bf83e") && (risks.contains("5aab6d3e422b03d4ad2bf83f") //需药物治疗的糖尿病 @@ -1133,15 +1167,15 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga rid = "5aab6d3d422b03d4ad2bf83e"; } - //1:妊娠期糖尿病(无需药物治疗) 2:糖尿病合并妊娠(无需药物治疗)(需药物治疗的糖尿病) - data.put("riskType", "5aab6d3d422b03d4ad2bf83e".equals(rid) ? "1" : "2"); + data.put("riskType", (risks.contains("5aab6d3d422b03d4ad2bf83e") || risks.contains("5aab6d3e422b03d4ad2bf83f")) ? "1" : "2"); //1 无需药物治疗 2 需要药物治疗 + data.put("riskType", (risks.contains("5aab6d3d422b03d4ad2bf83e") || risks.contains("de7468e6-1bb5-4fab-ae84-78857868409a")) ? 1 : 2 ); //1 妊娠期糖尿病 2 糖尿病合并妊娠 double bmi = Double.parseDouble(patientWeight.getBmi()); //根据高危获取不同的卡路里计算公式 - Map kmap = getComputeKul(Double.parseDouble(patientWeight.getBeforeWeight()), + double kcal = getComputeKcal(Double.parseDouble(patientWeight.getBeforeWeight()), Double.parseDouble(patientWeight.getNowWeight()), week, bmi, patientWeight.getBregmatic(), patientWeight.getBeforeHeight(), version); - + data.put("bmi", bmi); String weekYyzl = ""; WeightConfigModel weightConfigModel = patientWeightService.getWeightConfigByWeek(week); @@ -1163,7 +1197,7 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga Map dinner2 = new LinkedHashMap<>(); // 晚加餐 String nsArea = ReportConfig.getNSArea(basicConfig.getName()); - WeightConfigModel configModel = getWeightConfigBykcal(kmap, nsArea, rid); + WeightConfigModel configModel = getWeightConfigBykcal(kcal, nsArea, rid); if (configModel != null) { setData(breakfast, "早餐", configModel.getBreakfast()); @@ -1176,14 +1210,8 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga 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"; - } + //1 孕早期 2 孕中期 3 孕晚期 + String weekRange = week < 12 ? "1" : ((week >= 12 && week < 28) ? "2" : "3"); data.put("weekRange", weekRange); healthChargeFacade.addHealthCharge(hospitalId, 2, patientId, 1, 1, userId, doctorId, false); @@ -1195,28 +1223,20 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga } - public WeightConfigModel getWeightConfigBykcal(Map map, String northSouth, String risk) { - if (map.get("kulStart") == null) { - return null; - } - double kulStart = Double.valueOf(map.get("kulStart")); - int k1 = ((int) kulStart / 100) * 100; - double k2 = kulStart - k1; + public WeightConfigModel getWeightConfigBykcal(double kcal, String northSouth, String risk) { + + int k1 = ((int) kcal / 100) * 100; + double k2 = kcal - k1; if (k2 > 50) { k1 += 100; } - if (k1 < 1500) { k1 = 1500; } else if (k1 > 2800) { k1 = 2800; } - Criteria criteria = null; - if ("3".equals((String) map.get("type"))) { - criteria = Criteria.where("kcal").is(k1).and("dietaryType").is(0); - } else { - criteria = Criteria.where("northSouth").is(northSouth).and("kcal").is(k1); - } + + Criteria criteria = Criteria.where("northSouth").is(northSouth).and("kcal").is(k1); //如果传了高危因素id就按高危去查 if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(risk)) { criteria = criteria.and("riskId").in(risk).and("type").is("1"); @@ -1229,64 +1249,56 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga return weightConfigModel; } + /** + * 八、热量计算 + ①公式:(身高cm-105)*系数 + 系数:BMI<18.5 系数为35 + 18.5-24.9 系数为25 + ≥25 系数为20 + ②在①公式的基础上,判断孕周:孕早期(0到11+6)热量不变 + 孕中期(12到27+6)热量+200 + 孕晚期(28到42)热量+400 + ③计算出来后所有人不能超过2300,超过的按照2300给热量;孕晚期(28到42)不能低于1800,低于1800的按1800给热量。 + ④计算出的热量四舍五入。 + * @param beforeWeight + * @param currentWeight + * @param week + * @param bmi + * @param bregmatic + * @param beforeHeight + * @param version + * @return + */ - public Map getComputeKul(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic, String beforeHeight,String version) { - Map map = new HashMap<>(); - double kulStart = 0; - double height = Double.valueOf(String.format("%.2f", Double.parseDouble(beforeHeight) / 100)); - //孕早期 - if (week <= 12) { - kulStart = (new BigDecimal(Double.toString(height)).multiply(new BigDecimal(Double.toString(height))).doubleValue() * 21 + 1.5) * 30; - } - //孕中期 //孕晚期 - else if (week > 12) { - //基础kcal值 - int basekul = (week > 12 && week <= 27) ? 340 : 450; - - String bmiStr = ""; - - if (org.apache.commons.lang.StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) { - if (bmi < 18.5) { - bmiStr = "BMI<18.5孕" + week + "周"; - } else if (bmi <= 24.9 && bmi >= 18.5) { - bmiStr = "BMI=18.5-24.9孕" + week + "周"; - } else if (bmi <= 29.9 && bmi >= 25) { - bmiStr = "BMI=25-29.9孕" + week + "周"; - } else if (bmi >= 30) { - bmiStr = "BMI≥30孕" + week + "周"; - } - } else { - if (bmi <= 24.9) { - bmiStr = "BMI≤24.9孕" + week + "周"; - } else if (bmi <= 29.9 && bmi >= 25) { - bmiStr = "BMI=25-29.9孕" + week + "周"; - } else if (bmi >= 30) { - bmiStr = "BMI≥30孕" + week + "周"; - } - } - - if (org.apache.commons.lang.StringUtils.isEmpty(bmiStr)) { - return map; - } - - String[] rangeWeight = null; - if (org.apache.commons.lang.StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) { - rangeWeight = ReportConfig.getWeightRange(bmiStr).split("-"); - } else { - rangeWeight = ReportConfig.getDWeightRange(bmiStr).split("-"); - } + public double getComputeKcal(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic, String beforeHeight,String version) { - if (rangeWeight == null || rangeWeight.length != 2) { - return map; - } + //系数 + int coefficient = 25; + if (bmi < 18.5) + { + coefficient = 35; + } + else if (bmi >=25 ) + { + coefficient = 20; + } - double addWeightEnd = Double.parseDouble(rangeWeight[1]); + double kcal = (Double.parseDouble(beforeHeight) - 105) * coefficient; - kulStart = (new BigDecimal(Double.toString(height)).multiply(new BigDecimal(Double.toString(height))).doubleValue() * 21 + addWeightEnd ) * 30+basekul; + if(week >= 12 && week < 28) + { + kcal+=200; } - - map.put("kulStart", String.valueOf(kulStart)); - return map; + else if (week >= 28) + { + kcal+=400; + kcal = kcal < 1800 ? 1800 : kcal; + } + if (kcal > 2300) + { + kcal = 2300; + } + return kcal; }