修改删除检查文件
parent
083595cdea
commit
d22c6f8702
|
@ -68,7 +68,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
[HttpGet("{trialId:guid}/{subjectVisitId:guid}/{currentQCType:int}")]
|
[HttpGet("{trialId:guid}/{subjectVisitId:guid}/{currentQCType:int}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[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)
|
public async Task<IResponseOutput> VerifyQCCanAddChallenge(Guid subjectVisitId, [FromRoute] CurrentQC currentQCType)
|
||||||
{
|
{
|
||||||
await VerifyIsCanQCAsync(null, subjectVisitId);
|
await VerifyIsCanQCAsync(null, subjectVisitId);
|
||||||
|
@ -91,7 +91,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("{trialId:guid}/{trialQCProcess:int}/{currentQCType:int}")]
|
[HttpPost("{trialId:guid}/{trialQCProcess:int}/{currentQCType:int}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[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)
|
public async Task<IResponseOutput> AddOrUpdateQCChallenge(QCChallengeCommand qaQuestionCommand, Guid trialId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
|
||||||
{
|
{
|
||||||
await VerifyIsCanQCAsync(null, qaQuestionCommand.SubjectVisitId);
|
await VerifyIsCanQCAsync(null, qaQuestionCommand.SubjectVisitId);
|
||||||
|
@ -150,7 +150,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
[UnitOfWork]
|
[UnitOfWork]
|
||||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||||
public async Task<IResponseOutput> CloseQCChallenge(CloseQCChallengeInDto input)
|
public async Task<IResponseOutput> CloseQCChallenge(CloseQCChallengeInDto input)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{qcChallengeId:guid}")]
|
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{qcChallengeId:guid}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
// [Authorize(Policy = IRaCISPolicy.IQC)]
|
||||||
public async Task<IResponseOutput> DeleteQCChallenge(Guid qcChallengeId)
|
public async Task<IResponseOutput> DeleteQCChallenge(Guid qcChallengeId)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("{trialId:guid}")]
|
[HttpPost("{trialId:guid}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
//[Authorize(Policy = IRaCISPolicy.CRC_IQC)]
|
//[Authorize(Policy = IRaCISPolicy.CRC_IQC)]
|
||||||
public async Task<IResponseOutput> AddQCChallengeReply(QADialogCommand qaDialogCommand)
|
public async Task<IResponseOutput> AddQCChallengeReply(QADialogCommand qaDialogCommand)
|
||||||
{
|
{
|
||||||
var qaReply = _mapper.Map<QCChallengeDialog>(qaDialogCommand);
|
var qaReply = _mapper.Map<QCChallengeDialog>(qaDialogCommand);
|
||||||
|
@ -779,7 +779,6 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
//}).ToListAsync();
|
//}).ToListAsync();
|
||||||
|
|
||||||
var succeess2 = await _repository.BatchDeleteAsync<DicomInstance>(t => t.StudyId == id);
|
|
||||||
var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
|
var success3 = await _dicomSeriesrepository.BatchDeleteNoTrackingAsync(t => t.StudyId == id);
|
||||||
|
|
||||||
//var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true);
|
//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)
|
//var instancePathList = await _repository.Where<DicomInstance>(t => t.StudyId == id)
|
||||||
.Select(t => t.Path).ToListAsync();
|
// .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 (Directory.Exists(parentDirectory))
|
||||||
if (System.IO.File.Exists(physicalPath))
|
|
||||||
{
|
{
|
||||||
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)
|
//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();
|
// .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)
|
if (nameList.Count() > 0)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk($"当前检查批次要求进行疾病进展确认。请在提交当前检查批次前,先处理未提交的前序检查批次:{string.Join('、', nameList)}。", 1, ApiResponseCodeEnum.NeedTips);
|
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();
|
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 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 级别临床数据
|
//同时要根据项目有没有配置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);
|
return ResponseOutput.NotOk($"基线没有临床数据,确认提交?", 0, ApiResponseCodeEnum.NeedTips);
|
||||||
}
|
}
|
||||||
|
@ -1187,7 +1219,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
// IC 上传的基线数据签名
|
// 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,
|
IsSign = true,
|
||||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
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&&
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId &&
|
||||||
dbSubjectVisit.VisitNum<= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum+0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急
|
dbSubjectVisit.VisitNum <= x.VisitTaskNum && x.VisitTaskNum < Math.Ceiling(dbSubjectVisit.VisitNum + 0.01m) // 当前的检查批次 全局 裁判 及之前 全都加急
|
||||||
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
||||||
{
|
{
|
||||||
|
|
||||||
IsUrgent = true,
|
IsUrgent = true,
|
||||||
TaskUrgentType = TaskUrgentType.PDProgress,
|
TaskUrgentType = TaskUrgentType.PDProgress,
|
||||||
IsCanEditUrgentState=false,
|
IsCanEditUrgentState = false,
|
||||||
});
|
});
|
||||||
|
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) && x.SubjectId == dbSubjectVisit.SubjectId
|
||||||
|
@ -1254,7 +1286,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
|
|
||||||
IsUrgent = true,
|
IsUrgent = true,
|
||||||
TaskUrgentType = TaskUrgentType.Other,
|
TaskUrgentType = TaskUrgentType.Other,
|
||||||
TaskUrgentRemake= "后续检查批次设为pd",
|
TaskUrgentRemake = "后续检查批次设为pd",
|
||||||
IsCanEditUrgentState = false,
|
IsCanEditUrgentState = false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1266,7 +1298,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
});
|
});
|
||||||
|
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => trialInOrderCriterionIdList.Contains(x.TrialReadingCriterionId) &&
|
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()
|
&& x.ReadingTaskState != ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect, x => new VisitTask()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -1348,7 +1380,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
}
|
}
|
||||||
|
|
||||||
//非基线设置为PD的话 或者设置为末次检查批次 根据配置自动生成阅片期
|
//非基线设置为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>
|
/// <returns></returns>
|
||||||
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{setOrCancel:bool}")]
|
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{setOrCancel:bool}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[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)
|
public async Task<IResponseOutput> SetVisitUrgent(Guid trialId, Guid subjectVisitId, bool setOrCancel)
|
||||||
{
|
{
|
||||||
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
|
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