Commit 9874c47c59e7c06d0f301d1c956b197900f576f0

Authored by liquanyu
1 parent 534afd45b5

体重管理

Showing 5 changed files with 262 additions and 148 deletions

platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java View file @ 9874c47
... ... @@ -798,6 +798,8 @@
798 798 MongoTemplate mongoTemplate
799 799 = (MongoTemplate) applicationContext.getBean("mongoTemplate");
800 800 mongoTemplate.getDb().authenticate("platform", "platform123".toCharArray());
  801 +
  802 +
801 803 File file = new File(fileName);
802 804 Workbook wb = null;
803 805 try {
... ... @@ -860,7 +862,7 @@
860 862 if(rows > 0){
861 863 //遍历每行
862 864 for(int i = 1 ;i < rows ; i++){
863   -
  865 + System.out.println("rows="+i);
864 866 WeightConfigModel model = new WeightConfigModel();
865 867  
866 868 Cell[] cells = s.getRow(i);
867 869  
868 870  
869 871  
870 872  
871 873  
872 874  
873 875  
874 876  
875 877  
876 878  
... ... @@ -869,41 +871,48 @@
869 871 for (int j = 0 ; j < cells.length ; j ++)
870 872 {
871 873 String str = cells[j].getContents().trim();
  874 + if (!com.lyms.platform.common.utils.StringUtils.isNotEmpty(str))
  875 + {
  876 + continue;
  877 + }
872 878 switch (j)
873 879 {
874 880 case 0:
875 881 model.setKcal(Double.parseDouble(str));
876 882 continue;
877 883 case 1:
878   - String[] arr = str.split("-");
879   - model.setKcalStart(Double.parseDouble(arr[0]));
880   - model.setKcalEnd(Double.parseDouble(arr[1]));
  884 + model.setBreakfast(str);
881 885 continue;
882 886 case 2:
883   - model.setBreakfast(str);
  887 + model.setBreakfastAdd(str);
884 888 continue;
885 889 case 3:
886   - model.setBreakfastAdd(str);
  890 + model.setLunch(str);
887 891 continue;
888 892 case 4:
889   - model.setLunch(str);
  893 + model.setLunchAdd(str);
890 894 continue;
891 895 case 5:
892   - model.setLunchAdd(str);
  896 + model.setDinner(str);
893 897 continue;
894 898 case 6:
895   - model.setDinner(str);
  899 + model.setDinnerAdd(str);
896 900 continue;
897 901 case 7:
898   - model.setDinnerAdd(str);
  902 + model.setNorthSouth(str);
899 903 continue;
900 904 case 8:
901   - model.setNorthSouth(str);
  905 + List<String> list1 = Arrays.asList(str.split("\n"));
  906 + model.setEarlySuggests(list1);
902 907 continue;
903 908 case 9:
904   - List<String> list1 = Arrays.asList(str.split("\n"));
905   - model.setSuggests(list1);
  909 + List<String> list2 = Arrays.asList(str.split("\n"));
  910 + model.setMiddleSuggests(list2);
906 911 continue;
  912 + case 10:
  913 + List<String> list3 = Arrays.asList(str.split("\n"));
  914 + model.setLaterSuggests(list3);
  915 + continue;
907 916 }
908 917 }
909 918  
910 919  
911 920  
912 921  
913 922  
914 923  
... ... @@ -944,33 +953,35 @@
944 953 {
945 954  
946 955 String str = cells[j].getContents().trim();
  956 + if (!com.lyms.platform.common.utils.StringUtils.isNotEmpty(str))
  957 + {
  958 + continue;
  959 + }
947 960 switch (j)
948 961 {
949 962 case 0:
950 963 cookbook.setKcal(Double.parseDouble(str));
951 964 continue;
952 965 case 1:
953   - String[] arr = str.split("-");
954   - cookbook.setKcalStart(Double.parseDouble(arr[0]));
955   - cookbook.setKcalEnd(Double.parseDouble(arr[1]));
956   - continue;
957   - case 2:
958 966 cookbook.setVegetable(str);
959 967 continue;
960   - case 3:
  968 + case 2:
961 969 cookbook.setFoodMaterial(str);
962 970 continue;
963   - case 4:
  971 + case 3:
964 972 List<String> list1 = Arrays.asList(str.split("\n"));
965 973 cookbook.setMakeMethod(list1);
966 974 continue;
  975 + case 4:
  976 + cookbook.setNorthSouth(str);
  977 + continue;
967 978 }
968 979  
969 980  
970 981 }
971 982  
972 983 WeightConfigModel weightConfigModel =
973   - mongoTemplate.findOne(Query.query(Criteria.where("kcal").is(cookbook.getKcal())),
  984 + mongoTemplate.findOne(Query.query(Criteria.where("kcal").is(cookbook.getKcal()).and("northSouth").is(cookbook.getNorthSouth())),
974 985 WeightConfigModel.class);
975 986  
976 987 List<WeightConfigModel.Cookbook> cookbooks = weightConfigModel.getCookbooks();
... ... @@ -1001,9 +1012,9 @@
1001 1012  
1002 1013  
1003 1014 public static void main(String[] args) {
1004   - weightWeek("F:\\体重与营养管理\\第三版体重配置模板.xls");
1005   - weightMange("F:\\体重与营养管理\\第三版体重配置模板.xls");
1006   - weightFood("F:\\体重与营养管理\\第三版体重配置模板.xls");
  1015 + weightWeek("F:\\体重与营养管理\\体重与营养管理第三版(北方).xls");
  1016 + weightMange("F:\\体重与营养管理\\体重与营养管理第三版(北方).xls");
  1017 + weightFood("F:\\体重与营养管理\\体重与营养管理第三版(北方).xls");
1007 1018 }
1008 1019  
1009 1020 public static void addBaby(ApplicationContext applicationContext) {
platform-dal/src/main/java/com/lyms/platform/pojo/WeightConfigModel.java View file @ 9874c47
... ... @@ -13,9 +13,6 @@
13 13 private String id;
14 14 private String week;//孕周
15 15 private Double kcal; //整值卡路里
16   - private Double kcalStart; //整值卡路里区间值
17   - private Double kcalEnd; //整值卡路里区间值
18   -
19 16 private String weekContent;//当前孕周的营养指南
20 17  
21 18 private String breakfast;//早餐
... ... @@ -29,7 +26,9 @@
29 26 private List<Cookbook> cookbooks;
30 27  
31 28 private String northSouth;//南北
32   - private List<String> suggests;//建议
  29 + private List<String> earlySuggests;//早期建议
  30 + private List<String> middleSuggests;//中期建议
  31 + private List<String> laterSuggests;//晚期建议
33 32  
34 33 public String getId() {
35 34 return id;
36 35  
37 36  
... ... @@ -55,22 +54,8 @@
55 54 this.kcal = kcal;
56 55 }
57 56  
58   - public Double getKcalStart() {
59   - return kcalStart;
60   - }
61 57  
62   - public void setKcalStart(Double kcalStart) {
63   - this.kcalStart = kcalStart;
64   - }
65 58  
66   - public Double getKcalEnd() {
67   - return kcalEnd;
68   - }
69   -
70   - public void setKcalEnd(Double kcalEnd) {
71   - this.kcalEnd = kcalEnd;
72   - }
73   -
74 59 public String getWeekContent() {
75 60 return weekContent;
76 61 }
77 62  
78 63  
79 64  
... ... @@ -143,22 +128,36 @@
143 128 this.northSouth = northSouth;
144 129 }
145 130  
146   - public List<String> getSuggests() {
147   - return suggests;
  131 + public List<String> getEarlySuggests() {
  132 + return earlySuggests;
148 133 }
149 134  
150   - public void setSuggests(List<String> suggests) {
151   - this.suggests = suggests;
  135 + public void setEarlySuggests(List<String> earlySuggests) {
  136 + this.earlySuggests = earlySuggests;
152 137 }
153 138  
  139 + public List<String> getMiddleSuggests() {
  140 + return middleSuggests;
  141 + }
  142 +
  143 + public void setMiddleSuggests(List<String> middleSuggests) {
  144 + this.middleSuggests = middleSuggests;
  145 + }
  146 +
  147 + public List<String> getLaterSuggests() {
  148 + return laterSuggests;
  149 + }
  150 +
  151 + public void setLaterSuggests(List<String> laterSuggests) {
  152 + this.laterSuggests = laterSuggests;
  153 + }
  154 +
154 155 @Override
155 156 public String toString() {
156 157 return "WeightManageConfigModel{" +
157 158 "id='" + id + '\'' +
158 159 ", week='" + week + '\'' +
159 160 ", kcal=" + kcal +
160   - ", kcalStart=" + kcalStart +
161   - ", kcalEnd=" + kcalEnd +
162 161 ", weekContent='" + weekContent + '\'' +
163 162 ", breakfast='" + breakfast + '\'' +
164 163 ", breakfastAdd='" + breakfastAdd + '\'' +
... ... @@ -168,7 +167,6 @@
168 167 ", dinnerAdd='" + dinnerAdd + '\'' +
169 168 ", cookbooks=" + cookbooks +
170 169 ", northSouth='" + northSouth + '\'' +
171   - ", suggests=" + suggests +
172 170 '}';
173 171 }
174 172  
175 173  
176 174  
... ... @@ -177,31 +175,21 @@
177 175 private String foodMaterial; //食材
178 176 private List<String> makeMethod;//制作方法
179 177 private Double kcal; //整值卡路里
180   - private Double kcalStart; //整值卡路里区间值
181   - private Double kcalEnd; //整值卡路里区间值
  178 + private String northSouth;//南北
  179 + public String getNorthSouth() {
  180 + return northSouth;
  181 + }
182 182  
  183 + public void setNorthSouth(String northSouth) {
  184 + this.northSouth = northSouth;
  185 + }
  186 +
183 187 public Double getKcal() {
184 188 return kcal;
185 189 }
186 190  
187 191 public void setKcal(Double kcal) {
188 192 this.kcal = kcal;
189   - }
190   -
191   - public Double getKcalStart() {
192   - return kcalStart;
193   - }
194   -
195   - public void setKcalStart(Double kcalStart) {
196   - this.kcalStart = kcalStart;
197   - }
198   -
199   - public Double getKcalEnd() {
200   - return kcalEnd;
201   - }
202   -
203   - public void setKcalEnd(Double kcalEnd) {
204   - this.kcalEnd = kcalEnd;
205 193 }
206 194  
207 195 public String getVegetable() {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientWeightController.java View file @ 9874c47
... ... @@ -85,8 +85,9 @@
85 85 */
86 86 @ResponseBody
87 87 @RequestMapping(value = "report/{id}", method = RequestMethod.GET)
88   - public BaseResponse report(@PathVariable String id) {
89   - return patientWeightService.report(id);
  88 + @TokenRequired
  89 + public BaseResponse report(@PathVariable String id,HttpServletRequest request) {
  90 + return patientWeightService.report(id,getUserId(request));
90 91 }
91 92  
92 93 /**
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/PatientWeightService.java View file @ 9874c47
... ... @@ -19,7 +19,7 @@
19 19  
20 20 BaseResponse delete(String id);
21 21  
22   - BaseResponse report(String id);
  22 + BaseResponse report(String id,Integer userId);
23 23  
24 24 BaseResponse wxReport(String pid);
25 25  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java View file @ 9874c47
1 1 package com.lyms.platform.operate.web.service.impl;
2 2  
  3 +import com.lyms.platform.biz.service.BasicConfigService;
3 4 import com.lyms.platform.biz.service.DoctorUserMapService;
4 5 import com.lyms.platform.biz.service.PatientWeightService2;
5 6 import com.lyms.platform.biz.service.PatientsService;
... ... @@ -12,6 +13,7 @@
12 13 import com.lyms.platform.common.result.ResponseCode;
13 14 import com.lyms.platform.common.utils.*;
14 15 import com.lyms.platform.operate.web.facade.AutoMatchFacade;
  16 +import com.lyms.platform.operate.web.facade.BasicConfigFacade;
15 17 import com.lyms.platform.operate.web.facade.OperateLogFacade;
16 18 import com.lyms.platform.operate.web.facade.OrganizationGroupsFacade;
17 19 import com.lyms.platform.operate.web.service.PatientWeightService;
... ... @@ -19,10 +21,10 @@
19 21 import com.lyms.platform.operate.web.utils.MathUtil;
20 22 import com.lyms.platform.operate.web.utils.MongoUtil;
21 23 import com.lyms.platform.permission.dao.master.CouponMapper;
22   -import com.lyms.platform.pojo.DoctorUserMap;
23   -import com.lyms.platform.pojo.PatientWeight;
24   -import com.lyms.platform.pojo.Patients;
25   -import com.lyms.platform.pojo.WeightManageConfigModel;
  24 +import com.lyms.platform.permission.model.Organization;
  25 +import com.lyms.platform.permission.service.OrganizationService;
  26 +import com.lyms.platform.permission.service.impl.OrganizationServiceImpl;
  27 +import com.lyms.platform.pojo.*;
26 28 import net.sf.json.JSONArray;
27 29 import net.sf.json.JSONObject;
28 30 import org.apache.commons.collections.MapUtils;
29 31  
... ... @@ -66,8 +68,54 @@
66 68 private OrganizationGroupsFacade groupsFacade;
67 69  
68 70 @Autowired
  71 + private OrganizationService organizationService;
  72 +
  73 + @Autowired
  74 + private BasicConfigService basicConfigService;
  75 +
  76 + @Autowired
69 77 private DoctorUserMapService doctorUserMapService;
70 78  
  79 +
  80 + private static Map<String,String> N_S_AREA = new HashMap<>();
  81 + static
  82 + {
  83 + N_S_AREA.put("江苏省","南方");
  84 + N_S_AREA.put("安徽省","南方");
  85 + N_S_AREA.put("重庆市","南方");
  86 + N_S_AREA.put("四川省","南方");
  87 + N_S_AREA.put("西藏自治区","南方");
  88 + N_S_AREA.put("云南省","南方");
  89 + N_S_AREA.put("贵州省","南方");
  90 + N_S_AREA.put("湖南省","南方");
  91 + N_S_AREA.put("江西省","南方");
  92 + N_S_AREA.put("广西省","南方");
  93 + N_S_AREA.put("广东省","南方");
  94 + N_S_AREA.put("福建省","南方");
  95 + N_S_AREA.put("浙江省","南方");
  96 + N_S_AREA.put("上海市","南方");
  97 + N_S_AREA.put("海南省","南方");
  98 + N_S_AREA.put("台湾省","南方");
  99 + N_S_AREA.put("香港特别行政区","南方");
  100 + N_S_AREA.put("澳门特别行政区","南方");
  101 +
  102 + N_S_AREA.put("山东省","北方");
  103 + N_S_AREA.put("河南省","北方");
  104 + N_S_AREA.put("山西省","北方");
  105 + N_S_AREA.put("陕西省","北方");
  106 + N_S_AREA.put("甘肃省","北方");
  107 + N_S_AREA.put("青海省","北方");
  108 + N_S_AREA.put("新疆维吾尔自治区","北方");
  109 + N_S_AREA.put("河北省","北方");
  110 + N_S_AREA.put("北京市","北方");
  111 + N_S_AREA.put("内蒙古自治区","北方");
  112 + N_S_AREA.put("辽宁省","北方");
  113 + N_S_AREA.put("吉林省","北方");
  114 + N_S_AREA.put("黑龙江省","北方");
  115 + N_S_AREA.put("宁夏回族自治区","北方");
  116 + }
  117 +
  118 +
71 119 /**
72 120 * 最低:0~13 : 0~1.9 13~40 1.9~11.9
73 121 * 最高: 0~2.2 2.2~15.9
... ... @@ -368,7 +416,13 @@
368 416 }
369 417  
370 418 @Override
371   - public BaseResponse report(String id) {
  419 + public BaseResponse report(String id,Integer userId) {
  420 + String hospitalId = autoMatchFacade.getHospitalId(userId);
  421 + Organization org = organizationService.getOrganization(Integer.parseInt(hospitalId));
  422 +
  423 +
  424 + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(org.getProvinceId());
  425 +
372 426 PatientWeight patientWeight = mongoTemplate.findById(id, PatientWeight.class);
373 427 if(patientWeight != null) {
374 428 Map<String, Object> map = new LinkedHashMap<>();
... ... @@ -381,15 +435,7 @@
381 435 map.put("dueDate", DateUtil.getyyyy_MM_dd(patients.getDueDate()));
382 436 map.put("age", DateUtil.getAge(patients.getBirth()) + " 岁");
383 437 week = DateUtil.getWeek2(patients.getLastMenses(), new Date());
384   - String yunqi = "";
385   - String reportTitle = "";
386   - if(week <= 12) {
387   - yunqi = "孕早期";
388   - } else if(week <= 28) {
389   - yunqi = "孕中期";
390   - } else {
391   - yunqi = "孕晚期";
392   - }
  438 + String yunqi = "孕"+String.valueOf(week)+"期";
393 439 map.put("yunqi", yunqi);
394 440 }
395 441 map.put("height", patientWeight.getBeforeHeight() == null ? "" : MathUtil.doubleFormat(Double.parseDouble(patientWeight.getBeforeHeight())/100) + " 米");
396 442  
397 443  
398 444  
399 445  
400 446  
401 447  
... ... @@ -403,32 +449,26 @@
403 449 map.put("pregnancy", pregnancy);
404 450 if(week != null && StringUtils.isNotEmpty(patientWeight.getBmi())) {
405 451  
406   - setInfo(week, map); // 设置孕期相关营养信息
407   - setGuide(week, map); // 设置指南
  452 + //setInfo(week, map); // 设置孕期相关营养信息
408 453 if (week > 5 && week < 41)
409 454 {
410   - String weightType = "";
411   - //体重正常 过轻 过重 是依据孕妇BMI指数来的。
412   - //BMI计算方式:BMI=孕前体重(kg)/【身高(m)×身高(m)】
413   - //对应范围:BMI<18.5对应体重过轻 BMI=18.5-24.9对应正常体重 BMI>25对应体重过重
414 455 double bmi = Double.parseDouble(patientWeight.getBmi());
415   - if (bmi < 18.5)
  456 + Map<String,String> kmap = getComputeKul(Double.parseDouble(patientWeight.getBeforeHeight()),
  457 + Double.parseDouble(patientWeight.getNowWeight()), week, bmi);
  458 + if (map == null || map.size() == 0)
416 459 {
417   - weightType = "过轻";
  460 + return null;
418 461 }
419   - else if (bmi >= 18.5 && bmi <= 24.9)
  462 +
  463 + setGuide(week, map); // 设置指南
  464 +
  465 + WeightConfigModel configModel = getWeightConfigBykcal(kmap,N_S_AREA.get(basicConfig.getName()));
  466 + if (configModel != null)
420 467 {
421   - weightType = "正常";
  468 + setRecipe(map, configModel,week,kmap); // 设置食谱
  469 + setSuggest(map, configModel,week); // 设置建议
  470 + setCookbook(map, configModel); // 设置菜谱
422 471 }
423   - else if (bmi >= 25)
424   - {
425   - weightType = "过重";
426   - }
427   -
428   - WeightManageConfigModel configModel = getWeightConfig(String.valueOf(week),weightType);
429   - setRecipe(map, configModel); // 设置食谱
430   - setSuggest(map, configModel); // 设置建议
431   - setCookbook(map, configModel); // 设置菜谱
432 472 }
433 473 }
434 474  
435 475  
... ... @@ -688,37 +728,53 @@
688 728 }
689 729  
690 730 private void setGuide(Integer week, Map<String, Object> map) {
691   - if(week <= 12) {
692   - Map<String, Object> map1 = setData2("膳食清淡、适口", "避免过咸、过甜和油腻的食物,这样能增加食欲,易于消化,有利于降低怀孕早期的妊娠反应,满足营养的需要。每日盐不超过6克,油不超过20克,可食用植物油,少用动物油。");
693   - Map<String, Object> map2 = setData2("少食多餐", "少食多餐可帮助有妊娠反应的孕妈妈尽可能多的摄入食物。每日可进食5-6餐(分三正餐和三次加餐),选择喜欢吃的食物,避免胃饥饿,不可强制进食,进食的餐次、数量、种类及时间应根据食欲和反应的轻重及时调整。");
694   - Map<String, Object> map3 = setData2("多摄入富含碳水化合物的谷类、薯类和水果", "保证每天至少摄入150克碳水化合物(约合谷类200克),避免因碳水化合物不足,脂肪分解产生酮体而影响胎儿早期大脑发育。");
695   - Map<String, Object> map4 = setData2("多摄入富含叶酸的食物,并补充叶酸", "怀孕早期叶酸缺乏,可增加胎儿发生神经管畸形及早产的危险。动物肝脏、鸡蛋、豆类、绿叶蔬菜、水果及坚果等食物中叶酸含量丰富。", "此外,由于叶酸补充剂比食物中的叶酸能更好的被机体吸收利用,因此,从怀孕前3个月可开始口服叶酸补充剂,每天至少400微克,或者每天饮用强化添加叶酸的孕妇配方奶粉1-2杯,一直服用到怀孕后3个月。");
696   - Map<String, Object> map5 = setData2("戒烟禁酒,远离吸烟环境", "烟草中的尼古丁和烟雾中的氢化物、一氧化碳可能导致胎儿缺氧和营养不良、发育迟缓。酒精可以通过胎盘进入胎儿血液,造成胎儿宫内发育不良、智力低下等。");
697   - Map<String, Object> map6 = setData2("避免刺激性食物", "避免刺激性食物,如:茶、咖啡、可乐及辛辣调味品,否则会使大便干燥,引起便秘和痔疮。");
698   - setData2("戒烟禁酒,远离吸烟环境", "烟草中的尼古丁和烟雾中的氢化物、一氧化碳可能导致胎儿缺氧和营养不良、发育迟缓。酒精可以通过胎盘进入胎儿血液,造成胎儿宫内发育不良、智力低下等。");
699   - setData2("避免刺激性食物", "避免刺激性食物,如:茶、咖啡、可乐及辛辣调味品,否则会使大便干燥,引起便秘和痔疮。");
700   - map.put("guide", Arrays.asList(map1, map2, map3, map4, map5, map6));
701   - map.put("guideTitle", "孕早期营养指南");
702   - } else if(week <= 28) {
703   - Map<String, Object> map1 = setData2("适当增加鱼、禽、蛋、瘦肉、海产品的摄入", "从孕中期开始,孕妈妈体重进入快速增长时期,需要更多的能量和优质蛋白质。其中鱼类除了提供优质蛋白质外,还可提供不饱和脂肪酸,这对孕20周后胎儿脑和视网膜功能发育很重要,可以使宝宝的大脑变得更聪明,眼睛更明亮。", "建议从孕中期开始每天要比怀孕前多摄入总计约50-100克的鱼、禽、蛋、瘦肉;鱼类作为动物血食物的首选,每周最好能摄入2-3次,每天还应摄入至少1个鸡蛋。");
704   - Map<String, Object> map2 = setData2("适当增加奶类的摄入", "奶及奶制品,对孕期蛋白质的补充很重要,同时也是钙的良好来源。从孕中期开始,孕妈妈每日至少应摄入250毫升的牛奶或相当量的奶制品,并补充300毫克的钙(或喝500毫升的低脂牛奶),以满足孕妈妈自身和日渐长大的胎儿对钙的需求。", "孕中期每日钙的需求量为1000毫克。除了奶及奶制品,富含钙的食物还有:鱼、海带、虾皮、芝麻酱、豆类及豆制品。但是,豆浆和大豆制品的钙含量远不如牛奶,所以不能代替牛奶补钙。菠菜、苋菜、空心菜等蔬菜含有大量的草酸,可能会影响钙的吸收,在烹煮时宜先焯水后再加工,可去掉部分草酸,增加钙的吸收。");
705   - Map<String, Object> map3 = setData2("常吃含铁丰富的食物", "孕中期每日需要铁25毫克。铁摄入不足,孕妈妈和胎儿都容易发生缺铁性贫血。富含铁的动物性食物有动物血、肝脏、瘦肉等,植物性食物有黑木耳、红枣、黄花菜等。", "同时,要多摄入富含维生素C的新鲜水果和蔬菜,如青菜、韭菜、橙子、猕猴桃等,或补充适量的维生素C制剂,有助于铁的吸收和利用。");
706   - Map<String, Object> map4 = setData2("进行适量的活动,维持体重的适宜增长", "从孕中期开始,孕妈妈的体重增加每周不应超过500克。盲目增加食物摄入量会引起胎儿过度生长,从而出现巨大儿,而孕妈妈本身则易发生妊娠糖尿病。", "应根据自身的体能每天进行不少于30分钟的低强度身体活动,如散步、做体操等。户外活动有助于改善维生素D合成,促进钙吸收,从而促进胎儿骨骼发育和母体的骨骼健康。");
707   - map.put("guide", Arrays.asList(map1, map2, map3, map4));
708   - map.put("guideTitle", "孕中期营养指南");
709   - } else {
710   - Map<String, Object> map1 = setData2("适当增加鱼、禽、蛋、瘦肉、海产品的摄入,补充优质蛋白质", "孕晚期是胎儿大脑发育最快的时期,需要大量的蛋白质。要注意的是,单纯追求高蛋白是不可取的,孕期高蛋白饮食会影响食欲,增加胃肠道和肾的负担,并影响其他营养物质的摄入。适当增加豆类蛋白,最好的方法是每日使用豆腐50克。");
711   - Map<String, Object> map2 = setData2("多补充富含钙的食物", "为维持孕晚期胎儿骨骼系统的快速发育和母体的生理代谢,孕妈妈每日钙的摄入量要从孕中期的1000毫克增加为1200毫克。当然,孕妈妈也切勿盲目补钙,如大量加服钙片、维生素D等,不利于胎儿的健康发育。", "同孕中期一样,每日至少要摄入250毫升的牛奶或相当量的奶制品,并补充300毫克的钙(或喝500毫升的低脂牛奶)。");
712   - Map<String, Object> map3 = setData2("多补充含铁、维生素B12丰富的食物", "孕晚期母体除了要为胎儿肝脏储备一定量的铁,自身还需要储备足够的铁,以代偿分娩时失血造成的铁损失,每日需要铁35毫克。建议每周使用2次动物肝脏。", "维生素B12是人体三大造血原料之一,孕晚期如果缺乏,容易导致贫血、疲劳、消化功能障碍等不良后果,不利于孕妈妈的健康和胎儿的发育。富含维生素B12的食物有肉类、肝脏、鱼类、螃蟹、蛋黄等。180克软干奶酪或500毫升牛奶中所含的维生素B12就可以满足人体每日所需。只要不偏食,孕妈妈一般不会缺乏维生素B12。");
713   - Map<String, Object> map4 = setData2("控制盐分和水分的摄入", "可预防妊娠期高血压疾病和严重水肿,食盐量每日不超过5克。");
714   - Map<String, Object> map5 = setData2("少吃能量高的食物", "如甜食、油炸食品、肥肉等,避免过于肥胖。");
715   - Map<String, Object> map6 = setData2("进行适量的活动,维持体重的适宜增长", "避免营养过剩,体重增加每周不应超过500克。");
716   - map.put("guide", Arrays.asList(map1, map2, map3, map4, map5, map6));
717   - map.put("guideTitle", "孕晚期营养指南");
718   - }
  731 +
  732 + Map<String, Object> map1 = setData2("各种营养素的均衡摄入", "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。");
  733 + Map<String, Object> map2 = setData2("每日摄入3次奶及奶制品", "每日保证摄入3杯牛奶,约500ml;经常摄入酸奶、芝士、排骨、鱼虾类以达到钙质的补充。");
  734 + Map<String, Object> map3 = setData2("肉类、鱼虾类、蔬菜、水果均衡摄入", "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。");
  735 + Map<String, Object> map4 = setData2("增加用餐次数", "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。");
  736 + Map<String, Object> map5 = setData2("保证饮食的清淡", "每日食盐的摄入不得超过5g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等");
  737 + Map<String, Object> map6 = setData2("保证食物的清洁卫生", "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。");
  738 + Map<String, Object> map7 = setData2("远离烟、酒、咖啡因,保证水分的充足", "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入");
  739 + Map<String, Object> map8 = setData2("规律的生活,适当的运动", "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早期——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。");
  740 +
  741 + WeightConfigModel configModel = getWeightConfigByWeek(week);
  742 + Map<String, Object> map9 = setData2("本周需注意", configModel != null ? configModel.getWeekContent() : "");
  743 + map.put("guide", Arrays.asList(map1, map2, map3, map4, map5, map6, map7, map8, map9));
  744 + map.put("guideTitle", "孕"+week+"周营养指南");
  745 +
  746 +
  747 +// if(week <= 12) {
  748 +// Map<String, Object> map1 = setData2("膳食清淡、适口", "避免过咸、过甜和油腻的食物,这样能增加食欲,易于消化,有利于降低怀孕早期的妊娠反应,满足营养的需要。每日盐不超过6克,油不超过20克,可食用植物油,少用动物油。");
  749 +// Map<String, Object> map2 = setData2("少食多餐", "少食多餐可帮助有妊娠反应的孕妈妈尽可能多的摄入食物。每日可进食5-6餐(分三正餐和三次加餐),选择喜欢吃的食物,避免胃饥饿,不可强制进食,进食的餐次、数量、种类及时间应根据食欲和反应的轻重及时调整。");
  750 +// Map<String, Object> map3 = setData2("多摄入富含碳水化合物的谷类、薯类和水果", "保证每天至少摄入150克碳水化合物(约合谷类200克),避免因碳水化合物不足,脂肪分解产生酮体而影响胎儿早期大脑发育。");
  751 +// Map<String, Object> map4 = setData2("多摄入富含叶酸的食物,并补充叶酸", "怀孕早期叶酸缺乏,可增加胎儿发生神经管畸形及早产的危险。动物肝脏、鸡蛋、豆类、绿叶蔬菜、水果及坚果等食物中叶酸含量丰富。", "此外,由于叶酸补充剂比食物中的叶酸能更好的被机体吸收利用,因此,从怀孕前3个月可开始口服叶酸补充剂,每天至少400微克,或者每天饮用强化添加叶酸的孕妇配方奶粉1-2杯,一直服用到怀孕后3个月。");
  752 +// Map<String, Object> map5 = setData2("戒烟禁酒,远离吸烟环境", "烟草中的尼古丁和烟雾中的氢化物、一氧化碳可能导致胎儿缺氧和营养不良、发育迟缓。酒精可以通过胎盘进入胎儿血液,造成胎儿宫内发育不良、智力低下等。");
  753 +// Map<String, Object> map6 = setData2("避免刺激性食物", "避免刺激性食物,如:茶、咖啡、可乐及辛辣调味品,否则会使大便干燥,引起便秘和痔疮。");
  754 +// setData2("戒烟禁酒,远离吸烟环境", "烟草中的尼古丁和烟雾中的氢化物、一氧化碳可能导致胎儿缺氧和营养不良、发育迟缓。酒精可以通过胎盘进入胎儿血液,造成胎儿宫内发育不良、智力低下等。");
  755 +// setData2("避免刺激性食物", "避免刺激性食物,如:茶、咖啡、可乐及辛辣调味品,否则会使大便干燥,引起便秘和痔疮。");
  756 +// map.put("guide", Arrays.asList(map1, map2, map3, map4, map5, map6));
  757 +// map.put("guideTitle", "孕早期营养指南");
  758 +// } else if(week <= 28) {
  759 +// Map<String, Object> map1 = setData2("适当增加鱼、禽、蛋、瘦肉、海产品的摄入", "从孕中期开始,孕妈妈体重进入快速增长时期,需要更多的能量和优质蛋白质。其中鱼类除了提供优质蛋白质外,还可提供不饱和脂肪酸,这对孕20周后胎儿脑和视网膜功能发育很重要,可以使宝宝的大脑变得更聪明,眼睛更明亮。", "建议从孕中期开始每天要比怀孕前多摄入总计约50-100克的鱼、禽、蛋、瘦肉;鱼类作为动物血食物的首选,每周最好能摄入2-3次,每天还应摄入至少1个鸡蛋。");
  760 +// Map<String, Object> map2 = setData2("适当增加奶类的摄入", "奶及奶制品,对孕期蛋白质的补充很重要,同时也是钙的良好来源。从孕中期开始,孕妈妈每日至少应摄入250毫升的牛奶或相当量的奶制品,并补充300毫克的钙(或喝500毫升的低脂牛奶),以满足孕妈妈自身和日渐长大的胎儿对钙的需求。", "孕中期每日钙的需求量为1000毫克。除了奶及奶制品,富含钙的食物还有:鱼、海带、虾皮、芝麻酱、豆类及豆制品。但是,豆浆和大豆制品的钙含量远不如牛奶,所以不能代替牛奶补钙。菠菜、苋菜、空心菜等蔬菜含有大量的草酸,可能会影响钙的吸收,在烹煮时宜先焯水后再加工,可去掉部分草酸,增加钙的吸收。");
  761 +// Map<String, Object> map3 = setData2("常吃含铁丰富的食物", "孕中期每日需要铁25毫克。铁摄入不足,孕妈妈和胎儿都容易发生缺铁性贫血。富含铁的动物性食物有动物血、肝脏、瘦肉等,植物性食物有黑木耳、红枣、黄花菜等。", "同时,要多摄入富含维生素C的新鲜水果和蔬菜,如青菜、韭菜、橙子、猕猴桃等,或补充适量的维生素C制剂,有助于铁的吸收和利用。");
  762 +// Map<String, Object> map4 = setData2("进行适量的活动,维持体重的适宜增长", "从孕中期开始,孕妈妈的体重增加每周不应超过500克。盲目增加食物摄入量会引起胎儿过度生长,从而出现巨大儿,而孕妈妈本身则易发生妊娠糖尿病。", "应根据自身的体能每天进行不少于30分钟的低强度身体活动,如散步、做体操等。户外活动有助于改善维生素D合成,促进钙吸收,从而促进胎儿骨骼发育和母体的骨骼健康。");
  763 +// map.put("guide", Arrays.asList(map1, map2, map3, map4));
  764 +// map.put("guideTitle", "孕中期营养指南");
  765 +// } else {
  766 +// Map<String, Object> map1 = setData2("适当增加鱼、禽、蛋、瘦肉、海产品的摄入,补充优质蛋白质", "孕晚期是胎儿大脑发育最快的时期,需要大量的蛋白质。要注意的是,单纯追求高蛋白是不可取的,孕期高蛋白饮食会影响食欲,增加胃肠道和肾的负担,并影响其他营养物质的摄入。适当增加豆类蛋白,最好的方法是每日使用豆腐50克。");
  767 +// Map<String, Object> map2 = setData2("多补充富含钙的食物", "为维持孕晚期胎儿骨骼系统的快速发育和母体的生理代谢,孕妈妈每日钙的摄入量要从孕中期的1000毫克增加为1200毫克。当然,孕妈妈也切勿盲目补钙,如大量加服钙片、维生素D等,不利于胎儿的健康发育。", "同孕中期一样,每日至少要摄入250毫升的牛奶或相当量的奶制品,并补充300毫克的钙(或喝500毫升的低脂牛奶)。");
  768 +// Map<String, Object> map3 = setData2("多补充含铁、维生素B12丰富的食物", "孕晚期母体除了要为胎儿肝脏储备一定量的铁,自身还需要储备足够的铁,以代偿分娩时失血造成的铁损失,每日需要铁35毫克。建议每周使用2次动物肝脏。", "维生素B12是人体三大造血原料之一,孕晚期如果缺乏,容易导致贫血、疲劳、消化功能障碍等不良后果,不利于孕妈妈的健康和胎儿的发育。富含维生素B12的食物有肉类、肝脏、鱼类、螃蟹、蛋黄等。180克软干奶酪或500毫升牛奶中所含的维生素B12就可以满足人体每日所需。只要不偏食,孕妈妈一般不会缺乏维生素B12。");
  769 +// Map<String, Object> map4 = setData2("控制盐分和水分的摄入", "可预防妊娠期高血压疾病和严重水肿,食盐量每日不超过5克。");
  770 +// Map<String, Object> map5 = setData2("少吃能量高的食物", "如甜食、油炸食品、肥肉等,避免过于肥胖。");
  771 +// Map<String, Object> map6 = setData2("进行适量的活动,维持体重的适宜增长", "避免营养过剩,体重增加每周不应超过500克。");
  772 +// map.put("guide", Arrays.asList(map1, map2, map3, map4, map5, map6));
  773 +// map.put("guideTitle", "孕晚期营养指南");
  774 +// }
719 775 }
720 776  
721   - private void setRecipe(Map<String, Object> map,WeightManageConfigModel configModel) {
  777 + private void setRecipe(Map<String, Object> map,WeightConfigModel configModel,int week,Map<String,String> kmap) {
722 778 Map<String, Object> breakfast = new LinkedHashMap<>(); // 早餐
723 779 Map<String, Object> breakfast2 = new LinkedHashMap<>(); // 上午加餐
724 780 Map<String, Object> lunch = new LinkedHashMap<>(); // 午餐
725 781  
726 782  
727 783  
728 784  
... ... @@ -726,27 +782,41 @@
726 782 Map<String, Object> dinner = new LinkedHashMap<>(); // 晚餐
727 783 Map<String, Object> dinner2 = new LinkedHashMap<>(); // 晚加餐
728 784  
  785 + String status = kmap.get("status");
  786 + String kcal = kmap.get("kulStart")+"-"+kmap.get("kulEnd");
  787 +
729 788 setData(breakfast, "早餐",configModel.getBreakfast());
730 789 setData(breakfast2, "上午加餐", configModel.getBreakfastAdd());
731 790 setData(lunch, "午餐", configModel.getLunch());
732 791 setData(lunch2, "下午加餐", configModel.getLunchAdd());
733 792 setData(dinner, "晚餐", configModel.getDinner());
734   - setData(dinner2, "晚加餐", configModel.getDinnerAdd());
735   - String recipeTitle1 = "孕晚期营养食谱举例";
736   - String recipeTitle2 = configModel.getExample();
  793 + setData(dinner2, "晚加餐", configModel.getDinnerAdd());
  794 + String recipeTitle1 = "孕"+week+"周";
737 795 map.put("recipeTitle1", recipeTitle1);
738   - map.put("recipeTitle2", recipeTitle2);
  796 + map.put("recipeTitle2", "基于您的身高、孕前体重、当前体重及所在孕周,您的累计增重数"+status+"适宜增重范围,为了您与胎儿的健康,本周您每日应摄入的热量为:"+kcal+"kcal。以下为特别向您推荐的对应热量食谱,请参照指导日常饮食。");
739 797 map.put("food", Arrays.asList(breakfast, breakfast2, lunch, lunch2, dinner, dinner2));
740 798 }
741 799  
742 800  
743   - private void setSuggest(Map<String, Object> map,WeightManageConfigModel configModel) {
744   - List<String> suggests = configModel.getSuggests();
  801 + private void setSuggest(Map<String, Object> map,WeightConfigModel configModel,int week) {
  802 + List<String> suggests = null;
  803 + if (week < 12)
  804 + {
  805 + suggests = configModel.getEarlySuggests();
  806 + }
  807 + else if (week <= 28)
  808 + {
  809 + suggests = configModel.getMiddleSuggests();
  810 + }
  811 + else
  812 + {
  813 + suggests = configModel.getLaterSuggests();
  814 + }
745 815 map.put("suggest", suggests);
746 816 }
747 817  
748   - private void setCookbook(Map<String, Object> map,WeightManageConfigModel configModel) {
749   - List<WeightManageConfigModel.Cookbook> cookbooks = configModel.getCookbooks();
  818 + private void setCookbook(Map<String, Object> map,WeightConfigModel configModel) {
  819 + List<WeightConfigModel.Cookbook> cookbooks = configModel.getCookbooks();
750 820 map.put("cookbooks", cookbooks);
751 821 map.put("cookbookTitle", "推荐菜谱");
752 822 }
753 823  
754 824  
755 825  
... ... @@ -1223,21 +1293,49 @@
1223 1293 }
1224 1294  
1225 1295  
  1296 + private WeightConfigModel getWeightConfigBykcal(Map<String,String> map,String northSouth)
  1297 + {
  1298 + if (map.get("kulStart") == null)
  1299 + {
  1300 + return null;
  1301 + }
  1302 + double kulStart = Double.valueOf(map.get("kulStart"));
  1303 + int k1 = ((int)kulStart/100)*100;
  1304 + double k2 = kulStart - k1;
  1305 + if (k2 > 50)
  1306 + {
  1307 + k1+=100;
  1308 + }
  1309 + WeightConfigModel weightConfigModel = mongoTemplate.findOne(Query.query(Criteria.where("northSouth").is(northSouth).and("kcal").is(k1)),
  1310 + WeightConfigModel.class);
  1311 + return weightConfigModel;
  1312 + }
  1313 +
  1314 +
  1315 + private WeightConfigModel getWeightConfigByWeek(int week)
  1316 + {
  1317 + WeightConfigModel weightConfigModel = mongoTemplate.findOne(Query.query(Criteria.where("week").is(week)),
  1318 + WeightConfigModel.class);
  1319 + return weightConfigModel;
  1320 + }
  1321 +
  1322 +
1226 1323 /**
1227 1324 * 孕妇期所需卡里计算
1228 1325 * @param bWeight 孕前体重
1229 1326 * @param cWeight 当前体重
1230 1327 * @return
1231 1328 */
1232   - private Map<String,Double> getComputeKul(double bWeight,double cWeight,int week,double bmi)
  1329 + private Map<String,String> getComputeKul(double bWeight,double cWeight,int week,double bmi)
1233 1330 {
1234   - Map<String,Double> map = new HashMap<>();
  1331 + Map<String,String> map = new HashMap<>();
1235 1332  
1236 1333 double kulStart = 0;
1237 1334 double kulEnd = 0;
1238 1335  
1239 1336 BigDecimal currentWeight = new BigDecimal(cWeight);
1240 1337 BigDecimal beforeWeight = new BigDecimal(bWeight);
  1338 + String status = "";
1241 1339  
1242 1340 double add = currentWeight.subtract(beforeWeight).doubleValue();
1243 1341 //孕早期
1244 1342  
1245 1343  
... ... @@ -1245,14 +1343,17 @@
1245 1343 {
1246 1344 if (add < 1 && (1 - add >= 0.5))
1247 1345 {
  1346 + status = "低于";
1248 1347 kulStart = currentWeight.multiply(new BigDecimal(25)).doubleValue()+500;
1249 1348 }
1250 1349 else if (add > 1.5 && (add - 1.5 >= 0.5))
1251 1350 {
  1351 + status = "高于";
1252 1352 kulStart = currentWeight.multiply(new BigDecimal(25)).doubleValue()-500;
1253 1353 }
1254 1354 else
1255 1355 {
  1356 + status = "处于";
1256 1357 kulStart = currentWeight.multiply(new BigDecimal(25)).doubleValue();
1257 1358 kulEnd = kulStart;
1258 1359 }
1259 1360  
1260 1361  
... ... @@ -1290,13 +1391,16 @@
1290 1391 double kstart = (currentWeight.add(new BigDecimal(addWeightStart)).doubleValue()) * 25 + basekul;
1291 1392 double kend = (currentWeight.add(new BigDecimal(addWeightEnd)).doubleValue()) * 25 + basekul;
1292 1393  
  1394 + status = "处于";
1293 1395 if (addWeightEnd > add && (addWeightEnd - add) > 0.5)
1294 1396 {
  1397 + status = "高于";
1295 1398 kstart -= 500;
1296 1399 kend -= 500;
1297 1400 }
1298 1401 else if (addWeightEnd < add && (add - addWeightEnd) > 0.5)
1299 1402 {
  1403 + status = "低于";
1300 1404 kstart += 500;
1301 1405 kend += 500;
1302 1406 }
1303 1407  
1304 1408  
1305 1409  
... ... @@ -1304,17 +1408,27 @@
1304 1408 kulEnd = kend;
1305 1409 }
1306 1410  
1307   - map.put("kulStart",kulStart);
1308   - map.put("kulEnd",kulEnd);
  1411 + map.put("kulStart",String.valueOf(kulStart));
  1412 + map.put("kulEnd",String.valueOf(kulEnd));
  1413 + map.put("status",status);
1309 1414 return map;
1310 1415 }
1311 1416  
1312   -//
1313   -// public static void main(String[] args) {
  1417 +
  1418 + public static void main(String[] args) {
1314 1419 // PatientWeightServiceImpl patientWeightService = new PatientWeightServiceImpl();
1315 1420 // String bmi = patientWeightService.getBmi("55", "162");
1316   -// Map<String,Double> map = patientWeightService.getComputeKul(55, 62, 20, Double.parseDouble(bmi));
  1421 +// Map<String,String> map = patientWeightService.getComputeKul(55, 62, 20, Double.parseDouble(bmi));
1317 1422 // System.out.println(map);
1318   -// }
  1423 +
  1424 +// double kulStart = 2153.5;
  1425 +// int k1 = ((int)kulStart/100)*100;
  1426 +// double k2 = kulStart - k1;
  1427 +// if (k2 > 50)
  1428 +// {
  1429 +// k1+=100;
  1430 +// }
  1431 +// System.out.println(k1);
  1432 + }
1319 1433 }