修改删除检查文件
parent
083595cdea
commit
d22c6f8702
|
@ -68,7 +68,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
[HttpGet("{trialId:guid}/{subjectVisitId:guid}/{currentQCType:int}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
public async Task<IResponseOutput> VerifyQCCanAddChallenge(Guid subjectVisitId, [FromRoute] CurrentQC currentQCType)
|
||||
{
|
||||
await VerifyIsCanQCAsync(null, subjectVisitId);
|
||||
|
@ -91,7 +91,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
[HttpPost("{trialId:guid}/{trialQCProcess:int}/{currentQCType:int}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
public async Task<IResponseOutput> AddOrUpdateQCChallenge(QCChallengeCommand qaQuestionCommand, Guid trialId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
|
||||
{
|
||||
await VerifyIsCanQCAsync(null, qaQuestionCommand.SubjectVisitId);
|
||||
|
@ -150,7 +150,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[HttpPut]
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
[UnitOfWork]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
public async Task<IResponseOutput> CloseQCChallenge(CloseQCChallengeInDto input)
|
||||
{
|
||||
|
||||
|
@ -202,7 +202,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{qcChallengeId:guid}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
public async Task<IResponseOutput> DeleteQCChallenge(Guid qcChallengeId)
|
||||
{
|
||||
|
||||
|
@ -229,7 +229,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
[HttpPost("{trialId:guid}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
//[Authorize(Policy = IRaCISPolicy.CRC_IQC)]
|
||||
//[Authorize(Policy = IRaCISPolicy.CRC_IQC)]
|
||||
public async Task<IResponseOutput> AddQCChallengeReply(QADialogCommand qaDialogCommand)
|
||||
{
|
||||
var qaReply = _mapper.Map<QCChallengeDialog>(qaDialogCommand);
|
||||
|
@ -779,7 +779,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
//}).ToListAsync();
|
||||
|
||||
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
|
||||
var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
|
||||
|
||||
//var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true);
|
||||
|
@ -787,19 +786,52 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
//删除 物理文件
|
||||
|
||||
var instancePathList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
|
||||
.Select(t => t.Path).ToListAsync();
|
||||
//var instancePathList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
|
||||
// .Select(t => t.Path).ToListAsync();
|
||||
|
||||
instancePathList.ForEach(path =>
|
||||
var instancePath= await _repository.Where<DicomInstance>(t => t.StudyId == id).Select(t => t.Path).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
//instancePathList.ForEach(path =>
|
||||
//{
|
||||
|
||||
// var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path);
|
||||
|
||||
// Console.WriteLine(physicalPath);
|
||||
|
||||
|
||||
// if (System.IO.File.Exists(physicalPath))
|
||||
// {
|
||||
// Console.WriteLine("存在:" + physicalPath);
|
||||
// File.Delete(physicalPath);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Console.WriteLine("不存在:" + physicalPath);
|
||||
// }
|
||||
//});
|
||||
|
||||
var parentDirectory = Directory.GetParent(FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, instancePath ?? string.Empty))?.FullName;
|
||||
|
||||
if (parentDirectory != null)
|
||||
{
|
||||
Console.WriteLine("删除目录: " + parentDirectory);
|
||||
|
||||
var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path);
|
||||
|
||||
if (System.IO.File.Exists(physicalPath))
|
||||
// 递归删除目录
|
||||
if (Directory.Exists(parentDirectory))
|
||||
{
|
||||
File.Delete(physicalPath);
|
||||
Directory.Delete(parentDirectory, recursive: true);
|
||||
Console.WriteLine("目录已删除。");
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("无法找到父目录。");
|
||||
}
|
||||
|
||||
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
|
||||
|
||||
|
||||
//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();
|
||||
|
@ -1064,7 +1096,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
{
|
||||
|
||||
if (nameList.Count() > 0)
|
||||
{
|
||||
{
|
||||
return ResponseOutput.NotOk($"当前检查批次要求进行疾病进展确认。请在提交当前检查批次前,先处理未提交的前序检查批次:{string.Join('、', nameList)}。", 1, ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
}
|
||||
|
@ -1076,15 +1108,15 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
var thisname = dbSubjectVisitList.Select(x => x.VisitName).ToList();
|
||||
|
||||
return ResponseOutput.NotOk($"After submitting images of the current study batch({string.Join('、', thisname)}), please submit unsubmitted images of antecedent study batches({string.Join('、', nameList)}) as soon as possible.", 0, ApiResponseCodeEnum.NeedTips);
|
||||
//return ResponseOutput.NotOk($"After submitting the curent batch, please submit unsubmitted earlier batches as soon as possible: :{string.Join('、', nameList)}.", 0, ApiResponseCodeEnum.NeedTips);
|
||||
//return ResponseOutput.NotOk($"After submitting the curent batch, please submit unsubmitted earlier batches as soon as possible: :{string.Join('、', nameList)}.", 0, ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//同时要根据项目有没有配置Subject 级别临床数据
|
||||
|
||||
|
||||
if (dbSubjectVisitList.Any(t => t.IsBaseLine && !t.IsHaveClinicalData) && await _repository.AnyAsync<ClinicalDataTrialSet>(t=>t.TrialId== cRCRequestToQCCommand.TrialId && t.ClinicalDataLevel==ClinicalLevel.Subject))
|
||||
|
||||
if (dbSubjectVisitList.Any(t => t.IsBaseLine && !t.IsHaveClinicalData) && await _repository.AnyAsync<ClinicalDataTrialSet>(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.ClinicalDataLevel == ClinicalLevel.Subject))
|
||||
{
|
||||
return ResponseOutput.NotOk($"基线没有临床数据,确认提交?", 0, ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
|
@ -1187,7 +1219,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
// IC 上传的基线数据签名
|
||||
|
||||
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData()
|
||||
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign == false, x => new ReadingClinicalData()
|
||||
{
|
||||
IsSign = true,
|
||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||
|
@ -1237,14 +1269,14 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
|
||||
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId)&& x.SubjectId == dbSubjectVisit.SubjectId&&
|
||||
dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId &&
|
||||
dbSubjectVisit.VisitNum <= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急
|
||||
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
||||
{
|
||||
|
||||
IsUrgent = true,
|
||||
TaskUrgentType = TaskUrgentType.PDProgress,
|
||||
IsCanEditUrgentState=false,
|
||||
IsCanEditUrgentState = false,
|
||||
});
|
||||
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId
|
||||
|
@ -1254,7 +1286,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
IsUrgent = true,
|
||||
TaskUrgentType = TaskUrgentType.Other,
|
||||
TaskUrgentRemake= "后续检查批次设为pd",
|
||||
TaskUrgentRemake = "后续检查批次设为pd",
|
||||
IsCanEditUrgentState = false,
|
||||
});
|
||||
}
|
||||
|
@ -1266,7 +1298,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
});
|
||||
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) &&
|
||||
x.VisitTaskNum>= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 全都加急
|
||||
x.VisitTaskNum >= dbSubjectVisit.VisitNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 全都加急
|
||||
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
||||
{
|
||||
|
||||
|
@ -1348,7 +1380,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
}
|
||||
|
||||
//非基线设置为PD的话 或者设置为末次检查批次 根据配置自动生成阅片期
|
||||
if (!dbSubjectVisit.IsBaseLine && (dbSubjectVisit.PDState == PDStateEnum.PDProgress || dbSubjectVisit.IsFinalVisit) )
|
||||
if (!dbSubjectVisit.IsBaseLine && (dbSubjectVisit.PDState == PDStateEnum.PDProgress || dbSubjectVisit.IsFinalVisit))
|
||||
{
|
||||
|
||||
//该标准需要添加阅片期
|
||||
|
@ -1594,7 +1626,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
}
|
||||
|
||||
await _qcChallengeRepository.UpdatePartialFromQueryAsync(t => t.IsClosed == false&& t.SubjectVisitId==dbSubjectVisit.Id, u => new QCChallenge() { IsClosed = true, ClosedTime=DateTime.Now, CloseResonEnum = QCChallengeCloseEnum.Unresolvable });
|
||||
await _qcChallengeRepository.UpdatePartialFromQueryAsync(t => t.IsClosed == false && t.SubjectVisitId == dbSubjectVisit.Id, u => new QCChallenge() { IsClosed = true, ClosedTime = DateTime.Now, CloseResonEnum = QCChallengeCloseEnum.Unresolvable });
|
||||
|
||||
|
||||
}
|
||||
|
@ -1623,7 +1655,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{setOrCancel:bool}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||
public async Task<IResponseOutput> SetVisitUrgent(Guid trialId, Guid subjectVisitId, bool setOrCancel)
|
||||
{
|
||||
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
|
||||
|
@ -1909,6 +1941,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue