diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 7ec7a0ce6..d24f83aac 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -647,14 +647,35 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc [HttpPost] public async Task> GetIRUploadTaskNoneDicomStudyList(IRUploadStudyQuery inQuery) { + var subjectCode = string.Empty; + var subjectId = inQuery.SubjectId; + var doctorUserId = _userInfo.Id; + + if (inQuery.VisitTaskId != null) + { + //考虑到一致性分析,必须要这个编号进行过滤 + //医学审核查看下载按钮,这个时候需要知道医生 + + var taskInfo = await _visitTaskRepository.Where(t => t.Id == inQuery.VisitTaskId).Select(t => new { + SubjectCode = t.IsAnalysisCreate ? t.BlindSubjectCode : t.Subject.Code, + SubjectId = t.SubjectId, + t.DoctorUserId, + t.IsAnalysisCreate + }).FirstNotNullAsync(); + + subjectId = taskInfo.SubjectId; + subjectCode = taskInfo.SubjectCode; + doctorUserId = (Guid)taskInfo.DoctorUserId!; + } + var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId) .Select(t => new { t.IsImageFilter, t.CriterionModalitys, t.IsReadingTaskViewInOrder }).FirstNotNullAsync(); - var query = from u in _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId - && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect) + var query = from u in _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId + && t.SourceSubjectVisitId != null && t.DoctorUserId == doctorUserId && t.TaskState == TaskState.Effect) //满足 有序,或者随机只看到当前任务的dicom 非dicom检查 .WhereIf(info.IsReadingTaskViewInOrder != ReadingOrder.SubjectRandom && inQuery.VisitTaskId != null, t => t.Id == inQuery.VisitTaskId) - join ns in _noneDicomStudyReposiotry.Where(t => t.SubjectId == inQuery.SubjectId).WhereIf(info.IsImageFilter, t => ("|" + info.CriterionModalitys + "|").Contains("|" + t.Modality + "|")) + join ns in _noneDicomStudyReposiotry.Where(t => t.SubjectId == subjectId).WhereIf(info.IsImageFilter, t => ("|" + info.CriterionModalitys + "|").Contains("|" + t.Modality + "|")) on u.SourceSubjectVisitId equals ns.SubjectVisitId select new TaskNoneDicomStudyDTO() @@ -684,7 +705,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc }; - var list = await query.Where(t => t.SubjectCode == inQuery.SubjectCode).SortToListAsync(inQuery); + var list = await query.Where(t => t.SubjectCode == subjectCode).SortToListAsync(inQuery); var noneDicomStudyTaskIdList = list.Select(t => t.VisitTaskId).ToList(); diff --git a/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyFileViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyFileViewModel.cs index 8dff5482d..203c910d7 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyFileViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyFileViewModel.cs @@ -15,6 +15,8 @@ namespace IRaCIS.Core.Application.Contracts public Guid CreateUserId { get; set; } public Guid NoneDicomStudyId { get; set; } + public long? FileSize { get; set; } + public string FullFilePath => Path; public string FileType { get; set; } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs index 11082e54e..0f5762cc1 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs @@ -1,81 +1,83 @@ -//using IRaCIS.Core.Domain.Models; -//using Microsoft.EntityFrameworkCore.Metadata.Builders; +using IRaCIS.Core.Domain.Models; +using Microsoft.EntityFrameworkCore.Metadata.Builders; -//namespace IRaCIS.Core.Infra.EFCore.EntityConfigration; +namespace IRaCIS.Core.Infra.EFCore.EntityConfigration; -///// -///// 医学影像 数据量大,主键是 SeqId ,Id 是自己算的,也可以作为Id,但是不是有序的,数据量大,会导致性能很差,所以是逻辑主键 -///// +/// +/// 医学影像 数据量大,主键是 SeqId ,Id 是自己算的,也可以作为Id,但是不是有序的,数据量大,会导致性能很差,所以是逻辑主键 +/// -//public class DicomStudyConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class DicomStudyConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); -//public class DicomSeriesConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} + builder.HasMany(s => s.SeriesList).WithOne(sv => sv.DicomStudy).HasForeignKey(t => t.StudyId).HasPrincipalKey(t=>t.Id); + } +} -//public class DicomInstanceConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class DicomSeriesConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} -//public class TaskStudyConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class DicomInstanceConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} -//public class TaskSeriesConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class TaskStudyConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} -//public class TaskInstanceConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class TaskSeriesConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} + +public class TaskInstanceConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} -//public class SCPStudyConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class SCPStudyConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} -//public class SCPSeriesConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class SCPSeriesConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +} -//public class SCPInstanceConfigration : IEntityTypeConfiguration -//{ -// public void Configure(EntityTypeBuilder builder) -// { -// builder.HasKey(e => e.SeqId); -// } -//} +public class SCPInstanceConfigration : IEntityTypeConfiguration +{ + public void Configure(EntityTypeBuilder builder) + { + builder.HasKey(e => e.SeqId); + } +}