irc-netcore-api/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs

270 lines
7.2 KiB
C#

using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
namespace IRaCIS.Core.Infra.EFCore.Common
{
public static class ReadingCommon
{
/// <summary>
/// 标准字典设置
/// </summary>
public static class CriterionDictionary
{
/// <summary>
/// 全局评估类型
/// </summary>
public const string GlobalAssess = "GlobalAssessType";
/// <summary>
/// 肿瘤学评估类型
/// </summary>
public const string OncologyAssess = "OncologyAssessType";
///// <summary>
///// 标准字典需要配置的相
///// </summary>
//public static List<string> CriterionDictionaryCodeList = new List<string>()
//{
// "LesionType",
// "QuestionType"
//};
}
/// <summary>
/// 获取DictionaryGroup
/// </summary>
public static List<CrterionDictionaryGroup> GetCrterionDictionaryGroup(bool isConvertedTask)
{
if (isConvertedTask)
{
return new List<CrterionDictionaryGroup>() { CrterionDictionaryGroup.General, CrterionDictionaryGroup.Converted };
}
else
{
return new List<CrterionDictionaryGroup>() { CrterionDictionaryGroup.General, CrterionDictionaryGroup.BeforeConvert };
}
}
/// <summary>
/// 枚举数组转字符串数组 方法名简短
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="emus"></param>
/// <returns></returns>
public static List<string> EnumToString<T>(List<T> emus) where T : Enum
{
return emus.Select(x => ((int)(object)x).ToString()).ToList();
}
/// <summary>
/// 获取语言名称
/// </summary>
/// <param name="Name"></param>
/// <param name="englishName"></param>
/// <param name="isEN"></param>
/// <returns></returns>
public static string LanguageName(this string Name, string englishName, bool isEN)
{
return isEN ? englishName : Name;
}
/// <summary>
/// 阅片问题类型
/// </summary>
public static class QuestionType
{
/// <summary>
/// 类型自动计算
/// </summary>
public const string Calculation = "calculation";
}
public static Dictionary<int, string> SplitLesionDic = new Dictionary<int, string>()
{
{1, "a" },
{2, "b" },
{3, "c" },
{4, "d" },
{5, "e" },
{6, "f" },
{7, "g" },
{8, "h" },
{9, "i" },
{10, "j" },
{11, "k" },
{12, "l" },
{13, "m" },
{14, "n" },
{15, "o" },
{16, "p" },
{17, "q" },
{18, "r" },
{19, "s" },
{20, "t" },
{21, "u" },
{22, "v" },
{23, "w" },
{24, "x" },
{25, "y" },
{26, "z" },
};
public static string GetLesionMark(this decimal value)
{
if (value % 1 == 0)
{
return decimal.ToInt32(value).ToString().PadLeft(2, '0');
}
else
{
return Math.Floor(value).ToString().PadLeft(2, '0') + SplitLesionDic[decimal.ToInt32((value % 1) * 100)];
}
}
public static Dictionary<ReadingCategory, decimal> TaskNumDic = new Dictionary<ReadingCategory, decimal>()
{
{ReadingCategory.Visit, 0 },
{ReadingCategory.Global,(decimal) 0.03 },
{ReadingCategory.Judge,(decimal) 0.02 },
{ReadingCategory.Oncology, (decimal)0.06 },
};
public const string EvaluationReason = "肿瘤学阅片评估原因请依据临床数据填写,在与影像学结果不一致时必填。";
/// <summary>
/// 获取枚举Int值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static string GetEnumNullInt<T>(this T? value) where T : struct, Enum
{
if (value == null)
{
return string.Empty;
}
else
{
return ((int)(object)value).ToString();
}
}
/// <summary>
/// 获取枚举Int值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
public static string GetEnumInt<T>(this T value) where T : Enum
{
return ((int)(object)value).ToString();
}
/// <summary>
/// 字符匹配枚举
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <param name="enumValue"></param>
/// <returns></returns>
public static bool EqEnum<T>(this string value, T enumValue) where T : Enum
{
try
{
return int.Parse(value) == (int)(object)enumValue;
}
catch (Exception)
{
return false;
}
}
public static decimal NullChange0(this decimal? value)
{
if (value == null)
{
return 0;
}
else
{
return value.Value;
}
}
public static decimal? IsNullOrEmptyReturnNull(this string value)
{
try
{
if (value == null || value == string.Empty || value == "NA")
{
return null;
}
else
{
return decimal.Parse(value);
}
}
catch (Exception)
{
return 0;
}
}
public static decimal IsNullOrEmptyReturn0(this string value)
{
try
{
if (value == null || value == string.Empty || value == "NA")
{
return 0;
}
else
{
return decimal.Parse(value);
}
}
catch (Exception)
{
return 0;
}
}
/// <summary>
/// 获取DisplayName
/// </summary>
/// <param name="enumName"></param>
/// <returns></returns>
public static string GetDisplayName(this Enum enumName)
{
var type = enumName.GetType();//先获取这个枚举的类型
var field = type.GetField(enumName.ToString());//通过这个类型获取到值
var obj = (DisplayAttribute)field.GetCustomAttribute(typeof(DisplayAttribute));//得到特性
return obj.Name ?? "";
}
}
}