Commit 46cd9d8e708be30f8a007317ac589605e6459030

Authored by liquanyu
1 parent 9ed9a9ff2e

体重报告

Showing 1 changed file with 144 additions and 31 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java View file @ 46cd9d8
... ... @@ -545,6 +545,7 @@
545 545 String yunqi = "孕" + String.valueOf(week) + "期";
546 546 map.put("yunqi", yunqi);
547 547 }
  548 + map.put("week",week);
548 549 map.put("height", patientWeight.getBeforeHeight() == null ? "" : MathUtil.doubleFormat(Double.parseDouble(patientWeight.getBeforeHeight()) / 100) + " 米");
549 550 map.put("beforeWeight", patientWeight.getBeforeWeight() == null ? "" : patientWeight.getBeforeWeight() + " 公斤");
550 551 map.put("bmi", patientWeight.getBmi());
... ... @@ -560,8 +561,18 @@
560 561 if (week > 5 && week < 41) {
561 562 double bmi = Double.parseDouble(patientWeight.getBmi());
562 563 //根据高危获取不同的卡路里计算公式
563   - Map<String, String> kmap = computeKulServiceManager.getComputeKulByRisk(rid).getComputeKul(Double.parseDouble(patientWeight.getBeforeWeight()),
564   - Double.parseDouble(patientWeight.getNowWeight()), week, bmi, patientWeight.getBregmatic(), patientWeight.getBeforeHeight());
  564 +
  565 + Map<String, String> kmap = null;
  566 + //威海市妇幼热量单独计算
  567 + if ("2100001635".equals(hospitalId))
  568 + {
  569 + kmap = getWhComputeKul(week,Double.parseDouble(patientWeight.getNowWeight()), Double.parseDouble(patientWeight.getBeforeWeight()), patientWeight.getBregmatic(), bmi);
  570 + }
  571 + else
  572 + {
  573 + kmap = computeKulServiceManager.getComputeKulByRisk(rid).getComputeKul(Double.parseDouble(patientWeight.getBeforeWeight()),
  574 + Double.parseDouble(patientWeight.getNowWeight()), week, bmi, patientWeight.getBregmatic(), patientWeight.getBeforeHeight());
  575 + }
565 576 if (map == null || map.size() == 0) {
566 577 return null;
567 578 }
... ... @@ -578,6 +589,7 @@
578 589 setYSYZ(map,ComputeKulServiceManager.getPatientGuideMap().get(rid+nsArea));
579 590 //设置饮食原则
580 591 setYYZN(map,ComputeKulServiceManager.getPatientGuideMap().get(rid+nsArea));
  592 +
581 593 }
582 594 }
583 595 }
... ... @@ -597,6 +609,7 @@
597 609 return RespBuilder.buildSuccess();
598 610 }
599 611  
  612 +
600 613 @Override
601 614 public BaseResponse wxReport(String pid) {
602 615 PatientWeight patientWeight = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid).and("yn").ne("0")), PatientWeight.class);
... ... @@ -898,7 +911,6 @@
898 911 map.put("ysyz", patientGuide.getYsyz());
899 912 map.put("cookbookTitle", "饮食原则");
900 913 }
901   -
902 914 private void setYYZN(Map<String, Object> map, ComputeKulServiceManager.PatientGuide patientGuide) {
903 915 if(null==patientGuide){
904 916 return;
... ... @@ -1099,8 +1111,7 @@
1099 1111 }
1100 1112 String title = "";
1101 1113 String color = "";
1102   - double low = 1;
1103   - double high = 1.5D;
  1114 +
1104 1115 String bmiStr = "";
1105 1116  
1106 1117 //空和1表示单胎
1107 1118  
1108 1119  
1109 1120  
... ... @@ -1138,12 +1149,47 @@
1138 1149 }
1139 1150 }
1140 1151  
  1152 + List<Integer> xAxis = new ArrayList<>();
