Browse Source

健康指标修改

xgb 1 tháng trước cách đây
mục cha
commit
5732ce3f52

+ 42 - 0
fs-service/src/main/java/com/fs/his/config/HealthIndicatorConfig.java

@@ -0,0 +1,42 @@
+package com.fs.his.config;
+
+import com.alibaba.fastjson.JSON;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @description: 血糖指标配置类
+ * @author: Xgb
+ * @createDate: 2025/8/28
+ * @version: 1.0
+ */
+@Data
+public class HealthIndicatorConfig {
+     /**
+     * 血糖指标
+     */
+    private Map<String, Object> bloodGlucose;
+    /**
+     * 血压指标
+     */
+    private Map<String, Object> bloodPressure;
+    /**
+     * 尿酸指标
+     */
+    private Map<String, Object> uricAcid;
+    /**
+     * BMI指标
+     */
+    private Map<String, Object> bmi;
+
+
+    /**
+     * 从JSON字符串创建对象实例
+     * @param json JSON字符串
+     * @return HealthIndicatorConfig对象
+     */
+    public static HealthIndicatorConfig fromJson(String json) {
+        return JSON.parseObject(json, HealthIndicatorConfig.class);
+    }
+}

+ 0 - 7
fs-service/src/main/java/com/fs/his/mapper/FsUserInfoMapper.java

@@ -44,12 +44,5 @@ public interface FsUserInfoMapper extends BaseMapper<FsUserInfo> {
      */
     int updateFsUserInfo(FsUserInfo fsUserInfo);
 
-    /**
-     * 删除用户信息
-     *
-     * @param id 用户信息主键
-     * @return 结果
-     */
-    int deleteFsUserInfoById(Long id);
 
 }

+ 2 - 1
fs-service/src/main/java/com/fs/his/service/IFsUserHealthDataService.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fs.his.config.HealthIndicatorConfig;
 import com.fs.his.domain.FsUserHealthData;
 
 /**
@@ -61,5 +62,5 @@ public interface IFsUserHealthDataService extends IService<FsUserHealthData>{
      */
     int deleteFsUserHealthDataById(String id);
 
-    Map<String,Object> parseHealthIndicator();
+    HealthIndicatorConfig parseHealthIndicator();
 }

+ 0 - 8
fs-service/src/main/java/com/fs/his/service/IFsUserInfoService.java

@@ -45,12 +45,4 @@ public interface IFsUserInfoService extends IService<FsUserInfo> {
      */
     int updateFsUserInfo(FsUserInfo fsUserInfo);
 
-
-    /**
-     * 删除用户信息信息
-     *
-     * @param userId 用户信息主键
-     * @return 结果
-     */
-    int deleteFsUserInfoById(Long userId);
 }

+ 130 - 5
fs-service/src/main/java/com/fs/his/service/impl/FsUserHealthDataServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.constant.Constants;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.StringUtils;
+import com.fs.his.config.HealthIndicatorConfig;
 import lombok.val;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -110,21 +111,145 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
      * @Date 2025/8/28 9:10
      */
     @Override
