计算修改
parent
785641cc47
commit
ad0b3d4c28
|
|
@ -323,6 +323,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public string BlindName { get; set; }
|
||||
|
||||
public decimal SOD { get; set; }
|
||||
public decimal SpleenLength { get; set; }
|
||||
|
||||
public decimal VisitTaskNum { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -461,6 +461,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
//垂直径乘积之和(SPD)
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SPD,GetDecimalFun=GetSPD},
|
||||
|
||||
// 与基线相比SPD变化的百分比
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SPDChange,GetDecimalFun=CompareBaselineSPD},
|
||||
|
||||
// 与基线相比脾肿大增加的百分比
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusChange,GetDecimalFun=GetSplenoncusChange},
|
||||
|
||||
// 与最低点相比脾脏垂直径长度的增加值
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusAdd,GetDecimalFun=GetSplenoncusAdd},
|
||||
|
||||
// 与基线相比脾垂直径变化值
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusDiameterChange,GetDecimalFun=GetSplenoncusDiameterChange},
|
||||
|
||||
// 脾肿垂直径最低点访视
|
||||
new ReadingCalculateData (){QuestionType=QuestionType.LowestSplenoncusVisit,GetStringFun=GetLowestSplenoncusVisit},
|
||||
|
||||
////靶病灶径线之和(SOD)
|
||||
//new ReadingCalculateData (){QuestionType=QuestionType.SOD,GetDecimalNullFun=GetSODData},
|
||||
|
||||
|
|
@ -1229,29 +1244,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
#region 修改其他标准
|
||||
|
||||
#region 修改与整个访视期间SOD最低点相比增加的值(mm)
|
||||
|
||||
/// <summary>
|
||||
/// 修改与整个访视期间SOD最低点相比增加的值(mm)
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task ChangeAllLowestIncrease(ChangeAllTaskDto inDto)
|
||||
{
|
||||
var visitTaskList = await GetVisitTaskAnswerList(inDto.calculateDto);
|
||||
|
||||
var lowSod = (await GetLowSODVisit(inDto.calculateDto)).Select(x => x.SOD).OrderBy(x => x).FirstOrDefault();
|
||||
|
||||
foreach (var item in visitTaskList.Where(x => x.VisitTaskId != inDto.calculateDto.BaseLineTaskId))
|
||||
{
|
||||
await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.VisitTaskId == item.VisitTaskId && x.ReadingQuestionTrialId == inDto.QuestionId, x => new ReadingTaskQuestionAnswer()
|
||||
{
|
||||
Answer = (item.SOD - lowSod).ToString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 修改整个访视期间SOD最低点相比增加的百分比
|
||||
|
|
@ -1430,7 +1423,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
&& x.VisitTask.IsSelfAnalysis == inDto.IsSelfAnalysis
|
||||
&& x.VisitTask.VisitTaskNum < inDto.VisitTaskNum
|
||||
&& x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId
|
||||
&& x.SubjectId == inDto.SubjectId && x.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTask.ArmEnum == inDto.ArmEnum && x.VisitTask.TaskState == TaskState.Effect && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD)
|
||||
&& x.SubjectId == inDto.SubjectId && x.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTask.ArmEnum == inDto.ArmEnum && x.VisitTask.TaskState == TaskState.Effect && x.ReadingQuestionTrial.QuestionType == QuestionType.SpleenLength)
|
||||
.Select(x => new VisitTaskAnswerInfo
|
||||
{
|
||||
VisitTaskId = x.VisitTaskId,
|
||||
|
|
@ -1438,21 +1431,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
VisitName = x.VisitTask.SourceSubjectVisit.VisitName,
|
||||
BlindName = x.VisitTask.TaskBlindName,
|
||||
|
||||
SOD = x.Answer.IsNullOrEmptyReturn0(),
|
||||
SpleenLength = x.Answer.IsNullOrEmptyReturn0(),
|
||||
}).ToListAsync();
|
||||
|
||||
// 这里是需要加上自己的 基线不用管
|
||||
if (visitTaskAnswerList.Count > 0)
|
||||
{
|
||||
visitTaskAnswerList.Add(new VisitTaskAnswerInfo()
|
||||
{
|
||||
VisitTaskId = inDto.VisitTaskId,
|
||||
BlindName=inDto.TaskBlindName,
|
||||
QuestionId = visitTaskAnswerList[0].QuestionId,
|
||||
VisitName = inDto.VisitName,
|
||||
SOD = (await GetSODData(inDto)).ToString().IsNullOrEmptyReturn0(),
|
||||
});
|
||||
}
|
||||
//// 这里是需要加上自己的 基线不用管
|
||||
//if (visitTaskAnswerList.Count > 0)
|
||||
//{
|
||||
// visitTaskAnswerList.Add(new VisitTaskAnswerInfo()
|
||||
// {
|
||||
// VisitTaskId = inDto.VisitTaskId,
|
||||
// BlindName = inDto.TaskBlindName,
|
||||
// QuestionId = visitTaskAnswerList[0].QuestionId,
|
||||
// VisitName = inDto.VisitName,
|
||||
// SOD = (await GetSODData(inDto)).ToString().IsNullOrEmptyReturn0(),
|
||||
// });
|
||||
//}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1505,8 +1498,138 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
return result;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 与基线相比SPD变化的百分比
|
||||
/// <summary>
|
||||
/// 与基线相比SPD变化的百分比
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<decimal> CompareBaselineSPD(ReadingCalculateDto inDto)
|
||||
{
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
var baseLineTaskId = await GetBaseLineTaskId(inDto);
|
||||
|
||||
var baseLineSpd = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SPD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SPD).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
|
||||
if (baseLineSpd != 0)
|
||||
{
|
||||
return (presentSpd - baseLineSpd) / baseLineSpd;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 与基线相比脾肿大增加的百分比
|
||||
/// <summary>
|
||||
/// 与基线相比脾肿大增加的百分比
|
||||
/// [(当前垂直径-130)-(基线垂直径-130)]/(基线垂直径-130)
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<decimal> GetSplenoncusChange(ReadingCalculateDto inDto)
|
||||
{
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
var baseLineTaskId = await GetBaseLineTaskId(inDto);
|
||||
|
||||
var baseLineSpleenLength = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
var presentSpleenLength = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
|
||||
if (baseLineSpleenLength - 130 != 0)
|
||||
{
|
||||
return (presentSpleenLength - 130 - (baseLineSpleenLength - 130)) / (baseLineSpleenLength - 130);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 与最低点相比脾脏垂直径长度的增加值
|
||||
|
||||
/// <summary>
|
||||
/// 与最低点相比脾脏垂直径长度的增加值
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<decimal> GetSplenoncusAdd(ReadingCalculateDto inDto)
|
||||
{
|
||||
var TaskAnswer = await GetVisitTaskAnswerList(inDto);
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
|
||||
var lowSplenoncus = TaskAnswer.OrderBy(x => x.SpleenLength).Select(x => x.SpleenLength).FirstOrDefault();
|
||||
return presentSpd - lowSplenoncus;
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 脾肿垂直径最低点访视
|
||||
|
||||
/// <summary>
|
||||
/// 脾肿垂直径最低点访视
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<string> GetLowestSplenoncusVisit(ReadingCalculateDto inDto)
|
||||
{
|
||||
var taskAnswer = await GetVisitTaskAnswerList(inDto);
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
|
||||
var lowSplenoncus = taskAnswer.OrderBy(x => x.SpleenLength).FirstOrDefault();
|
||||
return lowSplenoncus.VisitTaskNum;
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 与最低点相比脾脏垂直径长度的增加值
|
||||
/// <summary>
|
||||
/// 与最低点相比脾脏垂直径长度的增加值
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<decimal> GetSplenoncusDiameterChange(ReadingCalculateDto inDto)
|
||||
{
|
||||
|
||||
if (inDto.IsBaseLine)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var baseLineTaskId = await GetBaseLineTaskId(inDto);
|
||||
var presentSpleenLength = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
|
||||
var baseLineSpleenLength = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
return presentSpleenLength - baseLineSpleenLength;
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 获取靶病灶评估
|
||||
/// <summary>
|
||||
/// 获取靶病灶评估
|
||||
|
|
|
|||
|
|
@ -1976,6 +1976,70 @@ namespace IRaCIS.Core.Domain.Share
|
|||
/// </summary>
|
||||
ImageQualityAssessment=44,
|
||||
|
||||
/// <summary>
|
||||
/// Forrest出血部位
|
||||
/// </summary>
|
||||
ForrestBleedingSite = 45,
|
||||
|
||||
/// <summary>
|
||||
/// Forrest评估结果
|
||||
/// </summary>
|
||||
ForrestAssessment = 46,
|
||||
|
||||
/// <summary>
|
||||
/// 肝脏状态
|
||||
/// </summary>
|
||||
LiverState = 47,
|
||||
|
||||
/// <summary>
|
||||
/// 脾脏长度
|
||||
/// </summary>
|
||||
SpleenLength = 48,
|
||||
|
||||
/// <summary>
|
||||
/// 脾脏状态
|
||||
/// </summary>
|
||||
SplenicStatus = 49,
|
||||
|
||||
/// <summary>
|
||||
/// 存在PET图像
|
||||
/// </summary>
|
||||
ExistPET = 50,
|
||||
|
||||
/// <summary>
|
||||
/// 肝脏血池SUVmax
|
||||
/// </summary>
|
||||
LiverSUVmax = 51,
|
||||
|
||||
/// <summary>
|
||||
/// 纵膈血池SUVmax
|
||||
/// </summary>
|
||||
MediastinumSUVmax = 52,
|
||||
|
||||
/// <summary>
|
||||
/// SUVmax
|
||||
/// </summary>
|
||||
SUVmax = 53,
|
||||
|
||||
/// <summary>
|
||||
/// SUVmax所在病灶
|
||||
/// </summary>
|
||||
SUVmaxLesion = 54,
|
||||
|
||||
/// <summary>
|
||||
/// PET 5PS评分
|
||||
/// </summary>
|
||||
PET5PS = 55,
|
||||
|
||||
/// <summary>
|
||||
/// 与基线相比摄取值变化
|
||||
/// </summary>
|
||||
UptakeChange = 56,
|
||||
|
||||
/// <summary>
|
||||
/// 骨髓中是否存在局灶性 FDG亲和病灶的证据
|
||||
/// </summary>
|
||||
EvidenceFocalFDG = 57,
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue