210 lines
5.8 KiB
C#
210 lines
5.8 KiB
C#
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分级 1:I级(no CHF);2:II级(rales and / or JVD);3:III级(pulmonary edema);4:IV级(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;
|
||
}
|
||
}
|
||
}
|