Commit f4a71702a27caf58b8f84f3d2bc5e1be9572ebc4

Authored by jiangjiazhi
1 parent c373f211fb

修改体重营养报告

Showing 9 changed files with 1064 additions and 14 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientWeightController.java View file @ f4a7170
... ... @@ -88,8 +88,10 @@
88 88 @ResponseBody
89 89 @RequestMapping(value = "report/{id}", method = RequestMethod.GET)
90 90 @TokenRequired
91   - public BaseResponse report(@PathVariable String id, HttpServletRequest request) {
92   - return patientWeightService.report(id, getUserId(request));
  91 + public BaseResponse report(@PathVariable String id,
  92 + HttpServletRequest request,
  93 + @RequestParam(value = "rid",required = false)String rid) {
  94 + return patientWeightService.report(id, getUserId(request),rid);
93 95 }
94 96  
95 97 /**
... ... @@ -206,6 +208,19 @@
206 208 @RequestMapping(value = "/cookbook/info", method = RequestMethod.GET)
207 209 public BaseResponse patientCookbookInfo(String pid) {
208 210 return patientWeightService.patientRecipeInfo(pid, 4);
  211 + }
  212 +
  213 +
  214 + /**
  215 + *
  216 + * 选择这个人的高危因素去打印饮食原则
  217 + *
  218 + * @return
  219 + */
  220 + @ResponseBody
  221 + @RequestMapping(value = "/find/risk", method = RequestMethod.GET)
  222 + public BaseResponse canChooseRisk(String patientId){
  223 + return patientWeightService.findRiskDietaryPrinciples(patientId);
209 224 }
210 225 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IComputeKul.java View file @ f4a7170
  1 +package com.lyms.platform.operate.web.service;
  2 +
  3 +import java.util.Map;
  4 +
  5 +/**
  6 + * 计算卡路里接口定义
  7 + * <p>
  8 + * 详细描述
  9 + * <p>
  10 + * 示例代码
  11 + * <pre>
  12 + * </pre/>
  13 + *
  14 + * @author JIAZHI.JIANG
  15 + * @version BME V100R001 2018-08-28 9:59
  16 + * @since BME V100R001C40B104
  17 + */
  18 +public interface IComputeKul {
  19 +
  20 + /**
  21 + * 是否支持高危
  22 + *
  23 + * @param riskId 高危因素id
  24 + * @return
  25 + */
  26 + boolean canSupported(String riskId);
  27 +
  28 + /**
  29 + *
  30 + * 根据不同的高危计算卡路里
  31 + *
  32 + * @param beforeWeight 孕期体重
  33 + * @param currentWeight 当前体重
  34 + * @param week 孕周
  35 + * @param bmi bmi
  36 + * @param bregmatic
  37 + * @return
  38 + */
  39 + Map<String, String> getComputeKul(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic,String beforeHeight);
  40 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/PatientWeightService.java View file @ f4a7170
... ... @@ -8,6 +8,8 @@
8 8 */
9 9 public interface PatientWeightService extends IBaseService {
10 10  
  11 + BaseResponse findRiskDietaryPrinciples(String patientId);
  12 +
11 13 BaseResponse lastCheckTime(String pid);
12 14 BaseResponse init();
13 15 BaseResponse patientRecipeInfo(String pid,Integer type);
... ... @@ -21,7 +23,7 @@
21 23  
22 24 BaseResponse delete(String id);
23 25  
24   - BaseResponse report(String id,Integer userId);
  26 + BaseResponse report(String id,Integer userId,String rid);
25 27  
26 28 BaseResponse wxReport(String pid);
27 29  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BDXGYComputeKulServiceImpl.java View file @ f4a7170
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import com.lyms.platform.operate.web.service.IComputeKul;
  4 +import com.lyms.platform.operate.web.utils.ReportConfig;
  5 +import org.apache.commons.lang.StringUtils;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import java.math.BigDecimal;
  11 +import java.util.ArrayList;
  12 +import java.util.HashMap;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +
  17 +/**
  18 + * 病毒性肝炎卡路里计算公式
  19 + * <p>
  20 + * 详细描述
  21 + * <p>
  22 + * 示例代码
  23 + * <pre>
  24 + * </pre/>
  25 + *
  26 + * @author JIAZHI.JIANG
  27 + * @version BME V100R001 2018-08-28 16:31
  28 + * @since BME V100R001C40B104
  29 + */
  30 +@Service
  31 +public class BDXGYComputeKulServiceImpl implements IComputeKul {
  32 +
  33 + private List<String> supportList =new ArrayList<>();
  34 + {
  35 + /*5a41f856422b03d4ad2bf801 原因不明的肝功能异常
  36 + 5aab6d3f422b03d4ad2bf85c 肝硬化(仅需要药物治疗)*/
  37 + supportList.add("5a41f856422b03d4ad2bf801");
  38 + supportList.add("5aab6d3f422b03d4ad2bf85c");
  39 + }
  40 +
  41 + // 妊娠期糖尿病卡路里计算公式支持的高危id
  42 + @Override
  43 + public boolean canSupported(String riskId) {
  44 + return supportList.contains(riskId);
  45 + }
  46 +
  47 + @Override
  48 + public Map<String, String> getComputeKul(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic,String beforeHeight) {
  49 + Map<String, String> map = new HashMap<>();
  50 +
  51 + double kulStart = 0;
  52 + double kulEnd = 0;
  53 +
  54 + String status = "";
  55 +
  56 + double add = Double.valueOf(String.format("%.2f", currentWeight - beforeWeight));
  57 +
  58 + //孕早期
  59 + if (week <= 12) {
  60 + if (add < 1 && (1 - add >= 0.5)) {
  61 + status = "低于";
  62 + kulStart = currentWeight * 30 + 500;
  63 + } else if (add > 1.5 && (add - 1.5 >= 0.5)) {
  64 + status = "高于";
  65 + kulStart = currentWeight * 30 - 500;
  66 + } else {
  67 + status = "处于";
  68 + kulStart = currentWeight * 30;
  69 + }
  70 + kulEnd = kulStart;
  71 + }
  72 + //孕中期 //孕晚期
  73 + else if (week > 12) {
  74 + //基础kcal值
  75 + int basekul = (week > 12 && week <= 27) ? 340 : 450;
  76 +
  77 +
  78 + String bmiStr = "";
  79 +
  80 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  81 + if (bmi < 18.5) {
  82 + bmiStr = "BMI<18.5孕" + week + "周";
  83 + } else if (bmi <= 24.9 && bmi >= 18.5) {
  84 + bmiStr = "BMI=18.5-24.9孕" + week + "周";
  85 + } else if (bmi <= 29.9 && bmi >= 25) {
  86 + bmiStr = "BMI=25-29.9孕" + week + "周";
  87 + } else if (bmi >= 30) {
  88 + bmiStr = "BMI≥30孕" + week + "周";
  89 + }
  90 + } else {
  91 + if (bmi <= 24.9) {
  92 + bmiStr = "BMI≤24.9孕" + week + "周";
  93 + } else if (bmi <= 29.9 && bmi >= 25) {
  94 + bmiStr = "BMI=25-29.9孕" + week + "周";
  95 + } else if (bmi >= 30) {
  96 + bmiStr = "BMI≥30孕" + week + "周";
  97 + }
  98 + }
  99 +
  100 +
  101 + if (StringUtils.isEmpty(bmiStr)) {
  102 + return map;
  103 + }
  104 +
  105 + String[] rangeWeight = null;
  106 +
  107 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  108 + rangeWeight = ReportConfig.getWeightRange(bmiStr).split("-");
  109 + } else {
  110 + rangeWeight = ReportConfig.getDWeightRange(bmiStr).split("-");
  111 + }
  112 +
  113 +
  114 + if (rangeWeight == null || rangeWeight.length != 2) {
  115 + return map;
  116 + }
  117 +
  118 + double addWeightStart = Double.parseDouble(rangeWeight[0]);
  119 + double addWeightEnd = Double.parseDouble(rangeWeight[1]);
  120 +
  121 + /* BigDecimal b1 = new BigDecimal(Double.toString(addWeightStart));
  122 + BigDecimal b2 = new BigDecimal(Double.toString(addWeightEnd));
  123 + BigDecimal bw = new BigDecimal(Double.toString(beforeWeight));*/
  124 +
  125 + BigDecimal b1 = new BigDecimal(Double.toString(currentWeight));
  126 + double kstart = b1.multiply(new BigDecimal(30)).doubleValue() + basekul;
  127 + double kend = b1.multiply(new BigDecimal(30)).doubleValue() + basekul;
  128 +
  129 +
  130 + status = "处于";
  131 + if (addWeightEnd < add && (Double.valueOf(String.format("%.2f", add - addWeightEnd))) >= 0.5) {
  132 + status = "高于";
  133 + kstart -= 500;
  134 + kend -= 500;
  135 + } else if (addWeightStart > add && (Double.valueOf(String.format("%.2f", addWeightStart - add))) >= 0.5) {
  136 + status = "低于";
  137 + kstart += 500;
  138 + kend += 500;
  139 + }
  140 + kulStart = kstart;
  141 + kulEnd = kend;
  142 + }
  143 +
  144 + map.put("kulStart", String.valueOf(kulStart));
  145 + map.put("kulEnd", String.valueOf(kulEnd));
  146 + map.put("status", status);
  147 + return map;
  148 + }
  149 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ComputeKulServiceManager.java View file @ f4a7170
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import com.lyms.platform.common.utils.StringUtils;
  4 +import com.lyms.platform.operate.web.service.IComputeKul;
  5 +import org.slf4j.Logger;
  6 +import org.slf4j.LoggerFactory;
  7 +import org.springframework.beans.factory.InitializingBean;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.stereotype.Component;
  10 +
  11 +import java.util.HashMap;
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +
  15 +
  16 +/**
  17 + * 添加类的一句话简单描述。
  18 + * <p>
  19 + * 详细描述
  20 + * <p>
  21 + * 示例代码
  22 + * <pre>
  23 + * </pre/>
  24 + *
  25 + * @author JIAZHI.JIANG
  26 + * @version BME V100R001 2018-08-30 17:14
  27 + * @since BME V100R001C40B104
  28 + */
  29 +@Component
  30 +public class ComputeKulServiceManager implements InitializingBean{
  31 +
  32 + //日志调测器
  33 + private static final Logger logger = LoggerFactory.getLogger(ComputeKulServiceManager.class);
  34 +
  35 +
  36 + private static Map<String,PatientGuide> patientGuideMap =new HashMap<>();
  37 + static {
  38 + //妊娠期高血压的营养指南和饮食原则
  39 + patientGuideMap.put("5aab6d3f422b03d4ad2bf854北方",ComputeKulServiceManager.patientGuide);
  40 + patientGuideMap.put("5aab6d3f422b03d4ad2bf856北方",ComputeKulServiceManager.patientGuide);
  41 + patientGuideMap.put("5aab6d3f422b03d4ad2bf854南方",ComputeKulServiceManager.patientGuide4GXY_NF);
  42 + patientGuideMap.put("5aab6d3f422b03d4ad2bf856南方",ComputeKulServiceManager.patientGuide4GXY_NF);
  43 +
  44 + //病毒性肝炎
  45 + patientGuideMap.put("5a41f670422b03d4ad2bf7f0北方",ComputeKulServiceManager.patientGuide1);
  46 + patientGuideMap.put("b43a43e4-733f-4ec1-9b5e-f00b9bc6e651北方",ComputeKulServiceManager.patientGuide1);
  47 + patientGuideMap.put("5a41f670422b03d4ad2bf7f0南方",ComputeKulServiceManager.patientGuide4JXGY_NF);
  48 + patientGuideMap.put("b43a43e4-733f-4ec1-9b5e-f00b9bc6e651南方",ComputeKulServiceManager.patientGuide4JXGY_NF);
  49 +
  50 + //慢性肝炎
  51 +
  52 + /*5a41f856422b03d4ad2bf801 原因不明的肝功能异常
  53 + 5aab6d3f422b03d4ad2bf85c 肝硬化(仅需要药物治疗)*/
  54 + patientGuideMap.put("5a41f856422b03d4ad2bf801北方",ComputeKulServiceManager.patientGuide2);
  55 + patientGuideMap.put("5aab6d3f422b03d4ad2bf85c北方",ComputeKulServiceManager.patientGuide2);
  56 + patientGuideMap.put("5a41f856422b03d4ad2bf801南方",ComputeKulServiceManager.patientGuide4MXGY_NF);
  57 + patientGuideMap.put("5aab6d3f422b03d4ad2bf85c南方",ComputeKulServiceManager.patientGuide4MXGY_NF);
  58 +
  59 +
  60 + /*
  61 + * 5a41f715422b03d4ad2bf7f7 妊娠合并贫血(Hb 60-110g/L)
  62 + 5aab6d3e422b03d4ad2bf847 轻度缺铁性贫血(100-109g/L)
  63 + 5aab6d3e422b03d4ad2bf848 中度缺铁性贫血(70-99g/L)
  64 + 82e4441b-7072-443e-a30f-39b0b4504d75 重度贫血(Hb40-60g/L)
  65 + 5a41fa0c422b03d4ad2bf814 重度贫血(Hb≤40g/L)
  66 + 80c41987-fd8a-4595-a773-088b60a6a33d 再生障碍性贫血
  67 + * */
  68 + //贫血
  69 + patientGuideMap.put("5a41f715422b03d4ad2bf7f7北方",ComputeKulServiceManager.patientGuide3);
  70 + patientGuideMap.put("5aab6d3e422b03d4ad2bf847北方",ComputeKulServiceManager.patientGuide3);
  71 + patientGuideMap.put("5aab6d3e422b03d4ad2bf848北方",ComputeKulServiceManager.patientGuide3);
  72 + patientGuideMap.put("82e4441b-7072-443e-a30f-39b0b4504d75北方",ComputeKulServiceManager.patientGuide3);
  73 + patientGuideMap.put("5a41fa0c422b03d4ad2bf814北方",ComputeKulServiceManager.patientGuide3);
  74 + patientGuideMap.put("80c41987-fd8a-4595-a773-088b60a6a33d北方",ComputeKulServiceManager.patientGuide3);
  75 + patientGuideMap.put("5a41f715422b03d4ad2bf7f7南方",ComputeKulServiceManager.patientGuide4PX_NF);
  76 + patientGuideMap.put("5aab6d3e422b03d4ad2bf847南方",ComputeKulServiceManager.patientGuide4PX_NF);
  77 + patientGuideMap.put("5aab6d3e422b03d4ad2bf848南方",ComputeKulServiceManager.patientGuide4PX_NF);
  78 + patientGuideMap.put("82e4441b-7072-443e-a30f-39b0b4504d75南方",ComputeKulServiceManager.patientGuide4PX_NF);
  79 + patientGuideMap.put("5a41fa0c422b03d4ad2bf814南方",ComputeKulServiceManager.patientGuide4PX_NF);
  80 + patientGuideMap.put("80c41987-fd8a-4595-a773-088b60a6a33d南方",ComputeKulServiceManager.patientGuide4PX_NF);
  81 +
  82 +
  83 +
  84 + /*
  85 + * 5aab6d3d422b03d4ad2bf83e 妊娠期糖尿病(无需药物治疗)
  86 + 5aab6d3e422b03d4ad2bf83f 糖尿病合并妊娠(无需药物治疗)
  87 + de7468e6-1bb5-4fab-ae84-78857868409a 需药物治疗的糖尿病
  88 + * */
  89 + patientGuideMap.put("5aab6d3d422b03d4ad2bf83e北方",ComputeKulServiceManager.patientGuide4TNB_BF);
  90 + patientGuideMap.put("5aab6d3e422b03d4ad2bf83f北方",ComputeKulServiceManager.patientGuide4TNB_BF);
  91 + patientGuideMap.put("de7468e6-1bb5-4fab-ae84-78857868409a北方",ComputeKulServiceManager.patientGuide4TNB_BF);
  92 + patientGuideMap.put("5aab6d3d422b03d4ad2bf83e南方",ComputeKulServiceManager.patientGuide4NTB_NF);
  93 + patientGuideMap.put("5aab6d3e422b03d4ad2bf83f南方",ComputeKulServiceManager.patientGuide4NTB_NF);
  94 + patientGuideMap.put("de7468e6-1bb5-4fab-ae84-78857868409a南方",ComputeKulServiceManager.patientGuide4NTB_NF);
  95 + }
  96 +
  97 + public static Map<String, PatientGuide> getPatientGuideMap() {
  98 + return patientGuideMap;
  99 + }
  100 +
  101 + private Map<String, IComputeKul> iComputeKulMap = new HashMap<>();
  102 + @Autowired
  103 + private List<IComputeKul> data;
  104 +
  105 + public void setData(List<IComputeKul> data) {
  106 + this.data = data;
  107 + }
  108 +
  109 + /**
  110 + * 默认的卡路里计算规则
  111 + */
  112 + private IComputeKul defaultCompute=new DefaultComputeKulServiceImpl();
  113 +
  114 + public IComputeKul getComputeKulByRisk(String risk) {
  115 + if(StringUtils.isNotEmpty(risk)){
  116 + for(IComputeKul iComputeKul:data){
  117 + if(iComputeKul.canSupported(risk)){
  118 + return iComputeKul;
  119 + }
  120 + }
  121 + }
  122 +
  123 + return defaultCompute;
  124 + }
  125 +
  126 + public void setiComputeKulMap(Map<String, IComputeKul> iComputeKulMap) {
  127 + this.iComputeKulMap = iComputeKulMap;
  128 + }
  129 +
  130 + public void setDefaultCompute(IComputeKul defaultCompute) {
  131 + this.defaultCompute = defaultCompute;
  132 + }
  133 +
  134 + @Override
  135 + public void afterPropertiesSet() throws Exception {
  136 + logger.info("ComputeKulServiceManager after properties set register :" + iComputeKulMap);
  137 + }
  138 + public static class PatientGuide{
  139 + public PatientGuide(String yzzn, String ysyz) {
  140 + this.yzzn = yzzn;
  141 + this.ysyz = ysyz;
  142 + }
  143 +
  144 + //营养指南
  145 + private String yzzn;
  146 + //饮食原则
  147 + private String ysyz;
  148 +
  149 + public String getYzzn() {
  150 + return yzzn;
  151 + }
  152 +
  153 + public void setYzzn(String yzzn) {
  154 + this.yzzn = yzzn;
  155 + }
  156 +
  157 + public String getYsyz() {
  158 + return ysyz;
  159 + }
  160 +
  161 + public void setYsyz(String ysyz) {
  162 + this.ysyz = ysyz;
  163 + }
  164 + }
  165 + //高血压的
  166 + private static PatientGuide patientGuide= new PatientGuide("各种营养素的均衡摄入\n" +
  167 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。\n" +
  168 + "每日摄入3次奶及奶制品\n" +
  169 + "每日保证摄入300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  170 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  171 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50左右)。\n" +
  172 + "增加用餐次数\n" +
  173 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  174 + "保证饮食的清淡\n" +
  175 + "每日食盐的摄入不得超过5g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  176 + "保证食物的清洁卫生\n" +
  177 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  178 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  179 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶等,保证每日2300ml水的摄入。\n" +
  180 + "规律的生活,适当的运动\n" +
  181 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早期——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","每公斤体重每日1-1.5g的优质蛋白质摄入;减少脂肪的摄入,用不饱和脂肪代替饱和脂肪,控制胆固醇的摄入(300mg以下),特别是ω-3脂肪酸对降低血压有帮助,同时还能预防高脂血症等。\n" +
  182 + "控制钠的摄入量,血压为140-159/90-99mmHg的情况下,每日钠的摄入量应控制在1.9g(食盐5g)以下,血压为160g/100mmHg的情况下,每日摄入食盐的量应控制在3.5-5g之间,减少钠含量高的食物摄入,多吃K/Na比例高的食物,例如香蕉、大豆、薯类等,尽量避免加工食品的摄入;钙有降压的作用,同时还能预防低钙血症,每日需保证钙摄入的足够,妊娠中期1000mg,妊娠晚期1200mg;多吃富含膳食纤维的食物,能够缓解便秘和降低血液中的胆固醇含量;如果出现水肿现象可多吃一些红豆、冬瓜等利水的食物,适当控制水分的摄入。\n" +
  183 + "DASH饮食法:\n" +
  184 + "1.多吃水果、蔬菜(500-700g),选择低脂肪的牛奶或奶制品,\n" +
  185 + "2.首选全谷类和根茎类主食\n" +
  186 + "3.保证每日15-20g坚果的摄入,多吃家禽、鱼虾类等白肉类,少吃红肉类,限制糖类、含糖的饮料的摄入\n" +
  187 + "4.减少饱和脂肪、胆固醇、反式脂肪的摄入\n" +
  188 + "5.多吃富含钾、钙、镁、食物纤维、优质蛋白质的食物");
  189 + //病毒性肝炎
  190 + private static PatientGuide patientGuide1= new PatientGuide("各种营养素的均衡摄入\n" +
  191 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食。\n" +
  192 + "每日摄入3次奶及奶制品\n" +
  193 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  194 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  195 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  196 + "增加用餐次数\n" +
  197 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  198 + "保证饮食的清淡\n" +
  199 + "每日食盐的摄入不得超过6g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等。\n" +
  200 + "保证食物的清洁卫生\n" +
  201 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  202 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  203 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入。\n" +
  204 + "规律的生活,适当的运动\n" +
  205 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","高热量—高蛋白质—高碳水化合物—中等脂肪—高维生素—低盐(不超过6g)\n" +
  206 + "热量保证在35-45kcal/kg,蛋白质1.5-2.0g/kg,碳水化合物占总热量的65%,脂肪占总热量的15%。\n" +
  207 + "限制粗粮类,牛肉和猪肉脂肪较多、组织较硬的部位、培根、午餐肉、香肠、肉脯、脂肪含量较高的鱼类(青花鱼、鲅鱼等),纤维较粗的蔬菜和水果;尽量避免辛辣刺激、油炸等烹饪方法,以及糕点、奶油等油脂含量高的食物。");
  208 + //慢性肝炎、肝硬化、肝功能不全的饮食原则
  209 + private static PatientGuide patientGuide2= new PatientGuide("各种营养素的均衡摄入\n" +
  210 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食。\n" +
  211 + "每日摄入3次奶及奶制品\n" +
  212 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  213 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  214 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  215 + "增加用餐次数\n" +
  216 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  217 + "保证饮食的清淡\n" +
  218 + "每日食盐的摄入不得超过6g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  219 + "保证食物的清洁卫生\n" +
  220 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  221 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  222 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入。\n" +
  223 + "规律的生活,适当的运动\n" +
  224 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","高热量—高蛋白质—高碳水化合物—中等脂肪—高维生素—低纤维细纤维(水溶性纤维)—低盐(5g)\n" +
  225 + "热量保证在30-40kcal/kg,蛋白质1.5-2.0g/kg,碳水化合物占总热量的60%,脂肪占总热量的20%。\n" +
  226 + "限制粗粮类,牛肉和猪肉组织较硬的部位、培根、午餐肉、香肠、肉脯等含添加剂较多的加工食品,含纤维较粗、不可溶纤维的蔬菜和水果;尽量避免辛辣刺激、油炸等烹饪方法。");
  227 +
  228 +
  229 +
  230 + private static PatientGuide patientGuide3= new PatientGuide("各种营养素的均衡摄入\n" +
  231 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。\n" +
  232 + "每日摄入3次奶及奶制品\n" +
  233 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  234 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  235 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  236 + "增加用餐次数\n" +
  237 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  238 + "保证饮食的清淡\n" +
  239 + "每日食盐的摄入不得超过6g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  240 + "保证食物的清洁卫生\n" +
  241 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  242 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  243 + "孕期绝对禁止抽烟、饮酒;避免咖啡、茶等含咖啡因的饮料,保证每日2300ml水的摄入。\n" +
  244 + "规律的生活,适当的运动\n" +
  245 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","补铁的同时,要注意红血球合成所需的热量、蛋白质、无机质、维生素的充分摄取,以及同时补充维生素C能够促进铁的吸收。孕中期铁的需求量为每日24mg,孕晚期铁的需求量为每日29mg,如果食物不能满足身体对铁的所需,可在医生建议下补充铁剂。\n" +
  246 + "豆类、粗粮类比细粮铁的含量高;经常摄入牛肉、鸡肉、鱼类、蛋类、动物肝脏等铁,尤其是动物肝脏中铁的含量与吸收率都较高,可以每周吃2-3吃;紫菜、海带等海产品以及菠菜等深绿色的蔬菜也富含大量的铁元素,每天应保证300-500g的蔬菜摄入;乳制品中也含有丰富的铁,每日至少保证500g奶制品的摄入。\n" +
  247 + "维生素B12和叶酸的缺乏也可能会造成贫血,因此平时还应该多摄取一些动物性食物、绿色蔬菜、豆类等进行补充。\n" +
  248 + "草酸、植酸、鞣酸、咖啡因等都会破铁的吸收,因此要避免茶、咖啡等含咖啡因的饮料的摄入,以及食用草酸、植酸、鞣酸等蔬菜时,尽量焯水、做熟后再食用。");
  249 +
  250 + //糖尿病北方
  251 + private static PatientGuide patientGuide4TNB_BF= new PatientGuide("每日摄取的热量按照自身标准体重来制定;糖类、蛋白质、脂肪的比例为55-60%、15-20%、20-25%;至少保证100g糖类的摄入预防酮症酸中毒,尽量避免单糖类的摄入;多吃GI指数55以下的食物,如粗粮、豆类、牛奶、蔬菜等;蛋白质摄取量大约为1-1.5g/kg,约占总热量的15-20%(至少1/3以上为动物性蛋白);多不饱和脂肪:单不饱和脂肪:饱和脂肪为1:1:1,每日n-3的摄入量应保证3g预防高脂血症,胆固醇的摄入量每日不得超过300mg;增加膳食纤维的摄入量,可抑制血糖的上升速度,每日的摄取量为20-35g;规律饮食,少吃多餐,一天5-6餐,每餐八-九分饱;尽量选择蒸、煮、汆烫等烹饪方法,避免煎、炸、烤等方式,烹饪时避免食物过于熟烂,不要空腹喝粥。(需药物治疗患者每日可增加总热量10%的加餐)","各种营养素的均衡摄入\n" +
  252 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。\n" +
  253 + "每日摄入3次奶及奶制品\n" +
  254 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等。\n" +
  255 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  256 + "每日保证至少300g蔬菜的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  257 + "保证饮食的清淡\n" +
  258 + "每日食盐的摄入不得超过5g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等。\n" +
  259 + "保证食物的清洁卫生\n" +
  260 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  261 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  262 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入。\n" +
  263 + "规律的生活,适当的运动\n" +
  264 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。");
  265 +
  266 +
  267 + //高血压南方
  268 + private static PatientGuide patientGuide4GXY_NF= new PatientGuide("各种营养素的均衡摄入\n" +
  269 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。\n" +
  270 + "每日摄入3次奶及奶制品\n" +
  271 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  272 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  273 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50左右)。\n" +
  274 + "增加用餐次数\n" +
  275 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  276 + "保证饮食的清淡\n" +
  277 + "每日食盐的摄入不得超过5g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  278 + "保证食物的清洁卫生\n" +
  279 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  280 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  281 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶等,保证每日2300ml水的摄入。\n" +
  282 + "规律的生活,适当的运动\n" +
  283 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。\n","每公斤体重每日1-1.5g的优质蛋白质摄入;减少脂肪的摄入,用不饱和脂肪代替饱和脂肪,控制胆固醇的摄入(300mg以下),特别是ω-3脂肪酸对降低血压有帮助,同时还能预防高脂血症等。\n" +
  284 + "控制钠的摄入量,血压为140-159/90-99mmHg的情况下,每日钠的摄入量应控制在1.9g(食盐5g)以下,血压为160g/100mmHg的情况下,每日摄入食盐的量应控制在3.5-5g之间,减少钠含量高的食物摄入,多吃K/Na比例高的食物,例如香蕉、大豆、薯类等,尽量避免加工食品的摄入;钙有降压的作用,同时还能预防低钙血症,每日需保证钙摄入的足够,妊娠中期1000mg,妊娠晚期1200mg;多吃富含膳食纤维的食物,能够缓解便秘和降低血液中的胆固醇含量;如果出现水肿现象可多吃一些红豆、冬瓜等利水的食物,适当控制水分的摄入。\n" +
  285 + "DASH饮食法:\n" +
  286 + "1.多吃水果、蔬菜(500-700g),选择低脂肪的牛奶或奶制品,\n" +
  287 + "2.首选全谷类和根茎类主食\n" +
  288 + "3.保证每日15-20g坚果的摄入,多吃家禽、鱼虾类等白肉类,少吃红肉类,限制糖类、含糖的饮料的摄入\n" +
  289 + "4.减少饱和脂肪、胆固醇、反式脂肪的摄入\n" +
  290 + "5.多吃富含钾、钙、镁、食物纤维、优质蛋白质的食物");
  291 +
  292 +
  293 + //急性肝炎南方
  294 + private static PatientGuide patientGuide4JXGY_NF= new PatientGuide("各种营养素的均衡摄入\n" +
  295 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食。\n" +
  296 + "每日摄入3次奶及奶制品\n" +
  297 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  298 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  299 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  300 + "增加用餐次数\n" +
  301 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  302 + "保证饮食的清淡\n" +
  303 + "每日食盐的摄入不得超过6g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  304 + "保证食物的清洁卫生\n" +
  305 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  306 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  307 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入。\n" +
  308 + "规律的生活,适当的运动\n" +
  309 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","高热量—高蛋白质—高碳水化合物—中等脂肪—高维生素—低盐(6g)\n" +
  310 + "热量保证在34-45kcal/kg,蛋白质1.5-2.0g/kg,碳水化合物占总热量的65%,脂肪占总热量的15%。\n" +
  311 + "限制粗粮类,牛肉和猪肉脂肪较多、组织较硬的部位、培根、午餐肉、香肠、肉脯、脂肪含量较高的鱼类(青花鱼、鲅鱼等),纤维较粗的蔬菜和水果;尽量避免辛辣刺激、油炸等烹饪方法,以及糕点、奶油等油脂含量高的食物。");
  312 +
  313 +
  314 + //慢性肝炎南方
  315 + private static PatientGuide patientGuide4MXGY_NF= new PatientGuide("各种营养素的均衡摄入\n" +
  316 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食。\n" +
  317 + "每日摄入3次奶及奶制品\n" +
  318 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  319 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  320 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  321 + "增加用餐次数\n" +
  322 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  323 + "保证饮食的清淡\n" +
  324 + "每日食盐的摄入不得超过6g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  325 + "保证食物的清洁卫生\n" +
  326 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  327 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  328 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入。\n" +
  329 + "规律的生活,适当的运动\n" +
  330 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","高热量—高蛋白质—高碳水化合物—中等脂肪—高维生素—低纤维细纤维(水溶性纤维)—低盐(5g)\n" +
  331 + "热量保证在30-40kcal/kg,蛋白质1.5-2.0g/kg,碳水化合物占总热量的60%,脂肪占总热量的20%。\n" +
  332 + "限制粗粮类,牛肉和猪肉组织较硬的部位、培根、午餐肉、香肠、肉脯等含添加剂较多的加工食品,含纤维较粗、不可溶纤维的蔬菜和水果;尽量避免辛辣刺激、油炸等烹饪方法。");
  333 +
  334 +
  335 + //贫血南方
  336 + private static PatientGuide patientGuide4PX_NF= new PatientGuide("各种营养素的均衡摄入\n" +
  337 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。\n" +
  338 + "每日摄入3次奶及奶制品\n" +
  339 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等;经常摄入排骨、鱼虾类等以达到钙质的补充。\n" +
  340 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  341 + "每日保证至少300g蔬菜和200g水果的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  342 + "增加用餐次数\n" +
  343 + "应采取少食多餐的原则,每日进餐次数由孕前的3次增加至5-6次,每日可在3次正餐中间加2-3次的加餐,每餐时间间隔约2小时左右,每餐8-9分饱即可。\n" +
  344 + "保证饮食的清淡\n" +
  345 + "每日食盐的摄入不得超过6g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等\n" +
  346 + "保证食物的清洁卫生\n" +
  347 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  348 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  349 + "孕期绝对禁止抽烟、饮酒;避免咖啡、茶等含咖啡因的饮料,保证每日2300ml水的摄入。\n" +
  350 + "规律的生活,适当的运动\n" +
  351 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","补铁的同时,要注意红血球合成所需的热量、蛋白质、无机质、维生素的充分摄取,以及同时补充维生素C能够促进铁的吸收。孕中期铁的需求量为每日24mg,孕晚期铁的需求量为每日29mg,如果食物不能满足身体对铁的所需,可在医生建议下补充铁剂。\n" +
  352 + "豆类、粗粮类比细粮铁的含量高;经常摄入牛肉、鸡肉、鱼类、蛋类、动物肝脏等铁,尤其是动物肝脏中铁的含量与吸收率都较高,可以每周吃2-3吃;紫菜、海带等海产品以及菠菜等深绿色的蔬菜也富含大量的铁元素,每天应保证300-500g的蔬菜摄入;乳制品中也含有丰富的铁,每日至少保证500g奶制品的摄入。\n" +
  353 + "维生素B12和叶酸的缺乏也可能会造成贫血,因此平时还应该多摄取一些动物性食物、绿色蔬菜、豆类等进行补充。\n" +
  354 + "草酸、植酸、鞣酸、咖啡因等都会破铁的吸收,因此要避免茶、咖啡等含咖啡因的饮料的摄入,以及食用草酸、植酸、鞣酸等蔬菜时,尽量焯水、做熟后再食用。");
  355 +
  356 + //糖尿病南方
  357 + private static PatientGuide patientGuide4NTB_NF= new PatientGuide("各种营养素的均衡摄入\n" +
  358 + "每日保证糖类、脂肪、蛋白质、维生素、水、无机盐六大营养素的均衡摄入,可根据季节变化以及个人的喜好,选择时令新鲜的食材,每种营养素所对应的食物选择2种。保证规律的饮食,不得挑食、偏食;避免过食,从而引起体重增长过快。\n" +
  359 + "每日摄入3次奶及奶制品\n" +
  360 + "每日保证300-500g奶制品的摄入,例如牛奶、酸奶、奶酪等。\n" +
  361 + "肉类、鱼虾类、蔬菜、水果均衡摄入\n" +
  362 + "每日保证至少300g蔬菜的摄入,可根据自己的喜好选择2-3种时令水果和蔬菜;随着孕期的变化每日100-300g肉类和1-3个鸡蛋的摄入;每周2-3次豆类的摄入(每次20-30g)和2-3次鱼虾类的摄入(每次100-200g),以及1次动物内脏的摄入(每次50-100g)。\n" +
  363 + "保证饮食的清淡\n" +
  364 + "每日食盐的摄入不得超过5g,烹调时减少酱油、味精、糖等调料的添加;减少油脂的摄入,保证饮食的清淡,少吃或不吃油炸食物、辛辣食物、糕点、饮料、冰淇淋等。\n" +
  365 + "保证食物的清洁卫生\n" +
  366 + "保证食物的卫生,新鲜,不吃隔夜、变质的食物,不吃没有熟透的肉类和海鲜,尽量减少外出用餐。\n" +
  367 + "远离烟、酒、咖啡因,保证水分的充足\n" +
  368 + "孕期绝对禁止抽烟、饮酒;减少咖啡因的摄入,每日不得超过300mg,少喝咖啡,不喝浓茶、碳酸饮料等,保证每日2300ml水的摄入。\n" +
  369 + "规律的生活,适当的运动\n" +
  370 + "养成规律的睡眠习惯,早睡——11点以前入睡,避免熬夜,早起——7:30-8:00间起床吃早餐,以免晚上失眠;每天根据自己的情况保证20-40分钟的轻度运动,孕早期以散步为宜,中期以游泳、瑜伽为宜,孕晚期以散步、助产运动为宜。","每日摄取的热量按照自身标准体重来制定;糖类、蛋白质、脂肪的比例为55-60%、15-20%、20-25%;至少保证100g糖类的摄入预防酮症酸中毒,尽量避免单糖类的摄入;多吃GI指数55以下的食物,如粗粮、豆类、牛奶、蔬菜等;蛋白质摄取量大约为1-1.5g/kg,约占总热量的15-20%(至少1/3以上为动物性蛋白);多不饱和脂肪:单不饱和脂肪:饱和脂肪为1:1:1,每日n-3的摄入量应保证3g预防高脂血症,胆固醇的摄入量每日不得超过300mg;增加膳食纤维的摄入量,可抑制血糖的上升速度,每日的摄取量为20-35g;规律饮食,少吃多餐,一天5-6餐,每餐八-九分饱;尽量选择蒸、煮、汆烫等烹饪方法,避免煎、炸、烤等方式,烹饪时避免食物过于熟烂,不要空腹喝粥。(需药物治疗患者每日可增加总热量10%的加餐)");
  371 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/DefaultComputeKulServiceImpl.java View file @ f4a7170
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import com.lyms.platform.operate.web.service.IComputeKul;
  4 +import com.lyms.platform.operate.web.utils.ReportConfig;
  5 +import org.apache.commons.lang.StringUtils;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +import java.math.BigDecimal;
  9 +import java.util.HashMap;
  10 +import java.util.Map;
  11 +
  12 +
  13 +/**
  14 + * 默认的卡路里计算规则
  15 + * <p>
  16 + * 详细描述
  17 + * <p>
  18 + * 示例代码
  19 + * <pre>
  20 + * </pre/>
  21 + *
  22 + * @author JIAZHI.JIANG
  23 + * @version BME V100R001 2018-08-28 10:24
  24 + * @since BME V100R001C40B104
  25 + */
  26 +public class DefaultComputeKulServiceImpl implements IComputeKul {
  27 +
  28 +
  29 + @Override
  30 + public boolean canSupported(String riskId) {
  31 + return false;
  32 + }
  33 +
  34 + @Override
  35 + public Map<String, String> getComputeKul(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic,String beforeHeight) {
  36 + Map<String, String> map = new HashMap<>();
  37 +
  38 + double kulStart = 0;
  39 + double kulEnd = 0;
  40 +
  41 + String status = "";
  42 +
  43 + double add = Double.valueOf(String.format("%.2f", currentWeight - beforeWeight));
  44 +
  45 + //孕早期
  46 + if (week <= 12) {
  47 + if (add < 1 && (1 - add >= 0.5)) {
  48 + status = "低于";
  49 + kulStart = currentWeight * 25 + 500;
  50 + } else if (add > 1.5 && (add - 1.5 >= 0.5)) {
  51 + status = "高于";
  52 + kulStart = currentWeight * 25 - 500;
  53 + } else {
  54 + status = "处于";
  55 + kulStart = currentWeight * 25;
  56 + }
  57 + kulEnd = kulStart;
  58 + }
  59 + //孕中期 //孕晚期
  60 + else if (week > 12) {
  61 + //基础kcal值
  62 + int basekul = (week > 12 && week <= 27) ? 340 : 450;
  63 +
  64 +
  65 + String bmiStr = "";
  66 +
  67 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  68 + if (bmi < 18.5) {
  69 + bmiStr = "BMI<18.5孕" + week + "周";
  70 + } else if (bmi <= 24.9 && bmi >= 18.5) {
  71 + bmiStr = "BMI=18.5-24.9孕" + week + "周";
  72 + } else if (bmi <= 29.9 && bmi >= 25) {
  73 + bmiStr = "BMI=25-29.9孕" + week + "周";
  74 + } else if (bmi >= 30) {
  75 + bmiStr = "BMI≥30孕" + week + "周";
  76 + }
  77 + } else {
  78 + if (bmi <= 24.9) {
  79 + bmiStr = "BMI≤24.9孕" + week + "周";
  80 + } else if (bmi <= 29.9 && bmi >= 25) {
  81 + bmiStr = "BMI=25-29.9孕" + week + "周";
  82 + } else if (bmi >= 30) {
  83 + bmiStr = "BMI≥30孕" + week + "周";
  84 + }
  85 + }
  86 +
  87 +
  88 + if (StringUtils.isEmpty(bmiStr)) {
  89 + return map;
  90 + }
  91 +
  92 + String[] rangeWeight = null;
  93 +
  94 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  95 + rangeWeight = ReportConfig.getWeightRange(bmiStr).split("-");
  96 + } else {
  97 + rangeWeight = ReportConfig.getDWeightRange(bmiStr).split("-");
  98 + }
  99 +
  100 +
  101 + if (rangeWeight == null || rangeWeight.length != 2) {
  102 + return map;
  103 + }
  104 +
  105 + double addWeightStart = Double.parseDouble(rangeWeight[0]);
  106 + double addWeightEnd = Double.parseDouble(rangeWeight[1]);
  107 +
  108 + BigDecimal b1 = new BigDecimal(Double.toString(addWeightStart));
  109 + BigDecimal b2 = new BigDecimal(Double.toString(addWeightEnd));
  110 + BigDecimal bw = new BigDecimal(Double.toString(beforeWeight));
  111 + double kstart = (bw.add(b1)).multiply(new BigDecimal(25)).doubleValue() + basekul;
  112 + double kend = (bw.add(b2)).multiply(new BigDecimal(25)).doubleValue() + basekul;
  113 +
  114 + status = "处于";
  115 + if (addWeightEnd < add && (Double.valueOf(String.format("%.2f", add - addWeightEnd))) >= 0.5) {
  116 + status = "高于";
  117 + kstart -= 500;
  118 + kend -= 500;
  119 + } else if (addWeightStart > add && (Double.valueOf(String.format("%.2f", addWeightStart - add))) >= 0.5) {
  120 + status = "低于";
  121 + kstart += 500;
  122 + kend += 500;
  123 + }
  124 + kulStart = kstart;
  125 + kulEnd = kend;
  126 + }
  127 +
  128 + map.put("kulStart", String.valueOf(kulStart));
  129 + map.put("kulEnd", String.valueOf(kulEnd));
  130 + map.put("status", status);
  131 + return map;
  132 + }
  133 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/JXGYComputeKuLServiceImpl.java View file @ f4a7170
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import com.lyms.platform.operate.web.service.IComputeKul;
  4 +import com.lyms.platform.operate.web.utils.ReportConfig;
  5 +import org.apache.commons.lang.StringUtils;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import java.math.BigDecimal;
  11 +import java.util.ArrayList;
  12 +import java.util.HashMap;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +
  17 +/**
  18 + * 急性肝炎热量计算公式
  19 + * <p>
  20 + * 急性肝炎(病毒性肝炎)
  21 + 孕早期:当前体重×35kcal;
  22 + 中期:当前体重×35kcal+340kcal;
  23 + 晚期:当前体重×35kcal+450kcal
  24 + * <p>
  25 + * 示例代码
  26 + * <pre>
  27 + * </pre/>
  28 + *
  29 + * @author JIAZHI.JIANG
  30 + * @version BME V100R001 2018-08-28 14:50
  31 + * @since BME V100R001C40B104
  32 + */
  33 +@Service
  34 +public class JXGYComputeKuLServiceImpl implements IComputeKul {
  35 +
  36 + private List<String> supportList =new ArrayList<>();
  37 + {
  38 + /* b43a43e4-733f-4ec1-9b5e-f00b9bc6e651 消化系统疾病:单纯HbsAg阳性
  39 + 5a41f670422b03d4ad2bf7f0 病毒性肝炎*/
  40 + supportList.add("b43a43e4-733f-4ec1-9b5e-f00b9bc6e651");
  41 + supportList.add("5a41f670422b03d4ad2bf7f0");
  42 + }
  43 +
  44 + // 妊娠期糖尿病卡路里计算公式支持的高危id
  45 + @Override
  46 + public boolean canSupported(String riskId) {
  47 + return supportList.contains(riskId);
  48 + }
  49 +
  50 + @Override
  51 + public Map<String, String> getComputeKul(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic,String beforeHeight) {
  52 + Map<String, String> map = new HashMap<>();
  53 +
  54 + double kulStart = 0;
  55 + double kulEnd = 0;
  56 +
  57 + String status = "";
  58 +
  59 + double add = Double.valueOf(String.format("%.2f", currentWeight - beforeWeight));
  60 +
  61 + //孕早期
  62 + if (week <= 12) {
  63 + if (add < 1 && (1 - add >= 0.5)) {
  64 + status = "低于";
  65 + kulStart = currentWeight * 35 ;
  66 + } else if (add > 1.5 && (add - 1.5 >= 0.5)) {
  67 + status = "高于";
  68 + kulStart = currentWeight * 35;
  69 + } else {
  70 + status = "处于";
  71 + kulStart = currentWeight * 35;
  72 + }
  73 + kulEnd = kulStart;
  74 + }
  75 + //孕中期 //孕晚期
  76 + else if (week > 12) {
  77 + //基础kcal值
  78 + int basekul = (week > 12 && week <= 27) ? 340 : 450;
  79 +
  80 +
  81 + String bmiStr = "";
  82 +
  83 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  84 + if (bmi < 18.5) {
  85 + bmiStr = "BMI<18.5孕" + week + "周";
  86 + } else if (bmi <= 24.9 && bmi >= 18.5) {
  87 + bmiStr = "BMI=18.5-24.9孕" + week + "周";
  88 + } else if (bmi <= 29.9 && bmi >= 25) {
  89 + bmiStr = "BMI=25-29.9孕" + week + "周";
  90 + } else if (bmi >= 30) {
  91 + bmiStr = "BMI≥30孕" + week + "周";
  92 + }
  93 + } else {
  94 + if (bmi <= 24.9) {
  95 + bmiStr = "BMI≤24.9孕" + week + "周";
  96 + } else if (bmi <= 29.9 && bmi >= 25) {
  97 + bmiStr = "BMI=25-29.9孕" + week + "周";
  98 + } else if (bmi >= 30) {
  99 + bmiStr = "BMI≥30孕" + week + "周";
  100 + }
  101 + }
  102 +
  103 +
  104 + if (StringUtils.isEmpty(bmiStr)) {
  105 + return map;
  106 + }
  107 +
  108 + String[] rangeWeight = null;
  109 +
  110 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  111 + rangeWeight = ReportConfig.getWeightRange(bmiStr).split("-");
  112 + } else {
  113 + rangeWeight = ReportConfig.getDWeightRange(bmiStr).split("-");
  114 + }
  115 +
  116 +
  117 + if (rangeWeight == null || rangeWeight.length != 2) {
  118 + return map;
  119 + }
  120 +
  121 + double addWeightStart = Double.parseDouble(rangeWeight[0]);
  122 + double addWeightEnd = Double.parseDouble(rangeWeight[1]);
  123 +
  124 + BigDecimal b1 = new BigDecimal(Double.toString(currentWeight));
  125 + double kstart = b1.multiply(new BigDecimal(35)).doubleValue() + basekul;
  126 + double kend = b1.multiply(new BigDecimal(35)).doubleValue() + basekul;
  127 +
  128 + status = "处于";
  129 + if (addWeightEnd < add && (Double.valueOf(String.format("%.2f", add - addWeightEnd))) >= 0.5) {
  130 + status = "高于";
  131 + kstart -= 500;
  132 + kend -= 500;
  133 + } else if (addWeightStart > add && (Double.valueOf(String.format("%.2f", addWeightStart - add))) >= 0.5) {
  134 + status = "低于";
  135 + kstart += 500;
  136 + kend += 500;
  137 + }
  138 + kulStart = kstart;
  139 + kulEnd = kend;
  140 + }
  141 +
  142 + map.put("kulStart", String.valueOf(kulStart));
  143 + map.put("kulEnd", String.valueOf(kulEnd));
  144 + map.put("status", status);
  145 + return map;
  146 + }
  147 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PatientWeightServiceImpl.java View file @ f4a7170
... ... @@ -72,6 +72,8 @@
72 72  
73 73 @Autowired
74 74 private DoctorUserMapService doctorUserMapService;
  75 + @Autowired
  76 + private ComputeKulServiceManager computeKulServiceManager;
75 77  
76 78  
77 79 /**
... ... @@ -451,8 +453,8 @@
451 453  
452 454 if (1 == type) {
453 455 setGuide(week, map); // 设置指南
454   - }else {
455   - WeightConfigModel configModel = getWeightConfigBykcal(kmap, ReportConfig.getNSArea(basicConfig.getName()));
  456 + } else {
  457 + WeightConfigModel configModel = getWeightConfigBykcal(kmap, ReportConfig.getNSArea(basicConfig.getName()), null);
456 458 if (configModel != null) {
457 459 if (2 == type) {
458 460 setRecipe(map, configModel, week, kmap); // 设置食谱
... ... @@ -488,7 +490,7 @@
488 490 String yunqi = "孕" + String.valueOf(week) + "期";
489 491 map.put("yunqi", yunqi);
490 492 List<String> factor = patients.getRiskFactorId();
491   - String risk="";
  493 + String risk = "";
492 494 if (CollectionUtils.isNotEmpty(factor)) {
493 495 StringBuilder sb = new StringBuilder(56);
494 496 for (String srt : factor) {
495 497  
... ... @@ -500,9 +502,9 @@
500 502 }
501 503 }
502 504 if (sb.toString().endsWith(",")) {
503   - risk=sb.substring(0, sb.length() - 1);
  505 + risk = sb.substring(0, sb.length() - 1);
504 506 } else {
505   - risk=sb.toString();
  507 + risk = sb.toString();
506 508 }
507 509 }
508 510 map.put("risk", risk);
... ... @@ -521,7 +523,7 @@
521 523 }
522 524  
523 525 @Override
524   - public BaseResponse report(String id, Integer userId) {
  526 + public BaseResponse report(String id, Integer userId, String rid) {
525 527 String hospitalId = autoMatchFacade.getHospitalId(userId);
526 528 Organization org = organizationService.getOrganization(Integer.parseInt(hospitalId));
527 529  
528 530  
529 531  
530 532  
... ... @@ -557,19 +559,25 @@
557 559 //setInfo(week, map); // 设置孕期相关营养信息
558 560 if (week > 5 && week < 41) {
559 561 double bmi = Double.parseDouble(patientWeight.getBmi());
560   - Map<String, String> kmap = getComputeKul(Double.parseDouble(patientWeight.getBeforeWeight()),
561   - Double.parseDouble(patientWeight.getNowWeight()), week, bmi, patientWeight.getBregmatic());
  562 + //根据高危获取不同的卡路里计算公式
  563 + Map<String, String> kmap = computeKulServiceManager.getComputeKulByRisk(rid).getComputeKul(Double.parseDouble(patientWeight.getBeforeWeight()),
  564 + Double.parseDouble(patientWeight.getNowWeight()), week, bmi, patientWeight.getBregmatic(), patientWeight.getBeforeHeight());
562 565 if (map == null || map.size() == 0) {
563 566 return null;
564 567 }
565 568  
566 569 setGuide(week, map); // 设置指南
  570 + String nsArea=ReportConfig.getNSArea(basicConfig.getName());
567 571  
568   - WeightConfigModel configModel = getWeightConfigBykcal(kmap, ReportConfig.getNSArea(basicConfig.getName()));
  572 + WeightConfigModel configModel = getWeightConfigBykcal(kmap, nsArea, rid);
569 573 if (configModel != null) {
570 574 setRecipe(map, configModel, week, kmap); // 设置食谱
571 575 setSuggest(map, configModel, week); // 设置建议
572 576 setCookbook(map, configModel); // 设置菜谱
  577 + //设置饮食原则
  578 + setYSYZ(map,ComputeKulServiceManager.getPatientGuideMap().get(rid+nsArea));
  579 + //设置饮食原则
  580 + setYYZN(map,ComputeKulServiceManager.getPatientGuideMap().get(rid+nsArea));
573 581 }
574 582 }
575 583 }
... ... @@ -882,6 +890,23 @@
882 890 map.put("suggest", suggests);
883 891 }
884 892  
  893 +
  894 + private void setYSYZ(Map<String, Object> map, ComputeKulServiceManager.PatientGuide patientGuide) {
  895 + if(null==patientGuide){
  896 + return;
  897 + }
  898 + map.put("ysyz", patientGuide.getYsyz());
  899 + map.put("cookbookTitle", "饮食原则");
  900 + }
  901 +
  902 + private void setYYZN(Map<String, Object> map, ComputeKulServiceManager.PatientGuide patientGuide) {
  903 + if(null==patientGuide){
  904 + return;
  905 + }
  906 + map.put("yyzn", patientGuide.getYzzn());
  907 + map.put("cookbookTitle", "营养指南");
  908 + }
  909 +
885 910 private void setCookbook(Map<String, Object> map, WeightConfigModel configModel) {
886 911 List<WeightConfigModel.Cookbook> cookbooks = configModel.getCookbooks();
887 912 map.put("cookbooks", cookbooks);
... ... @@ -1193,7 +1218,7 @@
1193 1218 }
1194 1219  
1195 1220  
1196   - private WeightConfigModel getWeightConfigBykcal(Map<String, String> map, String northSouth) {
  1221 + private WeightConfigModel getWeightConfigBykcal(Map<String, String> map, String northSouth, String risk) {
1197 1222 if (map.get("kulStart") == null) {
1198 1223 return null;
1199 1224 }
... ... @@ -1209,7 +1234,16 @@
1209 1234 } else if (k1 > 3300) {
1210 1235 k1 = 3300;
1211 1236 }
1212   - WeightConfigModel weightConfigModel = mongoTemplate.findOne(Query.query(Criteria.where("northSouth").is(northSouth).and("kcal").is(k1)),
  1237 + Criteria criteria = Criteria.where("northSouth").is(northSouth).and("kcal").is(k1);
  1238 +
  1239 + //如果传了高危因素id就按高危去查
  1240 + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(risk)) {
  1241 + criteria = criteria.and("riskId").in(risk).and("type").is("1");
  1242 + }else {
  1243 + criteria = criteria.and("type").is("0");
  1244 + }
  1245 + Query query = Query.query(criteria);
  1246 + WeightConfigModel weightConfigModel = mongoTemplate.findOne(query,
1213 1247 WeightConfigModel.class);
1214 1248 return weightConfigModel;
1215 1249 }
... ... @@ -1329,6 +1363,36 @@
1329 1363 map.put("kulEnd", String.valueOf(kulEnd));
1330 1364 map.put("status", status);
1331 1365 return map;
  1366 + }
  1367 +
  1368 + /**
  1369 + * 获取高危的饮食原则
  1370 + *
  1371 + * @return
  1372 + */
  1373 + public BaseResponse findRiskDietaryPrinciples(String patientId) {
  1374 + Patients patients = patientsService.findOnePatientById(patientId);
  1375 + List dataResp = new ArrayList();
  1376 + if (null != patients) {
  1377 + List<String> list = patients.getRiskFactorId();
  1378 + if (CollectionUtils.isNotEmpty(list)) {
  1379 + List<WeightConfigModel> data = mongoTemplate.find(Query.query(Criteria.where("riskId").in(list)),
  1380 + WeightConfigModel.class);
  1381 + if (CollectionUtils.isNotEmpty(data)) {
  1382 + for (WeightConfigModel config : data) {
  1383 + for (String str : config.getRiskId()) {
  1384 + if (list.contains(str)) {
  1385 + Map map = new HashMap();
  1386 + map.put("name", basicConfigService.getOneBasicConfigById(str).getName());
  1387 + map.put("id", config.getRiskId());
  1388 + dataResp.add(map);
  1389 + }
  1390 + }
  1391 + }
  1392 + }
  1393 + }
  1394 + }
  1395 + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setData(dataResp);
1332 1396 }
1333 1397  
1334 1398  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TnbComputeKulServiceImpl.java View file @ f4a7170
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import com.lyms.platform.operate.web.service.IComputeKul;
  4 +import com.lyms.platform.operate.web.utils.ReportConfig;
  5 +import org.apache.commons.lang.StringUtils;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import java.math.BigDecimal;
  11 +import java.util.ArrayList;
  12 +import java.util.HashMap;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +
  16 +
  17 +/**
  18 + * 妊娠期糖尿病卡路里计算公式
  19 + * <p>
  20 + * 详细描述
  21 + * <p>
  22 + * 示例代码
  23 + * <pre>
  24 + * </pre/>
  25 + *
  26 + * @author JIAZHI.JIANG
  27 + * @version BME V100R001 2018-08-28 16:48
  28 + * @since BME V100R001C40B104
  29 + */
  30 +@Service
  31 +class TnbComputeKulServiceImpl implements IComputeKul {
  32 +
  33 + private List<String> supportList =new ArrayList<>();
  34 + {
  35 + /* 5aab6d3d422b03d4ad2bf83e 妊娠期糖尿病(无需药物治疗)
  36 + 5aab6d3e422b03d4ad2bf83f 糖尿病合并妊娠(无需药物治疗)
  37 + de7468e6-1bb5-4fab-ae84-78857868409a 需药物治疗的糖尿病*/
  38 + supportList.add("5aab6d3d422b03d4ad2bf83e");
  39 + supportList.add("5aab6d3e422b03d4ad2bf83f");
  40 + supportList.add("de7468e6-1bb5-4fab-ae84-78857868409a");
  41 +
  42 + }
  43 +
  44 +// 妊娠期糖尿病卡路里计算公式支持的高危id
  45 + @Override
  46 + public boolean canSupported(String riskId) {
  47 + return supportList.contains(riskId);
  48 + }
  49 +
  50 + @Override
  51 + public Map<String, String> getComputeKul(double beforeWeight, double currentWeight, int week, double bmi, String bregmatic, String beforeHeight) {
  52 + Map<String, String> map = new HashMap<>();
  53 +
  54 + double kulStart = 0;
  55 + double kulEnd = 0;
  56 +
  57 + String status = "";
  58 +
  59 + double add = Double.valueOf(String.format("%.2f", currentWeight - beforeWeight));
  60 + double height = Double.valueOf(String.format("%.2f", beforeHeight));
  61 +
  62 + //孕早期
  63 + if (week <= 12) {
  64 + if (add < 1 && (1 - add >= 0.5)) {
  65 + status = "低于";
  66 + kulStart = new BigDecimal(Double.toString(height)).multiply(new BigDecimal(Double.toString(height))).doubleValue()*21 + 500;
  67 + } else if (add > 1.5 && (add - 1.5 >= 0.5)) {
  68 + status = "高于";
  69 + kulStart =new BigDecimal(Double.toString(height)).multiply(new BigDecimal(Double.toString(height))).doubleValue()*21- 500;
  70 + } else {
  71 + status = "处于";
  72 + kulStart =new BigDecimal(Double.toString(height)).multiply(new BigDecimal(Double.toString(height))).doubleValue()*21;
  73 + }
  74 + kulEnd = kulStart;
  75 + }
  76 + //孕中期 //孕晚期
  77 + else if (week > 12) {
  78 + //基础kcal值
  79 + int basekul = (week > 12 && week <= 27) ? 340 : 450;
  80 +
  81 + String bmiStr = "BMI=18.5-24.9孕" + week + "周";
  82 +
  83 +
  84 + if (StringUtils.isEmpty(bmiStr)) {
  85 + return map;
  86 + }
  87 +
  88 + String[] rangeWeight = null;
  89 +
  90 + if (StringUtils.isEmpty(bregmatic) || "1".equals(bregmatic)) {
  91 + rangeWeight = ReportConfig.getWeightRange(bmiStr).split("-");
  92 + } else {
  93 + rangeWeight = ReportConfig.getDWeightRange(bmiStr).split("-");
  94 + }
  95 +
  96 +
  97 + if (rangeWeight == null || rangeWeight.length != 2) {
  98 + return map;
  99 + }
  100 +
  101 + double addWeightStart = Double.parseDouble(rangeWeight[0]);
  102 + double addWeightEnd = Double.parseDouble(rangeWeight[1]);
  103 +
  104 + BigDecimal b1 = new BigDecimal(Double.toString(addWeightStart));
  105 + BigDecimal b2 = new BigDecimal(Double.toString(addWeightEnd));
  106 + BigDecimal bw = new BigDecimal(Double.toString(beforeWeight));
  107 + double kstart = (bw.add(b1)).multiply(new BigDecimal(25)).doubleValue() + basekul;
  108 + double kend = (bw.add(b2)).multiply(new BigDecimal(25)).doubleValue() + basekul;
  109 +
  110 + status = "处于";
  111 + if (addWeightEnd < add && (Double.valueOf(String.format("%.2f", add - addWeightEnd))) >= 0.5) {
  112 + status = "高于";
  113 + kstart -= 500;
  114 + kend -= 500;
  115 + } else if (addWeightStart > add && (Double.valueOf(String.format("%.2f", addWeightStart - add))) >= 0.5) {
  116 + status = "低于";
  117 + kstart += 500;
  118 + kend += 500;
  119 + }
  120 + kulStart = kstart;
  121 + kulEnd = kend;
  122 + }
  123 +
  124 + map.put("kulStart", String.valueOf(kulStart));
  125 + map.put("kulEnd", String.valueOf(kulEnd));
  126 + map.put("status", status);
  127 + return map;
  128 + }
  129 +}