代码修改
parent
9d289bede7
commit
b00ac06cee
|
@ -1436,13 +1436,7 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetIRECISTTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||
<summary>
|
||||
获取IRECIST靶病灶评估
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetIRECISTTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetNewTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||
<summary>
|
||||
获取新靶病灶评估
|
||||
|
@ -7184,14 +7178,14 @@
|
|||
检查日期
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.ExistsTargetLesion">
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.NotExistsTargetLesion">
|
||||
<summary>
|
||||
基线未选择任何靶病灶
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.LastTaskIsICPD">
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.LastTaskTarget">
|
||||
<summary>
|
||||
上一访视评估为iCPD
|
||||
上一访视评估
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.MeetRECISTPD">
|
||||
|
@ -7199,6 +7193,42 @@
|
|||
满足RECISTPD
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.SODAddGreaterThan5">
|
||||
<summary>
|
||||
本次访视SOD增加不小于5mm
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.LowSodAddGreaterThan20Percent">
|
||||
<summary>
|
||||
比整体访视期间最低点SOD增加≥20 %
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.LowSodAddGreaterThan5">
|
||||
<summary>
|
||||
比整体访视期间最低点SOD绝对增加值≥5 mm
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.HaveExistLesion">
|
||||
<summary>
|
||||
当前访视至少有一个“存在”状态的靶病灶
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.HaveNeLesion">
|
||||
<summary>
|
||||
有任一靶病灶为NE状态
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.AllLesionVanish">
|
||||
<summary>
|
||||
所有非淋巴结靶病灶消失,径线总和为0
|
||||
</summary>
|
||||
</member>
|
||||
<!-- Badly formed XML comment ignored for member "P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.AllMinorAxisLessThan10" -->
|
||||
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.BaseLineLessThan30">
|
||||
<summary>
|
||||
与基线期SOD相比减小≥30 %
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto">
|
||||
<summary>
|
||||
新靶病灶评估Dto
|
||||
|
|
|
@ -53,22 +53,62 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
/// <summary>
|
||||
/// 基线未选择任何靶病灶
|
||||
/// </summary>
|
||||
public bool ExistsTargetLesion { get; set; }
|
||||
public bool NotExistsTargetLesion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上一访视评估为iCPD
|
||||
/// 上一访视评估
|
||||
/// </summary>
|
||||
public bool LastTaskIsICPD { get; set; }
|
||||
public string LastTaskTarget { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 满足RECISTPD
|
||||
/// </summary>
|
||||
public bool MeetRECISTPD { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本次访视SOD增加不小于5mm
|
||||
/// </summary>
|
||||
public bool SODAddGreaterThan5 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 比整体访视期间最低点SOD增加≥20 %
|
||||
/// </summary>
|
||||
public bool LowSodAddGreaterThan20Percent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 比整体访视期间最低点SOD绝对增加值≥5 mm
|
||||
/// </summary>
|
||||
public bool LowSodAddGreaterThan5 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前访视至少有一个“存在”状态的靶病灶
|
||||
/// </summary>
|
||||
public bool HaveExistLesion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 有任一靶病灶为NE状态
|
||||
/// </summary>
|
||||
public bool HaveNeLesion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所有非淋巴结靶病灶消失,径线总和为0
|
||||
/// </summary>
|
||||
public bool AllLesionVanish { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所有淋巴结靶病灶的短径缩小到 < 10 mm
|
||||
/// </summary>
|
||||
public bool AllMinorAxisLessThan10 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 与基线期SOD相比减小≥30 %
|
||||
/// </summary>
|
||||
public bool BaseLineLessThan30 { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 新靶病灶评估Dto
|
||||
/// </summary>
|
||||
|
|
|
@ -1524,55 +1524,166 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
lastVisitTaskId = lastTaskId;
|
||||
return lastTaskId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 计算阅片问题 外层问题
|
||||
|
||||
#region IRECIST计算
|
||||
|
||||
#region 获取IRECIST靶病灶评估
|
||||
|
||||
/// <summary>
|
||||
/// 获取IRECIST靶病灶评估
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <remarks>
|
||||
/// if(基线没有靶病灶)
|
||||
/// {
|
||||
/// 靶病灶疗效为 ND
|
||||
/// }else if ((上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件)|| 上一访视评估为iUPD || 本次访视SOD增加不小于5mm)
|
||||
/// {
|
||||
/// 靶病灶疗效为 ICPD
|
||||
/// } else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
||||
/// {
|
||||
/// 靶病灶疗效为 iUPD
|
||||
/// } else if (有任一靶病灶为NE状态)
|
||||
/// {
|
||||
/// 靶病灶疗效为 NE
|
||||
/// }
|
||||
/// else if (所有非淋巴结靶病灶消失,径线总和为0 mm && 所有淋巴结靶病灶的短径缩小到 < 10 mm)
|
||||
/// {
|
||||
/// 靶病灶疗效为 iCR
|
||||
/// } else if (与基线期SOD相比减小≥30 %)
|
||||
/// {
|
||||
/// 靶病灶疗效为 iPR
|
||||
/// }
|
||||
/// else
|
||||
/// {
|
||||
/// 靶病灶疗效为 iSD
|
||||
/// }
|
||||
///
|
||||
/// </remarks>
|
||||
/// <returns></returns>
|
||||
public async Task<string> GetIRECISTTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||
{
|
||||
//if(基线没有靶病灶)
|
||||
//{
|
||||
// 靶病灶疗效为 ND
|
||||
//}else if ((上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件)|| 上一访视评估为iUPD || 本次访视SOD增加不小于5mm)
|
||||
//{
|
||||
// 靶病灶疗效为 ICPD
|
||||
//} else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
||||
|
||||
//{
|
||||
// 靶病灶疗效为 iUPD
|
||||
//} else if (有任一靶病灶为NE状态)
|
||||
// {
|
||||
// 靶病灶疗效为 NE
|
||||
//}
|
||||
// else if (所有非淋巴结靶病灶消失,径线总和为0 mm && 所有淋巴结靶病灶的短径缩小到 < 10 mm)
|
||||
//{
|
||||
// 靶病灶疗效为 iCR
|
||||
//} else if (与基线期SOD相比减小≥30 %)
|
||||
//{
|
||||
// 靶病灶疗效为 iPR
|
||||
//}
|
||||
//else
|
||||
// {
|
||||
// 靶病灶疗效为 iSD
|
||||
//}
|
||||
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
|
||||
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||
var tumorQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.Tumor).Select(x => x.QuestionId).FirstOrDefault();
|
||||
|
||||
//if()
|
||||
return string.Empty;
|
||||
var sodQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SOD).Select(x => x.QuestionId).FirstOrDefault();
|
||||
IRECISTTargetLesionDto resultData = new IRECISTTargetLesionDto()
|
||||
{
|
||||
// 基线没有靶病灶
|
||||
NotExistsTargetLesion = tableQuestion.Count() == 0,
|
||||
|
||||
// 上一访视评估
|
||||
LastTaskTarget = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == tumorQuestionId)
|
||||
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty,
|
||||
|
||||
// 满足RECISTPD
|
||||
MeetRECISTPD = (await GetTargetLesionEvaluate(inDto)) == TargetAssessment.PD.GetEnumInt(),
|
||||
|
||||
// 本次访视SOD增加不小于5mm
|
||||
SODAddGreaterThan5 = await GetSODData(inDto) - (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == sodQuestionId)
|
||||
.Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0() >= 5,
|
||||
|
||||
//比整体访视期间最低点SOD增加≥20 %
|
||||
LowSodAddGreaterThan20Percent = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 20,
|
||||
|
||||
// 比整体访视期间最低点SOD绝对增加值≥5 mm
|
||||
LowSodAddGreaterThan5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5,
|
||||
|
||||
// 当前访视至少有一个“存在”状态的靶病灶
|
||||
HaveExistLesion = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.Exist)),
|
||||
|
||||
// 有任一靶病灶为NE状态
|
||||
HaveNeLesion = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate)),
|
||||
|
||||
// 所有非淋巴结靶病灶消失,径线总和为0
|
||||
AllLesionVanish = true,
|
||||
|
||||
// 所有淋巴结靶病灶的短径缩小到 < 10 mm
|
||||
AllMinorAxisLessThan10 = true,
|
||||
|
||||
// 与基线期SOD相比减小≥30 %
|
||||
BaseLineLessThan30 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) <= -30,
|
||||
};
|
||||
|
||||
|
||||
foreach (var item in tableQuestion)
|
||||
{
|
||||
if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes)))
|
||||
{
|
||||
// 淋巴结的短径
|
||||
resultData.AllMinorAxisLessThan10 = resultData.AllMinorAxisLessThan10 && (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() < 10;
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && !x.Answer.EqEnum(YesOrNoOrNa.Yes)))
|
||||
{
|
||||
resultData.AllLesionVanish = resultData.AllLesionVanish && item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.State).Select(x => x.Answer).FirstOrDefault() == TargetState.Loss.GetEnumInt();
|
||||
}
|
||||
}
|
||||
TargetAssessment result = TargetAssessment.SD;
|
||||
|
||||
// if(基线没有靶病灶)
|
||||
if (resultData.NotExistsTargetLesion)
|
||||
{
|
||||
// 靶病灶疗效为 ND
|
||||
result = TargetAssessment.ND;
|
||||
}
|
||||
// }else if ((上一访视评估为iCPD && 本次访视满足RECIST1.1的PD条件)|| 上一访视评估为iUPD || 本次访视SOD增加不小于5mm)
|
||||
else if ((resultData.LastTaskTarget.EqEnum(OverallAssessment.iCPD) && resultData.MeetRECISTPD) || resultData.LastTaskTarget.EqEnum(OverallAssessment.iUPD) || resultData.SODAddGreaterThan5)
|
||||
{
|
||||
// 靶病灶疗效为 ICPD
|
||||
result = TargetAssessment.iCPD;
|
||||
}
|
||||
// } else if (本次访视满足RECIST1.1的PD条件 && (比整体访视期间最低点SOD增加≥20 % && 比整体访视期间最低点SOD绝对增加值≥5 mm)|| (前一访视评估为iCR && 当前访视至少有一个“存在”状态的靶病灶))
|
||||
else if(resultData.MeetRECISTPD&&(resultData.LowSodAddGreaterThan20Percent&&resultData.LowSodAddGreaterThan5)|| (resultData.LastTaskTarget.EqEnum(OverallAssessment.iCR)&&resultData.HaveExistLesion))
|
||||
{
|
||||
// 靶病灶疗效为 iUPD
|
||||
result = TargetAssessment.iUPD;
|
||||
}
|
||||
// else if (有任一靶病灶为NE状态)
|
||||
else if(resultData.HaveNeLesion)
|
||||
{
|
||||
// 靶病灶疗效为 NE
|
||||
result = TargetAssessment.NE;
|
||||
}
|
||||
// else if (所有非淋巴结靶病灶消失,径线总和为0 mm && 所有淋巴结靶病灶的短径缩小到 < 10 mm)
|
||||
else if(resultData.AllLesionVanish&&resultData.AllMinorAxisLessThan10)
|
||||
{
|
||||
// 靶病灶疗效为 iCR
|
||||
result = TargetAssessment.iCR;
|
||||
}
|
||||
// else if (与基线期SOD相比减小≥30 %)
|
||||
else if(resultData.BaseLineLessThan30)
|
||||
{
|
||||
// 靶病灶疗效为 iPR
|
||||
result = TargetAssessment.iPR;
|
||||
}
|
||||
// else
|
||||
else
|
||||
{
|
||||
// 靶病灶疗效为 iSD
|
||||
result = TargetAssessment.iSD;
|
||||
}
|
||||
|
||||
|
||||
return result.GetEnumInt();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IRECIST非靶病灶评估
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 获取新靶病灶评估
|
||||
|
@ -1611,6 +1722,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
return string.Empty;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region 获取靶病灶评估
|
||||
|
@ -1848,7 +1961,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
}
|
||||
}
|
||||
//if(上次访视点评估是CR)
|
||||
if (resultData.LastTargetLesionEvaluate.EqEnum(TargetAssessment.CR))
|
||||
if (resultData.LastTargetLesionEvaluate.EqEnum(OverallAssessment.CR))
|
||||
{
|
||||
//if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
|
||||
// 换句话说 就是 短径≥10 的病灶 和 短径增加值≥5的病灶 的交集数量大于0
|
||||
|
|
|
@ -483,7 +483,22 @@ namespace IRaCIS.Core.Domain.Share
|
|||
/// </summary>
|
||||
SD = 6,
|
||||
|
||||
|
||||
iCR = 7,
|
||||
|
||||
|
||||
iPR = 8,
|
||||
|
||||
|
||||
iSD = 10,
|
||||
|
||||
|
||||
iNN = 11,
|
||||
|
||||
|
||||
iUPD = 12,
|
||||
|
||||
|
||||
iCPD = 13,
|
||||
}
|
||||
|
||||
|
||||
|
@ -626,6 +641,16 @@ namespace IRaCIS.Core.Domain.Share
|
|||
/// </summary>
|
||||
ND = 5,
|
||||
|
||||
iCR=6,
|
||||
|
||||
iPR=7,
|
||||
|
||||
iSD=8,
|
||||
|
||||
iUPD=9,
|
||||
|
||||
iCPD=10,
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue