|
|
|
@@ -32,9 +32,15 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
private readonly IRepository<Subject> _subjectRepository;
|
|
|
|
|
private readonly IRepository<Enroll> _enrollRepository;
|
|
|
|
|
private readonly IDistributedLockProvider _distributedLockProvider;
|
|
|
|
|
private readonly IRepository<Trial> _trialRepository;
|
|
|
|
|
private readonly IRepository<TrialSite> _trialSiteRepository;
|
|
|
|
|
|
|
|
|
|
private readonly IRepository<TrialVirtualSiteCodeUpdate> _trialVirtualSiteCodeUpdateRepository;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public TaskConsistentRuleService(IRepository<VisitTask> visitTaskRepository, IRepository<Enroll> enrollRepository, IRepository<TaskConsistentRule> taskConsistentRuleRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<Subject> subjectRepository, IDistributedLockProvider distributedLockProvider)
|
|
|
|
|
|
|
|
|
|
public TaskConsistentRuleService(IRepository<VisitTask> visitTaskRepository, IRepository<Enroll> enrollRepository, IRepository<TaskConsistentRule> taskConsistentRuleRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<Subject> subjectRepository, IDistributedLockProvider distributedLockProvider,
|
|
|
|
|
IRepository<Trial> trialRepository, IRepository<TrialSite> trialSiteRepository, IRepository<TrialVirtualSiteCodeUpdate> trialVirtualSiteCodeUpdateRepository)
|
|
|
|
|
{
|
|
|
|
|
_taskConsistentRuleRepository = taskConsistentRuleRepository;
|
|
|
|
|
_visitTaskRepository = visitTaskRepository;
|
|
|
|
@@ -42,6 +48,12 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
_subjectRepository = subjectRepository;
|
|
|
|
|
_enrollRepository = enrollRepository;
|
|
|
|
|
_distributedLockProvider = distributedLockProvider;
|
|
|
|
|
|
|
|
|
|
_trialRepository = trialRepository;
|
|
|
|
|
|
|
|
|
|
_trialSiteRepository = trialSiteRepository;
|
|
|
|
|
|
|
|
|
|
_trialVirtualSiteCodeUpdateRepository = trialVirtualSiteCodeUpdateRepository;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@@ -54,7 +66,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => taskIdList.Contains(t.Id), u => new VisitTask() { TaskState = TaskState.NotEffect },true);
|
|
|
|
|
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => taskIdList.Contains(t.Id), u => new VisitTask() { TaskState = TaskState.NotEffect }, true);
|
|
|
|
|
|
|
|
|
|
await _visitTaskRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
@@ -69,7 +81,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
/// <param name="queryVisitTask"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<AnalysisTaskView>> GetAnalysisTaskList(VisitTaskQuery queryVisitTask)
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<AnalysisTaskView>>> GetAnalysisTaskList(VisitTaskQuery queryVisitTask)
|
|
|
|
|
{
|
|
|
|
|
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
|
|
|
|
|
.Where(t => t.IsAnalysisCreate)
|
|
|
|
@@ -97,8 +109,9 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray);
|
|
|
|
|
|
|
|
|
|
//var trialTaskConfig = _repository.Where<Trial>(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
|
|
|
|
|
return pageList;
|
|
|
|
|
var trialTaskConfig = _repository.Where<Trial>(t => t.Id == queryVisitTask.TrialId).Select(t => new { t.ReviewMode, t.VitrualSiteCode }).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(pageList, trialTaskConfig);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -155,9 +168,9 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var blindSubjectCode = string.Empty;
|
|
|
|
|
|
|
|
|
|
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId==trialReadingCriterionId && t.IsSelfAnalysis == true).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault();
|
|
|
|
|
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsSelfAnalysis == true).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
if (subjectTask!=null && subjectTask.BlindSubjectCode != String.Empty)
|
|
|
|
|
if (subjectTask != null && subjectTask.BlindSubjectCode != String.Empty)
|
|
|
|
|
{
|
|
|
|
|
blindSubjectCode = subjectTask.BlindSubjectCode;
|
|
|
|
|
}
|
|
|
|
@@ -165,11 +178,11 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
var maxCodeStr = _visitTaskRepository.Where(t => t.TrialId == subject.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsSelfAnalysis == true).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
if ( !string.IsNullOrEmpty(maxCodeStr))
|
|
|
|
|
if (!string.IsNullOrEmpty(maxCodeStr))
|
|
|
|
|
{
|
|
|
|
|
int.TryParse(maxCodeStr.Substring(maxCodeStr.Length - filterObj.BlindSubjectNumberOfPlaces), out maxCodeInt);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
blindSubjectCode = filterObj.BlindTrialSiteCode + (maxCodeInt + 1).ToString($"D{filterObj.BlindSubjectNumberOfPlaces}");
|
|
|
|
|
}
|
|
|
|
@@ -190,7 +203,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
var lastTask = (subject.VisitTaskList.Take(filterObj.PlanVisitCount).Last()).Clone();
|
|
|
|
|
|
|
|
|
|
var existGlobal = _visitTaskRepository.Where(t => t.SubjectId == lastTask.SubjectId &&t.TrialReadingCriterionId==trialReadingCriterionId && t.TaskState == TaskState.Effect && t.ReadingCategory == ReadingCategory.Global && t.VisitTaskNum == lastTask.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Global]).ProjectTo<VisitTaskSimpleDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
|
|
|
|
|
var existGlobal = _visitTaskRepository.Where(t => t.SubjectId == lastTask.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect && t.ReadingCategory == ReadingCategory.Global && t.VisitTaskNum == lastTask.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Global]).ProjectTo<VisitTaskSimpleDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (existGlobal == null)
|
|
|
|
@@ -203,7 +216,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
ReadingCategory = ReadingCategory.Global,
|
|
|
|
|
TaskName = lastTask.TaskName + "_Global",
|
|
|
|
|
TaskBlindName = lastTask.TaskBlindName + "_Global",
|
|
|
|
|
TrialReadingCriterionId=trialReadingCriterionId,
|
|
|
|
|
TrialReadingCriterionId = trialReadingCriterionId,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -249,7 +262,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
var trialId = inQuery.TrialId;
|
|
|
|
|
|
|
|
|
|
var filterObj = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.TrialReadingCriterionId==inQuery.TrialReadingCriterionId && t.IsSelfAnalysis == false);
|
|
|
|
|
var filterObj = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsSelfAnalysis == false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (filterObj == null)
|
|
|
|
@@ -290,7 +303,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var subjectList = query.ToList();
|
|
|
|
|
|
|
|
|
|
var doctorUserIdQuery = from enroll in _repository.Where<Enroll>(t => t.TrialId == trialId).Where(t => t.EnrollReadingCategoryList.Where(t=>t.TrialReadingCriterionId==trialReadingCriterionId).Any(c => c.ReadingCategory == ReadingCategory.Global || c.ReadingCategory == ReadingCategory.Visit))
|
|
|
|
|
var doctorUserIdQuery = from enroll in _repository.Where<Enroll>(t => t.TrialId == trialId).Where(t => t.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(c => c.ReadingCategory == ReadingCategory.Global || c.ReadingCategory == ReadingCategory.Visit))
|
|
|
|
|
join user in _repository.Where<User>() on enroll.DoctorId equals user.DoctorId
|
|
|
|
|
select user.Id;
|
|
|
|
|
|
|
|
|
@@ -310,7 +323,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var blindSubjectCode = string.Empty;
|
|
|
|
|
|
|
|
|
|
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsSelfAnalysis==false).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault();
|
|
|
|
|
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsSelfAnalysis == false).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault();
|
|
|
|
|
if (subjectTask != null && subjectTask.BlindSubjectCode != String.Empty)
|
|
|
|
|
{
|
|
|
|
|
blindSubjectCode = subjectTask.BlindSubjectCode;
|
|
|
|
@@ -371,10 +384,10 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
TrialReadingCriterionId = task.TrialReadingCriterionId,
|
|
|
|
|
|
|
|
|
|
BlindSubjectCode=blindSubjectCode,
|
|
|
|
|
BlindTrialSiteCode=filterObj.BlindTrialSiteCode
|
|
|
|
|
BlindSubjectCode = blindSubjectCode,
|
|
|
|
|
BlindTrialSiteCode = filterObj.BlindTrialSiteCode
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@@ -460,7 +473,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
#region Subejct 维度
|
|
|
|
|
|
|
|
|
|
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId== trialReadingCriterionId &&
|
|
|
|
|
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId == trialReadingCriterionId &&
|
|
|
|
|
u.SignTime!.Value.AddDays(filterObj.IntervalWeeks * 7) < DateTime.Now && (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject) && u.DoctorUserId == doctorUserId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -499,11 +512,11 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
TrialSiteCode = t.TrialSite.TrialSiteCode,
|
|
|
|
|
SubjectId = t.Id,
|
|
|
|
|
|
|
|
|
|
IsReReadingOrBackInfluenceAnalysis=t.IsReReadingOrBackInfluenceAnalysis,
|
|
|
|
|
IsReReadingOrBackInfluenceAnalysis = t.IsReReadingOrBackInfluenceAnalysis,
|
|
|
|
|
|
|
|
|
|
BlindSubjectCode = t.SubjectVisitTaskList.Where(t => t.IsAnalysisCreate && t.TrialReadingCriterionId == trialReadingCriterionId).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault(),
|
|
|
|
|
|
|
|
|
|
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true && c.TrialReadingCriterionId==trialReadingCriterionId),
|
|
|
|
|
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true && c.TrialReadingCriterionId == trialReadingCriterionId),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ValidVisitCount = t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).Count(),
|
|
|
|
@@ -526,7 +539,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TrialReadingCriterionId=c.TrialReadingCriterionId,
|
|
|
|
|
TrialReadingCriterionId = c.TrialReadingCriterionId,
|
|
|
|
|
IsClinicalDataSign = c.IsClinicalDataSign,
|
|
|
|
|
IsNeedClinicalDataSign = c.IsNeedClinicalDataSign,
|
|
|
|
|
|
|
|
|
@@ -575,7 +588,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId == trialReadingCriterionId
|
|
|
|
|
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId == trialReadingCriterionId
|
|
|
|
|
&& (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -622,7 +635,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
SubjectId = t.Id,
|
|
|
|
|
IsReReadingOrBackInfluenceAnalysis = t.IsReReadingOrBackInfluenceAnalysis,
|
|
|
|
|
|
|
|
|
|
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.IsSelfAnalysis == false && c.TrialReadingCriterionId==trialReadingCriterionId),
|
|
|
|
|
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.IsSelfAnalysis == false && c.TrialReadingCriterionId == trialReadingCriterionId),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ValidVisitCount = t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Count(),
|
|
|
|
@@ -663,7 +676,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<TaskConsistentRuleBasic?> GetConsistentRule(TaskConsistentRuleQuery inQuery)
|
|
|
|
|
{
|
|
|
|
|
return await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis == inQuery.IsSelfAnalysis && t.TrialReadingCriterionId==inQuery.TrialReadingCriterionId).ProjectTo<TaskConsistentRuleBasic>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
return await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis == inQuery.IsSelfAnalysis && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId).ProjectTo<TaskConsistentRuleBasic>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@@ -676,9 +689,9 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
var trialId = inQuery.TrialId;
|
|
|
|
|
|
|
|
|
|
var taskConsistentRuleQueryable = from enroll in _repository.Where<Enroll>(t => t.TrialId == trialId && t.EnrollStatus==EnrollStatus.ConfirmIntoGroup)
|
|
|
|
|
var taskConsistentRuleQueryable = from enroll in _repository.Where<Enroll>(t => t.TrialId == trialId && t.EnrollStatus == EnrollStatus.ConfirmIntoGroup)
|
|
|
|
|
join user in _repository.Where<User>() on enroll.DoctorId equals user.DoctorId
|
|
|
|
|
join taskConsistentRule in _repository.Where<TaskConsistentRule>(t => t.TrialId == trialId &&t.TrialReadingCriterionId==inQuery.TrialReadingCriterionId && t.IsSelfAnalysis) on enroll.TrialId equals taskConsistentRule.TrialId
|
|
|
|
|
join taskConsistentRule in _repository.Where<TaskConsistentRule>(t => t.TrialId == trialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsSelfAnalysis) on enroll.TrialId equals taskConsistentRule.TrialId
|
|
|
|
|
select new TaskConsistentRuleView()
|
|
|
|
|
{
|
|
|
|
|
Id = taskConsistentRule.Id,
|
|
|
|
@@ -727,7 +740,27 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
return await taskConsistentRuleQueryable.ToListAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
|
|
|
|
public async Task<IResponseOutput> UpdateTrialVirtualSiteCode(UpdateTrialSiteCodeCommand inCommand)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var trial = await _trialRepository.FirstOrDefaultAsync(t => t.Id == inCommand.TrialId);
|
|
|
|
|
|
|
|
|
|
trial.VitrualSiteCode = inCommand.VirtualSiteCode;
|
|
|
|
|
|
|
|
|
|
await _trialVirtualSiteCodeUpdateRepository.AddAsync(new TrialVirtualSiteCodeUpdate() { VirturalSiteCode = inCommand.VirtualSiteCode,TrialId=inCommand.TrialId });
|
|
|
|
|
|
|
|
|
|
await _trialRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<List<UpdateTrialSiteCodeCommandView>> GetUpdateVirtualSiteCodeList(Guid trialId)
|
|
|
|
|
{
|
|
|
|
|
var list = await _trialVirtualSiteCodeUpdateRepository.Where(t => t.TrialId == trialId).Select(t => new UpdateTrialSiteCodeCommandView() { TrialId = trialId, VirtualSiteCode = t.VirturalSiteCode, Creatime = t.CreateTime }).ToListAsync();
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
|
|
|
@@ -737,7 +770,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var verifyExp1 = new EntityVerifyExp<TaskConsistentRule>()
|
|
|
|
|
{
|
|
|
|
|
VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialReadingCriterionId==addOrEditTaskConsistentRule.TrialReadingCriterionId,
|
|
|
|
|
VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialReadingCriterionId == addOrEditTaskConsistentRule.TrialReadingCriterionId,
|
|
|
|
|
//"已有该项目配置,不允许继续增加"
|
|
|
|
|
VerifyMsg = _localizer["TaskConsistent_TaskGenerated"]
|
|
|
|
|
};
|
|
|
|
@@ -748,6 +781,22 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
return ResponseOutput.NotOk(_localizer["TaskConsistent_MedicalAuditTaskExists"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (_trialSiteRepository.Where(t => t.TrialId == addOrEditTaskConsistentRule.TrialId, false, true).Any(t => t.TrialSiteCode == addOrEditTaskConsistentRule.BlindTrialSiteCode))
|
|
|
|
|
{
|
|
|
|
|
return ResponseOutput.NotOk(_localizer["TaskConsistent_SiteCodeExists"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var trial = await _trialRepository.FirstOrDefaultAsync(t => t.Id == addOrEditTaskConsistentRule.TrialId);
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(trial.VitrualSiteCode))
|
|
|
|
|
{
|
|
|
|
|
await _trialVirtualSiteCodeUpdateRepository.AddAsync(new TrialVirtualSiteCodeUpdate() { VirturalSiteCode = addOrEditTaskConsistentRule.BlindTrialSiteCode,TrialId=addOrEditTaskConsistentRule.TrialId });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trial.VitrualSiteCode = addOrEditTaskConsistentRule.BlindTrialSiteCode;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var entity = await _taskConsistentRuleRepository.InsertOrUpdateAsync(addOrEditTaskConsistentRule, true, verifyExp1);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(entity.Id.ToString());
|
|
|
|
@@ -762,7 +811,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
var config = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.Id == taskConsistentRuleId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.TrialId == config.TrialId && t.IsSelfAnalysis == config.IsSelfAnalysis && t.TrialReadingCriterionId==config.TrialReadingCriterionId))
|
|
|
|
|
if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.TrialId == config.TrialId && t.IsSelfAnalysis == config.IsSelfAnalysis && t.TrialReadingCriterionId == config.TrialReadingCriterionId))
|
|
|
|
|
{
|
|
|
|
|
//"该标准已产生一致性分析任务,不允许删除"
|
|
|
|
|
throw new BusinessValidationFailedException(_localizer["TaskConsistent_SignedTaskCannotBeInvalidated"]);
|
|
|
|
|