Commit 70c2379addcc5c28adf4640964973c736e6be8b2

Authored by liquanyu
1 parent c3ad7d3ebd

威海体重

Showing 4 changed files with 109 additions and 51 deletions

platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientWeightDao.java View file @ 70c2379
... ... @@ -13,6 +13,7 @@
13 13 void add(PatientWeight patientWeight);
14 14  
15 15 void updatePatient(Query query, PatientWeight patientWeight);
  16 + void updatePatientOnline(Query query, PatientWeight patientWeight);
16 17  
17 18 List<PatientWeight> queryPatientWeight(Query query);
18 19  
platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientWeightDaoImpl.java View file @ 70c2379
... ... @@ -26,6 +26,11 @@
26 26 update(query, patientWeight);
27 27 }
28 28  
  29 + @Override
  30 + public void updatePatientOnline(Query query, PatientWeight patientWeight) {
  31 + update(query, patientWeight);
  32 + }
  33 +
29 34  
30 35 @Override
31 36 public List<PatientWeight> queryPatientWeight(Query query) {
platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientWeightService2.java View file @ 70c2379
... ... @@ -23,6 +23,10 @@
23 23 patientWeightDao.updatePatient(query, patientWeight);
24 24 }
25 25  
  26 + public void updateOnline(Query query, PatientWeight patientWeight) {
  27 + patientWeightDao.updatePatientOnline(query, patientWeight);
  28 + }
  29 +
26 30  
27 31 public List<PatientWeight> queryPatientWeight(Query query) {
28 32 return patientWeightDao.queryPatientWeight(query);
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java View file @ 70c2379
... ... @@ -1045,21 +1045,51 @@
1045 1045 return level;
1046 1046 }
1047 1047  
  1048 + private int handleWeightExcLevel(Double bmiD,String bregmatic,String beforeWeight,String weight,int week)
  1049 + {
  1050 + String lbmiStr = "";
  1051 + int level = 0;
  1052 + //空和1表示单胎
  1053 + if (!StringUtils.isNotEmpty(bregmatic) || "1".equals(bregmatic))
  1054 + {
  1055 +
  1056 + if (bmiD < 18.5) {
  1057 + lbmiStr = "BMI<18.5";
  1058 + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.2);
  1059 + } else if (bmiD >= 18.5 && bmiD <= 24.9) {
  1060 + lbmiStr = "BMI=18.5-24.9";
  1061 + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.2);
  1062 + } else if (bmiD > 24.9 && bmiD < 30) {
  1063 + lbmiStr = "BMI=25-29.9";
  1064 + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.25);
  1065 + } else if (bmiD >= 30) {
  1066 + lbmiStr = "BMI≥30";
  1067 + level = getLevel( lbmiStr, week, beforeWeight, weight,1,1.25);
  1068 + }
  1069 + }
  1070 + else
  1071 + {
  1072 + if (bmiD <= 24.9) {
  1073 + lbmiStr = "BMI≤24.9";
  1074 + level = getDLevel(lbmiStr, week, beforeWeight, weight, 1, 1.15);
  1075 + } else if (bmiD >= 25 && bmiD <= 29.9) {
  1076 + lbmiStr = "BMI=25-29.9";
  1077 + level = getDLevel(lbmiStr, week, beforeWeight, weight,1,1.2);
  1078 + } else if (bmiD >= 30) {
  1079 + lbmiStr = "BMI≥30";
  1080 + level = getDLevel(lbmiStr, week, beforeWeight, weight,1,1.2);
  1081 + }
  1082 + }
  1083 + return level;
  1084 + }
  1085 +
