Uat_Study
parent
6da34061da
commit
3a03eec1ab
|
@ -131,7 +131,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public bool IsConvertedTask { get; set; }
|
public bool IsConvertedTask { get; set; }
|
||||||
|
|
||||||
public bool IsAnalysisCreate { get; set; }
|
public Guid? BeforeConvertedTaskId { get; set; }
|
||||||
|
|
||||||
|
public bool IsAnalysisCreate { get; set; }
|
||||||
|
|
||||||
public bool? IsSelfAnalysis { get; set; }
|
public bool? IsSelfAnalysis { get; set; }
|
||||||
|
|
||||||
|
@ -295,7 +297,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Func<ChangeAllTaskDto,Task> ChangeAllTaskFun { get; set; }
|
public Func<ChangeAllTaskDto,Task> ChangeAllTaskFun { get; set; }
|
||||||
|
|
||||||
public bool? IsConvertedTask { get; set; }
|
public bool? IsConvertedTask { get; set; }
|
||||||
}
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否是正在转化
|
||||||
|
/// </summary>
|
||||||
|
public bool IsBeTransforming { get; set; } = false;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -117,19 +117,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReadingCalculateDto readingData = new ReadingCalculateDto()
|
ReadingCalculateDto readingData = new ReadingCalculateDto()
|
||||||
{
|
{
|
||||||
SubjectId = visitTask.SubjectId,
|
SubjectId = visitTask.SubjectId,
|
||||||
TaskBlindName = visitTask.TaskBlindName,
|
TaskBlindName = visitTask.TaskBlindName,
|
||||||
IsConvertedTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(x => x.IsConvertedTask).FirstOrDefaultAsync(),
|
IsConvertedTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(x => x.IsConvertedTask).FirstOrDefaultAsync(),
|
||||||
VisitTaskId = visitTaskId,
|
BeforeConvertedTaskId = visitTask.BeforeConvertedTaskId,
|
||||||
SubjectVisitId = visitTask.SourceSubjectVisitId!.Value,
|
VisitTaskId = visitTaskId,
|
||||||
QuestionInfo = questionInfos,
|
SubjectVisitId = visitTask.SourceSubjectVisitId!.Value,
|
||||||
CriterionId = visitTask.TrialReadingCriterionId,
|
QuestionInfo = questionInfos,
|
||||||
TrialId = visitTask.TrialId,
|
CriterionId = visitTask.TrialReadingCriterionId,
|
||||||
IsAnalysisCreate = visitTask.IsAnalysisCreate,
|
TrialId = visitTask.TrialId,
|
||||||
IsSelfAnalysis = visitTask.IsSelfAnalysis,
|
IsAnalysisCreate = visitTask.IsAnalysisCreate,
|
||||||
IsBaseLine = subjectVisit!.IsBaseLine,
|
IsSelfAnalysis = visitTask.IsSelfAnalysis,
|
||||||
|
IsBaseLine = subjectVisit!.IsBaseLine,
|
||||||
DoctorUserId = visitTask.DoctorUserId,
|
DoctorUserId = visitTask.DoctorUserId,
|
||||||
TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
||||||
BaseLineTaskId = baseLinetaskId,
|
BaseLineTaskId = baseLinetaskId,
|
||||||
|
|
|
@ -470,12 +470,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
// IRECIST靶病灶评估
|
// IRECIST靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetIRECISTTargetLesionEvaluate,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetIRECISTTargetLesionEvaluate,IsConvertedTask=true},
|
||||||
|
|
||||||
|
// 转化时靶病灶评估
|
||||||
|
new ReadingCalculateData (){QuestionType=QuestionType.TargetLesion,GetStringFun=GetConvertingTargetLesionEvaluate,IsConvertedTask=true,IsBeTransforming=true},
|
||||||
|
|
||||||
//非靶病灶评估
|
//非靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate,IsConvertedTask=false},
|
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetNoTargetLesionEvaluate,IsConvertedTask=false},
|
||||||
|
|
||||||
//IRECIST非靶病灶评估
|
//IRECIST非靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetIRECISTNoTargetLesionEvaluate,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetIRECISTNoTargetLesionEvaluate,IsConvertedTask=true},
|
||||||
|
|
||||||
|
// 转化时非靶病灶评估
|
||||||
|
new ReadingCalculateData (){QuestionType=QuestionType.NoTargetLesion,GetStringFun=GetConvertingNoTargetLesionEvaluate,IsConvertedTask=true ,IsBeTransforming=true},
|
||||||
|
|
||||||
// IRECIST新靶病灶评估
|
// IRECIST新靶病灶评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.NewTargetLesion,GetStringFun=GetNewTargetLesionEvaluate,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.NewTargetLesion,GetStringFun=GetNewTargetLesionEvaluate,IsConvertedTask=true},
|
||||||
|
|
||||||
|
@ -506,6 +512,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
//IRECIST整体肿瘤评估
|
//IRECIST整体肿瘤评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
|
||||||
|
|
||||||
|
// 转化时整体肿瘤评估
|
||||||
|
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetConvertingTumor,IsConvertedTask=true,IsBeTransforming=true},
|
||||||
|
|
||||||
|
|
||||||
//IRECIST整体肿瘤评估
|
//IRECIST整体肿瘤评估
|
||||||
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
|
new ReadingCalculateData (){QuestionType=QuestionType.Tumor,GetStringFun=GetIRECSITTargetLesionEvaluate,IsConvertedTask=true},
|
||||||
|
@ -517,6 +526,25 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
// 过滤转化的
|
// 过滤转化的
|
||||||
|
|
||||||
calculateList = calculateList.Where(x => x.IsConvertedTask == inDto.IsConvertedTask||x.IsConvertedTask==null).ToList();
|
calculateList = calculateList.Where(x => x.IsConvertedTask == inDto.IsConvertedTask||x.IsConvertedTask==null).ToList();
|
||||||
|
if (inDto.IsConvertedTask)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if (inDto.BeforeConvertedTaskId != null)
|
||||||
|
{
|
||||||
|
List<QuestionType> questionTypes = calculateList.Where(x => x.IsBeTransforming).Select(x => x.QuestionType).ToList();
|
||||||
|
|
||||||
|
// 排除这几个 且不为正在转化的
|
||||||
|
calculateList = calculateList.Where(x => !(questionTypes.Contains(x.QuestionType)&& x.IsBeTransforming == false)).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
calculateList = calculateList.Where(x => x.IsBeTransforming == false).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 没有靶病灶只计算最后几个
|
// 没有靶病灶只计算最后几个
|
||||||
if (inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).Sum(x => x.TableRowInfoList.Count()) == 0)
|
if (inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).Sum(x => x.TableRowInfoList.Count()) == 0)
|
||||||
|
@ -2391,6 +2419,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
public async Task<string> GetNewLesionIRECSITEvaluate(ReadingCalculateDto inDto)
|
public async Task<string> GetNewLesionIRECSITEvaluate(ReadingCalculateDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// 逻辑改了 现在转变后全部都是NA;
|
||||||
|
return NewLesionAssessment.NA.GetEnumInt();
|
||||||
|
|
||||||
NewLesionAssessment result = NewLesionAssessment.No;
|
NewLesionAssessment result = NewLesionAssessment.No;
|
||||||
if (inDto.IsBaseLine)
|
if (inDto.IsBaseLine)
|
||||||
{
|
{
|
||||||
|
@ -2682,78 +2713,182 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
return result == null ? string.Empty : ((OverallAssessment)result).GetEnumInt();
|
return result == null ? string.Empty : ((OverallAssessment)result).GetEnumInt();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 转化时计算
|
||||||
|
|
||||||
|
#region 获取转化的靶病灶评估
|
||||||
|
/// <summary>
|
||||||
|
/// 获取转化的靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<string> GetConvertingTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
|
{
|
||||||
|
var beforeConvertedAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.BeforeConvertedTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.TargetLesion).Select(x => x.Answer).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
Dictionary<string, string> answerConverDic = new Dictionary<string, string>()
|
||||||
|
{
|
||||||
|
{TargetAssessment.SD.GetEnumInt(),TargetAssessment.iSD.GetEnumInt() },
|
||||||
|
{TargetAssessment.PR.GetEnumInt(),TargetAssessment.iPR.GetEnumInt() },
|
||||||
|
{TargetAssessment.PD.GetEnumInt(),TargetAssessment.iUPD.GetEnumInt() },
|
||||||
|
{TargetAssessment.CR.GetEnumInt(), TargetAssessment.iCR.GetEnumInt() },
|
||||||
|
};
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return answerConverDic[beforeConvertedAnswer];
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return beforeConvertedAnswer;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region 获取靶病灶评估
|
#region 获取转化的非靶病灶评估
|
||||||
/// <summary>
|
|
||||||
/// 获取靶病灶评估
|
/// <summary>
|
||||||
/// </summary>
|
/// 获取转化的非靶病灶评估
|
||||||
/// <param name="inDto"></param>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <param name="inDto"></param>
|
||||||
/// 靶病灶疗效评估算法-20230306确认版本:
|
/// <returns></returns>
|
||||||
///if(基线没有靶病灶)
|
public async Task<string> GetConvertingNoTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
///{
|
{
|
||||||
/// 靶病灶疗效为 ND
|
var beforeConvertedAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.BeforeConvertedTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.NoTargetLesion).Select(x => x.Answer).FirstOrDefaultAsync();
|
||||||
///}else
|
|
||||||
///{
|
Dictionary<string, string> answerConverDic = new Dictionary<string, string>()
|
||||||
/// 初始化靶病灶疗效为 SD
|
{
|
||||||
///
|
{NoTargetAssessment.NN.GetEnumInt(),NoTargetAssessment.iNN.GetEnumInt() },
|
||||||
/// if (与基线期SOD相比减小≥30 %)
|
{NoTargetAssessment.PD.GetEnumInt(),NoTargetAssessment.iUPD.GetEnumInt() },
|
||||||
/// {
|
{NoTargetAssessment.CR.GetEnumInt(), NoTargetAssessment.iCR.GetEnumInt() },
|
||||||
/// 靶病灶疗效为 PR
|
};
|
||||||
///
|
|
||||||
/// }
|
try
|
||||||
///
|
{
|
||||||
///if (非淋巴结靶病灶长径之和 == 0 并且所有淋巴结靶病灶的短径 < 10且淋巴结非靶病灶全部消失)
|
return answerConverDic[beforeConvertedAnswer];
|
||||||
/// {
|
|
||||||
/// 靶病灶疗效为 CR
|
}
|
||||||
///
|
catch (Exception)
|
||||||
/// }
|
{
|
||||||
///
|
|
||||||
///if (有被评估为NE的单个靶病灶)
|
return beforeConvertedAnswer;
|
||||||
/// {
|
|
||||||
/// 靶病灶疗效为 NE
|
}
|
||||||
///
|
}
|
||||||
/// }
|
#endregion
|
||||||
///
|
|
||||||
///if (最低点SOD > 0)
|
#region 获取转化的整体肿瘤评估
|
||||||
///{
|
|
||||||
/// if(比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm)
|
/// <summary>
|
||||||
/// {
|
/// 获取转化的整体肿瘤评估
|
||||||
/// 靶病灶疗效为 PD
|
/// </summary>
|
||||||
///
|
/// <param name="inDto"></param>
|
||||||
/// }
|
/// <returns></returns>
|
||||||
///}
|
public async Task<string> GetConvertingTumor(ReadingCalculateDto inDto)
|
||||||
///else
|
{
|
||||||
///{
|
var beforeConvertedAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.BeforeConvertedTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).Select(x => x.Answer).FirstOrDefaultAsync();
|
||||||
/// //进入该分支最低点SOD=0
|
|
||||||
/// if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm)
|
Dictionary<string, string> answerConverDic = new Dictionary<string, string>()
|
||||||
/// {
|
{
|
||||||
/// 靶病灶疗效为PD
|
{OverallAssessment.NN.GetEnumInt(),OverallAssessment.iNN.GetEnumInt() },
|
||||||
///
|
{OverallAssessment.PD.GetEnumInt(),OverallAssessment.iUPD.GetEnumInt() },
|
||||||
/// }
|
{OverallAssessment.CR.GetEnumInt(), OverallAssessment.iCR.GetEnumInt() },
|
||||||
///}
|
{OverallAssessment.SD.GetEnumInt(), OverallAssessment.iSD.GetEnumInt() },
|
||||||
///
|
{OverallAssessment.PR.GetEnumInt(), OverallAssessment.iPR.GetEnumInt() },
|
||||||
///if(上次访视点评估是CR)
|
};
|
||||||
/// {
|
|
||||||
/// if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
|
try
|
||||||
/// {
|
{
|
||||||
/// 靶病灶疗效为 PD
|
return answerConverDic[beforeConvertedAnswer];
|
||||||
///
|
|
||||||
/// }
|
}
|
||||||
/// if (当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。)
|
catch (Exception)
|
||||||
/// {
|
{
|
||||||
/// 靶病灶疗效为 PD
|
|
||||||
///
|
return beforeConvertedAnswer;
|
||||||
/// }
|
|
||||||
///}
|
}
|
||||||
///}
|
}
|
||||||
/// </remarks>
|
#endregion
|
||||||
/// <returns></returns>
|
#endregion
|
||||||
public async Task<string> GetTargetLesionEvaluate(ReadingCalculateDto inDto)
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 获取靶病灶评估
|
||||||
|
/// <summary>
|
||||||
|
/// 获取靶病灶评估
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <remarks>
|
||||||
|
/// 靶病灶疗效评估算法-20230306确认版本:
|
||||||
|
///if(基线没有靶病灶)
|
||||||
|
///{
|
||||||
|
/// 靶病灶疗效为 ND
|
||||||
|
///}else
|
||||||
|
///{
|
||||||
|
/// 初始化靶病灶疗效为 SD
|
||||||
|
///
|
||||||
|
/// if (与基线期SOD相比减小≥30 %)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PR
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
///if (非淋巴结靶病灶长径之和 == 0 并且所有淋巴结靶病灶的短径 < 10且淋巴结非靶病灶全部消失)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 CR
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
///if (有被评估为NE的单个靶病灶)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 NE
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
///if (最低点SOD > 0)
|
||||||
|
///{
|
||||||
|
/// if(比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PD
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///}
|
||||||
|
///else
|
||||||
|
///{
|
||||||
|
/// //进入该分支最低点SOD=0
|
||||||
|
/// if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为PD
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///}
|
||||||
|
///
|
||||||
|
///if(上次访视点评估是CR)
|
||||||
|
/// {
|
||||||
|
/// if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PD
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
/// if (当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PD
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///}
|
||||||
|
///}
|
||||||
|
/// </remarks>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<string> GetTargetLesionEvaluate(ReadingCalculateDto inDto)
|
||||||
{
|
{
|
||||||
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();
|
||||||
if (inDto.IsBaseLine)
|
if (inDto.IsBaseLine)
|
||||||
|
|
Loading…
Reference in New Issue