StableVersion4.3/HL_FristAidPlatform_ChestPain/CalculateGraceScore.cs

210 lines
5.8 KiB
C#
Raw Permalink Normal View History

2024-03-11 09:47:34 +08:00
using System;
namespace HL_FristAidPlatform_ChestPain
{
/// <summary>
/// 计算 Grace分值
/// </summary>
public static class CalculateGraceScore
{
/// <summary>
/// 计算分值
/// </summary>
/// <param name="systolicPressure">收缩压</param>
/// <param name="creatinine">肌酐</param>
/// <param name="age">年龄</param>
/// <param name="heartRate">心率</param>
/// <param name="isSTChange">ST段变化</param>
/// <param name="isSuddenCardiacSrrest">入院时心脏骤停</param>
/// <param name="isMyocardialNecrosis">心肌坏死标志物升高</param>
/// <param name="killipClassification">killip分级</param>
/// <returns></returns>
public static int CalculateScore(int systolicPressure, decimal creatinine, int age, int heartRate, bool isSTChange, bool isSuddenCardiacSrrest, bool isMyocardialNecrosis, int killipClassification)
{
int Score = 0;
#region 年龄
if (age < 30)
{
Score += 0;
}
if (age >= 30 && age <= 39)
{
Score += 8;
}
else if (age >= 40 && age <= 49)
{
Score += 25;
}
else if (age >= 50 && age <= 59)
{
Score += 41;
}
else if (age >= 60 && age <= 69)
{
Score += 58;
}
else if (age >= 70 && age <= 79)
{
Score += 75;
}
else if (age >= 80)
{
Score += 91;
}
#endregion
#region 心率
if (heartRate < 50)
{
Score += 0;
}
else if (heartRate >= 50 && heartRate <= 69)
{
Score += 3;
}
else if (heartRate >= 70 && heartRate <= 89)
{
Score += 9;
}
else if (heartRate >= 90 && heartRate <= 109)
{
Score += 15;
}
else if (heartRate >= 110 && heartRate <= 149)
{
Score += 24;
}
else if (heartRate >= 150 && heartRate <= 199)
{
Score += 38;
}
else if (heartRate >= 200)
{
Score += 46;
}
#endregion
#region 收缩压
if (systolicPressure < 80)
{
Score += 58;
}
else if (systolicPressure >= 80 && systolicPressure <= 99)
{
Score += 53;
}
else if (systolicPressure >= 100 && systolicPressure <= 119)
{
Score += 43;
}
else if (systolicPressure >= 120 && systolicPressure <= 139)
{
Score += 34;
}
else if (systolicPressure >= 140 && systolicPressure <= 159)
{
Score += 24;
}
else if (systolicPressure >= 160 && systolicPressure <= 199)
{
Score += 10;
}
else if (systolicPressure >= 200)
{
Score += 0;
}
#endregion
#region 肌酐
//单位转换 umol/L转为mg/dl方式umol/L*0.01131
double Cur_creatinine = HL_FristAidPlatform_Public.PublicClass.ToDouble(creatinine, 0) * 0.01131;
Cur_creatinine = Math.Round(Cur_creatinine, 2);
if (Cur_creatinine > 0 && Cur_creatinine <= 0.39)
{
Score += 1;
}
else if (Cur_creatinine >= 0.4 && Cur_creatinine <= 0.79)
{
Score += 4;
}
else if (Cur_creatinine >= 0.8 && Cur_creatinine <= 1.19)
{
Score += 7;
}
else if (Cur_creatinine >= 1.2 && Cur_creatinine <= 1.59)
{
Score += 10;
}
else if (Cur_creatinine > 1.6 && Cur_creatinine <= 1.99)
{
Score += 13;
}
else if (Cur_creatinine >= 2.0 && Cur_creatinine <= 3.99)
{
Score += 21;
}
else if (Cur_creatinine > 4)
{
Score += 28;
}
#endregion
#region killip分级
//Killip分级 1I级(no CHF)2II级(rales and / or JVD)3III级(pulmonary edema)4IV级(cardiogenic shock)
if (killipClassification == 1)
{
Score += 0;
}
else if (killipClassification == 2)
{
Score += 20;
}
else if (killipClassification == 3)
{
Score += 39;
}
else if (killipClassification == 4)
{
Score += 59;
}
#endregion
#region 入院时心脏骤停
if (isSuddenCardiacSrrest)
{
Score += 39;
}
else
{
Score += 0;
}
#endregion
#region ST段变化
if (isSTChange)
{
Score += 28;
}
else
{
Score += 0;
}
#endregion
#region 心肌坏死标志物升高
if (isMyocardialNecrosis)
{
Score += 14;
}
else
{
Score += 0;
}
#endregion
return Score;
}
}
}