修改仓储信息
This commit is contained in:
@@ -85,27 +85,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
await _noneDicomStudyRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
var svTime = _repository.Where<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new
|
||||
{
|
||||
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
|
||||
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
|
||||
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
|
||||
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
|
||||
}).FirstOrDefault().IfNullThrowException();
|
||||
|
||||
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime, addOrEditNoneDicomStudy.ImageDate };
|
||||
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime, addOrEditNoneDicomStudy.ImageDate };
|
||||
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId, u => new SubjectVisit()
|
||||
{
|
||||
VisitExecuted = VisitExecutedEnum.Executed,
|
||||
|
||||
EarliestScanDate = minArray.Min(),
|
||||
|
||||
LatestScanDate = maxArray.Max()
|
||||
});
|
||||
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto()
|
||||
{
|
||||
@@ -130,34 +110,12 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
if (noneDicomStudy == null) return Null404NotFound(noneDicomStudy);
|
||||
|
||||
await _noneDicomStudyRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyId);
|
||||
await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy);
|
||||
|
||||
await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
|
||||
|
||||
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == noneDicomStudyId);
|
||||
|
||||
var svTime = await _repository.Where<SubjectVisit>(t => t.Id == noneDicomStudy.SubjectVisitId).Select(t => new
|
||||
{
|
||||
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
|
||||
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
|
||||
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
|
||||
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
|
||||
}).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
|
||||
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
|
||||
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == noneDicomStudy.SubjectVisitId, u => new SubjectVisit()
|
||||
{
|
||||
EarliestScanDate = minArray.Min(),
|
||||
|
||||
LatestScanDate = maxArray.Max()
|
||||
});
|
||||
|
||||
//如果既没有 dicom数据 也没有非dicom 文件 那么提交状态变更回去
|
||||
if (await _repository.CountAsync<DicomStudy>(t => t.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0 && await _repository.CountAsync<NoneDicomStudyFile>(t => t.NoneDicomStudy.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0)
|
||||
{
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == noneDicomStudy.SubjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, u => new SubjectVisit() { VisitExecuted = 0, SubmitState = SubmitStateEnum.None });
|
||||
}
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,13 +13,10 @@ using MiniExcelLibs;
|
||||
using ExcelDataReader;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using WinSCP;
|
||||
using Magicodes.ExporterAndImporter.Excel;
|
||||
using Newtonsoft.Json;
|
||||
using Magicodes.ExporterAndImporter.Csv;
|
||||
using IRaCIS.Core.Application.Service.Inspection.Interface;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
||||
@@ -32,26 +29,24 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||
|
||||
private readonly DicomFileStoreHelper _dicomFileStoreHelper;
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IRepository<DicomStudy> _dicomStudyRepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IServiceProvider serviceProvider;
|
||||
private readonly IMediator _mediator;
|
||||
private readonly IInspectionService _inspectionService;
|
||||
private object _locker = new object();
|
||||
|
||||
public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<Trial> trialRepository,
|
||||
IServiceProvider serviceProvider,
|
||||
IMediator mediator,
|
||||
IInspectionService sinspectionService,
|
||||
IRepository<DicomStudy> _trialRepository
|
||||
IInspectionService inspectionService,
|
||||
IRepository<DicomStudy> dicomStudyRepository
|
||||
)
|
||||
{
|
||||
_dicomFileStoreHelper = dicomFileStoreHelper;
|
||||
_subjectVisitRepository = subjectVisitRepository;
|
||||
this._trialRepository = trialRepository;
|
||||
this.serviceProvider = serviceProvider;
|
||||
_dicomStudyRepository = dicomStudyRepository;
|
||||
_mediator = mediator;
|
||||
this._inspectionService = sinspectionService;
|
||||
this._inspectionService = inspectionService;
|
||||
}
|
||||
|
||||
#region QC质疑 以及回复 关闭
|
||||
@@ -1015,20 +1010,23 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||
/// <returns></returns>SeriesCount
|
||||
[HttpPost, Route("{trialId:guid}/{subjectVisitId:guid}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
[UnitOfWork]
|
||||
public async Task<IResponseOutput> DeleteStudyList(Guid[] ids, Guid subjectVisitId, Guid trialId)
|
||||
{
|
||||
//提交了 但是IQC同意的时候 是可以删除的
|
||||
if (await _repository.AnyAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
|
||||
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
|
||||
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
|
||||
{
|
||||
return ResponseOutput.NotOk("CRC Has Submited Image,can not delete");
|
||||
}
|
||||
var DicomStudys = await _repository.GetQueryable<DicomStudy>().Where(x => ids.Contains(x.Id)).ToListAsync();
|
||||
var waitDeleteStudyList= await _dicomStudyRepository.Where(x => ids.Contains(x.Id)).ToListAsync();
|
||||
|
||||
List<DataInspection> datas = new List<DataInspection>();
|
||||
|
||||
DicomStudys.ForEach(x =>
|
||||
waitDeleteStudyList.ForEach(x =>
|
||||
{
|
||||
|
||||
|
||||
datas.Add(new DataInspection()
|
||||
{
|
||||
|
||||
@@ -1054,22 +1052,13 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#region will calls error wried
|
||||
//ids.ToList().ForEach(async id =>
|
||||
//{
|
||||
// var success1 = await _repository.DeleteFromQueryAsync<DicomStudy>(t => t.Id == id);
|
||||
// var succeess2 = await _repository.DeleteFromQueryAsync<DicomInstance>(t => t.StudyId == id);
|
||||
// var success3 = await _repository.DeleteFromQueryAsync<DicomSeries>(t => t.StudyId == id);
|
||||
//});
|
||||
#endregion
|
||||
var createtime = DateTime.Now.AddMilliseconds(200);
|
||||
foreach (var id in ids)
|
||||
foreach (var study in waitDeleteStudyList)
|
||||
{
|
||||
var success1 = await _repository.BatchDeleteAsync<DicomStudy>(t => t.Id == id);
|
||||
|
||||
var id = study.Id;
|
||||
|
||||
await _dicomStudyRepository.DeleteAsync(study,true);
|
||||
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
|
||||
|
||||
var DicomSeriess = await _repository.GetQueryable<DicomSeries>().Where(t => t.StudyId == id).Select(x => new {
|
||||
@@ -1135,39 +1124,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||
|
||||
|
||||
|
||||
//一个访视下面有多个检查,所以需要检测 没有的时候才清空 非dicom 是检查文件 不是表记录
|
||||
if (await _repository.CountAsync<DicomStudy>(t => t.SubjectVisitId == subjectVisitId) == 0 && await _repository.CountAsync<NoneDicomStudyFile>(t => t.NoneDicomStudy.SubjectVisitId == subjectVisitId) == 0)
|
||||
{
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
|
||||
u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None });
|
||||
|
||||
//_qaNoticeRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
|
||||
//_qaNoticeUserRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
|
||||
//_qcChallengeRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
|
||||
//_qcChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
|
||||
//_trialQCQuestionAnswerRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
|
||||
//_checkChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
|
||||
}
|
||||
|
||||
|
||||
var svTime = await _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new
|
||||
{
|
||||
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
|
||||
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
|
||||
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
|
||||
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
|
||||
}).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
|
||||
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
|
||||
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId, u => new SubjectVisit()
|
||||
{
|
||||
EarliestScanDate = minArray.Min(),
|
||||
|
||||
LatestScanDate = maxArray.Max()
|
||||
});
|
||||
|
||||
var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == subjectVisitId);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user