This commit is contained in:
2023-03-20 17:18:12 +08:00
16 changed files with 2237 additions and 113 deletions
@@ -82,7 +82,10 @@ namespace IRaCIS.Application.Contracts
{
public Guid? ReadingCriterionId { get; set; }
public string DictionaryCode { get; set; }
public string DictionaryCode { get; set; } = string.Empty;
public List<string> DictionaryCodeList { get; set; } = new List<string>();
}
public class GetBasicDataAllSelectInDto
@@ -195,6 +195,11 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("当前条目已经在项目信息中被引用。");
}
if (await _readingCriterionDictionaryRepository.AnyAsync(x => x.DictionaryId == id))
{
return ResponseOutput.NotOk("当前条目已经在阅片标准中被引用。");
}
var success = await _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Result(success);
}
@@ -311,6 +316,7 @@ namespace IRaCIS.Application.Services
{
var searchList = await _dicRepository.Where(t => t.ParentId != null && t.IsEnable)
.WhereIf(!inDto.DictionaryCode.IsNullOrEmpty(), x =>x.Parent.Code==inDto.DictionaryCode)
.WhereIf(inDto.DictionaryCodeList.Count()>0, x => inDto.DictionaryCodeList.Contains(x.Parent.Code))
.ProjectTo<BasicDicSelect>(_mapper.ConfigurationProvider).ToListAsync();
var result = searchList.GroupBy(t => t.ParentCode).ToDictionary(g => g.Key, g => g.OrderBy(t => t.ShowOrder).ToList());
@@ -1274,7 +1274,7 @@ namespace IRaCIS.Core.Application.Service
case CriterionType.PERCIST:
case CriterionType.Forrest:
case CriterionType.Lugano2014:
case CriterionType.iRECIST:
case CriterionType.IRECIST1Point1:
case CriterionType.RANO_BM:
case CriterionType.RANO:
case CriterionType.IWCLL2018:
@@ -82,11 +82,11 @@ namespace IRaCIS.Core.Application.Service.RC
public async Task<IResponseOutput> AddSystemCriterionDictionaryCode(AddSystemCriterionDictionaryCodeInDto inDto)
{
var codes= await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.SystemCriterionId).Select(x => x.Code).ToListAsync();
//var codes= await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.SystemCriterionId).Select(x => x.Code).ToListAsync();
inDto.CodeList= inDto.CodeList.Except(codes).ToList();
//inDto.CodeList= inDto.CodeList.Except(codes).ToList();
await _systemCriterionDictionaryCodeRepository.BatchDeleteNoTrackingAsync(x => x.SystemCriterionId == inDto.SystemCriterionId);
await _systemCriterionDictionaryCodeRepository.AddRangeAsync(inDto.CodeList.Select(x=> new SystemCriterionDictionaryCode()
{
@@ -16,13 +16,16 @@ namespace IRaCIS.Core.Application.Service.TA
public class ReadingQuestionService : BaseService
{
private readonly IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository1Point1;
private readonly IRepository<TumorAssessment_IRECIST1Point1> _tumorAssessmentIRepository1Point1;
private readonly IRepository<TumorAssessment_RECIST1Point1BM> _tumorAssessmentRepository1Point1BM;
public ReadingQuestionService( IRepository<TumorAssessment_RECIST1Point1> tumorAssessmentRepository1Point1,
IRepository<TumorAssessment_IRECIST1Point1> tumorAssessmentIRepository1Point1,
IRepository<TumorAssessment_RECIST1Point1BM> tumorAssessmentRepository1Point1BM
)
{
this._tumorAssessmentRepository1Point1 = tumorAssessmentRepository1Point1;
this._tumorAssessmentIRepository1Point1 = tumorAssessmentIRepository1Point1;
this._tumorAssessmentRepository1Point1BM = tumorAssessmentRepository1Point1BM;
}
@@ -75,6 +78,16 @@ namespace IRaCIS.Core.Application.Service.TA
new ColumnInfo(){ ColumnName="整体疗效",ColumnKey=nameof(TumorAssessment_RECIST1Point1.OverallEfficacy),DictionaryKey=typeof(OverallAssessment).Name },
};
break;
case CriterionType.IRECIST1Point1:
result = await _tumorAssessmentIRepository1Point1.AsQueryable().ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TumorAssessmentView.Id) : inQuery.SortField, inQuery.Asc);
columnList = new List<ColumnInfo>()
{
new ColumnInfo(){ ColumnName="靶病灶",ColumnKey=nameof(TumorAssessment_RECIST1Point1.TargetLesion),DictionaryKey=typeof(TargetAssessment).Name },
new ColumnInfo(){ ColumnName="非靶病灶",ColumnKey=nameof(TumorAssessment_RECIST1Point1.NonTargetLesions),DictionaryKey=typeof(NoTargetAssessment).Name },
new ColumnInfo(){ ColumnName="新病灶",ColumnKey=nameof(TumorAssessment_RECIST1Point1.NewLesion),DictionaryKey=typeof(NewLesionAssessment).Name },
new ColumnInfo(){ ColumnName="整体疗效",ColumnKey=nameof(TumorAssessment_RECIST1Point1.OverallEfficacy),DictionaryKey=typeof(OverallAssessment).Name },
};
break;
}
return (result, columnList);
@@ -1426,7 +1426,7 @@ namespace IRaCIS.Application.Services
await VerifyTaskIsSign(inDto.VisitTaskId);
if (inDto.InstanceId != null)
if (inDto.InstanceId != null&&inDto.IsDicomReading)
{
if (!(await _dicomInstanceRepository.AnyAsync(x => x.Id == inDto.InstanceId && x.SeriesId == inDto.SeriesId)))
{
@@ -19,7 +19,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{CriterionType.RECIST1Point1,typeof(RECIST1Point1CalculateService) }, //RECIST1.1
{CriterionType.PCWG3,typeof(PCWG3CalculateService) },
{CriterionType.SelfDefine,typeof(SelfDefineCalculateService) },
{CriterionType.RECIST1Pointt1_MB,typeof(RECIST1Point1_BMCalculateService) }
{CriterionType.RECIST1Pointt1_MB,typeof(RECIST1Point1_BMCalculateService) },
{CriterionType.IRECIST1Point1,typeof(IRECIST1Point1CalculateService) }
};
@@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{
[ApiExplorerSettings(GroupName = "Reading")]
public class RECIST1Point1CalculateService : BaseService, ICriterionCalculateService
public class IRECIST1Point1CalculateService : BaseService, ICriterionCalculateService
{
private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
@@ -26,11 +26,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
private readonly IRepository<OrganInfo> _organInfoRepository;
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository;
private readonly IRepository<TumorAssessment_IRECIST1Point1> _tumorAssessmentRepository;
private readonly IGeneralCalculateService _generalCalculateService;
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
public RECIST1Point1CalculateService(
public IRECIST1Point1CalculateService(
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
IRepository<VisitTask> visitTaskRepository,
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
@@ -39,7 +39,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
IRepository<OrganInfo> organInfoRepository,
IRepository<SubjectVisit> subjectVisitRepository,
IRepository<TumorAssessment_RECIST1Point1> tumorAssessmentRepository,
IRepository<TumorAssessment_IRECIST1Point1> tumorAssessmentRepository,
IGeneralCalculateService generalCalculateService,
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
)
@@ -1325,6 +1325,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
&& x.VisitTask.IsAnalysisCreate == inDto.IsAnalysisCreate
&& 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)
.Select(x => new VisitTaskAnswerInfo
{
@@ -1324,7 +1324,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
visitTaskAnswerList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId != inDto.VisitTaskId && x.VisitTask.ReadingCategory == ReadingCategory.Visit
&& x.VisitTask.IsAnalysisCreate == inDto.IsAnalysisCreate
&& x.VisitTask.IsSelfAnalysis == inDto.IsSelfAnalysis
&&x.VisitTask.VisitTaskNum<inDto.VisitTaskNum
&& x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId
&& x.VisitTask.VisitTaskNum<inDto.VisitTaskNum
&& x.SubjectId == inDto.SubjectId && x.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned && x.VisitTask.ArmEnum == inDto.ArmEnum && x.VisitTask.TaskState == TaskState.Effect && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD)
.Select(x => new VisitTaskAnswerInfo
{