1048 1086 /**
  1087 + *增重评定规则:单胎:BMI﹤ 18.5 、BMI=18.5-24.9,高于上限20%且大于等于1kg;BMI=25-29.9 、BMI≥30,高于上限25%且大于等于1kg,
  1088 + * 则判断为异常需警示的情况;双胎:BMI≤24.9 ,高于上限15%且大于等于1kg;BMI=25-29.9、BMI≥30, 高于上限20%且大于等于1kg,则判断为异常需警示的情况
  1089 + *减重评定规则:单胎:BMI﹤ 18.5 、BMI=18.5-24.9,低于下限20%且大于等于1kg;BMI=25-29.9 、BMI≥30,低于下限25%且大于等于1kg,
  1090 + *则判断为异常需警示的情况;双胎:BMI≤24.9 ,低于下限15%且大于等于1kg;BMI=25-29.9、BMI≥30, 低于下限20%且大于等于1kg,则判断为异常需警示的情况。
  1091 + *
1049 1092 * BMI指数:
1050   - * 低体重(<18.5) 0-13周 13-40周
1051   - * 最低 0-1.2 1.2-11.9
1052   - * 最高 0-3.8 3.8-18.1
1053   - * 标准 (18.5-24.9) 0-13周 13-40周
1054   - * 最低 0-1.4 1.4-11.9
1055   - * 最高 0-3.2 3.2-15.9
1056   - * <p>
1057   - * 超重(25.0-29.9) 0-13周 13-40周
1058   - * 最低 0-1.1 1.1-7.1
1059   - * 最高 0-3.1 3.2-11.6
1060   - * 肥胖 (>=30.0) 0-13周 13-40周
1061   - * 最低 0-0.8 0.9-4.9
1062   - * 最高 0-2.1 2.1-8.9
1063 1093 */
1064 1094 public void setAppReport(Date lastMenses,PatientWeight patientWeight,Map<String, Object> restMap, Map<Integer, String> weights) {
1065 1095  
1066 1096  
1067 1097  
... ... @@ -1079,42 +1109,11 @@
1079 1109  
1080 1110 if (MapUtils.isNotEmpty(dayWeights)) {
1081 1111 for (String key : dayWeights.keySet()) {
1082   - int level = 0; //-1过低 0正常 1过高
1083   - String lbmiStr = "";
1084 1112 int week = DateUtil.getWeek2(lastMenses, DateUtil.parseYMD(key));
1085 1113 Map<String, Object> temp = new LinkedHashMap<>();
1086   - //空和1表示单胎
1087   - if (!StringUtils.isNotEmpty(bregmatic) || "1".equals(bregmatic))
1088   - {
  1114 + //-1过低 0正常 1过高
  1115 + int level = handleWeightExcLevel(bmiD, bregmatic,beforeWeight,dayWeights.get(key), week);
1089 1116  
1090   - if (bmiD < 18.5) {
1091   - lbmiStr = "BMI<18.5";
1092   - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2);
1093   - } else if (bmiD >= 18.5 && bmiD <= 24.9) {
1094   - lbmiStr = "BMI=18.5-24.9";
1095   - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2);
1096   - } else if (bmiD > 24.9 && bmiD < 30) {
1097   - lbmiStr = "BMI=25-29.9";
1098   - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.25);
1099   - } else if (bmiD >= 30) {
1100   - lbmiStr = "BMI≥30";
1101   - level = getLevel( lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.25);
1102   - }
1103   - }
1104   - else
1105   - {
1106   - if (bmiD <= 24.9) {
1107   - lbmiStr = "BMI≤24.9";
1108   - level = getDLevel(lbmiStr, week, beforeWeight, dayWeights.get(key), 1, 1.15);
1109   - } else if (bmiD >= 25 && bmiD <= 29.9) {
1110   - lbmiStr = "BMI=25-29.9";
1111   - level = getDLevel(lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2);
1112   - } else if (bmiD >= 30) {
1113   - lbmiStr = "BMI≥30";
1114   - level = getDLevel(lbmiStr, week, beforeWeight, dayWeights.get(key),1,1.2);
1115   - }
1116   - }
1117   -
1118 1117 temp.put("nowWeight", dayWeights.get(key));
1119 1118 temp.put("recordTime", key);
1120 1119 temp.put("level", level);
1121 1120  
... ... @@ -1799,13 +1798,13 @@
1799 1798 {
1800 1799 patientWeight.setSevenSend(1);
1801 1800 content = "亲爱的准妈妈您好,我是您的私人体重管理医生,您目前已经很久没有记录您的体重值了,为了您和您孩子的健康,请您务必每天记录一下自己的体重,好让我们能随时关注到您和宝宝的健康状况,谢谢!";
1802   - patientWeightService2.update(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight);
  1801 + patientWeightService2.updateOnline(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight);
1803 1802 }
1804 1803 else if (type == 3)
1805 1804 {
1806 1805 patientWeight.setExceptionSend(1);
1807 1806 content = "亲爱的准妈妈您好,我是您的私人体重管理医生,您目前的体重数据十分不理想,请您迅速与我联系或来院进行复查身体情况。";
1808   - patientWeightService2.update(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight);
  1807 + patientWeightService2.updateOnline(Query.query(Criteria.where("id").is(patientWeight.getId())), patientWeight);
1809 1808 }
1810 1809 mr.setFirst("【" + messagePrefix + "】" + content);
1811 1810 mr.setObjType(ServiceObjEnums.YUNOBJ.getId());
... ... @@ -1870,7 +1869,11 @@
1870 1869 {
1871 1870 for (PatientService ps : list)
1872 1871 {
1873   - patientIds.add(ps.getParentid());
  1872 + Patients pat = patientsService.findOnePatientById(ps.getParentid());
  1873 + if (pat != null && pat.getType() == 1)
  1874 + {
  1875 + patientIds.add(ps.getParentid());
  1876 + }
1874 1877 }
1875 1878 }
1876 1879  
1877 1880  
1878 1881  
... ... @@ -1885,14 +1888,22 @@
1885 1888 {
1886 1889 cr.and("sevenSend").is(status);
1887 1890 }
  1891 + else if (status != null && status == 0)
  1892 + {
  1893 + cr.orOperator(Criteria.where("sevenSend").is(0), Criteria.where("sevenSend").exists(false));
  1894 + }