-    public Map<String, Object> parseHealthIndicator() {
+    public  HealthIndicatorConfig parseHealthIndicator() {
         String str = redisCache.getCacheObject(Constants.SYS_CONFIG_KEY + HEALTH_INDICATOR_KEY);
         // str JSON串转 map
         if(StringUtils.isEmpty(str)){
             throw new RuntimeException("健康指标配置不存在,请联系管理人员");
         }
 
-        // 解析健康指标JSON
-// {"bloodGlucose":{"fasting":{"normal":"1212.111111"},"post1Hour":{"normal":""},"post2Hour":{"normal":"2121"},"severity":[{"level":"normal","range":"","description":"12"},{"level":"mild","range":"121","description":"2121"},{"level":"severe","range":"212","description":"212"}]},"bloodPressure":{"protection":{"systolic":"","diastolic":""},"severity":[{"level":"normal","type":"systolic","range":"121","description":"121"},{"level":"mild","type":"systolic","range":"1212","description":"2121"},{"level":"severe","type":"systolic","range":"1212","description":"2121"},{"level":"normal","type":"diastolic","range":"121","description":"2121"},{"level":"mild","type":"diastolic","range":"212","description":"121"},{"level":"severe","type":"diastolic","range":"212","description":"121"}]},"uricAcid":{"activeGender":"male","male":[{"level":"normal","range":"<420","description":""},{"level":"poor","range":"420~480","description":""},{"level":"highRisk","range":">480","description":""}],"female":[{"level":"normal","range":"<360","description":""},{"level":"poor","range":"360~420","description":""},{"level":"highRisk","range":">420","description":""}]},"bmi":{"severity":[{"level":"normal","range":"18.5~23.9","description":""},{"level":"mild","range":"<18.5","description":""},{"level":"severe","range":"≥24.0","description":""}]}}
+        // 解析健康指标JSON 放入HealthIndicatorConfig
+        return HealthIndicatorConfig.fromJson(str);
+    }
+
+    public static void main(String[] args) {
+        // 解析健康指标JSON 放入map对象
+        String str="{\"bloodGlucose\":{\"fasting\":{\"normal\":\"3.9~6.1\"},\"post1Hour\":{\"normal\":\"<11.1\"},\"post2Hour\":{\"normal\":\"<7.8\"},\"severity\":[{\"level\":\"normal\",\"range\":\"<6.1\",\"description\":\"\"},{\"level\":\"mild\",\"range\":\"6.1~7.0\",\"description\":\"\"},{\"level\":\"severe\",\"range\":\"≥7.0\",\"description\":\"\"}]},\"bloodPressure\":{\"protection\":{\"systolic\":\"\",\"diastolic\":\"\"},\"severity\":[{\"level\":\"normal\",\"type\":\"systolic\",\"range\":\"<120\",\"description\":\"\"},{\"level\":\"mild\",\"type\":\"systolic\",\"range\":\"120~139\",\"description\":\"\"},{\"level\":\"severe\",\"type\":\"systolic\",\"range\":\"≥140\",\"description\":\"\"},{\"level\":\"normal\",\"type\":\"diastolic\",\"range\":\"<80\",\"description\":\"\"},{\"level\":\"mild\",\"type\":\"diastolic\",\"range\":\"80~89\",\"description\":\"\"},{\"level\":\"severe\",\"type\":\"diastolic\",\"range\":\"≥90\",\"description\":\"\"}]},\"uricAcid\":{\"activeGender\":\"male\",\"male\":[{\"level\":\"normal\",\"range\":\"<420\",\"description\":\"\"},{\"level\":\"poor\",\"range\":\"420~480\",\"description\":\"\"},{\"level\":\"highRisk\",\"range\":\">480\",\"description\":\"\"}],\"female\":[{\"level\":\"normal\",\"range\":\"<360\",\"description\":\"\"},{\"level\":\"poor\",\"range\":\"360~420\",\"description\":\"\"},{\"level\":\"highRisk\",\"range\":\">420\",\"description\":\"\"}]},\"bmi\":{\"severity\":[{\"level\":\"normal\",\"range\":\"18.5~23.9\",\"description\":\"\"},{\"level\":\"mild\",\"range\":\"<18.5\",\"description\":\"\"},{\"level\":\"severe\",\"range\":\"≥24.0\",\"description\":\"\"}]}}";
 
-        Map<String, Object> map = JSON.parseObject(str, Map.class);
-        // 校验健康指标配置
+        HealthIndicatorConfig config = HealthIndicatorConfig.fromJson(str);
+        System.out.println(getHealthIndicatorValue(config, "bloodGlucose", "fasting", "normal"));
 
+    }
 
+    /**
+     * 获取健康指标值
+     * @param config 健康指标配置对象
+     * @param type 指标类型 (bloodGlucose 血糖, bloodPressure 血压, uricAcid 血酸(分男女), bmi 胖瘦)
+     * @param key 指标键值 (bloodGlucose使用(fasting 正常, post1Hour 饭后一小时, post2Hour 饭后两小时 )血酸(male 男性 female 女性) severity 等)
+     * @param level 指标级别 (normal 正常, mild 轻微, severe 严重 等)
+     * @param subType 子类型 (bloodPressure时使用,systolic 收缩压, diastolic 舒张压)
+     * @return 指标值
+     */
+    private static String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level, String subType) {
+        if (config == null) {
+            throw new RuntimeException("健康指标配置不存在,请联系管理人员");
+        }
+
+        try {
+            switch (type) {
+                case "bloodGlucose":
+                    Map<String, Object> bloodGlucose = config.getBloodGlucose();
+                    if ("severity".equals(key)) {
+                        // 处理严重程度级别
+                        List<Map<String, Object>> severityList = (List<Map<String, Object>>) bloodGlucose.get("severity");
+                        for (Map<String, Object> severity : severityList) {
+                            if (level.equals(severity.get("level"))) {
+                                return (String) severity.get("range");
+                            }
+                        }
+                    } else {
+                        // 处理普通键值
+                        Map<String, Object> keyMap = (Map<String, Object>) bloodGlucose.get(key);
+                        if (keyMap != null) {
+                            return (String) keyMap.get(level);
+                        }
+                    }
+                    break;
+
+                case "bloodPressure":
+                    Map<String, Object> bloodPressure = config.getBloodPressure();
+                    if ("severity".equals(key)) {
+                        // 处理血压严重程度级别
+                        List<Map<String, Object>> severityList = (List<Map<String, Object>>) bloodPressure.get("severity");
+                        for (Map<String, Object> severity : severityList) {
+                            // 同时匹配级别和血压类型(收缩压/舒张压)
+                            if (level.equals(severity.get("level")) && subType.equals(severity.get("type"))) {
+                                return (String) severity.get("range");
+                            }
+                        }
+                    } else {
+                        // 处理保护范围等
+                        Map<String, Object> keyMap = (Map<String, Object>) bloodPressure.get(key);
+                        if (keyMap != null) {
+                            return (String) keyMap.get(level);
+                        }
+                    }
+                    break;
+
+                case "uricAcid":
+                    Map<String, Object> uricAcid = config.getUricAcid();
+                    if ("severity".equals(key)) {
+                        // 根据性别获取尿酸范围
+                        String activeGender = (String) uricAcid.get("activeGender");
+                        List<Map<String, Object>> genderList = (List<Map<String, Object>>) uricAcid.get(activeGender);
+                        if (genderList != null) {
+                            for (Map<String, Object> severity : genderList) {
+                                if (level.equals(severity.get("level"))) {
+                                    return (String) severity.get("range");
+                                }
+                            }
+                        }
+                    } else {
+                        // 直接根据指定性别获取尿酸范围
+                        if (subType != null && ("male".equals(subType) || "female".equals(subType))) {
+                            List<Map<String, Object>> genderList = (List<Map<String, Object>>) uricAcid.get(subType);
+                            if (genderList != null) {
+                                for (Map<String, Object> severity : genderList) {
+                                    if (level.equals(severity.get("level"))) {
+                                        return (String) severity.get("range");
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    break;
+
+                case "bmi":
+                    Map<String, Object> bmi = config.getBmi();
+                    if ("severity".equals(key)) {
+                        // 处理BMI严重程度级别
+                        List<Map<String, Object>> severityList = (List<Map<String, Object>>) bmi.get("severity");
+                        for (Map<String, Object> severity : severityList) {
+                            if (level.equals(severity.get("level"))) {
+                                return (String) severity.get("range");
+                            }
+                        }
+                    }
+                    break;
+
+                default:
+                    throw new RuntimeException("不支持的健康指标类型: " + type);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("获取健康指标值失败: " + e.getMessage());
+        }
 
         return null;
     }
+
+    /**
+     * 获取健康指标值 (重载方法,用于不需要subType的场景)
+     * @param config 健康指标配置对象
+     * @param type 指标类型
+     * @param key 指标键值
+     * @param level 指标级别
+     * @return 指标值
+     */
+    private static String getHealthIndicatorValue(HealthIndicatorConfig config, String type, String key, String level) {
+        return getHealthIndicatorValue(config, type, key, level, null);
+    }
+
+
+
+
 }

+ 0 - 12
fs-service/src/main/java/com/fs/his/service/impl/FsUserInfoServiceImpl.java

@@ -63,16 +63,4 @@ public class FsUserInfoServiceImpl extends ServiceImpl<FsUserInfoMapper, FsUserI
         fsUserInfo.setUpdateTime(DateUtils.getNowDate());
         return baseMapper.updateFsUserInfo(fsUserInfo);
     }
-
-
-    /**
-     * 删除用户信息信息
-     *
-     * @param userId 用户信息主键
-     * @return 结果
-     */
-    @Override
-    public int deleteFsUserInfoById(Long userId) {
-        return baseMapper.deleteFsUserInfoById(userId);
-    }
 }