老年人

// 综合评估
class AssessmentEngine {
private final DailyLivingActivity dailyLiving;
private final MentalStatus mentalStatus;

private boolean hasCognitiveImpairment;
private boolean hasMentalIllness;
private int recentAccidents;

public AbilityLevel evaluate() {
    Grade dailyGrade = dailyLiving.determineGrade();
    Grade mentalGrade = mentalStatus.determineGrade();
    // 获取其他两项分级...

    // 基础判定逻辑
    AbilityLevel level = basicJudgment(dailyGrade, mentalGrade /*, 其他分级 */);

    // 特殊情况处理
    if (hasCognitiveImpairment || hasMentalIllness || recentAccidents >= 2) {
        level = upgradeLevel(level);
    }
    
    return level;
}

private AbilityLevel basicJudgment(Grade daily, Grade mental, Grade sensory, Grade social) {
    // 实现表6的判定逻辑
    if (daily == Grade.GRADE_3) return AbilityLevel.SEVERE_LOSS;
    if (daily == Grade.GRADE_0 && mental == Grade.GRADE_0 
        && sensory == Grade.GRADE_0 && (social == Grade.GRADE_0 || social == Grade.GRADE_1)) {
        return AbilityLevel.INTACT;
    }
    // 其他判定条件...
    return AbilityLevel.MILD_LOSS; // 示例返回值
}

private AbilityLevel upgradeLevel(AbilityLevel original) {
    if (original == AbilityLevel.SEVERE_LOSS) return original;
    return AbilityLevel.values()[original.ordinal() + 1];
}

}

// 使用示例
public class Main {
public static void main(String[] args) {
DailyLivingActivity daily = new DailyLivingActivity();
daily.setEating(10); // 假设完全独立进食
// 设置其他项...

    AssessmentEngine engine = new AssessmentEngine(daily, new MentalStatus(), 
        /* 其他评估项 */ false, false, 0);
    
    AbilityLevel finalLevel = engine.evaluate();
    System.out.println("最终能力等级: " + finalLevel);

@Test
void testSevereLoss() {
DailyLivingActivity daily = new DailyLivingActivity();
daily.setTotalScore(35); // 重度受损
AssessmentEngine engine = new AssessmentEngine(daily, ...);
assertEquals(AbilityLevel.SEVERE_LOSS, engine.evaluate());
}
部分

posted @ 2025-02-14 22:44  ytr123  阅读(9)  评论(0)    收藏  举报