Bläddra i källkod

Revert "健康档案新增 时 腰围 臀围 登记等级"

This reverts commit 07ac934a933c9e793e1e832329ff8fbe7f4635e8.
xgb 1 vecka sedan
förälder
incheckning
eeaee39b30

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

@@ -30,14 +30,6 @@ public class HealthIndicatorConfig {
      * BMI指标
      */
     private Map<String, Object> bmi;
-    /**
-     * 腰围
-     */
-    private Map<String, Object> waist;
-    /**
-     * 臀围
-     */
-    private Map<String, Object> hip;
 
     public static final String SEVERITY = "severity";
 

+ 2 - 2
fs-service/src/main/java/com/fs/his/enums/HealthDataTypeEnum.java

@@ -11,8 +11,8 @@ import lombok.Getter;
 @Getter
 public enum HealthDataTypeEnum {
     // 0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI
-    WAIST( 0, "腰围","waist"),
-    HIP( 1, "臀围","hip"),
+    WAIST( 0, "腰围",""),
+    HIP( 1, "臀围",""),
     GLUCOSE( 2, "血糖","bloodGlucose"),
     BLOOD_PRESSURE( 3, "血压","bloodPressure"),
     URIC_ACID( 4, "尿酸","uricAcid"),

+ 104 - 103
fs-service/src/main/java/com/fs/his/service/impl/FsUserHealthDataServiceImpl.java

@@ -245,52 +245,6 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
         return HealthIndicatorConfig.fromJson(str);
     }
 
-    /**
-     * @Description: 解析健康指标配置
-     * @Param:
-     * @Return:
-     * @Author xgb
-     * @Date 2025/9/3 10:55
-     */
-    private String parseHealthIndicatorConfig(Map<String, Object> map,String key,String level) {
-        if (StringUtils.equalsAny(key, "severity", "male", "female")) {
-            // 处理严重程度级别
-            List<Map<String, Object>> severityList = (List<Map<String, Object>>) map.get(key);
-            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>) map.get(key);
-            if (keyMap != null) {
-                return (String) keyMap.get(level);
-            }
-        }
-        return null;
-    }
-
-    private String parseHealthIndicatorConfigTwo(Map<String, Object> map,String key,String level,String subType) {
-        if ("severity".equals(key)) {
-            // 处理血压严重程度级别
-            List<Map<String, Object>> severityList = (List<Map<String, Object>>) map.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>) map.get(key);
-            if (keyMap != null) {
-                return (String) keyMap.get(level);
-            }
-        }
-        return null;
-    }
-
     /**
      * 获取健康指标值
      *
@@ -308,24 +262,85 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
 
         try {
             switch (type) {
-                case "bloodGlucose": // 血糖
-                    return parseHealthIndicatorConfig(config.getBloodGlucose(), key, level);
-                case "bloodPressure": // 血压
-                    return parseHealthIndicatorConfigTwo(config.getBloodPressure(), key, level, subType);
-                case "uricAcid":// 尿酸
-                    return parseHealthIndicatorConfig(config.getUricAcid(), key, level);
-                case "waist":// 腰围
-                    return parseHealthIndicatorConfig(config.getWaist(), key, level);
-                case "hip":// 臀围
-                    return parseHealthIndicatorConfig(config.getHip(), key, level);
-                case "bmi":// BMI
-                    return parseHealthIndicatorConfig(config.getBmi(), key, level);
+                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 ("male".equals(key) || "female".equals(key)) {
+                        List<Map<String, Object>> genderList = (List<Map<String, Object>>) uricAcid.get(key);
+                        if (genderList != null) {
+                            for (Map<String, Object> severity : genderList) {
+                                if (level.equals(severity.get("level"))) {
+                                    return (String) severity.get("range");
+                                }
+                            }
+                        }
+                    } else {
+                        Map<String, Object> keyMap = (Map<String, Object>) uricAcid.get(key);
+                        if (keyMap != null) {
+                            return (String) keyMap.get(level);
+                        }
+                    }
+                    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 ServiceException("不支持的健康指标类型: " + type);
             }
         } catch (Exception e) {
             throw new ServiceException("获取健康指标值失败: " + e.getMessage());
         }
+
+        return null;
     }
 
     /**
@@ -397,9 +412,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
                 // 如果没有匹配的级别,则返回异常数据
                 return HealthDataLevelEnum.EXCEPTION.getValue();
             // 可以继续添加其他类型,如血压、尿酸等
-            case URIC_ACID: // 尿酸
-            case WAIST: // 腰围
-            case HIP: // 臀围
+            case URIC_ACID:
                 // 判断性别 0-男 1-女
                 String sex = fsUserHealthData.getSex();
                 String key;
@@ -487,6 +500,26 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
 
         }
 
+        // 若存在腰围
+        if (fsUserHealthProfile.getWaistCircumference() != null) {
+            /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
+            fsUserHealthData.setMeasurementType(HealthDataTypeEnum.WAIST.getValue());
+            fsUserHealthData.setValue1(fsUserHealthProfile.getWaistCircumference());
+            if (insertFsUserHealthData(fsUserHealthData) <= 0) {
+                throw new ServiceException("腰围数据登记失败");
+            }
+        }
+
+        // 若存在臀围
+        if (fsUserHealthProfile.getHipCircumference() != null) {
+            /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
+            fsUserHealthData.setMeasurementType(HealthDataTypeEnum.HIP.getValue());
+            fsUserHealthData.setValue1(fsUserHealthProfile.getHipCircumference());
+            if (insertFsUserHealthData(fsUserHealthData) <= 0) {
+                throw new ServiceException("臀围数据登记失败");
+            }
+        }
+
         // 若存在血压
         if (fsUserHealthProfile.getSystolicPressure() != null && fsUserHealthProfile.getDiastolicPressure() != null) {
 
@@ -518,7 +551,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
             // 查询用户信息获取 性别
             FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
             if (fsUserInfo == null || StringUtils.isEmpty(fsUserInfo.getSex())) {
-                throw new ServiceException("用户已注销或不存在");
+                throw new ServiceException("无法获取用户性别,请完善用户信息");
             }
 
             /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
@@ -531,43 +564,6 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
                 throw new ServiceException("尿酸数据登记失败");
             }
         }
-
-        // 若存在腰围
-        if (fsUserHealthProfile.getWaistCircumference() != null) {
-            // 查询用户信息获取 性别
-            FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
-            if (fsUserInfo == null || StringUtils.isEmpty(fsUserInfo.getSex())) {
-                throw new ServiceException("用户已注销或不存在");
-            }
-
-            /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
-            fsUserHealthData.setMeasurementType(HealthDataTypeEnum.WAIST.getValue());
-            fsUserHealthData.setValue1(fsUserHealthProfile.getWaistCircumference());
-            fsUserHealthData.setSex(fsUserInfo.getSex());
-            int healthIndicatorLevel = getHealthIndicatorLevel(fsUserHealthData);
-            fsUserHealthData.setLevel(healthIndicatorLevel);
-            if (insertFsUserHealthData(fsUserHealthData) <= 0) {
-                throw new ServiceException("腰围数据登记失败");
-            }
-        }
-
-        // 若存在臀围
-        if (fsUserHealthProfile.getHipCircumference() != null) {
-            // 查询用户信息获取 性别
-            FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
-            if (fsUserInfo == null || StringUtils.isEmpty(fsUserInfo.getSex())) {
-                throw new ServiceException("用户已注销或不存在");
-            }
-            /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
-            fsUserHealthData.setMeasurementType(HealthDataTypeEnum.HIP.getValue());
-            fsUserHealthData.setValue1(fsUserHealthProfile.getHipCircumference());
-            fsUserHealthData.setSex(fsUserInfo.getSex());
-            int healthIndicatorLevel = getHealthIndicatorLevel(fsUserHealthData);
-            fsUserHealthData.setLevel(healthIndicatorLevel);
-            if (insertFsUserHealthData(fsUserHealthData) <= 0) {
-                throw new ServiceException("臀围数据登记失败");
-            }
-        }
     }
 
     /**
@@ -582,7 +578,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
     public void addHealthData(FsUserHealthData fsUserHealthData) {
         int type = fsUserHealthData.getMeasurementType();
         // 0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI
-        if (type == 0 || type == 1 || type == 4) { // 尿酸查询等级信息时需要性别信息
+        if (type == 4) { // 尿酸查询等级信息时需要性别信息
             // 根据userId 查询用户信息
             FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
             if (StringUtils.isEmpty(user.getSex()) || "2".equals(user.getSex())) {
@@ -591,7 +587,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
             fsUserHealthData.setSex(user.getSex());
         }
         // 2-血糖,3-血压,4-尿酸 5-BMI 判断等级
-        if (type == 0 || type == 1 || type == 2 || type == 3 || type == 4) {
+        if (type == 2 || type == 3 || type == 4) {
             // 计算测量值对应等级
             int level = getHealthIndicatorLevel(fsUserHealthData);
             fsUserHealthData.setLevel(level);
@@ -603,8 +599,13 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
             int level = getHealthIndicatorLevel(fsUserHealthData);
             fsUserHealthData.setLevel(level);
             fsUserHealthData.setValue1(value1);
-        }else {
-            throw new ServiceException("不支持的测量类型");
+        } else if (type == 0 || type == 1) {
+            // 获取性别信息
+            FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
+            if (user == null || StringUtils.isEmpty(user.getSex())) {
+                throw new ServiceException("无法获取用户性别,请完善用户信息");
+            }
+            fsUserHealthData.setSex(user.getSex());
         }
         // 登记检测数据信息
         if (insertFsUserHealthData(fsUserHealthData) <= 0) {

+ 0 - 1
fs-service/src/main/resources/application-dev.yml

@@ -44,7 +44,6 @@ spring:
                 # 主库数据源
                 master:
                     url: jdbc:mysql://139.186.77.83:3306/zk_target_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-#                    url: jdbc:mysql://139.186.77.83:3306/ylrz_his_scrm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                     username: Rtroot
                     password: Rtroot
                 # 初始连接数