修改失访分配问题

Uat_Study
{872297557@qq.com} 2022-11-28 16:52:47 +08:00
parent 2126cb0e3e
commit 63ba5e4823
3 changed files with 46 additions and 32 deletions

View File

@ -344,7 +344,7 @@ namespace IRaCIS.Core.Application.Service
{ {
//之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去 //之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去
var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync(); var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit==false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync();
//之前有回退的,那么当前访视任务生成但是不分配 //之前有回退的,那么当前访视任务生成但是不分配
if (beforeBackVisitTask != null) if (beforeBackVisitTask != null)

View File

@ -137,7 +137,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
if (inOrder) if (inOrder)
{ {
if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed)) if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed && t.IsLostVisit==false))
{ {
var notCheckPassedMinVisitNum = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).FirstOrDefaultAsync(); var notCheckPassedMinVisitNum = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId && t.CheckState != CheckStateEnum.CVPassed).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).FirstOrDefaultAsync();

View File

@ -756,54 +756,68 @@ namespace IRaCIS.Core.Application.Image.QA
var id = study.Id; var id = study.Id;
await _dicomStudyRepository.DeleteAsync(study, true); await _dicomStudyRepository.DeleteAsync(study);
//var DicomSeriess = await _repository.GetQueryable<DicomSeries>().Where(t => t.StudyId == id).Select(x => new
//{
// x.StudyId,
// x.SubjectId,
// x.SiteId,
// x.TrialId,
// x.Id,
// x.SubjectVisitId,
// x.SeriesTime,
// x.IsReading,
// x.InstanceCount,
// x.SeriesNumber,
// StudyCode = x.DicomStudy.StudyCode,
// Modalities = x.DicomStudy.Modalities,
//}).ToListAsync();
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id); var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
var DicomSeriess = await _repository.GetQueryable<DicomSeries>().Where(t => t.StudyId == id).Select(x => new //var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true);
{
x.StudyId,
x.SubjectId,
x.SiteId,
x.TrialId,
x.Id,
x.SubjectVisitId,
x.SeriesTime,
x.IsReading,
x.InstanceCount,
x.SeriesNumber,
StudyCode = x.DicomStudy.StudyCode,
Modalities = x.DicomStudy.Modalities,
}).ToListAsync();
var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true);
var success4 = await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == id); var success4 = await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == id);
//删除 物理文件 //删除 物理文件
var instanceIdList = await _repository.Where<DicomInstance>(t => t.StudyId == id) var instancePathList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
.Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync(); .Select(t => t.Path ).ToListAsync();
instanceIdList.ForEach(t => instancePathList.ForEach(path =>
{ {
var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
var (physicalPath, relativePath) = var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path);
FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
if (System.IO.File.Exists(physicalPath)) if (System.IO.File.Exists(physicalPath))
{ {
File.Delete(physicalPath); File.Delete(physicalPath);
} }
}); });
//var instanceIdList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
// .Select(t => new { InstanceId = t.Id, t.SeriesId, t.StudyId, t.SubjectId, t.SiteId }).ToListAsync();
//instanceIdList.ForEach(t =>
//{
// var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId };
// var (physicalPath, relativePath) =
// FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId);
// if (System.IO.File.Exists(physicalPath))
// {
// File.Delete(physicalPath);
// }
//});
} }
await _subjectVisitRepository.SaveChangesAsync();
var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == subjectVisitId);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }