From 70c2379addcc5c28adf4640964973c736e6be8b2 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Fri, 11 Jan 2019 11:31:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A8=81=E6=B5=B7=E4=BD=93=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/biz/dal/IPatientWeightDao.java | 1 + .../biz/dal/impl/PatientWeightDaoImpl.java | 5 + .../biz/service/PatientWeightService2.java | 4 + .../web/service/impl/PatientWeightServiceImpl.java | 150 ++++++++++++++------- 4 files changed, 109 insertions(+), 51 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientWeightDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientWeightDao.java index d93d0d5..b74940c 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientWeightDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientWeightDao.java @@ -13,6 +13,7 @@ public interface IPatientWeightDao { void add(PatientWeight patientWeight); void updatePatient(Query query, PatientWeight patientWeight); + void updatePatientOnline(Query query, PatientWeight patientWeight); List queryPatientWeight(Query query); diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientWeightDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientWeightDaoImpl.java index 0faca44..e6b6c7d 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientWeightDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientWeightDaoImpl.java @@ -26,6 +26,11 @@ public class PatientWeightDaoImpl extends BaseMongoDAOImpl implem update(query, patientWeight); } + @Override + public void updatePatientOnline(Query query, PatientWeight patientWeight) { + update(query, patientWeight); + } + @Override public List queryPatientWeight(Query query) { diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientWeightService2.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientWeightService2.java index 14bb3ba..8710478 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientWeightService2.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientWeightService2.java @@ -23,6 +23,10 @@ public class PatientWeightService2 { patientWeightDao.updatePatient(query, patientWeight); } + public void updateOnline(Query query, PatientWeight patientWeight) { + patientWeightDao.updatePatientOnline(query, patientWeight); + } + public List queryPatientWeight(Query query) { return patientWeightDao.queryPatientWeight(query); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java index ba72785..3d2b86a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java @@ -1045,21 +1045,51 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient return level; } + private int handleWeightExcLevel(Double bmiD,String bregmatic,String beforeWeight,String weight,int week) + { + String lbmiStr = ""; + int level = 0; + //空和1表示单胎 + if (!StringUtils.isNotEmpty(bregmatic) || "1".equals(bregmatic)) + { + + if (bmiD < 18.5) { + lbmiStr = "BMI<18.5"; + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.2); + } else if (bmiD >= 18.5 && bmiD <= 24.9) { + lbmiStr = "BMI=18.5-24.9"; + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.2); + } else if (bmiD > 24.9 && bmiD < 30) { + lbmiStr = "BMI=25-29.9"; + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.25); + } else if (bmiD >= 30) { + lbmiStr = "BMI≥30"; + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.25); + } + } + else + { + if (bmiD <= 24.9) { + lbmiStr = "BMI≤24.9"; + level = getDLevel(lbmiStr, week, beforeWeight, weight, 1, 1.15); + } else if (bmiD >= 25 && bmiD <= 29.9) { + lbmiStr = "BMI=25-29.9"; + level = getDLevel(lbmiStr, week, beforeWeight, weight,1,1.2); + } else if (bmiD >= 30) { + lbmiStr = "BMI≥30"; + level = getDLevel(lbmiStr, week, beforeWeight, weight,1,1.2); + } + } + return level; + } + /** + *增重评定规则:单胎:BMI﹤ 18.5 、BMI=18.5-24.9,高于上限20%且大于等于1kg;BMI=25-29.9 、BMI≥30,高于上限25%且大于等于1kg, + * 则判断为异常需警示的情况;双胎:BMI≤24.9 ,高于上限15%且大于等于1kg;BMI=25-29.9、BMI≥30, 高于上限20%且大于等于1kg,则判断为异常需警示的情况 + *减重评定规则:单胎:BMI﹤ 18.5 、BMI=18.5-24.9,低于下限20%且大于等于1kg;BMI=25-29.9 、BMI≥30,低于下限25%且大于等于1kg, + *则判断为异常需警示的情况;双胎:BMI≤24.9 ,低于下限15%且大于等于1kg;BMI=25-29.9、BMI≥30, 低于下限20%且大于等于1kg,则判断为异常需警示的情况。 + * * BMI指数: - * 低体重(<18.5) 0-13周 13-40周 - * 最低 0-1.2 1.2-11.9 - * 最高 0-3.8 3.8-18.1 - * 标准 (18.5-24.9) 0-13周 13-40周 - * 最低 0-1.4 1.4-11.9 - * 最高 0-3.2 3.2-15.9 - *

- * 超重(25.0-29.9) 0-13周 13-40周 - * 最低 0-1.1 1.1-7.1 - * 最高 0-3.1 3.2-11.6 - * 肥胖 (>=30.0) 0-13周 13-40周 - * 最低 0-0.8 0.9-4.9 - * 最高 0-2.1 2.1-8.9 */ public void setAppReport(Date lastMenses,PatientWeight patientWeight,Map restMap, Map weights) { @@ -1079,41 +1109,10 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient if (MapUtils.isNotEmpty(dayWeights)) { for (String key : dayWeights.keySet()) { - int level = 0; //-1过低 0正常 1过高 - String lbmiStr = ""; int week = DateUtil.getWeek2(lastMenses, DateUtil.parseYMD(key)); Map temp = new LinkedHashMap<>(); - //空和1表示单胎 - if (!StringUtils.isNotEmpty(bregmatic) || "1".equals(bregmatic)) - { - - if (bmiD < 18.5) { - lbmiStr = "BMI<18.5"; - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2); - } else if (bmiD >= 18.5 && bmiD <= 24.9) { - lbmiStr = "BMI=18.5-24.9"; - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2); - } else if (bmiD > 24.9 && bmiD < 30) { - lbmiStr = "BMI=25-29.9"; - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.25); - } else if (bmiD >= 30) { - lbmiStr = "BMI≥30"; - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.25); - } - } - else - { - if (bmiD <= 24.9) { - lbmiStr = "BMI≤24.9"; - level = getDLevel(lbmiStr, week, beforeWeight, dayWeights.get(key), 1, 1.15); - } else if (bmiD >= 25 && bmiD <= 29.9) { - lbmiStr = "BMI=25-29.9"; - level = getDLevel(lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2); - } else if (bmiD >= 30) { - lbmiStr = "BMI≥30"; - level = getDLevel(lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2); - } - } + //-1过低 0正常 1过高 + int level = handleWeightExcLevel(bmiD, bregmatic,beforeWeight,dayWeights.get(key), week); temp.put("nowWeight", dayWeights.get(key)); temp.put("recordTime", key); @@ -1799,13 +1798,13 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient { patientWeight.setSevenSend(1); content = "亲爱的准妈妈您好,我是您的私人体重管理医生,您目前已经很久没有记录您的体重值了,为了您和您孩子的健康,请您务必每天记录一下自己的体重,好让我们能随时关注到您和宝宝的健康状况,谢谢!"; - patientWeightService2.update(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight); + patientWeightService2.updateOnline(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight); } else if (type == 3) { patientWeight.setExceptionSend(1); content = "亲爱的准妈妈您好,我是您的私人体重管理医生,您目前的体重数据十分不理想,请您迅速与我联系或来院进行复查身体情况。"; - patientWeightService2.update(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight); + patientWeightService2.updateOnline(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight); } mr.setFirst("【" + messagePrefix + "】" + content); mr.setObjType(ServiceObjEnums.YUNOBJ.getId()); @@ -1870,7 +1869,11 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient { for (PatientService ps : list) { - patientIds.add(ps.getParentid()); + Patients pat = patientsService.findOnePatientById(ps.getParentid()); + if (pat != null && pat.getType() == 1) + { + patientIds.add(ps.getParentid()); + } } } @@ -1885,14 +1888,22 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient { cr.and("sevenSend").is(status); } + else if (status != null && status == 0) + { + cr.orOperator(Criteria.where("sevenSend").is(0), Criteria.where("sevenSend").exists(false)); + } } else if (type == 3) { - cr.and("exceptionCount").gte(2); + //cr.and("exceptionCount").gte(2); if (status != null && status == 1) { cr.and("exceptionSend").is(status); } + else if (status != null && status == 0) + { + cr.orOperator(Criteria.where("exceptionSend").is(0), Criteria.where("exceptionSend").exists(false)); + } } List weights = mongoTemplate.find(Query.query(cr), PatientWeight.class); @@ -1900,8 +1911,45 @@ public class PatientWeightServiceImpl extends BaseServiceImpl implements Patient { for (PatientWeight weight : weights) { - Map map = new HashMap(); Patients patients = patientsService.findOnePatientById(weight.getPatientId()); + if (type == 3) + { + Double bmiD = 20D; + if (StringUtils.isNotEmpty(weight.getBmi())) { + bmiD = Double.parseDouble(weight.getBmi()); + } + Map dayWeights = weight.getDayWeights(); + dayWeights = sortMapByKey(dayWeights); + if (MapUtils.isNotEmpty(dayWeights) && dayWeights.size() > 1) { + int index = 0; + int count = 0; + for (String key : weight.getDayWeights().keySet()) { + int week = DateUtil.getWeek2(patients.getLastMenses(), DateUtil.parseYMD(key)); + //-1过低 0正常 1过高 + int level = handleWeightExcLevel(bmiD, weight.getBregmatic(),weight.getBeforeWeight(),dayWeights.get(key), week); + if (level != 0) + { + count++; + } + index++; + if (index == 2) + { + break; + } + } + if (count != 2) + { + continue; + } + } + else + { + continue; + } + } + Map map = new HashMap(); + + map.put("patientId",patients != null ? patients.getId() : ""); map.put("name",patients != null ? patients.getUsername() : ""); map.put("age",patients != null ? DateUtil.getAge(patients.getBirth(), weight.getModified()): ""); map.put("week",patients != null ? DateUtil.getWeekDesc(patients.getLastMenses(), weight.getModified()): ""); -- 1.8.3.1