diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index fdaaa3040..f0383b59c 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -14217,6 +14217,11 @@
PublishLogAddOrEdit 列表查询参数模型
+
+
+ 显示顺序
+
+
TrialEmailNoticeConfigView 列表视图模型
@@ -15399,15 +15404,6 @@
NoneDicomStudyFileView 列表视图模型
-
- NoneDicomStudyFileQuery 列表查询参数模型
-
-
- Path
-
-
- FileName
-
NoneDicomStudyFileAddOrEdit 列表查询参数模型
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs
index 3bdcd5cc8..d907fc036 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs
@@ -29,11 +29,12 @@ namespace IRaCIS.Core.Application.Contracts
[HttpGet]
- public async Task> > GetNoneDicomStudyList(
+ public async Task>> GetNoneDicomStudyList(
[FromQuery, NotDefault] Guid subjectVisitId,
[FromQuery] Guid? nonedicomStudyId,
[FromQuery] bool isFilterZip,
- [FromQuery] Guid? visitTaskId)
+ [FromQuery] Guid? visitTaskId,
+ [FromQuery] bool isReading)
{
var qcAuditState = await _subjectVisitRepository.Where(s => s.Id == subjectVisitId).Select(t => t.AuditState).FirstOrDefaultAsync();
@@ -41,15 +42,18 @@ namespace IRaCIS.Core.Application.Contracts
var isQCFinished = qcAuditState == AuditStateEnum.QCPassed;
//质控过程中并且不是IQC时, 不需要忽略过滤器+质控设置删除的
- var isIgnoreDelete = !(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.IQC && !isQCFinished);
+ var isIgnoreDelete = !(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.IQC && !isQCFinished);
IQueryable noneDicomStudyQueryable = default;
if (visitTaskId == null)
{
//质控过程中,需要忽略过滤质控设置删除的检查,以及设置删除的文件,质控通过后才
- noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId, ignoreQueryFilters: isIgnoreDelete).WhereIf(nonedicomStudyId != null, t => t.Id == nonedicomStudyId)
+ noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId, ignoreQueryFilters: isIgnoreDelete)
+ .WhereIf(nonedicomStudyId != null, t => t.Id == nonedicomStudyId)
+ .WhereIf(isReading, t => t.IsReading && t.IsDeleted==false)
- .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = isFilterZip });
+
+ .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = isFilterZip, isReading= isReading });
}
else
{
@@ -57,16 +61,17 @@ namespace IRaCIS.Core.Application.Contracts
noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.TaskNoneDicomFileList.Any(t => t.VisitTaskId == visitTaskId), ignoreQueryFilters: isIgnoreDelete)
+ .WhereIf(isReading, t => t.IsReading && t.IsDeleted == false)
.Where(t => taskinfo.IsImageFilter ? ("|" + taskinfo.CriterionModalitys + "|").Contains("|" + t.Modality + "|") : true)
.WhereIf(nonedicomStudyId != null, t => t.Id == nonedicomStudyId)
- .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = isFilterZip, visiTaskId = visitTaskId });
+ .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = isFilterZip, visiTaskId = visitTaskId, isReading = isReading });
}
var list = await noneDicomStudyQueryable.OrderBy(x => x.ImageDate).ThenBy(x => x.CreateTime).ToListAsync();
- var config = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList ,t.Trial.IsShowStudyName, AuditState = qcAuditState }).FirstOrDefaultAsync();
- return ResponseOutput.Ok(list, config) ;
+ var config = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList, t.Trial.IsShowStudyName, AuditState = qcAuditState }).FirstOrDefaultAsync();
+ return ResponseOutput.Ok(list, config);
}
diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
index 2f280ab19..f9c4b6690 100644
--- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
@@ -6,6 +6,7 @@ using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Application.MassTransit.Command;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Share;
+using NPOI.SS.Formula.Functions;
using System.Linq;
namespace IRaCIS.Core.Application.Service
@@ -403,6 +404,8 @@ namespace IRaCIS.Core.Application.Service
bool isIgnoreDelete = false;
+ bool isReading = false;
+
string token = string.Empty;
//一致性核查
@@ -539,11 +542,11 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.MedicalNo, u => u.MapFrom(s => s.Subject.MedicalNo))
.ForMember(d => d.Sex, u => u.MapFrom(s => s.Subject.Sex))
.ForMember(d => d.Age, u => u.MapFrom(t => t.Subject.Age))
- .ForMember(d => d.IsHaveClinicalData,
- u => u.MapFrom(t => t.PreviousHistoryList.Any() ||
- t.PreviousOtherList.Any() ||
- t.Subject.ClinicalFormList.Any(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == t.Id) ||
- t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count > 0) ||
+ .ForMember(d => d.IsHaveClinicalData,
+ u => u.MapFrom(t => t.PreviousHistoryList.Any() ||
+ t.PreviousOtherList.Any() ||
+ t.Subject.ClinicalFormList.Any(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == t.Id) ||
+ t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count > 0) ||
t.PreviousSurgeryList.Any()))
.ForMember(d => d.IsHaveUploadFailed, u => u.MapFrom(t => t.StudyList.SelectMany(c => c.DicomStudyMonitorList).Any(h => h.FailedFileCount > 0)))
@@ -722,14 +725,16 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
CreateMap()
- .ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => isFilterZip ? s.NoneDicomFileList.Where(t => !t.FileType.Contains(StaticData.FileType.Zip)).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName) : s.NoneDicomFileList.OrderBy(t => t.CreateTime).ThenBy(t => t.FileName)))
+ .ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => isFilterZip ?
+ s.NoneDicomFileList.Where(t => !t.FileType.Contains(StaticData.FileType.Zip) && isReading ? t.IsReading && t.IsDeleted == false : true).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName) :
+ s.NoneDicomFileList.Where(t => isReading ? t.IsReading && t.IsDeleted==false : true).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName)))
.ForMember(d => d.CodeView, u => u.MapFrom(s => s.StudyCode));
Guid? visiTaskId = null;
CreateMap()
.ForMember(d => d.NoneDicomStudyFileList, u => u.MapFrom(s => isFilterZip ?
- s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).Where(t => !t.FileType.Contains(StaticData.FileType.Zip)).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName)
- : s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName)))
+ s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).Where(t => !t.FileType.Contains(StaticData.FileType.Zip) && isReading ? t.IsReading && t.IsDeleted == false : true).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName)
+ : s.TaskNoneDicomFileList.Where(t => visiTaskId != null ? t.VisitTaskId == visiTaskId : true).Where(t => isReading ? t.IsReading && t.IsDeleted == false : true).OrderBy(t => t.CreateTime).ThenBy(t => t.FileName)))
.ForMember(d => d.CodeView, u => u.MapFrom(s => s.StudyCode));
}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs
index 3a045ea3a..e2c9288b9 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs
@@ -53,10 +53,10 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task GetNoneDicomMarkListOutDto(GetNoneDicomMarkListInDtoDto inDto)
{
- var result= await _readingNoneDicomMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId)
-
- .ProjectTo(_mapper.ConfigurationProvider)
- .ToListAsync();
+ var result = await _readingNoneDicomMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId)
+
+ .ProjectTo(_mapper.ConfigurationProvider)
+ .ToListAsync();
return new GetNoneDicomMarkListOutDto()
{
@@ -82,7 +82,7 @@ namespace IRaCIS.Core.Application.Service
///
///
[HttpPost]
- [TrialGlobalLimit( "AfterStopCannNotOpt" )]
+ [TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task SaveVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto)
{
await VerifyTaskIsSign(inDto.VisitTaskId);
@@ -135,35 +135,36 @@ namespace IRaCIS.Core.Application.Service
IQueryable noneDicomStudyQueryable = default;
- noneDicomStudyQueryable = _noneDicomStudyRepository
+ noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.IsReading)
.Where(t => visitIds.Contains(t.SubjectVisitId) && t.NoneDicomFileList.Any(t => !t.FileType.Contains(StaticData.FileType.Zip)))
.WhereIf(taskinfo.IsImageFilter == true, t => taskinfo.CriterionModalitys.Contains(t.Modality))
- .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = true });
+ .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = true, isReading = true });
if (inDto.VisistTaskId != null && _noneDicomStudyFileSystem.Any(t => t.VisitTaskId == inDto.VisistTaskId))
{
- noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.TaskNoneDicomFileList.Any(t => t.VisitTaskId == inDto.VisistTaskId))
+ noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.IsReading)
+ .Where(t => t.TaskNoneDicomFileList.Any(t => t.VisitTaskId == inDto.VisistTaskId))
.Where(t => taskinfo.IsImageFilter ? ("|" + taskinfo.CriterionModalitys + "|").Contains("|" + t.Modality + "|") : true)
.Where(t => visitIds.Contains(t.SubjectVisitId))
- .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = true, visiTaskId = inDto.VisistTaskId });
+ .ProjectTo(_mapper.ConfigurationProvider, new { isFilterZip = true, isReading = true, visiTaskId = inDto.VisistTaskId });
}
- List result = await noneDicomStudyQueryable.OrderBy(x=>x.ImageDate).ThenBy(x=>x.CreateTime).ToListAsync();
+ List result = await noneDicomStudyQueryable.OrderBy(x => x.ImageDate).ThenBy(x => x.CreateTime).ToListAsync();
- var nonoDicomStudyFileIds=await _readingNoneDicomMarkRepository.Where(x => x.VisitTaskId == inDto.VisistTaskId).ToListAsync();
- if (nonoDicomStudyFileIds.Count > 0&& taskinfo.ReadingTaskState== ReadingTaskState.HaveSigned)
+ var nonoDicomStudyFileIds = await _readingNoneDicomMarkRepository.Where(x => x.VisitTaskId == inDto.VisistTaskId).ToListAsync();
+ if (nonoDicomStudyFileIds.Count > 0 && taskinfo.ReadingTaskState == ReadingTaskState.HaveSigned)
{
var studyId = nonoDicomStudyFileIds.Select(x => x.StudyId).FirstOrDefault();
- var noneDicomids= nonoDicomStudyFileIds.Select(x=>x.NoneDicomFileId).ToList();
- var noneDicomStudyViewMark =new NoneDicomStudyView() { Id = Guid.NewGuid() };
+ var noneDicomids = nonoDicomStudyFileIds.Select(x => x.NoneDicomFileId).ToList();
+ var noneDicomStudyViewMark = new NoneDicomStudyView() { Id = Guid.NewGuid() };
noneDicomStudyViewMark.IsCriticalSequence = true;
noneDicomStudyViewMark.NoneDicomStudyFileList = await _noneDicomStudyFileRepository.Where(x => noneDicomids.Contains(x.Id)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
result.Insert(0, noneDicomStudyViewMark);
}
-
+
var trialInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new
{
diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
index c415c2c06..8e28ae4f4 100644
--- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs
@@ -231,8 +231,9 @@ namespace IRaCIS.Core.Application.Services
- var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId)
+ var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).IgnoreQueryFilters()
.Where(t => isImageFilter ? ("|" + criterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true)
+ .WhereIf(isReading == 1 || isQCFinished, s=> s.IsDeleted == false)
.Select(k => new VisitStudyDTO()
{
InstanceCount = k.InstanceCount,
@@ -241,6 +242,7 @@ namespace IRaCIS.Core.Application.Services
StudyCode = k.StudyCode,
StudyId = k.Id
}).ToListAsync();
+
var studyIds = studyList.Select(t => t.StudyId).ToList();
var instanceList = await _dicomInstanceRepository.Where(t => studyIds.Contains(t.StudyId)).IgnoreQueryFilters()