1141 1153  
  1154 + Map<String, Object> reportModel = new LinkedHashMap<>();
  1155 + Map<String, Object> series = new LinkedHashMap<>();
  1156 + getSeries(series, bmiStr, bregmatic);
  1157 +
  1158 + series.put("dayWeights", restList);
  1159 +
  1160 + reportModel.put("series", series);
  1161 +
  1162 + reportModel.put("title", title);
  1163 + reportModel.put("color", color);
  1164 +
  1165 + for (int i = 1; i <= 40; i++) {
  1166 + xAxis.add(i);
  1167 + }
  1168 + reportModel.put("xAxis", xAxis);
  1169 +
  1170 + List<Object> list = new ArrayList<>();
  1171 + if (MapUtils.isNotEmpty(weights)) {
  1172 + Iterator<Map.Entry<Integer, String>> iterator = weights.entrySet().iterator();
  1173 + while (iterator.hasNext()) {
  1174 + Map.Entry<Integer, String> next = iterator.next();
  1175 + list.add(Arrays.asList(next.getKey(), getDiff(beforeWeight, next.getValue())));
  1176 + }
  1177 + }
  1178 + series.put("portData", list);
  1179 + restMap.put("reportModel", reportModel);
  1180 + }
  1181 +
  1182 +
  1183 + public void getSeries(Map<String, Object> series,String bmiStr,String bregmatic)
  1184 + {
  1185 +
1142 1186 Map<Integer, Double> highMap = new LinkedHashMap<>();
1143 1187 Map<Integer, Double> normalMap = new LinkedHashMap<>();
1144 1188 Map<Integer, Double> lowMap = new LinkedHashMap<>();
1145   - List<Integer> xAxis = new ArrayList<>();
1146 1189  
  1190 + double low = 1;
  1191 + double high = 1.5D;
  1192 +
1147 1193 double avg = Double.valueOf(String.format("%.2f", low / 12));
1148 1194 for (int i = 1; i <= 12; i++) {
1149 1195 lowMap.put(i, Double.valueOf(String.format("%.2f", i * avg)));
1150 1196  
... ... @@ -1175,34 +1221,9 @@
1175 1221 normalMap.put(i, Double.valueOf(String.format("%.2f", (highMap.get(i) + lowMap.get(i)) / 2)));
1176 1222 }
1177 1223  
1178   - Map<String, Object> reportModel = new LinkedHashMap<>();
1179   - Map<String, Object> series = new LinkedHashMap<>();
1180 1224 series.put("lowData", CollectionUtils.getValList(lowMap));
1181 1225 series.put("highData", CollectionUtils.getValList(highMap));
1182 1226 series.put("normalData", CollectionUtils.getValList(normalMap));
1183   -
1184   - series.put("dayWeights", restList);
1185   -
1186   - reportModel.put("series", series);
1187   -
1188   - reportModel.put("title", title);
1189   - reportModel.put("color", color);
1190   -
1191   - for (int i = 1; i <= 40; i++) {
1192   - xAxis.add(i);
1193   - }
1194   - reportModel.put("xAxis", xAxis);
1195   -
1196   - List<Object> list = new ArrayList<>();
1197   - if (MapUtils.isNotEmpty(weights)) {
1198   - Iterator<Map.Entry<Integer, String>> iterator = weights.entrySet().iterator();
1199   - while (iterator.hasNext()) {
1200   - Map.Entry<Integer, String> next = iterator.next();
1201   - list.add(Arrays.asList(next.getKey(), getDiff(beforeWeight, next.getValue())));
1202   - }
1203   - }
1204   - series.put("portData", list);
1205   - restMap.put("reportModel", reportModel);
1206 1227 }
1207 1228  
1208 1229 /**
... ... @@ -1367,6 +1388,98 @@
1367 1388 map.put("status", status);
1368 1389 return map;
1369 1390 }
  1391 +
  1392 +
  1393 +
  1394 + public Map<String, String> getWhComputeKul(int week, double currentWeight,double beforeWeight,String bregmatic, double bmiD) {
  1395 +
  1396 + String bmiStr = null;
  1397 + //空和1表示单胎
  1398 + if (!StringUtils.isNotEmpty(bregmatic) || "1".equals(bregmatic)) {
  1399 + if (bmiD < 18.5) {
  1400 + bmiStr = "BMI<18.5";
  1401 + } else if (bmiD >= 18.5 && bmiD <= 24.9) {
  1402 + bmiStr = "BMI=18.5-24.9";
  1403 + } else if (bmiD > 24.9 && bmiD < 30) {
  1404 + bmiStr = "BMI=25-29.9";
  1405 + } else if (bmiD >= 30) {
  1406 + bmiStr = "BMI≥30";
  1407 + }
  1408 + } else {
  1409 + if (bmiD <= 24.9) {
  1410 + bmiStr = "BMI≤24.9";
  1411 + } else if (bmiD >= 25 && bmiD <= 29.9) {
  1412 + bmiStr = "BMI=25-29.9";
  1413 + } else if (bmiD >= 30) {
  1414 + bmiStr = "BMI≥30";
  1415 + }
  1416 + }
  1417 +
  1418 + Map<String, Object> series = new LinkedHashMap<>();
  1419 + getSeries(series, bmiStr, bregmatic);
  1420 +
  1421 +
  1422 + List<Double> highMap = (List<Double>)series.get("highMap");
  1423 + List<Double> lowMap = (List<Double>)series.get("lowMap");
  1424 +
  1425 + Map<String, String> map = new HashMap<>();
  1426 +
  1427 + double kulStart = 0;
  1428 + double kulEnd = 0;
  1429 + String status = "";
  1430 +
  1431 + double add = Double.valueOf(String.format("%.2f", currentWeight - beforeWeight));
  1432 +
  1433 + double hvalue = highMap.get(week-1);
  1434 + double lvalue = lowMap.get(week - 1);
  1435 +
  1436 + //孕早期
  1437 + if (week <= 12) {
  1438 + if (add < lvalue) {
  1439 + status = "低于";
  1440 + kulStart = currentWeight * 30 ;
  1441 + } else if (add >= lvalue && add <= hvalue) {
  1442 + status = "处于";
  1443 + kulStart = currentWeight * 25;
  1444 + } else {
  1445 + status = "高于";
  1446 + kulStart = currentWeight * 20;
  1447 + }
  1448 +
  1449 + }
  1450 + //孕中期
  1451 + else if (week < 28) {
  1452 + if (add < lvalue) {
  1453 + status = "低于";
  1454 + kulStart = currentWeight * 30 +340;
  1455 + } else if (add >= lvalue && add <= hvalue) {
  1456 + status = "处于";
  1457 + kulStart = currentWeight * 25 + 340;
  1458 + } else {
  1459 + status = "高于";
  1460 + kulStart = currentWeight * 20 + 340;
  1461 + }
  1462 + }
  1463 + else
  1464 + {
  1465 + if (add < lvalue) {
  1466 + status = "低于";
  1467 + kulStart = currentWeight * 30 + 450;
  1468 + } else if (add >= lvalue && add <= hvalue) {
  1469 + status = "处于";
  1470 + kulStart = currentWeight * 25 + 450;
  1471 + } else {
  1472 + status = "高于";
  1473 + kulStart = currentWeight * 20 + 450;
  1474 + }
  1475 + }
  1476 + kulEnd = kulStart;
  1477 + map.put("kulStart", String.valueOf(kulStart));
  1478 + map.put("kulEnd", String.valueOf(kulEnd));
  1479 + map.put("status", status);
  1480 + return map;
  1481 + }
  1482 +
1370 1483  
1371 1484 /**
1372 1485 * 获取高危的饮食原则