diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs index a935d98b6..abe17f113 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs @@ -59,7 +59,8 @@ namespace IRaCIS.Core.Application.Service ; CreateMap() - .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) + .ForMember(o => o.IsCompleteClinicalData, t => t.MapFrom(u => !u.ReadingClinicalDataList.Any(x=>x.ReadingClinicalDataPDFList.Count()==0))) + .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) .ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName)) .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t=>t.FailedFileCount>0))) diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs index 225e6e396..b0a7cb843 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs @@ -387,7 +387,10 @@ namespace IRaCIS.Core.Application.Contracts.DTO public string ModalityForEdit { get; set; } = string.Empty; public bool IsHaveUploadFailed { get; set; } - } + + public bool IsCompleteClinicalData { get; set; } + + } public class QASeriesInfoDto { diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 77fe44405..5e6cab450 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -123,8 +123,11 @@ namespace IRaCIS.Core.Application.Contracts public bool IsEnrollementQualificationConfirm { get; set; } public bool IsPDProgressView { get; set; } + public bool IsHaveStudyClinicalData { get; set; } - public string OutEnrollmentVisitName { get; set; } = String.Empty; + + + public string OutEnrollmentVisitName { get; set; } = String.Empty; public string BodyPartTypes { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index b85b2b380..76ec01ec7 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -16,7 +16,8 @@ namespace IRaCIS.Core.Application.Image.QA { private readonly IRepository _subjectVisitRepository; private readonly IRepository _trialRepository; - private readonly IRepository _clinicalDataTrialSet; + private readonly IRepository _clinicalDataTrialSetRepository; + private readonly IRepository _clinicalDataTrialSet; private readonly IRepository _trialQCQuestionAnswerRepository; private readonly IRepository _trialQCQuestionRepository; private readonly IRepository _consistencyCheckFileRepository; @@ -26,7 +27,8 @@ namespace IRaCIS.Core.Application.Image.QA public QCListService( IRepository subjectVisitRepository, IRepository trialRepository, - IRepository clinicalDataTrialSet, + IRepository clinicalDataTrialSetRepository, + IRepository clinicalDataTrialSet, IRepository trialQCQuestionAnswerRepository, IRepository trialQCQuestionRepository, IReadingImageTaskService IReadingImageTaskService, @@ -39,7 +41,8 @@ namespace IRaCIS.Core.Application.Image.QA this._trialQCQuestionRepository = trialQCQuestionRepository; this._consistencyCheckFileRepository = consistencyCheckFileRepository; _trialRepository = trialRepository; - this._clinicalDataTrialSet = clinicalDataTrialSet; + this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; + this._clinicalDataTrialSet = clinicalDataTrialSet; } @@ -760,12 +763,17 @@ namespace IRaCIS.Core.Application.Image.QA [HttpGet("{subjectVisitId:guid}")] public async Task<(List,object)> GetSubjectVisitUploadedStudyList(Guid subjectVisitId) { + + var visit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).FirstNotNullAsync(); var list= await _repository.Where(s => s.SubjectVisitId == subjectVisitId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).OrderBy(t=>t.StudyCode).ToListAsync(); var config = await _repository.Where(t => t.Id == subjectVisitId).Select(t=>t.Trial).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); - return (list, config); + config.IsHaveStudyClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.IsConfirm && x.TrialId == visit.TrialId && x.ClinicalDataLevel == ClinicalLevel.Study); + + + return (list, config); } diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs index 5a14814f2..6c4336d22 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs @@ -71,8 +71,8 @@ namespace IRaCIS.Core.Application.Triggers // 检查类型 ModalityForEdit // 检查模态 Modalities - var modalityForEdit = context.Entity.ModalityForEdit; - if (modalityForEdit.Contains("PT") && modalityForEdit.Contains("CT")) + var modalities = context.Entity.Modalities; + if (modalities.Contains("PT") && modalities.Contains("CT")) { await _iClinicalAnswerService.AddStudyClinical(new Service.Reading.Dto.AddStudyClinicalInDto() { diff --git a/IRaCIS.Core.Domain/Image/DicomStudy.cs b/IRaCIS.Core.Domain/Image/DicomStudy.cs index a42a79b81..f06517ea9 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudy.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudy.cs @@ -88,10 +88,14 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("CreateUserId")] public User Uploader { get; set; } + [JsonIgnore] + + public List ReadingClinicalDataList { get; set; } - //软删除 - public bool IsDeleted { get; set; } + + //软删除 + public bool IsDeleted { get; set; } public DateTime? DeletedTime { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs index 8d78e35d4..423d169e8 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs @@ -77,9 +77,11 @@ namespace IRaCIS.Core.Domain.Models public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; } + [JsonIgnore] + public DicomStudy? DicomStudy { get; set; } - [JsonIgnore] + [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs index 78c26fcd7..0b2031707 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs @@ -24,6 +24,13 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration .HasForeignKey(s => new { s.TrialId, s.SiteId }) .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - } + + builder + .HasMany(s => s.ReadingClinicalDataList) + .WithOne(c => c.DicomStudy) + .HasForeignKey(s => new { s.StudyId }) + .HasPrincipalKey(c => new { c.Id }); + + } } }