From b1729da9cb6031c2009d13618c2ca9d126476c94 Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Thu, 14 Dec 2017 12:04:31 +0800 Subject: [PATCH] 123 --- .../platform/operate/web/facade/TempFacade.java | 5 +- .../web/service/impl/BloodPressureServiceImpl.java | 3 +- .../web/service/impl/BloodSugarServiceImpl.java | 3 +- .../web/service/impl/ReportServiceImpl.java | 223 ++++++++++++++++++--- 4 files changed, 198 insertions(+), 36 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java index c02447d..fc4b126 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java @@ -245,7 +245,10 @@ public class TempFacade { if(patients != null) { tempModel.setPid(patients.getPid()); } - tempService.addOneTemp(tempModel); + tempModel.setCreated(new Date()); + tempModel.setModified(new Date()); + mongoTemplate.save(tempModel); +// tempService.addOneTemp(tempModel); } return RespBuilder.buildSuccess(); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java index d4bd9a3..454cd06 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java @@ -218,7 +218,8 @@ public class BloodPressureServiceImpl extends BaseServiceImpl implements IBloodP Map> infos = new LinkedHashMap<>(); infos.put(DateUtil.getyyyy_MM_dd(new Date()), temp); bloodPressure.setInfos(infos); - bloodPressureService.add(bloodPressure); +// bloodPressureService.add(bloodPressure); + mongoTemplate.save(bloodPressure); } else { Map> infos = bp.getInfos(); infos.put(DateUtil.getyyyy_MM_dd(new Date()), temp); 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 966bcc7..6d8a7eb 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 @@ -219,7 +219,8 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga one.setYn(YnEnums.YES.getId()); one.setModified(new Date()); one.setCreatYmdDate(DateUtil.getyyyy_MM_dd(new Date())); - bloodSugarService.add(one); +// bloodSugarService.add(one); + mongoTemplate.save(one); return RespBuilder.buildSuccess(one.getId()); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java index a017894..b8f79fa 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -600,12 +600,36 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService AntExChuModel antExChuModel = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(parentId).and("yn").is(1).and("hospitalId").is(hospitalId)).with(new Sort(Sort.Direction.DESC, "checkTime")), AntExChuModel.class); List antexModels = mongoTemplate.find(Query.query(Criteria.where("parentId").is(parentId).and("yn").is(1).and("hospitalId").is(hospitalId)).with(new Sort(Sort.Direction.DESC, "checkTime")), AntenatalExaminationModel.class); + Map xyMap = new HashMap<>(); + List szyMin = new ArrayList<>(); + List ssyMax = new ArrayList<>(); + List xAxis = new ArrayList<>(); + List ssy = new ArrayList<>(); + List szy = new ArrayList<>(); + xyMap.put("szyMin", szyMin); + xyMap.put("ssyMax", ssyMax); + xyMap.put("xAxis", xAxis); + xyMap.put("ssy", ssy); + xyMap.put("szy", szy); + for (int i = 0; i <= 40; i++) { + ssyMax.add(140); + szyMin.add(60); + ssy.add(0); + szy.add(0); + xAxis.add(i); + } + + Map tzMap = new HashMap<>(); + Map weights = new LinkedHashMap<>(); + boolean tzFlag = antExChuModel == null || StringUtils.isEmpty(antExChuModel.getYqWeight()) || StringUtils.isEmpty(antExChuModel.getHeight()) ? false : true; + for (AntenatalExaminationModel antexModel : antexModels) { Map temp = new HashMap<>(); + Integer week = DateUtil.getWeek(p.getLastMenses(), antexModel.getCheckDate()); temp.put("checkTime", DateUtil.getyyyy_MM_dd(antexModel.getCheckDate())); - temp.put("week", DateUtil.getWeek(p.getLastMenses(), antexModel.getCheckDate())); + temp.put("week", week); temp.put("weight", antexModel.getWeight()); - temp.put("bp", JSONObject.parseObject(antexModel.getBp()).getString("ssy") + "/" + JSONObject.parseObject(antexModel.getBp()).getString("szy")); + temp.put("bp", parseNull(JSONObject.parseObject(antexModel.getBp()).getString("ssy"), "--") + "/" + parseNull(JSONObject.parseObject(antexModel.getBp()).getString("szy"), "--")); temp.put("gonggao", antexModel.getGongGao()); temp.put("abdominalCircumference", antexModel.getAbdominalCircumference());// 腹围 @@ -630,48 +654,181 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService temp.put("edema",FuZhongEnums.getName(antexModel.getEdema())); // 水肿 temp.put("urineProtein", antexModel.getUrineProtein()); // 尿蛋白 temp.put("hemoglobin", antexModel.getHemoglobin()); // 血红素 + + ssy.set(week, parseNull(JSONObject.parseObject(antExChuModel.getBp()).getString("ssy"), 0)); + szy.set(week, parseNull(JSONObject.parseObject(antExChuModel.getBp()).getString("szy"), 0)); + if(tzFlag && antexModel.getWeight() != null) { + weights.put(DateUtil.getWeek2(p.getLastMenses(), antexModel.getCheckDate()), antexModel.getWeight() + ""); + } + restList.add(temp); } // 添加初诊list - Map temp = new HashMap<>(); - temp.put("checkTime", DateUtil.getyyyy_MM_dd(antExChuModel.getCheckTime())); - temp.put("week", DateUtil.getWeek(p.getLastMenses(), antExChuModel.getCheckTime())); - temp.put("weight", antExChuModel.getWeight()); - temp.put("bp", JSONObject.parseObject(antExChuModel.getBp()).getString("ssy") + "/" + JSONObject.parseObject(antExChuModel.getBp()).getString("szy")); - temp.put("gonggao", antExChuModel.getGonggao()); - temp.put("abdominalCircumference", antExChuModel.getFuwei());// 腹围 - - List tireData = antExChuModel.getPlacentas(); - String fetalPosition = ""; - String heartRate = ""; - String fetalPresentation = ""; - if(CollectionUtils.isNotEmpty(tireData)) { - for (Map tireDatum : tireData) { - fetalPosition = fetalPosition.length() > 0 ? "/" + tireDatum.get("fetalPosition") : tireDatum.get("fetalPosition") + ""; - heartRate = heartRate.length() > 0 ? "/" + tireDatum.get("heartRate") : tireDatum.get("heartRate") + ""; - fetalPresentation = fetalPresentation.length() > 0 ? "/" + FetalEnums.getTitle2((String) tireDatum.get("fetalPosition")) : FetalEnums.getTitle2((String) tireDatum.get("fetalPosition")); + if(antExChuModel != null) { + Map temp = new HashMap<>(); + temp.put("checkTime", DateUtil.getyyyy_MM_dd(antExChuModel.getCheckTime())); + Integer week = DateUtil.getWeek(p.getLastMenses(), antExChuModel.getCheckTime()); + temp.put("week", week); + temp.put("weight", antExChuModel.getWeight()); + temp.put("bp", parseNull(JSONObject.parseObject(antExChuModel.getBp()).getString("ssy"), "--") + "/" + parseNull(JSONObject.parseObject(antExChuModel.getBp()).getString("szy"), "--")); + temp.put("gonggao", antExChuModel.getGonggao()); + temp.put("abdominalCircumference", antExChuModel.getFuwei());// 腹围 + + List tireData = antExChuModel.getPlacentas(); + String fetalPosition = ""; + String heartRate = ""; + String fetalPresentation = ""; + if(CollectionUtils.isNotEmpty(tireData)) { + for (Map tireDatum : tireData) { + fetalPosition = fetalPosition.length() > 0 ? "/" + tireDatum.get("fetalPosition") : tireDatum.get("fetalPosition") + ""; + heartRate = heartRate.length() > 0 ? "/" + tireDatum.get("heartRate") : tireDatum.get("heartRate") + ""; + fetalPresentation = fetalPresentation.length() > 0 ? "/" + FetalEnums.getTitle2((String) tireDatum.get("fetalPosition")) : FetalEnums.getTitle2((String) tireDatum.get("fetalPosition")); + } + } else { + fetalPosition = "--"; + heartRate = "--"; + fetalPresentation = "--"; } - } else { - fetalPosition = "--"; - heartRate = "--"; - fetalPresentation = "--"; + + temp.put("fetalPosition", fetalPosition); // 胎位 + temp.put("heartRate", heartRate); // 胎心 + temp.put("fetalPresentation", fetalPresentation); // 先露 + temp.put("edema",FuZhongEnums.getName(antExChuModel.getEdema())); // 水肿 + temp.put("urineProtein", antExChuModel.getNdb()); // 尿蛋白 + temp.put("hemoglobin", antExChuModel.getXhdb()); // 血红素 + + ssy.set(week, parseNull(JSONObject.parseObject(antExChuModel.getBp()).getString("ssy"), 0)); + szy.set(week, parseNull(JSONObject.parseObject(antExChuModel.getBp()).getString("szy"), 0)); + + restList.add(temp); } - temp.put("fetalPosition", fetalPosition); // 胎位 - temp.put("heartRate", heartRate); // 胎心 - temp.put("fetalPresentation", fetalPresentation); // 先露 - temp.put("edema",FuZhongEnums.getName(antExChuModel.getEdema())); // 水肿 - temp.put("urineProtein", antExChuModel.getNdb()); // 尿蛋白 - temp.put("hemoglobin", antExChuModel.getXhdb()); // 血红素 - restList.add(temp); + /*if (MapUtils.isNotEmpty(dayWeights)) { + Set> entries = dayWeights.entrySet(); + for (Map.Entry entry : entries) { + weights.put(DateUtil.getWeek2(patients.getLastMenses(), DateUtil.parseYMD(entry.getKey())), entry.getValue()); + } + }*/ + if(tzFlag) { + setReport(tzMap, weights, antExChuModel.getYqWeight(), PatientWeightServiceImpl.getBmi(antExChuModel.getYqWeight(), antExChuModel.getHeight())); + } - Map xtMap = new HashMap<>(); - Map tzMap = new HashMap<>(); + return RespBuilder.buildSuccess("tabList", restList, "xyMap", xyMap, "tzMap", tzMap); + } + public void setReport(Map restMap, Map weights, String beforeWeight, String bmi) { + List> restList = new ArrayList<>(); + // 小程序和app可能没有bmi 默认返回标准 + Double bmiD = 20D; + if(StringUtils.isNotEmpty(bmi)) { + bmiD = Double.parseDouble(bmi); + } + String title = ""; + String color = ""; + double low = 0D; + double low2 = 0D; + double high = 0D; + double high2 = 0D; + if(bmiD <= 18.5) { + title = "低体重推荐增重均值"; + low = 1.2; + low2 = 11.9; + high = 3.8; + high2 = 18.1; + color = "#00CD00"; + } else if(bmiD > 18.5 && bmiD <= 24.9){ + title = "标准体重推荐增重均值"; + low = 1.4; + low2 = 11.9; + high = 3.2; + high2 = 15.9; + color = "#7EC0EE"; + } else if(bmiD > 24.9 && bmiD < 30){ + title = "超重体重推荐增重均值"; + low = 1.1 ; + low2 = 7.1; + high = 3.1; + high2 = 11.6; + color = "#CD3333"; + } else if(bmiD >= 30){ + title = "肥胖体重推荐增重均值"; + low = 0.8 ; + low2 = 4.9; + high = 2.1; + high2 = 8.9; + color = "#CD00CD"; + } + + Map highMap = new LinkedHashMap<>(); + Map normalMap = new LinkedHashMap<>(); + Map lowMap = new LinkedHashMap<>(); + List xAxis = new ArrayList<>(); + double avg = low / 13; + for (int i = 0; i <= 13; i++) { + lowMap.put(i, i * avg); + } + double avg2 = (low2 - low) / 27; + for (int i = 1; i <= 27; i++) { + lowMap.put(13 + i, low + i * avg2); + } + double highAvg = high / 13; + for (int i = 0; i <= 13; i++) { + highMap.put(i, i * highAvg); + } + double highAvg2 = (high2 - high) / 27; + for (int i = 1; i <= 27; i++) { + highMap.put(13 + i, high + i * highAvg2); + } + for (int i = 0; i <= 40; i++) { + normalMap.put(i, (highMap.get(i) + lowMap.get(i)) / 2); + } + + Map reportModel = new LinkedHashMap<>(); + Map series = new LinkedHashMap<>(); + series.put("lowData", MathUtil.doubleFormat2(CollectionUtils.getValList(lowMap))); + series.put("highData", MathUtil.doubleFormat2(CollectionUtils.getValList(highMap))); + series.put("normalData", MathUtil.doubleFormat2(CollectionUtils.getValList(normalMap))); + + series.put("dayWeights", restList); + + reportModel.put("series", series); + + reportModel.put("title", title); + reportModel.put("color", color); + + for (int i = 0; i <= 40; i++) { + xAxis.add(i); + } + reportModel.put("xAxis", xAxis); + + List list = new ArrayList<>(); + if(MapUtils.isNotEmpty(weights)) { + Iterator> iterator = weights.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry next = iterator.next(); + list.add(Arrays.asList(next.getKey(), getDiff(beforeWeight, next.getValue()))); + } + } + series.put("portData", list); + series.put("portData", list); + restMap.put("reportModel", reportModel); + } + private Double getDiff(String before, String now) { + if(StringUtils.isEmpty(before) || StringUtils.isEmpty(now)) { + return 0D; + } + Double b = Double.parseDouble(before); + Double n = Double.parseDouble(now); + return MathUtil.doubleFormat2(n - b); + } - return RespBuilder.buildSuccess(restList); + private Object parseNull(String s, Object defaultVal) { + if(StringUtils.isEmpty(s)) { + return defaultVal; + } + return s; } private List getPatients(String provinceId, String cityId, String aredId, String streetId, -- 1.8.3.1