Uat_Study
parent
e7ddec4329
commit
3fce40b4c9
|
@ -1201,6 +1201,11 @@
|
||||||
上一次访视Id
|
上一次访视Id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="F:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.firstChangeTaskId">
|
||||||
|
<summary>
|
||||||
|
首次转变的任务ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetDeleteLesionStatrIndex(IRaCIS.Core.Application.Service.Reading.Dto.DeleteReadingRowAnswerInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetDeleteLesionStatrIndex(IRaCIS.Core.Application.Service.Reading.Dto.DeleteReadingRowAnswerInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
删除病灶获取起始病灶序号(RECIST1Point1 固定是1)
|
删除病灶获取起始病灶序号(RECIST1Point1 固定是1)
|
||||||
|
@ -1368,7 +1373,7 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetLastTaskSODChange(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetComparedTriggeringSODChange(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
<summary>
|
<summary>
|
||||||
与前一访视SOD相比变化量
|
与前一访视SOD相比变化量
|
||||||
</summary>
|
</summary>
|
||||||
|
@ -1382,9 +1387,9 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetISODChange(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetComparedTriggeringiSODChange(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
<summary>
|
<summary>
|
||||||
与前一访视相比iSOD变化量
|
与触发iRECIST访视相比iSOD变化量
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
@ -7474,6 +7479,11 @@
|
||||||
与基线期SOD相比减小≥30 %
|
与基线期SOD相比减小≥30 %
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionDto.NoTargetLymphLoss">
|
||||||
|
<summary>
|
||||||
|
非靶病灶中淋巴结病灶全部消失
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion">
|
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTNoTargetLesion">
|
||||||
<summary>
|
<summary>
|
||||||
IRECIST 非靶病灶
|
IRECIST 非靶病灶
|
||||||
|
@ -7554,6 +7564,16 @@
|
||||||
至少有一个新靶病无法评估
|
至少有一个新靶病无法评估
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.ExixtsLymphTarget">
|
||||||
|
<summary>
|
||||||
|
当有“存在”状态的淋巴结新靶病灶
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewTargetLesionDto.ExixtsOrLessNoLymphTarget">
|
||||||
|
<summary>
|
||||||
|
当有“存在”或“太小”状态的非淋巴结新靶病灶
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto">
|
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTOtherNewTargetLesionDto">
|
||||||
<summary>
|
<summary>
|
||||||
其他既往新病灶
|
其他既往新病灶
|
||||||
|
|
|
@ -78,6 +78,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// 上一次访视Id
|
/// 上一次访视Id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid? lastVisitTaskId;
|
public Guid? lastVisitTaskId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 首次转变的任务ID
|
||||||
|
/// </summary>
|
||||||
|
public Guid? firstChangeTaskId;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 删除病灶获取起始病灶序号
|
#region 删除病灶获取起始病灶序号
|
||||||
|
@ -484,8 +489,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
//被评估为NE的单个靶病灶
|
//被评估为NE的单个靶病灶
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.NETarget,GetStringFun=GetNETarget},
|
new ReadingCalculateData (){QuestionType=QuestionType.NETarget,GetStringFun=GetNETarget},
|
||||||
|
|
||||||
// 与前一访视SOD相比变化量
|
// 与触发iRECIST访视相比SOD变化量
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.LastVisitSODChange,GetDecimalNullFun=GetLastTaskSODChange,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.ComparedTriggeringSODChange,GetDecimalNullFun=GetComparedTriggeringSODChange,IsConvertedTask=true},
|
||||||
|
|
||||||
// 新靶病灶直径之和(iSOD)
|
// 新靶病灶直径之和(iSOD)
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.ISOD,GetDecimalNullFun=GetiSODData,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.ISOD,GetDecimalNullFun=GetiSODData,IsConvertedTask=true},
|
||||||
|
@ -579,6 +584,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
{
|
{
|
||||||
QuestionType.ISOD,
|
QuestionType.ISOD,
|
||||||
QuestionType.ComparedTriggeringiSODChange,
|
QuestionType.ComparedTriggeringiSODChange,
|
||||||
|
QuestionType.ComparedTriggeringSODChange,
|
||||||
QuestionType.TargetLesion,
|
QuestionType.TargetLesion,
|
||||||
QuestionType.NoTargetLesion,
|
QuestionType.NoTargetLesion,
|
||||||
QuestionType.NewLesions,
|
QuestionType.NewLesions,
|
||||||
|
@ -1321,7 +1327,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<decimal?> GetLastTaskSODChange(ReadingCalculateDto inDto)
|
public async Task<decimal?> GetComparedTriggeringSODChange(ReadingCalculateDto inDto)
|
||||||
{
|
{
|
||||||
var lastTaskId = await this.GetLastVisitTaskId(inDto);
|
var lastTaskId = await this.GetLastVisitTaskId(inDto);
|
||||||
var lastSOD = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
var lastSOD = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||||
|
@ -1658,17 +1664,25 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
private async Task<Guid> GetFirstChangeTaskId(ReadingCalculateDto inDto)
|
private async Task<Guid> GetFirstChangeTaskId(ReadingCalculateDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (firstChangeTaskId != null)
|
||||||
|
{
|
||||||
|
return firstChangeTaskId.Value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo<VisitTaskDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo<VisitTaskDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||||
var firstChangeTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
var taskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||||
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
|
||||||
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
|
||||||
x.DoctorUserId == taskinfo.DoctorUserId &&
|
x.DoctorUserId == taskinfo.DoctorUserId &&
|
||||||
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
|
||||||
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum
|
x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum
|
||||||
&& x.BeforeConvertedTaskId!=null && x.TaskState == TaskState.Effect
|
&& x.BeforeConvertedTaskId != null && x.TaskState == TaskState.Effect
|
||||||
).OrderBy(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
).OrderBy(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
firstChangeTaskId = taskId;
|
||||||
|
return taskId;
|
||||||
|
}
|
||||||
|
|
||||||
return firstChangeTaskId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -1723,7 +1737,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
|
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
|
||||||
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
var lastVisitTaskId = await GetLastVisitTaskId(inDto);
|
||||||
var targetLesionQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.TargetLesion).Select(x => x.QuestionId).FirstOrDefault();
|
var targetLesionQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.TargetLesion).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
var firstChangeTaskId = await GetFirstChangeTaskId(inDto);
|
||||||
var sodQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SOD).Select(x => x.QuestionId).FirstOrDefault();
|
var sodQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SOD).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
IRECISTTargetLesionDto resultData = new IRECISTTargetLesionDto()
|
IRECISTTargetLesionDto resultData = new IRECISTTargetLesionDto()
|
||||||
{
|
{
|
||||||
|
@ -1738,7 +1752,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
MeetRECISTPD = (await GetTargetLesionEvaluate(inDto)) == TargetAssessment.PD.GetEnumInt(),
|
MeetRECISTPD = (await GetTargetLesionEvaluate(inDto)) == TargetAssessment.PD.GetEnumInt(),
|
||||||
|
|
||||||
// 本次访视SOD与触发iRECIST访视相比本次访视SOD增加不小于5mm
|
// 本次访视SOD与触发iRECIST访视相比本次访视SOD增加不小于5mm
|
||||||
SODTiggerAddGreaterThan5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ComparedTriggeringiSODChange).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5,
|
SODTiggerAddGreaterThan5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ComparedTriggeringSODChange).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5,
|
||||||
|
|
||||||
|
|
||||||
//比整体访视期间最低点SOD增加≥20 %
|
//比整体访视期间最低点SOD增加≥20 %
|
||||||
LowSodAddGreaterThan20Percent = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 20,
|
LowSodAddGreaterThan20Percent = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 20,
|
||||||
|
@ -1991,7 +2006,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// {
|
/// {
|
||||||
/// 疗效为 ND
|
/// 疗效为 ND
|
||||||
/// }
|
/// }
|
||||||
/// else if (上一访视新靶病灶评估为“iUPD” && 满足iSOD增加5mm)
|
/// else if (上一访视新靶病灶评估为“iUPD” && 与触发iRECIS任务iSod增加大于5mm)
|
||||||
/// {
|
/// {
|
||||||
/// 疗效为 iCPD
|
/// 疗效为 iCPD
|
||||||
/// }
|
/// }
|
||||||
|
@ -2032,9 +2047,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
LastTaskNewTargetLesion = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == newTargetLesionQuestionId)
|
LastTaskNewTargetLesion = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == newTargetLesionQuestionId)
|
||||||
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty,
|
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty,
|
||||||
|
|
||||||
//SOD增加5mm以上
|
//与触发iRECIS任务iSod增加大于5mm
|
||||||
ISODAdd5mm = await GetiSODData(inDto) - (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == isodQuestionId)
|
ISODAdd5mm = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.ComparedTriggeringiSODChange).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5,
|
||||||
.Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0() >= 5,
|
|
||||||
|
|
||||||
//有"存在"状态的新靶病灶
|
//有"存在"状态的新靶病灶
|
||||||
HaveExixtsState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Exist)),
|
HaveExixtsState = tableQuestion.SelectMany(x => x.TableQuestionList).Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(NewTargetLesionState.Exist)),
|
||||||
|
@ -2084,8 +2098,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
// 疗效为 ND
|
// 疗效为 ND
|
||||||
result = NewTargetLesionAssessment.ND;
|
result = NewTargetLesionAssessment.ND;
|
||||||
}
|
}
|
||||||
// else if (上一访视新靶病灶评估为“iUPD” && 满足iSOD增加5mm)
|
// else if (上一访视新靶病灶评估为“iUPD” && 与触发iRECIS任务iSod增加大于5mm)
|
||||||
else if(data.LastTaskNewTargetLesion.EqEnum(NewTargetLesionAssessment.iUPD)&&data.ISODAdd5mm)
|
else if (data.LastTaskNewTargetLesion.EqEnum(NewTargetLesionAssessment.iUPD)&&data.ISODAdd5mm)
|
||||||
{
|
{
|
||||||
// 疗效为 iCPD
|
// 疗效为 iCPD
|
||||||
result = NewTargetLesionAssessment.iCPD;
|
result = NewTargetLesionAssessment.iCPD;
|
||||||
|
|
|
@ -1466,7 +1466,7 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 与前一访视SOD相比变化量
|
/// 与前一访视SOD相比变化量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
LastVisitSODChange = 23,
|
ComparedTriggeringSODChange = 23,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 新靶病灶直径之和(iSOD)
|
/// 新靶病灶直径之和(iSOD)
|
||||||
|
|
Loading…
Reference in New Issue