uat-标注-13
parent
00255e902c
commit
6705cf0fc0
|
|
@ -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; }
|
||||||
|
|
|
||||||
|
|
@ -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,14 +1533,23 @@ 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));
|
||||||
|
|
||||||
|
|
||||||
if (isSucess)
|
if (isSucess)
|
||||||
|
{
|
||||||
|
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" });
|
await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/DICOMDIR" });
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,9 +57,14 @@ 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)
|
noneDicomStudyQueryable = _noneDicomStudyRepository.Where(t => t.TaskNoneDicomFileList.Any(t => t.VisitTaskId == visitTaskId), ignoreQueryFilters: isViewDelete)
|
||||||
.WhereIf(isReading, t => t.IsReading && t.IsDeleted == false)
|
.WhereIf(isReading, t => t.IsReading && t.IsDeleted == false)
|
||||||
.Where(t => taskinfo.IsImageFilter ? ("|" + taskinfo.CriterionModalitys + "|").Contains("|" + t.Modality + "|") : true)
|
.Where(t => taskinfo.IsImageFilter ? ("|" + taskinfo.CriterionModalitys + "|").Contains("|" + t.Modality + "|") : true)
|
||||||
|
|
@ -68,6 +73,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var list = await noneDicomStudyQueryable.OrderBy(x => x.ImageDate).ThenBy(x => x.CreateTime).ToListAsync();
|
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();
|
var config = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList, t.Trial.IsShowStudyName, AuditState = qcAuditState }).FirstOrDefaultAsync();
|
||||||
|
|
|
||||||
|
|
@ -224,12 +224,25 @@ 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -237,6 +250,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
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)
|
||||||
|
//预览靶段标注上传的影像 影像后处理 上传了新的影像 还要原始dsa
|
||||||
|
.WhereIf(isImageSegmentLabel == true && isVisitTask && (criterionType == CriterionType.OCT || criterionType == CriterionType.IVUS), t => t.ModalityForEdit == "XA")
|
||||||
.Select(k => new VisitStudyDTO()
|
.Select(k => new VisitStudyDTO()
|
||||||
{
|
{
|
||||||
InstanceCount = k.InstanceCount,
|
InstanceCount = k.InstanceCount,
|
||||||
|
|
@ -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());
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue