package com.fs.watch.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.Objects;
import java.util.stream.Stream;

@Getter
@NoArgsConstructor
@AllArgsConstructor
/**
 *      * 重度: 收缩压 > 180 mmHg 或 舒张压 > 110 mmHg 1
 *      * 中度: 收缩压在 160-179 mmHg 之间 或 舒张压在 100-109 mmHg 之间 2
 *      * 轻度: 收缩压在 140-159 mmHg 之间 或 舒张压在 90-99 mmHg 之间 3
 *      * 正常高值: 收缩压在 130-139 mmHg 之间 或 舒张压在 85-89 mmHg 之间 4
 *      * 偏低: 收缩压 < 90 mmHg 或 舒张压 < 60 mmHg 5
 *      * 正常: 收缩压在 90-139 mmHg 之间 且 舒张压在 60-89 mmHg 之间 6
 */
public enum WatchBpStatusEnum implements HealthStatusEnum{

    HYPERTENSION(1,"高血压",
            "您本周出现了%d次高血压异常，提示高血压病、冠心病、脑卒中、肾功能不全等疾病风险较高",
            "高血压是指动脉血压持续升高，是心脑血管疾病最重要的危险因素。",
            "限盐（每日<5g），避免熬夜和情绪激动；居家监测血压。若2周内血压持续偏高，需调整降压方案。",
            "使用低钠盐替代普通盐；练习深呼吸减压每天2次；购买上臂式电子血压计。"),
    NORMAL1(2,"中度",null,null,null,null),
    NORMAL2(3,"轻度",null,null,null,null),
    NORMAL3(4,"正常高值",null,null,null,null),
    HYPOTENSION(5,"低血压",
            "您本周出现了%d次低血压异常，提示贫血、甲状腺功能减退、心律失常等疾病风险较高。",
            "低血压指血压低于正常值，可能导致组织灌注不足，引发头晕乏力等症状。",
            "增加水分摄入，缓慢改变体位；可穿弹力袜改善循环。伴随头晕或晕厥需排查贫血、心脏病。",
            "晨起先坐位活动下肢再站立；增加咸味汤品摄入；避免长时间热水浴。"
    ),
    NORMAL(6,"正常",null,null,null,null),;

    private Integer value;
    private String desc;
    private String prediction;

    //解析
    private String analysis;
    //治疗建议
    private String suggestion;
    //注意事项
    private String precautions;

    public static WatchBpStatusEnum toType(Integer value) {
        return Stream.of(WatchBpStatusEnum.values())
                .filter(p -> Objects.equals(p.value, value))
                .findAny()
                .orElse(null);
    }
}