1888 1895 }
1889 1896 else if (type == 3)
1890 1897 {
1891   - cr.and("exceptionCount").gte(2);
  1898 + //cr.and("exceptionCount").gte(2);
1892 1899 if (status != null && status == 1)
1893 1900 {
1894 1901 cr.and("exceptionSend").is(status);
1895 1902 }
  1903 + else if (status != null && status == 0)
  1904 + {
  1905 + cr.orOperator(Criteria.where("exceptionSend").is(0), Criteria.where("exceptionSend").exists(false));
  1906 + }
1896 1907 }
1897 1908  
1898 1909 List<PatientWeight> weights = mongoTemplate.find(Query.query(cr), PatientWeight.class);
1899 1910  
... ... @@ -1900,8 +1911,45 @@
1900 1911 {
1901 1912 for (PatientWeight weight : weights)
1902 1913 {
1903   - Map map = new HashMap();
1904 1914 Patients patients = patientsService.findOnePatientById(weight.getPatientId());
  1915 + if (type == 3)
  1916 + {
  1917 + Double bmiD = 20D;
  1918 + if (StringUtils.isNotEmpty(weight.getBmi())) {
  1919 + bmiD = Double.parseDouble(weight.getBmi());
  1920 + }
  1921 + Map<String, String> dayWeights = weight.getDayWeights();
  1922 + dayWeights = sortMapByKey(dayWeights);
  1923 + if (MapUtils.isNotEmpty(dayWeights) && dayWeights.size() > 1) {
  1924 + int index = 0;
  1925 + int count = 0;
  1926 + for (String key : weight.getDayWeights().keySet()) {
  1927 + int week = DateUtil.getWeek2(patients.getLastMenses(), DateUtil.parseYMD(key));
  1928 + //-1过低 0正常 1过高
  1929 + int level = handleWeightExcLevel(bmiD, weight.getBregmatic(),weight.getBeforeWeight(),dayWeights.get(key), week);
  1930 + if (level != 0)
  1931 + {
  1932 + count++;
  1933 + }
  1934 + index++;
  1935 + if (index == 2)
  1936 + {
  1937 + break;
  1938 + }
  1939 + }
  1940 + if (count != 2)
  1941 + {
  1942 + continue;
  1943 + }
  1944 + }
  1945 + else
  1946 + {
  1947 + continue;
  1948 + }
  1949 + }
  1950 + Map map = new HashMap();
  1951 +
  1952 + map.put("patientId",patients != null ? patients.getId() : "");
1905 1953 map.put("name",patients != null ? patients.getUsername() : "");
1906 1954 map.put("age",patients != null ? DateUtil.getAge(patients.getBirth(), weight.getModified()): "");
1907 1955 map.put("week",patients != null ? DateUtil.getWeekDesc(patients.getLastMenses(), weight.getModified()): "");