Test.EIImageViewer
he 2023-03-06 14:36:33 +08:00
parent b4171a6086
commit 4f4a4525b4
3 changed files with 76 additions and 25 deletions

View File

@ -1393,6 +1393,13 @@
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.RECIST1Point1CalculateService.GetIsAddFiveRowIndexs(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.RECIST1Point1CalculateService.GetNETarget(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
被评估为NE的单个靶病灶
@ -2023,22 +2030,22 @@
SOD 百分比 与基线期SOD相比减小30%
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowPercentLess20">
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowSODPercentLess20">
<summary>
SOD 百分比 整体访视期间SOD最低点SOD相比增加20%
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowPercentBigger20">
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowSODPercentBigger20">
<summary>
SOD 百分比 比整体访视期间最低点SOD增加≥20%
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowChangeLess5">
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowSODChangeLess5">
<summary>
SOD 变化值 比整体访视期间最低点SOD绝对增加值5 mm
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowChangeBigger5">
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowSODChangeBigger5">
<summary>
比整体访视期间最低点SOD绝对增加值≥5 mm
</summary>
@ -2073,6 +2080,16 @@
该淋巴结靶病灶短径绝对增加值≥5 mm
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.AddFiveIndexs">
<summary>
靶病灶短径增加值有5mm的Index
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.ShortBigger10Indexs">
<summary>
短径有10mm的Index
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto">
<summary>
阅片计算Dto

View File

@ -62,22 +62,22 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// <summary>
/// SOD 百分比 整体访视期间SOD最低点SOD相比增加20%
/// </summary>
public bool LowPercentLess20 { get; set; }
public bool LowSODPercentLess20 { get; set; }
/// <summary>
/// SOD 百分比 比整体访视期间最低点SOD增加≥20%
/// </summary>
public bool LowPercentBigger20 { get; set; }
public bool LowSODPercentBigger20 { get; set; }
/// <summary>
/// SOD 变化值 比整体访视期间最低点SOD绝对增加值5 mm
/// </summary>
public bool LowChangeLess5 { get; set; }
public bool LowSODChangeLess5 { get; set; }
/// <summary>
/// 比整体访视期间最低点SOD绝对增加值≥5 mm
/// </summary>
public bool LowChangeBigger5 { get; set; }
public bool LowSODChangeBigger5 { get; set; }
/// <summary>
/// 被评估为NE的单个靶病灶 是否存在状态为不可评估的靶病灶
@ -109,6 +109,15 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public bool IsAddFive { get; set; }
/// <summary>
/// 靶病灶短径增加值有5mm的Index
/// </summary>
public List<decimal> AddFiveIndexs { get; set; }
/// <summary>
/// 短径有10mm的Index
/// </summary>
public List<decimal> ShortBigger10Indexs { get; set; }
}
/// <summary>

View File

@ -1045,15 +1045,26 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
return YesOrNoOrNa.NA.GetEnumInt();
}
var addFiveList = await GetIsAddFiveRowIndexs(inDto);
var isExists = addFiveList.Count() > 0 ? true : false;
return isExists ? YesOrNoOrNa.Yes.GetEnumInt() : YesOrNoOrNa.No.GetEnumInt();
}
/// <summary>
/// 获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<List<decimal>> GetIsAddFiveRowIndexs(ReadingCalculateDto inDto)
{
List<decimal> result = new List<decimal>();
var LastVisitTaskId = await this.GetLastVisitTaskId(inDto);
var questionIds = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).Select(x => x.QuestionId).ToList();
var lastQuestionAsnwer = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == LastVisitTaskId && questionIds.Contains(x.QuestionId)).Include(x => x.ReadingQuestionTrial).Include(x => x.ReadingTableQuestionTrial).ToListAsync();
var rowIndexs = lastQuestionAsnwer.Where(x => x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes)).Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList();
var thisQuestionAsnwer = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
var isExists = false;
foreach (var item in rowIndexs)
{
var lastValue = lastQuestionAsnwer.Where(x => x.RowIndex == item && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
@ -1063,12 +1074,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (thisValue - lastValue >= 5)
{
isExists = true;
result.Add(item);
}
}
return isExists ? YesOrNoOrNa.Yes.GetEnumInt() : YesOrNoOrNa.No.GetEnumInt();
return result;
}
#endregion
@ -1447,6 +1457,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
TargetLesionCalculateDto resultData = new TargetLesionCalculateDto()
{
// 是否存在靶病灶
ExistsTargetLesion = tableQuestion.Count() > 0,
@ -1466,24 +1478,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
SODPercent = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()),
// SOD 百分比与基线期SOD相比减小≥30% bool
SODPercentBigger30 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) <=- 30,
SODPercentBigger30 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) <= -30,
// SOD 百分比 与基线期SOD相比减小30% bool
SODPercentLess30 = 0>inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0())&&
SODPercentLess30 = 0 > inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) &&
inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) > -30,
// SOD 百分比 整体访视期间SOD最低点SOD相比增加20%
LowPercentLess20 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < 20,
LowSODPercentLess20 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < 20,
// SOD 百分比 比整体访视期间SOD最低点SOD增加≥20%
LowPercentBigger20 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 20,
LowSODPercentBigger20 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 20,
// SOD 变化值 比整体访视期间SOD最低点SOD绝对增加值5 mm
LowChangeLess5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < 5,
LowSODChangeLess5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < 5,
// 比整体访视期间SOD最低点SOD绝对增加值≥5 mm
LowChangeBigger5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5,
LowSODChangeBigger5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5,
// 被评估为NE的单个靶病灶 是否存在状态为不可评估的靶病灶
ExixtsNETargetLesion = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate)),
@ -1497,6 +1509,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 当前访视点淋巴结病灶, 至少一个淋巴结靶病灶短径≥10 mm
CurrenShortBigger10 = false,
// 靶病灶短径增加值有5mm的Index
AddFiveIndexs = await GetIsAddFiveRowIndexs(inDto),
// 短径有10mm的Index
ShortBigger10Indexs = new List<decimal>(),
//淋巴结非靶病灶状态全部为消失
NonTargetStateIsLoss = true,
@ -1523,7 +1541,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// 淋巴结的短径
resultData.DiameterLessThan10 = resultData.DiameterLessThan10&&(item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() < 10;
resultData.CurrenShortBigger10= resultData.CurrenShortBigger10|| (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() >= 10;
var shortIsBigger10 = (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0() >= 10;
resultData.CurrenShortBigger10= resultData.CurrenShortBigger10|| shortIsBigger10;
if (shortIsBigger10)
{
resultData.ShortBigger10Indexs.Add(item.RowIndex);
}
}
@ -1575,7 +1599,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (resultData.LowSod > 0)
{
// if比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm
if (resultData.LowPercentBigger20 && resultData.LowChangeBigger5)
if (resultData.LowSODPercentBigger20 && resultData.LowSODChangeBigger5)
{
// 靶病灶疗效为 PD
result = TargetAssessment.PD;
@ -1585,7 +1609,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
//进入该分支最低点SOD=0
// if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm)
if (resultData.PresentSod > 0 && resultData.LowChangeBigger5)
if (resultData.PresentSod > 0 && resultData.LowSODChangeBigger5)
{
// 靶病灶疗效为PD
result = TargetAssessment.PD;
@ -1595,7 +1619,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (resultData.LastTargetLesionEvaluate.EqEnum(TargetAssessment.CR))
{
//if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
if (resultData.CurrenShortBigger10 && resultData.IsAddFive)
// 换句话说 就是 ≥10 的病灶 和 增加值≥5的病灶 的交集数量大于0
if (resultData.ShortBigger10Indexs.Intersect(resultData.AddFiveIndexs).ToList().Count()>0)
{
//靶病灶疗效为 PD
result = TargetAssessment.PD;