uat-标注-13

Test_IRC_Net8
hang 2025-11-26 16:45:08 +08:00
parent 00255e902c
commit 6705cf0fc0
4 changed files with 72 additions and 20 deletions

View File

@ -13,6 +13,8 @@ namespace IRaCIS.Core.Application.Helper
public class StudyDIRInfo public class StudyDIRInfo
{ {
public bool IsTaskStudy { get; set; }
public Guid SubjectVisitId { get; set; } public Guid SubjectVisitId { get; set; }
// Study // Study
public Guid DicomStudyId { get; set; } public Guid DicomStudyId { get; set; }

View File

@ -989,7 +989,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
StudyCode = ns.StudyCode, StudyCode = ns.StudyCode,
//靶段标注 阅片IR 上传时IsImageSegmentLabel == false 正常后处理上传IsImageSegmentLabel 该字段为空 //靶段标注 阅片IR 上传时IsImageSegmentLabel == false 正常后处理上传IsImageSegmentLabel 该字段为空
FileList = (inQuery.IsImageSegmentLabel == false ? ns.NoneDicomFileList : ns.ImageLabelNoneDicomFileList) FileList = (inQuery.IsImageSegmentLabel == false ? ns.ImageLabelNoneDicomFileList : ns.NoneDicomFileList)
.Select(t => new NoneDicomFileInfo() .Select(t => new NoneDicomFileInfo()
{ {
FileType = t.FileType, FileType = t.FileType,
@ -1489,6 +1489,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var taskDirInfolist = _taskInstanceRepository.Where(t => t.SubjectVisitId != null) var taskDirInfolist = _taskInstanceRepository.Where(t => t.SubjectVisitId != null)
.Where(t => subjectVisitIdList.Contains((Guid)t.SubjectVisitId)).Select(t => new StudyDIRInfo() .Where(t => subjectVisitIdList.Contains((Guid)t.SubjectVisitId)).Select(t => new StudyDIRInfo()
{ {
IsTaskStudy=true,
SubjectVisitId = (Guid)t.SubjectVisitId, SubjectVisitId = (Guid)t.SubjectVisitId,
DicomStudyId = t.TaskStudy.Id, DicomStudyId = t.TaskStudy.Id,
@ -1532,6 +1533,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{ {
var visitId = item.First().SubjectVisitId; var visitId = item.First().SubjectVisitId;
var isTaskStudy = item.First().IsTaskStudy;
var ossFolder = $"{pathInfo.TrialId}/Image/{pathInfo.SubjectId}/{visitId}/{item.Key.StudyInstanceUid}"; var ossFolder = $"{pathInfo.TrialId}/Image/{pathInfo.SubjectId}/{visitId}/{item.Key.StudyInstanceUid}";
var isSucess = await SafeBussinessHelper.RunAsync(async () => await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), dirDic, ossFolder, _oSSService)); var isSucess = await SafeBussinessHelper.RunAsync(async () => await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), dirDic, ossFolder, _oSSService));
@ -1539,7 +1542,14 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
if (isSucess) if (isSucess)
{ {
await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" }); if (isTaskStudy)
{
await _taskStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new TaskStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
}
else
{
await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
}
} }
} }

View File

@ -57,14 +57,22 @@ namespace IRaCIS.Core.Application.Contracts
} }
else else
{ {
var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(t => new { t.BlindSubjectCode, t.TrialReadingCriterionId, t.TrialReadingCriterion.IsImageFilter, t.TrialReadingCriterion.CriterionModalitys }).FirstNotNullAsync(); var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Select(t => new { t.BlindSubjectCode, t.TrialReadingCriterionId, t.TrialReadingCriterion.CriterionType, t.TrialReadingCriterion.IsImageFilter, t.TrialReadingCriterion.CriterionModalitys }).FirstNotNullAsync();
if (taskinfo.CriterionType == CriterionType.IVUS || taskinfo.CriterionType == CriterionType.OCT)
{
}
else
{
noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.TaskNoneDicomFileList.Any(t => t.VisitTaskId == visitTaskId), ignoreQueryFilters: isViewDelete)
.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<TaskDicomStudyView>(_mapper.ConfigurationProvider, new { isFilterZip = isFilterZip, visiTaskId = visitTaskId, isReading = isReading });
}
noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.TaskNoneDicomFileList.Any(t => t.VisitTaskId == visitTaskId), ignoreQueryFilters: isViewDelete)
.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<TaskDicomStudyView>(_mapper.ConfigurationProvider, new { isFilterZip = isFilterZip, visiTaskId = visitTaskId, isReading = isReading });
} }

View File

@ -224,27 +224,42 @@ namespace IRaCIS.Core.Application.Services
var isImageFilter = false; var isImageFilter = false;
var criterionModalitys = ""; var criterionModalitys = "";
var criterionType = CriterionType.NoCriterion;
var isVisitTask = false;
bool? isImageSegmentLabel = null;
if (visitTaskId != null && visitTaskId != Guid.Empty) if (visitTaskId != null && visitTaskId != Guid.Empty)
{ {
isVisitTask = true;
var info = await _visitTaskRepository.Where(t => t.Id == visitTaskId) var info = await _visitTaskRepository.Where(t => t.Id == visitTaskId)
.Select(t => new { t.TrialReadingCriterion.IsImageFilter, t.TrialReadingCriterion.CriterionModalitys }).FirstNotNullAsync(); .Select(t => new { t.TrialReadingCriterion.IsImageFilter, t.TrialReadingCriterion.CriterionModalitys, t.TrialReadingCriterion.CriterionType }).FirstNotNullAsync();
isImageFilter = info.IsImageFilter; isImageFilter = info.IsImageFilter;
criterionModalitys = info.CriterionModalitys; criterionModalitys = info.CriterionModalitys;
criterionType = info.CriterionType;
if (criterionType == CriterionType.OCT || criterionType == CriterionType.IVUS)
{
isImageSegmentLabel = true;
}
} }
var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).IgnoreQueryFilters() var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).IgnoreQueryFilters()
.Where(t => isImageFilter ? ("|" + criterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true) .Where(t => isImageFilter ? ("|" + criterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true)
.WhereIf(isReading == 1 || isQCFinished, s => s.IsDeleted == false) .WhereIf(isReading == 1 || isQCFinished, s => s.IsDeleted == false)
.Select(k => new VisitStudyDTO() //预览靶段标注上传的影像 影像后处理 上传了新的影像 还要原始dsa
{ .WhereIf(isImageSegmentLabel == true && isVisitTask && (criterionType == CriterionType.OCT || criterionType == CriterionType.IVUS), t => t.ModalityForEdit == "XA")
InstanceCount = k.InstanceCount, .Select(k => new VisitStudyDTO()
Modalities = k.Modalities, {
//SeriesCount = k.SeriesCount, InstanceCount = k.InstanceCount,
StudyCode = k.StudyCode, Modalities = k.Modalities,
StudyId = k.Id //SeriesCount = k.SeriesCount,
}).ToListAsync(); StudyCode = k.StudyCode,
StudyId = k.Id
}).ToListAsync();
var studyIds = studyList.Select(t => t.StudyId).ToList(); var studyIds = studyList.Select(t => t.StudyId).ToList();
@ -287,12 +302,29 @@ namespace IRaCIS.Core.Application.Services
t.InstanceCount = t.SeriesList.SelectMany(t => t.InstanceInfoList).Count(); t.InstanceCount = t.SeriesList.SelectMany(t => t.InstanceInfoList).Count();
} }
//预览靶段标注上传的影像
if (isImageSegmentLabel == true && isVisitTask)
{
var taskStudyList = await _taskStudyRepository.Where(t => t.SubjectVisitId == sujectVisitId)
.WhereIf(isImageFilter, t => ("|" + criterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|"))
.ProjectTo<VisitStudyDTO>(_mapper.ConfigurationProvider).ToListAsync();
foreach (var study in taskStudyList)
{
study.SeriesList = study.SeriesList.OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime).ToList();
study.InstanceCount = study.SeriesList.SelectMany(t => t.InstanceInfoList).Count();
}
studyList.AddRange(taskStudyList);
}
return studyList.Where(x => x.SeriesList.Count() > 0).ToList(); return studyList.Where(x => x.SeriesList.Count() > 0).ToList();
//return ResponseOutput.Ok(studyList.Where(t => t.SeriesList.Count > 0).ToList());
} }