diff --git a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs index b4932a691..395493195 100644 --- a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs +++ b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs @@ -90,6 +90,12 @@ namespace IRaCIS.Application.Contracts public Guid? TrialReadingCriterionId { get; set; } } + + public class GetTrialCriterionDictionaryListInDto + { + [NotDefault] + public Guid TrialCriterionId { get; set; } + } public class GetCriterionDictionaryListInDto { [NotDefault] diff --git a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs index fd536c00b..11e02a510 100644 --- a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs +++ b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs @@ -21,7 +21,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _doctorRepository; private readonly IRepository _trialRepository; private readonly IRepository _systemCriterionDictionaryCodeRepository; - private readonly IRepository _trialCriterionDictionaryCode; + private readonly IRepository _trialCriterionDictionaryCodeRepository; private readonly IRepository _readingCriterionDictionaryRepository; private readonly IRepository _readingQuestionCriterionSystem; private readonly IRepository _readingQuestionCriterionTrial; @@ -31,7 +31,7 @@ namespace IRaCIS.Application.Services IRepository doctorRepository, IRepository trialRepository, IRepository systemCriterionDictionaryCodeRepository, - IRepository trialCriterionDictionaryCode, + IRepository trialCriterionDictionaryCodeRepository, IRepository readingCriterionDictionaryRepository, IRepository readingQuestionCriterionSystem, IRepository readingQuestionCriterionTrial, @@ -46,7 +46,7 @@ namespace IRaCIS.Application.Services _doctorRepository = doctorRepository; _trialRepository = trialRepository; this._systemCriterionDictionaryCodeRepository = systemCriterionDictionaryCodeRepository; - this._trialCriterionDictionaryCode = trialCriterionDictionaryCode; + this._trialCriterionDictionaryCodeRepository = trialCriterionDictionaryCodeRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._readingQuestionCriterionSystem = readingQuestionCriterionSystem; this._readingQuestionCriterionTrial = readingQuestionCriterionTrial; @@ -270,6 +270,36 @@ namespace IRaCIS.Application.Services return dictionaryList; } + + /// + /// 获取标准字典 + /// + /// + public async Task> GetTrialCriterionDictionaryList(GetTrialCriterionDictionaryListInDto inDto) + { + var criterionCodes = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.TrialCriterionId).ToListAsync(); + + var parentCodes = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialCriterionId).Select(x => x.ParentCode).ToListAsync(); + + + var codes = criterionCodes.Select(x => x.Code).ToList(); + + var dictionaryList = await _dicRepository.Where(x => codes.Contains(x.Code) && x.ParentId == null) + .OrderBy(x => x.ShowOrder).Select(x => new GetCriterionDictionaryListOutDto() + { + Code = x.Code, + ShowOrder = x.ShowOrder, + Description = x.Description + }).ToListAsync(); + + dictionaryList.ForEach(x => { + x.Count = parentCodes.Count(y => y == x.Code); + x.Id = criterionCodes.Where(y => y.Code == x.Code).Select(x => x.Id).FirstOrDefault(); + }); + + return dictionaryList; + } + /// /// 获取标准指定字典 /// @@ -299,7 +329,7 @@ namespace IRaCIS.Application.Services } else { - selectCode = await _trialCriterionDictionaryCode.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync(); + selectCode = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync(); } @@ -367,7 +397,7 @@ namespace IRaCIS.Application.Services } else { - List selectCode = await _trialCriterionDictionaryCode.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).Select(x => x.Code).ToListAsync(); + List selectCode = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).Select(x => x.Code).ToListAsync(); var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 3e2a6f83a..26ebb6187 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1727,10 +1727,9 @@ namespace IRaCIS.Application.Services var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && (x.IsJudgeQuestion || (x.IsRequired == IsRequired.Required && x.ShowQuestion == ShowQuestion.Show)) - ) - .WhereIf(!criterion.IseCRFShowInDicomReading,x=>x.IsShowInDicom).ToListAsync(); + ).WhereIf(!criterion.IseCRFShowInDicomReading,x=>x.IsShowInDicom).ToListAsync(); - var answerQuestionIds = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Select(x => x.ReadingQuestionTrialId).ToListAsync(); + var answerQuestionIds = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId&&x.Answer!=string.Empty).Select(x => x.ReadingQuestionTrialId).ToListAsync(); readingQuestionList = readingQuestionList.Where(x => !answerQuestionIds.Contains(x.Id)).ToList();