|
@@ -169,24 +169,16 @@ CREATE INDEX idx_bp_user_id ON t_blood_pressure_data(user_id);
|
|
|
CREATE TABLE t_blood_glucose_data (
|
|
CREATE TABLE t_blood_glucose_data (
|
|
|
id BIGINT PRIMARY KEY COMMENT '主键ID',
|
|
id BIGINT PRIMARY KEY COMMENT '主键ID',
|
|
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
|
|
- fasting_blood_glucose DECIMAL(4,2) COMMENT '空腹血糖(mmol/L)',
|
|
|
|
|
- after_breakfast_blood_glucose DECIMAL(4,2) COMMENT '早餐后血糖(mmol/L)',
|
|
|
|
|
- before_lunch_blood_glucose DECIMAL(4,2) COMMENT '午餐前血糖(mmol/L)',
|
|
|
|
|
- after_lunch_blood_glucose DECIMAL(4,2) COMMENT '午餐后血糖(mmol/L)',
|
|
|
|
|
- before_dinner_blood_glucose DECIMAL(4,2) COMMENT '晚餐前血糖(mmol/L)',
|
|
|
|
|
- after_dinner_blood_glucose DECIMAL(4,2) COMMENT '晚餐后血糖(mmol/L)',
|
|
|
|
|
- before_bed_blood_glucose DECIMAL(4,2) COMMENT '睡前血糖(mmol/L)',
|
|
|
|
|
measure_time DATETIME NOT NULL COMMENT '测量时间',
|
|
measure_time DATETIME NOT NULL COMMENT '测量时间',
|
|
|
- create_user BIGINT COMMENT '创建者ID',
|
|
|
|
|
- create_time DATETIME COMMENT '创建时间',
|
|
|
|
|
- update_user BIGINT COMMENT '更新者ID',
|
|
|
|
|
- update_time DATETIME COMMENT '更新时间',
|
|
|
|
|
|
|
+ type VARCHAR(50) NOT NULL COMMENT '血糖测量类型',
|
|
|
|
|
+ value DECIMAL(5, 2) NOT NULL COMMENT '血糖值',
|
|
|
version INT DEFAULT 0 COMMENT '乐观锁版本号'
|
|
version INT DEFAULT 0 COMMENT '乐观锁版本号'
|
|
|
) COMMENT '血糖数据表';
|
|
) COMMENT '血糖数据表';
|
|
|
|
|
|
|
|
-- 索引设计
|
|
-- 索引设计
|
|
|
CREATE INDEX idx_bg_user_measure_time ON t_blood_glucose_data(user_id, measure_time);
|
|
CREATE INDEX idx_bg_user_measure_time ON t_blood_glucose_data(user_id, measure_time);
|
|
|
CREATE INDEX idx_bg_user_id ON t_blood_glucose_data(user_id);
|
|
CREATE INDEX idx_bg_user_id ON t_blood_glucose_data(user_id);
|
|
|
|
|
+CREATE INDEX idx_bg_type ON t_blood_glucose_data(type);
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
### 心率数据表 (t_heart_rate_data)
|
|
### 心率数据表 (t_heart_rate_data)
|
|
@@ -215,7 +207,7 @@ CREATE INDEX idx_hr_user_id ON t_heart_rate_data(user_id);
|
|
|
- 各模块特有字段:
|
|
- 各模块特有字段:
|
|
|
- 体格数据:`height`(身高), `weight`(体重)
|
|
- 体格数据:`height`(身高), `weight`(体重)
|
|
|
- 血压数据:`systolic_pressure`(收缩压), `diastolic_pressure`(舒张压)
|
|
- 血压数据:`systolic_pressure`(收缩压), `diastolic_pressure`(舒张压)
|
|
|
- - 血糖数据:`fasting_blood_glucose`(空腹血糖), `after_breakfast_blood_glucose`(早餐后血糖), `before_lunch_blood_glucose`(午餐前血糖), `after_lunch_blood_glucose`(午餐后血糖), `before_dinner_blood_glucose`(晚餐前血糖), `after_dinner_blood_glucose`(晚餐后血糖), `before_bed_blood_glucose`(睡前血糖)
|
|
|
|
|
|
|
+ - 血糖数据:`type`(血糖测量类型), `value`(血糖值)
|
|
|
- 心率数据:`heart_rate`(心率)
|
|
- 心率数据:`heart_rate`(心率)
|
|
|
- 继承BaseEntity的公共字段
|
|
- 继承BaseEntity的公共字段
|
|
|
|
|
|
|
@@ -273,30 +265,15 @@ public class BloodGlucoseData extends BaseEntity {
|
|
|
@TableField("user_id")
|
|
@TableField("user_id")
|
|
|
private Long userId;
|
|
private Long userId;
|
|
|
|
|
|
|
|
- @TableField("fasting_blood_glucose")
|
|
|
|
|
- private BigDecimal fastingBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @TableField("after_breakfast_blood_glucose")
|
|
|
|
|
- private BigDecimal afterBreakfastBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @TableField("before_lunch_blood_glucose")
|
|
|
|
|
- private BigDecimal beforeLunchBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @TableField("after_lunch_blood_glucose")
|
|
|
|
|
- private BigDecimal afterLunchBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @TableField("before_dinner_blood_glucose")
|
|
|
|
|
- private BigDecimal beforeDinnerBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @TableField("after_dinner_blood_glucose")
|
|
|
|
|
- private BigDecimal afterDinnerBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @TableField("before_bed_blood_glucose")
|
|
|
|
|
- private BigDecimal beforeBedBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
@TableField("measure_time")
|
|
@TableField("measure_time")
|
|
|
private LocalDateTime measureTime;
|
|
private LocalDateTime measureTime;
|
|
|
|
|
|
|
|
|
|
+ @TableField("type")
|
|
|
|
|
+ private String type;
|
|
|
|
|
+
|
|
|
|
|
+ @TableField("value")
|
|
|
|
|
+ private BigDecimal value;
|
|
|
|
|
+
|
|
|
// getters and setters
|
|
// getters and setters
|
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
@@ -436,38 +413,18 @@ public class BloodPressureDataResponse {
|
|
|
// AddBloodGlucoseDataRequest.java
|
|
// AddBloodGlucoseDataRequest.java
|
|
|
@Schema(description = "添加血糖数据请求")
|
|
@Schema(description = "添加血糖数据请求")
|
|
|
public class AddBloodGlucoseDataRequest {
|
|
public class AddBloodGlucoseDataRequest {
|
|
|
- @Schema(description = "空腹血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal fastingBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "早餐后血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal afterBreakfastBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "午餐前血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal beforeLunchBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "午餐后血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal afterLunchBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "晚餐前血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal beforeDinnerBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "晚餐后血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal afterDinnerBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "睡前血糖(mmol/L)", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
- @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
- private BigDecimal beforeBedBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
@Schema(description = "测量时间")
|
|
@Schema(description = "测量时间")
|
|
|
@NotNull
|
|
@NotNull
|
|
|
private LocalDateTime measureTime;
|
|
private LocalDateTime measureTime;
|
|
|
|
|
|
|
|
|
|
+ @Schema(description = "血糖测量类型")
|
|
|
|
|
+ @NotNull
|
|
|
|
|
+ private String type;
|
|
|
|
|
+
|
|
|
|
|
+ @Schema(description = "血糖值", minimum = "1.0", maximum = "30.0")
|
|
|
|
|
+ @DecimalMin("1.0") @DecimalMax("30.0")
|
|
|
|
|
+ private BigDecimal value;
|
|
|
|
|
+
|
|
|
// getters and setters
|
|
// getters and setters
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -477,30 +434,15 @@ public class BloodGlucoseDataResponse {
|
|
|
@Schema(description = "记录ID")
|
|
@Schema(description = "记录ID")
|
|
|
private Long id;
|
|
private Long id;
|
|
|
|
|
|
|
|
- @Schema(description = "空腹血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal fastingBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "早餐后血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal afterBreakfastBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "午餐前血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal beforeLunchBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "午餐后血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal afterLunchBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "晚餐前血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal beforeDinnerBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "晚餐后血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal afterDinnerBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
- @Schema(description = "睡前血糖(mmol/L)")
|
|
|
|
|
- private BigDecimal beforeBedBloodGlucose;
|
|
|
|
|
-
|
|
|
|
|
@Schema(description = "测量时间")
|
|
@Schema(description = "测量时间")
|
|
|
private LocalDateTime measureTime;
|
|
private LocalDateTime measureTime;
|
|
|
|
|
|
|
|
|
|
+ @Schema(description = "血糖测量类型")
|
|
|
|
|
+ private String type;
|
|
|
|
|
+
|
|
|
|
|
+ @Schema(description = "血糖值")
|
|
|
|
|
+ private BigDecimal value;
|
|
|
|
|
+
|
|
|
@Schema(description = "创建时间")
|
|
@Schema(description = "创建时间")
|
|
|
private LocalDateTime createTime;
|
|
private LocalDateTime createTime;
|
|
|
|
|
|
|
@@ -1035,5 +977,4 @@ public interface HeartRateDataMapper extends BaseMapper<HeartRateData> {
|
|
|
3. **性能优化**:独立表设计避免了大数据量查询时的性能问题
|
|
3. **性能优化**:独立表设计避免了大数据量查询时的性能问题
|
|
|
4. **医疗专业性**:血糖数据按标准医疗时间点分类,便于医生诊断
|
|
4. **医疗专业性**:血糖数据按标准医疗时间点分类,便于医生诊断
|
|
|
5. **数据一致性**:每种数据类型独立管理,确保数据一致性
|
|
5. **数据一致性**:每种数据类型独立管理,确保数据一致性
|
|
|
-6. **接口清晰**:每个模块提供独立的API,便于前端集成</content>
|
|
|
|
|
-<parameter name="filePath">d:\慢病APP\ChronicDiseaseApp\docs\HealthDataModuleDesign.md
|
|
|
|
|
|
|
+6. **接口清晰**:每个模块提供独立的API,便于前端集成
|