public M1RiskInput GetM1RiskInput(DataConnection pclsCache, string UserId) { M1RiskInput Input = new M1RiskInput(); Input = new UsersMethod().GetM1RiskInput(pclsCache, UserId); if(Input != null) { BasicInfo BaseList = new UsersMethod().GetBasicInfo(pclsCache, UserId); if (BaseList != null) { if (BaseList.Birthday != "" && BaseList.Birthday != "0" && BaseList.Birthday != null) { Input.Age = new UsersMethod().GetAgeByBirthDay(pclsCache, Convert.ToInt32(BaseList.Birthday));//年龄 } if (BaseList.Gender != "" && BaseList.Gender != "0" && BaseList.Gender != null) { Input.Gender = Convert.ToInt32(BaseList.Gender);//性别 } } } return Input; }
/// <summary> /// 获取高血压评估所需输入(BasicInfoDetail部分) SYF 20151117 /// </summary> /// <param name="pclsCache"></param> /// <param name="UserId"></param> /// <returns></returns> public M1RiskInput GetM1RiskInput(DataConnection pclsCache, string UserId) { M1RiskInput Input = new M1RiskInput(); try { if (!pclsCache.Connect()) { return null; } InterSystems.Data.CacheTypes.CacheSysList list = null; list = Ps.BasicInfoDetail.GetM1RiskInput(pclsCache.CacheConnectionObject, UserId); if (list != null) { #region if (list[1] == null) { return null; } else { string[] ItemAll = list[1].Split('|');//值和日期分开 Input.Height = Convert.ToInt32(ItemAll[0]); Input.HeightTime = ItemAll[1] + " " + ItemAll[2]; } if(list[0] == null) { return null; } else { string[] ItemAll = list[0].Split('|');//值和日期分开 Input.Weight = Convert.ToInt32(ItemAll[0]); Input.WeightTime = ItemAll[1] + " " + ItemAll[2]; } Input.BMI = Math.Round(Input.Weight / (Input.Height / 100.0) / (Input.Height / 100.0), 2); if (list[2] == null) { return null; } else { string[] ItemAll = list[2].Split('|');//值和日期分开 Input.AbdominalGirth = Convert.ToInt32(ItemAll[0]); Input.AbdominalGirthTime = ItemAll[1]; } if (list[3] == null) { return null; } else { string[] ItemAll = list[3].Split('|');//值和日期分开 Input.Heartrate = Convert.ToInt32(ItemAll[0]); Input.HeartrateTime = ItemAll[1]; } if (list[4] == null) { return null; } else { string[] ItemAll = list[4].Split('|');//值和日期分开 Input.Parent = Convert.ToInt32(ItemAll[0]); Input.ParentTime = ItemAll[1]; } if (list[5] == null) { return null; } else { string[] ItemAll = list[5].Split('|');//值和日期分开 Input.Smoke = Convert.ToInt32(ItemAll[0]); Input.SmokeTime = ItemAll[1]; } if (list[6] == null) { return null; } else { string[] ItemAll = list[6].Split('|');//值和日期分开 Input.Stroke = Convert.ToInt32(ItemAll[0]); Input.StrokeTime = ItemAll[1]; } if (list[7] == null) { return null; } else { string[] ItemAll = list[7].Split('|');//值和日期分开 Input.Lvh = Convert.ToInt32(ItemAll[0]); Input.LvhTime = ItemAll[1]; } if (list[8] == null) { return null; } else { string[] ItemAll = list[8].Split('|');//值和日期分开 Input.Diabetes = Convert.ToInt32(ItemAll[0]); Input.DiabetesTime = ItemAll[1]; } if (list[9] == null) { return null; } else { string[] ItemAll = list[9].Split('|');//值和日期分开 Input.Treat = Convert.ToInt32(ItemAll[0]); Input.TreatTime = ItemAll[1]; } if (list[10] == null) { return null; } else { string[] ItemAll = list[10].Split('|');//值和日期分开 Input.Heartattack = Convert.ToInt32(ItemAll[0]); Input.HeartattackTime = ItemAll[1]; } if (list[11] == null) { return null; } else { string[] ItemAll = list[11].Split('|');//值和日期分开 Input.Af = Convert.ToInt32(ItemAll[0]); Input.AfTime = ItemAll[1]; } if (list[12] == null) { return null; } else { string[] ItemAll = list[12].Split('|');//值和日期分开 Input.Chd = Convert.ToInt32(ItemAll[0]); Input.ChdTime = ItemAll[1]; } if (list[13] == null) { return null; } else { string[] ItemAll = list[13].Split('|');//值和日期分开 Input.Valve = Convert.ToInt32(ItemAll[0]); Input.ValveTime = ItemAll[1]; } if (list[14] == null) { return null; } else { string[] ItemAll = list[14].Split('|');//值和日期分开 Input.Tcho = Convert.ToDouble(ItemAll[0]); Input.TchoTime = ItemAll[1]; } if (list[15] == null) { return null; } else { string[] ItemAll = list[15].Split('|');//值和日期分开 Input.Creatinine = Convert.ToDouble(ItemAll[0]); Input.CreatinineTime = ItemAll[1]; } if (list[16] == null) { return null; } else { string[] ItemAll = list[16].Split('|');//值和日期分开 Input.Hdlc = Convert.ToDouble(ItemAll[0]); Input.HdlcTime = ItemAll[1]; } if (list[17] == null) { return null; } else { string[] ItemAll = list[17].Split('|');//值和日期分开 Input.SBP = Convert.ToInt32(ItemAll[0]); Input.SBPTime = ItemAll[1]; } if (list[18] == null) { return null; } else { string[] ItemAll = list[18].Split('|');//值和日期分开 Input.DBP = Convert.ToInt32(ItemAll[0]); Input.DBPTime = ItemAll[1]; } #endregion } return Input; } catch (Exception ex) { //MessageBox.Show(ex.ToString(), "获取名称失败!"); HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "UsersMethod.GetM1RiskInput", "数据库操作异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace); return null; } finally { pclsCache.DisConnect(); } }
public int SetM1RiskInput(DataConnection pclsCache, string PatientId, M1RiskInput M1RiskInput, int RecordDate, int RecordTime, string piUserId, string piTerminalName, string piTerminalIP, int piDeviceType) { int ret = 0; int fret = 1; try { #region//插入PsVitalSigns表 ret = new VitalInfoMethod().SetData(pclsCache, PatientId, RecordDate, RecordTime, "BodySigns", "Height", M1RiskInput.Height.ToString(), "cm", piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new VitalInfoMethod().SetData(pclsCache, PatientId, RecordDate, RecordTime, "BodySigns", "Weight", M1RiskInput.Weight.ToString(), "kg", piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new VitalInfoMethod().SetData(pclsCache, PatientId, RecordDate, RecordTime, "M1", "QG0018", M1RiskInput.AbdominalGirth.ToString(), "mm", piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new VitalInfoMethod().SetData(pclsCache, PatientId, RecordDate, RecordTime, "M1", "QG0007", M1RiskInput.Heartrate.ToString(), "次/分", piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new VitalInfoMethod().SetData(pclsCache, PatientId, RecordDate, RecordTime, "M1", "QG0013", M1RiskInput.SBP.ToString(), "mmHg", piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new VitalInfoMethod().SetData(pclsCache, PatientId, RecordDate, RecordTime, "M1", "QG0012", M1RiskInput.DBP.ToString(), "mmHg", piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } #endregion #region//插入PsBasicInfoDetail表 ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QC0001", 1, M1RiskInput.Parent.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QF0011", 1, M1RiskInput.Smoke.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QA0007", 1, M1RiskInput.Stroke.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QJ0024", 1, M1RiskInput.Lvh.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QB0045", 1, M1RiskInput.Diabetes.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QD0002", 1, M1RiskInput.Treat.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QA0004", 1, M1RiskInput.Heartattack.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QA0005", 1, M1RiskInput.Af.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QA0002", 1, M1RiskInput.Chd.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QA0006", 1, M1RiskInput.Valve.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QH0002", 1, M1RiskInput.Tcho.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QH0001", 1, M1RiskInput.Creatinine.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } ret = new UsersMethod().BasicInfoDetailSetData(pclsCache, PatientId, "M1", "QH0003", 1, M1RiskInput.Hdlc.ToString(), "", 1, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 0) { fret = 0; } #endregion return fret; } catch (Exception ex) { HygeiaComUtility.WriteClientLog(HygeiaEnum.LogType.ErrorLog, "RiskInfoMethod.SetM1RiskInput", "数据库操作异常! error information : " + ex.Message + Environment.NewLine + ex.StackTrace); return 0; } finally { pclsCache.DisConnect(); } }
public M1Risk AddM1Risk(string PatientId, M1RiskInput M1RiskInput, int RecordDate, int RecordTime, string piUserId, string piTerminalName, string piTerminalIP, int piDeviceType) { return repository.AddM1Risk(pclsCache, PatientId, M1RiskInput, RecordDate, RecordTime, piUserId, piTerminalName, piTerminalIP, piDeviceType); }
public M1Risk AddM1Risk(DataConnection pclsCache, string PatientId, M1RiskInput M1RiskInput, int RecordDate, int RecordTime, string piUserId, string piTerminalName, string piTerminalIP, int piDeviceType) { M1Risk M1Risk = new M1Risk(); int ret = 0; ret = new RiskInfoMethod().SetM1RiskInput(pclsCache, PatientId, M1RiskInput, RecordDate, RecordTime, piUserId, piTerminalName, piTerminalIP, piDeviceType); if (ret == 1) { M1Risk = new RiskInfoRepository().GetM1Risk(pclsCache, PatientId); } return M1Risk; }
/// <summary> /// 获取高血压风险评估结果 SYF 2015-11-16 /// </summary> /// <param name="UserId"></param> /// <returns></returns> public M1Risk GetM1Risk(DataConnection pclsCache, string UserId) { M1Risk Output = new M1Risk(); M1RiskInput Input = new M1RiskInput(); Input = new RiskInfoRepository().GetM1RiskInput(pclsCache, UserId); if (Input != null) { #region//获取模型所需输入 int Age = Input.Age;//年龄默认1岁(避免出现0岁) int Gender = Input.Gender;//性别男 int Height = Input.Height;//身高176cm int Weight = Input.Weight;//体重69千克 double BMI = Input.BMI; int AbdominalGirth = Input.AbdominalGirth; //腹围 int Heartrate = Input.Heartrate;//心率 int Parent = Input.Parent;//父母中至少有一方有高血压 int Smoke = Input.Smoke;//不抽烟 int Stroke = Input.Stroke;//没有中风 int Lvh = Input.Lvh; ;//有左心室肥大 int Diabetes = Input.Diabetes;//有伴随糖尿病 int Treat = Input.Treat;//高血压是否在治疗(接受过)没有 int Heartattack = Input.Heartattack;//有过心脏事件(心血管疾病) int Af = Input.Af;//没有过房颤 int Chd = Input.Chd;//有冠心病(心肌梗塞) int Valve = Input.Valve;//没有心脏瓣膜病 double Tcho = Input.Tcho;//总胆固醇浓度5.2mmol/L double Creatinine = Input.Creatinine;//肌酐浓度140μmoI/L double Hdlc = Input.Hdlc;//高密度脂蛋白胆固醇1.21g/ml int SBP = Input.SBP;//当前收缩压 int DBP = Input.DBP;//当前舒张压 #endregion #region//用于模型计算时的调整 if (Gender <= 2) { Gender = Gender - 1; } else { Gender = 0; } if (Gender == 1)//为计算方便,性别值对调 { Gender = 0; } else { Gender = 1; } if (Parent > 1) { Parent = 0; } if (Smoke > 1) { Smoke = 0; } if (Stroke > 1) { Stroke = 0; } if (Lvh > 1) { Lvh = 0; } if (Diabetes > 1) { Diabetes = 0; } if (Treat > 1) { Treat = 0; } if (Heartattack > 1) { Heartattack = 0; } if (Af > 1) { Af = 0; } if (Chd > 1) { Chd = 0; } if (Valve > 1) { Valve = 0; } #endregion #region//高血压风险 double Hyperother = -0.15641 * Age - 0.20293 * Gender - 0.19073 * Smoke - 0.16612 * Parent - 0.03388 * BMI; Hyperother = Hyperother - 0.05933 * SBP - 0.12847 * DBP + 0.00162 * Age * DBP; double Hyper = 1 - Math.Exp(-Math.Exp(((Math.Log(4)) - (22.94954 + Hyperother)) / 0.87692)); #endregion #region//HarvardRiskInfactor这个变量存的是Harvard风险评估计算公式中的风险因数,界面上需要做的是加上收缩压的风险因数,然后代入公式计算。 int HarvardRiskInfactor = 0; //男性风险值 if (Gender == 1) { if (Age <= 39) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 19; } else { HarvardRiskInfactor = HarvardRiskInfactor + 0; } } else if (Age <= 44 && Age >= 40) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 7; } else { HarvardRiskInfactor = HarvardRiskInfactor + 4; } } else if (Age <= 49 && Age >= 45) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 7; } else { HarvardRiskInfactor = HarvardRiskInfactor + 7; } } else if (Age <= 54 && Age >= 50) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 11; } else { HarvardRiskInfactor = HarvardRiskInfactor + 6; } } else if (Age <= 59 && Age >= 55) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 14; } else { HarvardRiskInfactor = HarvardRiskInfactor + 6; } } else if (Age <= 64 && Age >= 60) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 18; } else { HarvardRiskInfactor = HarvardRiskInfactor + 5; } } else if (Age <= 69 && Age >= 65) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 22; } else { HarvardRiskInfactor = HarvardRiskInfactor + 4; } } else { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 25; } else { HarvardRiskInfactor = HarvardRiskInfactor + 4; } } //年龄和抽烟的风险值加成 if (Tcho < 5) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (Tcho >= 5.0 && Tcho <= 5.9) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (Tcho >= 6.0 && Tcho <= 6.9) { HarvardRiskInfactor = HarvardRiskInfactor + 4; } else if (Tcho >= 7.0 && Tcho <= 7.9) { HarvardRiskInfactor = HarvardRiskInfactor + 5; } else if (Tcho >= 8.0 && Tcho <= 8.9) { HarvardRiskInfactor = HarvardRiskInfactor + 7; } else { HarvardRiskInfactor = HarvardRiskInfactor + 9; } //总胆固醇浓度风险值加成 if (Height < 145) { HarvardRiskInfactor = HarvardRiskInfactor + 6; } else if (Height >= 145 && Height <= 154) { HarvardRiskInfactor = HarvardRiskInfactor + 4; } else if (Height >= 155 && Height <= 164) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } else if (Height >= 165 && Height <= 174) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else { HarvardRiskInfactor = HarvardRiskInfactor + 0; } //身高风险值加成 if (Creatinine < 50) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (Creatinine >= 50 && Creatinine <= 69) { HarvardRiskInfactor = HarvardRiskInfactor + 1; } else if (Creatinine >= 70 && Creatinine <= 89) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (Creatinine >= 90 && Creatinine <= 109) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } else { HarvardRiskInfactor = HarvardRiskInfactor + 4; } //肌酐浓度风险值加成 if (Chd == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } //心肌梗塞(冠心病)风险值加成 if (Stroke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } //中风风险值加成 if (Lvh == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } //左室高血压(左心室肥大)风险值加成 if (Diabetes == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } //糖尿病风险值加成 if (SBP <= 119) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (SBP >= 120 && SBP <= 129) { HarvardRiskInfactor = HarvardRiskInfactor + 1; } else if (SBP >= 130 && SBP <= 139) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (SBP >= 130 && SBP <= 139) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (SBP >= 140 && SBP <= 149) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } else if (SBP >= 150 && SBP <= 159) { HarvardRiskInfactor = HarvardRiskInfactor + 4; } else if (SBP >= 160 && SBP <= 169) { HarvardRiskInfactor = HarvardRiskInfactor + 5; } else if (SBP >= 170 && SBP <= 179) { HarvardRiskInfactor = HarvardRiskInfactor + 6; } else if (SBP >= 180 && SBP <= 189) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } else if (SBP >= 190 && SBP <= 199) { HarvardRiskInfactor = HarvardRiskInfactor + 9; } else if (SBP >= 200 && SBP <= 209) { HarvardRiskInfactor = HarvardRiskInfactor + 10; } else { HarvardRiskInfactor = HarvardRiskInfactor + 11; } //收缩压加成 } //女性风险值计算 else { if (Age <= 39) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 13; } else { HarvardRiskInfactor = HarvardRiskInfactor + 0; } } else if (Age <= 44 && Age >= 40) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 12; } else { HarvardRiskInfactor = HarvardRiskInfactor + 5; } } else if (Age <= 49 && Age >= 45) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 11; } else { HarvardRiskInfactor = HarvardRiskInfactor + 9; } } else if (Age <= 54 && Age >= 50) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 10; } else { HarvardRiskInfactor = HarvardRiskInfactor + 14; } } else if (Age <= 59 && Age >= 55) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 10; } else { HarvardRiskInfactor = HarvardRiskInfactor + 18; } } else if (Age <= 64 && Age >= 60) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 9; } else { HarvardRiskInfactor = HarvardRiskInfactor + 23; } } else if (Age <= 69 && Age >= 65) { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 9; } else { HarvardRiskInfactor = HarvardRiskInfactor + 27; } } else { if (Smoke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } else { HarvardRiskInfactor = HarvardRiskInfactor + 32; } } //年龄和抽烟的风险值加成 if (Tcho < 5) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (Tcho >= 5.0 && Tcho <= 5.9) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (Tcho >= 6.0 && Tcho <= 6.9) { HarvardRiskInfactor = HarvardRiskInfactor + 1; } else if (Tcho >= 7.0 && Tcho <= 7.9) { HarvardRiskInfactor = HarvardRiskInfactor + 1; } else if (Tcho >= 8.0 && Tcho <= 8.9) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else { HarvardRiskInfactor = HarvardRiskInfactor + 2; } //总胆固醇浓度风险值加成 if (Height < 145) { HarvardRiskInfactor = HarvardRiskInfactor + 6; } else if (Height >= 145 && Height <= 154) { HarvardRiskInfactor = HarvardRiskInfactor + 4; } else if (Height >= 155 && Height <= 164) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } else if (Height >= 165 && Height <= 174) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else { HarvardRiskInfactor = HarvardRiskInfactor + 0; } //身高风险值加成 if (Creatinine < 50) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (Creatinine >= 50 && Creatinine <= 69) { HarvardRiskInfactor = HarvardRiskInfactor + 1; } else if (Creatinine >= 70 && Creatinine <= 89) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (Creatinine >= 90 && Creatinine <= 109) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } else { HarvardRiskInfactor = HarvardRiskInfactor + 4; } //肌酐浓度风险值加成 if (Chd == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } //心肌梗塞(冠心病)风险值加成 if (Stroke == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } //中风风险值加成 if (Lvh == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } //左室高血压(左心室肥大)风险值加成 if (Diabetes == 1) { HarvardRiskInfactor = HarvardRiskInfactor + 9; } //糖尿病风险值加成 if (SBP <= 119) { HarvardRiskInfactor = HarvardRiskInfactor + 0; } else if (SBP >= 120 && SBP <= 129) { HarvardRiskInfactor = HarvardRiskInfactor + 1; } else if (SBP >= 130 && SBP <= 139) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (SBP >= 130 && SBP <= 139) { HarvardRiskInfactor = HarvardRiskInfactor + 2; } else if (SBP >= 140 && SBP <= 149) { HarvardRiskInfactor = HarvardRiskInfactor + 3; } else if (SBP >= 150 && SBP <= 159) { HarvardRiskInfactor = HarvardRiskInfactor + 4; } else if (SBP >= 160 && SBP <= 169) { HarvardRiskInfactor = HarvardRiskInfactor + 5; } else if (SBP >= 170 && SBP <= 179) { HarvardRiskInfactor = HarvardRiskInfactor + 6; } else if (SBP >= 180 && SBP <= 189) { HarvardRiskInfactor = HarvardRiskInfactor + 7; } else if (SBP >= 190 && SBP <= 199) { HarvardRiskInfactor = HarvardRiskInfactor + 8; } else if (SBP >= 200 && SBP <= 209) { HarvardRiskInfactor = HarvardRiskInfactor + 9; } else { HarvardRiskInfactor = HarvardRiskInfactor + 10; } //收缩压加成 } #endregion//以上是女性风险值 double Harvard = 6.304 * Math.Pow(10, -8) * Math.Pow(HarvardRiskInfactor, 5) - 5.027 * Math.Pow(10, -6) * Math.Pow(HarvardRiskInfactor, 4) + 0.0001768 * Math.Pow(HarvardRiskInfactor, 3) - 0.001998 * Math.Pow(HarvardRiskInfactor, 2) + 0.01294 * HarvardRiskInfactor + 0.0409; Harvard = Harvard / 100; #region//FraminghamRiskInfactor这个变量存的是Framingham风险评估计算公式中的风险因数,界面上需要做的是加上收缩压的风险因数,然后代入公式计算。 //这个Framingham模型也是需要收缩压值的,分为接受过治疗的血压和未接受过治疗的血压,模型分为男女进行计算,因为不同性别公式不同 double FraminghamRiskInfactor = 0.0; double Framingham = 0.0; if (Gender == 1) //男性 { FraminghamRiskInfactor = FraminghamRiskInfactor + Math.Log(Age) * 3.06117;//性别 FraminghamRiskInfactor = FraminghamRiskInfactor + Math.Log(Tcho) * 1.12370;//总胆固醇 FraminghamRiskInfactor = FraminghamRiskInfactor + Math.Log(Hdlc) * (-0.93263);//高密度脂蛋白胆固醇 if (Smoke == 1) { FraminghamRiskInfactor = FraminghamRiskInfactor + 0.65451;//抽烟 } if (Diabetes == 1) { FraminghamRiskInfactor = FraminghamRiskInfactor + 0.57367;//抽烟 } if (Treat == 1) { FraminghamRiskInfactor = FraminghamRiskInfactor + 1.99881 * Math.Log(SBP); } else { FraminghamRiskInfactor = FraminghamRiskInfactor + 1.93303 * Math.Log(SBP); } Framingham = 1 - Math.Pow(0.88936, Math.Exp(FraminghamRiskInfactor - 23.9802)); } else //女性 { FraminghamRiskInfactor = FraminghamRiskInfactor + Math.Log(Age) * 2.3288;//性别 FraminghamRiskInfactor = FraminghamRiskInfactor + Math.Log(Tcho) * 1.20904;//总胆固醇 FraminghamRiskInfactor = FraminghamRiskInfactor + Math.Log(Hdlc) * (-0.70833);//高密度脂蛋白胆固醇 if (Smoke == 1) { FraminghamRiskInfactor = FraminghamRiskInfactor + 0.52873;//抽烟 } if (Diabetes == 1) { FraminghamRiskInfactor = FraminghamRiskInfactor + 0.69154;//抽烟 } if (Treat == 1) { FraminghamRiskInfactor = FraminghamRiskInfactor + 2.82263 * Math.Log(SBP); } else { FraminghamRiskInfactor = FraminghamRiskInfactor + 2.76157 * Math.Log(SBP); } Framingham = 1 - Math.Pow(0.95012, Math.Exp(FraminghamRiskInfactor - 26.1931)); } #endregion #region//StrokeRiskInfactor这个变量存的是中风风险评估计算公式中的风险因数,界面上需要做的是加上收缩压的风险因数,然后计算。 int StrokeRiskInfactor = 0; double StrokeRisk = 0.0; if (Gender == 1) //男性 { if (Age <= 56) { StrokeRiskInfactor = StrokeRiskInfactor + 0; } else if (Age >= 57 && Age <= 59) { StrokeRiskInfactor = StrokeRiskInfactor + 1; } else if (Age >= 60 && Age <= 62) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } else if (Age >= 63 && Age <= 65) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } else if (Age >= 66 && Age <= 68) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } else if (Age >= 69 && Age <= 72) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } else if (Age >= 73 && Age <= 75) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } else if (Age >= 76 && Age <= 78) { StrokeRiskInfactor = StrokeRiskInfactor + 7; } else if (Age >= 79 && Age <= 81) { StrokeRiskInfactor = StrokeRiskInfactor + 8; } else if (Age >= 82 && Age <= 84) { StrokeRiskInfactor = StrokeRiskInfactor + 9; } else { StrokeRiskInfactor = StrokeRiskInfactor + 10; } if (Diabetes == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } //糖尿病风险值加成 if (Smoke == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } //吸烟风险值加成 if (Heartattack == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } //心血管疾病史(心脏事件)风险值加成 if (Af == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } //房颤风险值加成 if (Lvh == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } if (Treat != 1) //没有治疗过高血压的情况 { if (SBP <= 105) { StrokeRiskInfactor = StrokeRiskInfactor + 0; } else if (SBP >= 106 && SBP <= 115) { StrokeRiskInfactor = StrokeRiskInfactor + 1; } else if (SBP >= 116 && SBP <= 125) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } else if (SBP >= 126 && SBP <= 135) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } else if (SBP >= 136 && SBP <= 145) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } else if (SBP >= 146 && SBP <= 155) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } else if (SBP >= 156 && SBP <= 165) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } else if (SBP >= 166 && SBP <= 175) { StrokeRiskInfactor = StrokeRiskInfactor + 7; } else if (SBP >= 176 && SBP <= 185) { StrokeRiskInfactor = StrokeRiskInfactor + 8; } else if (SBP >= 186 && SBP <= 195) { StrokeRiskInfactor = StrokeRiskInfactor + 9; } else { StrokeRiskInfactor = StrokeRiskInfactor + 10; } } else//治疗过高血压的情况 { if (SBP <= 105) { StrokeRiskInfactor = StrokeRiskInfactor + 0; } else if (SBP >= 106 && SBP <= 112) { StrokeRiskInfactor = StrokeRiskInfactor + 1; } else if (SBP >= 113 && SBP <= 117) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } else if (SBP >= 118 && SBP <= 123) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } else if (SBP >= 124 && SBP <= 129) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } else if (SBP >= 130 && SBP <= 135) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } else if (SBP >= 136 && SBP <= 142) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } else if (SBP >= 143 && SBP <= 150) { StrokeRiskInfactor = StrokeRiskInfactor + 7; } else if (SBP >= 151 && SBP <= 161) { StrokeRiskInfactor = StrokeRiskInfactor + 8; } else if (SBP >= 162 && SBP <= 176) { StrokeRiskInfactor = StrokeRiskInfactor + 9; } else { StrokeRiskInfactor = StrokeRiskInfactor + 10; } } double[] Risk = new double[] { 3, 3, 4, 4, 5, 5, 6, 7, 8, 10, 11, 13, 15, 17, 20, 22, 26, 29, 33, 37, 42, 47, 52, 57, 63, 68, 74, 79, 84, 88 }; StrokeRisk = Risk[StrokeRiskInfactor - 1] / 100; } else //女性 { if (Age <= 56) { StrokeRiskInfactor = StrokeRiskInfactor + 0; } else if (Age >= 57 && Age <= 59) { StrokeRiskInfactor = StrokeRiskInfactor + 1; } else if (Age >= 60 && Age <= 62) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } else if (Age >= 63 && Age <= 64) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } else if (Age >= 65 && Age <= 67) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } else if (Age >= 68 && Age <= 70) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } else if (Age >= 71 && Age <= 73) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } else if (Age >= 74 && Age <= 76) { StrokeRiskInfactor = StrokeRiskInfactor + 7; } else if (Age >= 77 && Age <= 78) { StrokeRiskInfactor = StrokeRiskInfactor + 8; } else if (Age >= 79 && Age <= 81) { StrokeRiskInfactor = StrokeRiskInfactor + 9; } else { StrokeRiskInfactor = StrokeRiskInfactor + 10; } if (Diabetes == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } //糖尿病风险值加成 if (Smoke == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } //吸烟风险值加成 if (Heartattack == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } //心血管疾病史(心脏事件)风险值加成 if (Af == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } //房颤风险值加成 if (Lvh == 1) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } if (Treat != 1) //没有治疗过高血压的情况 { if (SBP <= 94) { StrokeRiskInfactor = StrokeRiskInfactor + 0; } else if (SBP >= 95 && SBP <= 106) { StrokeRiskInfactor = StrokeRiskInfactor + 1; } else if (SBP >= 107 && SBP <= 118) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } else if (SBP >= 119 && SBP <= 130) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } else if (SBP >= 131 && SBP <= 143) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } else if (SBP >= 144 && SBP <= 155) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } else if (SBP >= 156 && SBP <= 167) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } else if (SBP >= 168 && SBP <= 180) { StrokeRiskInfactor = StrokeRiskInfactor + 7; } else if (SBP >= 181 && SBP <= 192) { StrokeRiskInfactor = StrokeRiskInfactor + 8; } else if (SBP >= 193 && SBP <= 204) { StrokeRiskInfactor = StrokeRiskInfactor + 9; } else { StrokeRiskInfactor = StrokeRiskInfactor + 10; } } else//治疗过高血压的情况 { if (SBP <= 94) { StrokeRiskInfactor = StrokeRiskInfactor + 0; } else if (SBP >= 95 && SBP <= 106) { StrokeRiskInfactor = StrokeRiskInfactor + 1; } else if (SBP >= 107 && SBP <= 113) { StrokeRiskInfactor = StrokeRiskInfactor + 2; } else if (SBP >= 114 && SBP <= 119) { StrokeRiskInfactor = StrokeRiskInfactor + 3; } else if (SBP >= 120 && SBP <= 125) { StrokeRiskInfactor = StrokeRiskInfactor + 4; } else if (SBP >= 126 && SBP <= 131) { StrokeRiskInfactor = StrokeRiskInfactor + 5; } else if (SBP >= 132 && SBP <= 139) { StrokeRiskInfactor = StrokeRiskInfactor + 6; } else if (SBP >= 140 && SBP <= 148) { StrokeRiskInfactor = StrokeRiskInfactor + 7; } else if (SBP >= 149 && SBP <= 160) { StrokeRiskInfactor = StrokeRiskInfactor + 8; } else if (SBP >= 161 && SBP <= 204) { StrokeRiskInfactor = StrokeRiskInfactor + 9; } else { StrokeRiskInfactor = StrokeRiskInfactor + 10; } } double[] Risk = new double[] { 1, 1, 2, 2, 2, 3, 4, 4, 5, 6, 8, 9, 11, 13, 16, 19, 23, 27, 32, 37, 43, 50, 57, 64, 71, 78, 84 }; StrokeRisk = Risk[StrokeRiskInfactor - 1] / 100; } #endregion #region//HeartFailureRiskInfactor这个变量存的是心衰风险评估计算公式中的风险因数,界面上需要做的是加上收缩压的风险因数,然后计算。 int HeartFailureRiskInfactor = 0; double HeartFailureRisk = 0.0; if (Gender == 1) //男性 { if (Age <= 49) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (Age >= 50 && Age <= 54) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else if (Age >= 55 && Age <= 59) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } else if (Age >= 60 && Age <= 64) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 3; } else if (Age >= 65 && Age <= 69) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 4; } else if (Age >= 70 && Age <= 74) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 5; } else if (Age >= 75 && Age <= 79) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 6; } else if (Age >= 80 && Age <= 84) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 7; } else if (Age >= 85 && Age <= 89) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 8; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 9; } if (Heartrate <= 54) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (Heartrate >= 55 && Heartrate <= 64) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else if (Heartrate >= 65 && Heartrate <= 79) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } else if (Heartrate >= 80 && Heartrate <= 89) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 3; } else if (Heartrate >= 90 && Heartrate <= 104) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 4; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 5; } //心率风险值加成 if (Lvh == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 4; } //左心室肥大(左室高血压)风险值加成 if (Chd == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 8; } //冠心病风险值加成 if (Valve == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 5; } //瓣膜疾病风险值加成 if (Smoke == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } //糖尿病风险值加成 if (SBP <= 119) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (SBP >= 120 && SBP <= 139) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else if (SBP >= 140 && SBP <= 169) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } else if (SBP >= 170 && SBP <= 189) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 3; } else if (SBP >= 190 && SBP <= 219) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 4; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 5; } if (HeartFailureRiskInfactor <= 5) { HeartFailureRisk = 1; } else if (HeartFailureRiskInfactor > 5 && HeartFailureRiskInfactor < 14) { HeartFailureRisk = 3; } else if (HeartFailureRiskInfactor >= 14 && HeartFailureRiskInfactor < 16) { HeartFailureRisk = 5; } else if (HeartFailureRiskInfactor >= 16 && HeartFailureRiskInfactor < 18) { HeartFailureRisk = 8; } else if (HeartFailureRiskInfactor >= 18 && HeartFailureRiskInfactor < 20) { HeartFailureRisk = 11; } else if (HeartFailureRiskInfactor >= 20 && HeartFailureRiskInfactor < 22) { HeartFailureRisk = 11; } else if (HeartFailureRiskInfactor >= 22 && HeartFailureRiskInfactor < 24) { HeartFailureRisk = 22; } else if (HeartFailureRiskInfactor >= 24 && HeartFailureRiskInfactor < 25) { HeartFailureRisk = 30; } else if (HeartFailureRiskInfactor >= 25 && HeartFailureRiskInfactor < 26) { HeartFailureRisk = 34; } else if (HeartFailureRiskInfactor >= 26 && HeartFailureRiskInfactor < 27) { HeartFailureRisk = 39; } else if (HeartFailureRiskInfactor >= 27 && HeartFailureRiskInfactor < 28) { HeartFailureRisk = 44; } else if (HeartFailureRiskInfactor >= 28 && HeartFailureRiskInfactor < 29) { HeartFailureRisk = 49; } else if (HeartFailureRiskInfactor >= 29 && HeartFailureRiskInfactor < 30) { HeartFailureRisk = 54; } else { HeartFailureRisk = 59; } HeartFailureRisk = HeartFailureRisk / 100; } else //女性 { if (Age <= 49) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (Age >= 50 && Age <= 54) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else if (Age >= 55 && Age <= 59) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } else if (Age >= 60 && Age <= 64) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 3; } else if (Age >= 65 && Age <= 69) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 4; } else if (Age >= 70 && Age <= 74) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 5; } else if (Age >= 75 && Age <= 79) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 6; } else if (Age >= 80 && Age <= 84) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 7; } else if (Age >= 85 && Age <= 89) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 8; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 9; } //年龄的风险加权值 if (Heartrate < 60) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (Heartrate >= 60 && Heartrate <= 79) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else if (Heartrate >= 80 && Heartrate <= 104) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 3; } //心率风险值加成 if (Lvh == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 5; } //左心室肥大(左室高血压)风险值加成 if (Chd == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 6; } //冠心病风险值加成 if (Valve == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 6; if (Smoke == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } } else { if (Smoke == 1) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 6; } } //瓣膜疾病和糖尿病风险值加成 if (BMI < 21) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (BMI >= 21 && BMI <= 25) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else if (BMI > 25 && BMI <= 29) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 3; } if (SBP < 140) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 0; } else if (SBP >= 140 && SBP <= 209) { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 1; } else { HeartFailureRiskInfactor = HeartFailureRiskInfactor + 2; } if (HeartFailureRiskInfactor < 10) { HeartFailureRisk = 1; } else if (HeartFailureRiskInfactor <= 28) { double[] Risk = new double[] { 2, 2, 3, 3, 4, 5, 7, 9, 11, 14, 17, 21, 25, 30, 36, 42, 48, 54, 60 }; HeartFailureRisk = Risk[HeartFailureRiskInfactor - 10]; } else { HeartFailureRisk = 60; } HeartFailureRisk = HeartFailureRisk / 100; } #endregion #region//输出数据 Output.Hyper = Math.Round(Hyper * 100, 2); Output.Harvard = Math.Round(Harvard * 100, 2); Output.Framingham = Math.Round(Framingham * 100, 2); Output.StrokeRisk = Math.Round(StrokeRisk * 100, 2); Output.HeartFailureRisk = Math.Round(HeartFailureRisk * 100, 2); Output.SBP = SBP; Output.DBP = DBP; #endregion } else { Output = null; } return Output; }