diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 84d052758..e1a995262 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -466,25 +466,39 @@ namespace IRaCIS.Core.Application.Service ClinicalDataTrialSetId= x.ClinicalDataTrialSet.Id, ClinicalDataSetName =x.ClinicalDataTrialSet.ClinicalDataSetName, ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName, + IsHaveTableQuestion=x.ClinicalDataTrialSet.TrialClinicalQuestionList.Any(y=>y.ClinicalQuestionType== ReadingQestionType.Table), }).ToListAsync(); - var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).Include(x=>x.ClinicalForm).Include(x=>x.ClinicalForm.ClinicalDataTrialSet).ToListAsync(); + var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId) + .Select(x => new GetCRCBeConfirm + { + CheckDate = x.ClinicalForm.CheckDate ?? default(DateTime), + ClinicalDataSetName = x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetName, + ClinicalDataSetEnName = x.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetEnName, + ClinicalFormId = x.ClinicalFormId, + ClinicalDataTrialSetId = x.ClinicalForm.ClinicalDataTrialSet.Id, + ReadModuleId=x.ReadModuleId, + IsHaveTableQuestion=x.ClinicalForm.ClinicalDataTrialSet.TrialClinicalQuestionList.Any(y => y.ClinicalQuestionType == ReadingQestionType.Table) + }).ToListAsync(); + + result.CurrentPageData.ForEach(x => { if (x.IsCRCConfirm) { - x.ClinicalFormIdList = confirmList.Where(y => y.ReadModuleId == x.ReadModuleId).Select(y=>new GetCRCBeConfirmListOutDto() { - CheckDate = y.ClinicalForm.CheckDate??default(DateTime), - ClinicalDataSetName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetName, - ClinicalDataSetEnName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetEnName, + x.ClinicalFormList = confirmList.Where(y => y.ReadModuleId == x.ReadModuleId).Select(y=>new GetCRCBeConfirmListOutDto() { + CheckDate = y.CheckDate, + ClinicalDataSetName= y.ClinicalDataSetName, + ClinicalDataSetEnName= y.ClinicalDataSetEnName, ClinicalFormId=y.ClinicalFormId, - ClinicalDataTrialSetId=y.ClinicalForm.ClinicalDataTrialSet.Id, + ClinicalDataTrialSetId=y.ClinicalDataTrialSetId, + IsHaveTableQuestion=y.IsHaveTableQuestion, }).ToList(); } else { if (x.ReadingSetType == ReadingSetType.ImageReading) { - x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.ImageRead&&y.CheckDate <= x.LatestScanDate) + x.ClinicalFormList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.ImageRead&&y.CheckDate <= x.LatestScanDate) .Select(y => new GetCRCBeConfirmListOutDto() { CheckDate = y.CheckDate ?? default(DateTime), @@ -492,11 +506,12 @@ namespace IRaCIS.Core.Application.Service ClinicalDataSetEnName = y.ClinicalDataSetEnName, ClinicalFormId = y.ClinicalFormId, ClinicalDataTrialSetId = y.ClinicalDataTrialSetId, + IsHaveTableQuestion = y.IsHaveTableQuestion, }).ToList(); } else { - x.ClinicalFormIdList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.OncologyRead&&y.CheckDate <= x.LatestScanDate) + x.ClinicalFormList = formList.Where(y => y.ClinicalDataLevel == ClinicalLevel.OncologyRead&&y.CheckDate <= x.LatestScanDate) .Select(y => new GetCRCBeConfirmListOutDto() { CheckDate = y.CheckDate ?? default(DateTime), @@ -504,6 +519,7 @@ namespace IRaCIS.Core.Application.Service ClinicalDataSetEnName = y.ClinicalDataSetEnName, ClinicalFormId = y.ClinicalFormId, ClinicalDataTrialSetId = y.ClinicalDataTrialSetId, + IsHaveTableQuestion = y.IsHaveTableQuestion, }).ToList(); } } @@ -526,7 +542,7 @@ namespace IRaCIS.Core.Application.Service PageIndex=1, PageSize=9999, - })).CurrentPageData.SelectMany(x => x.ClinicalFormIdList).ToList(); + })).CurrentPageData.SelectMany(x => x.ClinicalFormList).ToList(); result.ForEach(x => { @@ -569,7 +585,7 @@ namespace IRaCIS.Core.Application.Service }; confirmlist.ForEach(x => { - x.ClinicalFormIdList.ForEach(y => + x.ClinicalFormList.ForEach(y => { needAddList.Add(new ReadModuleCriterionFrom() { diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index 8eab4e74f..d6f7c5a4a 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -125,8 +125,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid ReadModuleId { get; set; } } + public class GetCRCBeConfirm: GetCRCBeConfirmListOutDto + { + public Guid ReadModuleId { get; set; } + } - public class GetCRCBeConfirmListOutDto + + public class GetCRCBeConfirmListOutDto { public Guid ClinicalDataTrialSetId { get; set; } @@ -137,6 +142,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string ClinicalDataSetEnName { get; set; } public DateTime CheckDate { get; set; } + + public bool IsHaveTableQuestion { get; set; } } public class CRCConfirmClinicalInDto @@ -165,6 +172,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string ClinicalDataSetName { get; set; } + public bool IsHaveTableQuestion { get; set; } + public string ClinicalDataSetEnName { get; set; } } @@ -184,20 +193,28 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool IsCRCConfirm { get; set; } = false; - public string SubjectCode { get; set; } + public string SubjectCode { get; set; } + + public bool IsHaveTableQuestion + { + get + { + return ClinicalFormList.Any(x => x.IsHaveTableQuestion); + } + } /// /// 最晚拍片日期 /// public DateTime? LatestScanDate { get; set; } - public List ClinicalFormIdList { get; set; } + public List ClinicalFormList { get; set; } public int FormCount { get { - return this.ClinicalFormIdList.Count(); + return this.ClinicalFormList.Count(); } } } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs index fef381af9..4eb814256 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs @@ -100,8 +100,11 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public List TrialClinicalDataSetCriteriaList { get; set; } + [JsonIgnore] + public List TrialClinicalQuestionList { get; set; } - public string CriterionEnumListStr { get; set; } = String.Empty; + + public string CriterionEnumListStr { get; set; } = String.Empty; public List CriterionEnumList => CriterionEnumListStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t) && int.TryParse(t.Trim(), out var s)).Select(t => int.Parse(t.Trim())).ToList(); diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs index f741b2f93..40e757e4a 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs @@ -162,7 +162,11 @@ namespace IRaCIS.Core.Domain.Models /// 单位 /// public string Unit { get; set; } = string.Empty; - } + + [JsonIgnore] + [ForeignKey("TrialClinicalId")] + public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; } + } }