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

168 lines
4.4 KiB
C#

using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
namespace IRaCIS.Core.Infra.EFCore.Common
{
public static class ReadingCommon
{
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 = "肿瘤学阅片评估原因请依据临床数据填写,在与影像学结果不一致时必填。";
public static bool IsNullOrEmpty(this string value)
{
if (value == null || value == string.Empty)
{
return true;
}
else
{
return false;
}
}
/// <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 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 ?? "";
}
}
}