[一致性分析预提交]

IRC_NewDev
hang 2024-02-29 16:08:39 +08:00
parent 5656e66c28
commit 8e3dc73408
11 changed files with 208 additions and 68 deletions

View File

@ -287,6 +287,17 @@ namespace IRaCIS.Core.Application.ViewModel
} }
public class UpdateTrialSiteCodeCommand
{
public Guid TrialId { get; set; }
public string VirtualSiteCode { get; set; }
}
public class UpdateTrialSiteCodeCommandView: UpdateTrialSiteCodeCommand
{
public DateTime Creatime { get; set; }
}
///<summary> TaskConsistentRuleAddOrEdit 列表查询参数模型</summary> ///<summary> TaskConsistentRuleAddOrEdit 列表查询参数模型</summary>
public class TaskConsistentRuleAddOrEdit public class TaskConsistentRuleAddOrEdit

View File

@ -32,9 +32,15 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<Subject> _subjectRepository; private readonly IRepository<Subject> _subjectRepository;
private readonly IRepository<Enroll> _enrollRepository; private readonly IRepository<Enroll> _enrollRepository;
private readonly IDistributedLockProvider _distributedLockProvider; 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; _taskConsistentRuleRepository = taskConsistentRuleRepository;
_visitTaskRepository = visitTaskRepository; _visitTaskRepository = visitTaskRepository;
@ -42,6 +48,12 @@ namespace IRaCIS.Core.Application.Service
_subjectRepository = subjectRepository; _subjectRepository = subjectRepository;
_enrollRepository = enrollRepository; _enrollRepository = enrollRepository;
_distributedLockProvider = distributedLockProvider; _distributedLockProvider = distributedLockProvider;
_trialRepository = trialRepository;
_trialSiteRepository = trialSiteRepository;
_trialVirtualSiteCodeUpdateRepository = trialVirtualSiteCodeUpdateRepository;
} }
/// <summary> /// <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(); await _visitTaskRepository.SaveChangesAsync();
@ -69,7 +81,7 @@ namespace IRaCIS.Core.Application.Service
/// <param name="queryVisitTask"></param> /// <param name="queryVisitTask"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [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) var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.Where(t => t.IsAnalysisCreate) .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 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(); var trialTaskConfig = _repository.Where<Trial>(t => t.Id == queryVisitTask.TrialId).Select(t => new { t.ReviewMode, t.VitrualSiteCode }).FirstOrDefault();
return pageList;
return ResponseOutput.Ok(pageList, trialTaskConfig);
} }
@ -155,9 +168,9 @@ namespace IRaCIS.Core.Application.Service
var blindSubjectCode = string.Empty; 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; 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(); 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); int.TryParse(maxCodeStr.Substring(maxCodeStr.Length - filterObj.BlindSubjectNumberOfPlaces), out maxCodeInt);
} }
blindSubjectCode = filterObj.BlindTrialSiteCode + (maxCodeInt + 1).ToString($"D{filterObj.BlindSubjectNumberOfPlaces}"); 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 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) if (existGlobal == null)
@ -203,7 +216,7 @@ namespace IRaCIS.Core.Application.Service
ReadingCategory = ReadingCategory.Global, ReadingCategory = ReadingCategory.Global,
TaskName = lastTask.TaskName + "_Global", TaskName = lastTask.TaskName + "_Global",
TaskBlindName = lastTask.TaskBlindName + "_Global", TaskBlindName = lastTask.TaskBlindName + "_Global",
TrialReadingCriterionId=trialReadingCriterionId, TrialReadingCriterionId = trialReadingCriterionId,
}; };
} }
@ -249,7 +262,7 @@ namespace IRaCIS.Core.Application.Service
{ {
var trialId = inQuery.TrialId; 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) if (filterObj == null)
@ -290,7 +303,7 @@ namespace IRaCIS.Core.Application.Service
var subjectList = query.ToList(); 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 join user in _repository.Where<User>() on enroll.DoctorId equals user.DoctorId
select user.Id; select user.Id;
@ -310,7 +323,7 @@ namespace IRaCIS.Core.Application.Service
var blindSubjectCode = string.Empty; 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) if (subjectTask != null && subjectTask.BlindSubjectCode != String.Empty)
{ {
blindSubjectCode = subjectTask.BlindSubjectCode; blindSubjectCode = subjectTask.BlindSubjectCode;
@ -371,10 +384,10 @@ namespace IRaCIS.Core.Application.Service
TrialReadingCriterionId = task.TrialReadingCriterionId, TrialReadingCriterionId = task.TrialReadingCriterionId,
BlindSubjectCode=blindSubjectCode, BlindSubjectCode = blindSubjectCode,
BlindTrialSiteCode=filterObj.BlindTrialSiteCode BlindTrialSiteCode = filterObj.BlindTrialSiteCode
}); });
} }
@ -460,7 +473,7 @@ namespace IRaCIS.Core.Application.Service
#region Subejct 维度 #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; 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, TrialSiteCode = t.TrialSite.TrialSiteCode,
SubjectId = t.Id, 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(), 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(), 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, IsClinicalDataSign = c.IsClinicalDataSign,
IsNeedClinicalDataSign = c.IsNeedClinicalDataSign, 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); && (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject);
@ -622,7 +635,7 @@ namespace IRaCIS.Core.Application.Service
SubjectId = t.Id, SubjectId = t.Id,
IsReReadingOrBackInfluenceAnalysis = t.IsReReadingOrBackInfluenceAnalysis, 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(), 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] [HttpPost]
public async Task<TaskConsistentRuleBasic?> GetConsistentRule(TaskConsistentRuleQuery inQuery) 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> /// <summary>
@ -676,9 +689,9 @@ namespace IRaCIS.Core.Application.Service
{ {
var trialId = inQuery.TrialId; 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 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() select new TaskConsistentRuleView()
{ {
Id = taskConsistentRule.Id, Id = taskConsistentRule.Id,
@ -727,7 +740,27 @@ namespace IRaCIS.Core.Application.Service
return await taskConsistentRuleQueryable.ToListAsync(); 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" })] [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
@ -737,7 +770,7 @@ namespace IRaCIS.Core.Application.Service
var verifyExp1 = new EntityVerifyExp<TaskConsistentRule>() 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"] VerifyMsg = _localizer["TaskConsistent_TaskGenerated"]
}; };
@ -748,6 +781,22 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.NotOk(_localizer["TaskConsistent_MedicalAuditTaskExists"]); 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); var entity = await _taskConsistentRuleRepository.InsertOrUpdateAsync(addOrEditTaskConsistentRule, true, verifyExp1);
return ResponseOutput.Ok(entity.Id.ToString()); return ResponseOutput.Ok(entity.Id.ToString());
@ -762,7 +811,7 @@ namespace IRaCIS.Core.Application.Service
var config = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.Id == taskConsistentRuleId); 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"]); throw new BusinessValidationFailedException(_localizer["TaskConsistent_SignedTaskCannotBeInvalidated"]);

View File

@ -379,6 +379,9 @@ namespace IRaCIS.Core.Application.Contracts
public class UserToBeDoneRecord public class UserToBeDoneRecord
{ {
public int? TrialWaitSignDocCount { get; set; }
public int? SysWaitSignDocCount { get; set; }
#region PM/APM #region PM/APM
public int? PM_SiteSurveryCount { get; set; } public int? PM_SiteSurveryCount { get; set; }
public int? PM_CheckCount { get; set; } public int? PM_CheckCount { get; set; }
@ -386,11 +389,9 @@ namespace IRaCIS.Core.Application.Contracts
public int? PM_ReReadingApprovalCount { get; set; } public int? PM_ReReadingApprovalCount { get; set; }
public int? PM_TrialWaitSignDocCount { get; set; }
public int? PM_SysWaitSignDocCount { get; set; }
public int? PM_ClinicalDataCount { get; set; } public int? PM_ClinicalDataCount { get; set; }
public int? ClinicalDataCount { get; set; }
#endregion #endregion
#region CRC #region CRC
@ -404,9 +405,7 @@ namespace IRaCIS.Core.Application.Contracts
public int? CRC_ClinicalDataTobeDoneCount { get; set; } public int? CRC_ClinicalDataTobeDoneCount { get; set; }
public int? CRC_ClinialDataTobeConfirmCount { get; set; } public int? CRC_ClinialDataTobeConfirmCount { get; set; }
public int? CRC_TrialWaitSignDocCount { get; set; }
public int? CRC_SysWaitSignDocCount { get; set; }
#endregion #endregion
@ -417,9 +416,7 @@ namespace IRaCIS.Core.Application.Contracts
public int? SPM_ReReadingApprovalCount { get; set; } public int? SPM_ReReadingApprovalCount { get; set; }
public int? SPM_TrialWaitSignDocCount { get; set; }
public int? SPM_SysWaitSignDocCount { get; set; }
#endregion #endregion
@ -428,9 +425,7 @@ namespace IRaCIS.Core.Application.Contracts
public int? IQC_IamgeQCCount { get; set; } public int? IQC_IamgeQCCount { get; set; }
public int? IQC_QCQuestionCount { get; set; } public int? IQC_QCQuestionCount { get; set; }
public int? IQC_TrialWaitSignDocCount { get; set; }
public int? IQC_SysWaitSignDocCount { get; set; }
#endregion #endregion
@ -438,17 +433,12 @@ namespace IRaCIS.Core.Application.Contracts
public int? IR_IamgeWaitReadingCount { get; set; } public int? IR_IamgeWaitReadingCount { get; set; }
public int? IR_MedicalReviewCount { get; set; } public int? IR_MedicalReviewCount { get; set; }
public int? IR_TrialWaitSignDocCount { get; set; }
public int? IR_SysWaitSignDocCount { get; set; }
#endregion #endregion
#region MIM #region MIM
public int? MIM_MedicalReviewCount { get; set; } public int? MIM_MedicalReviewCount { get; set; }
public int? MIM_TrialWaitSignDocCount { get; set; }
public int? MIM_SysWaitSignDocCount { get; set; }
#endregion #endregion

View File

@ -1241,32 +1241,12 @@ namespace IRaCIS.Core.Application
var record = new UserToBeDoneRecord() var record = new UserToBeDoneRecord()
{ {
#region sign document
IsHaveSysDocNeedNeedSign = needSignSysDocCont > 0, IsHaveSysDocNeedNeedSign = needSignSysDocCont > 0,
//TrialNeedSignList= trialNeedSignList, //TrialNeedSignList= trialNeedSignList,
PM_SysWaitSignDocCount = isPM ? needSignSysDocCont : 0, SysWaitSignDocCount = isPM ? needSignSysDocCont : 0,
PM_TrialWaitSignDocCount = isPM ? needSignTrialCount : 0, TrialWaitSignDocCount = isPM ? needSignTrialCount : 0,
CRC_SysWaitSignDocCount = isCRC ? needSignSysDocCont : 0,
CRC_TrialWaitSignDocCount = isCRC ? needSignTrialCount : 0,
SPM_SysWaitSignDocCount = isSPMOrCPM ? needSignSysDocCont : 0,
SPM_TrialWaitSignDocCount = isSPMOrCPM ? needSignTrialCount : 0,
IQC_SysWaitSignDocCount = isIQC ? needSignSysDocCont : 0,
IQC_TrialWaitSignDocCount = isIQC ? needSignTrialCount : 0,
IR_SysWaitSignDocCount = isIR ? needSignSysDocCont : 0,
IR_TrialWaitSignDocCount = isIR ? needSignTrialCount : 0,
MIM_SysWaitSignDocCount = isMIM ? needSignSysDocCont : 0,
MIM_TrialWaitSignDocCount = isMIM ? needSignTrialCount : 0,
#endregion
#region PM #region PM

View File

@ -151,6 +151,8 @@ namespace IRaCIS.Application.Contracts
public Guid TrialReadingCriterionId { get; set; } public Guid TrialReadingCriterionId { get; set; }
public List<ReadingCategory> ReadingCategorys { get; set; } public List<ReadingCategory> ReadingCategorys { get; set; }
public bool IsJoinAnalysis { get; set; } = true;
} }

View File

@ -0,0 +1,43 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2024-02-29 15:48:36
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
///TrialVirtualSiteCodeUpdate
///</summary>
[Table("TrialVirtualSiteCodeUpdate")]
public class TrialVirtualSiteCodeUpdate : Entity, IAuditAdd
{
public Guid TrialId { get; set; }
/// <summary>
/// CreateTime
/// </summary>
[Required]
public DateTime CreateTime { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
[Required]
public Guid CreateUserId { get; set; }
/// <summary>
/// VirturalSiteCode
/// </summary>
[Required]
public string VirturalSiteCode { get; set; }
}
}

View File

@ -0,0 +1,59 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2024-02-29 15:51:46
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
///EnrollReadingCriterion
///</summary>
[Table("EnrollReadingCriterion")]
public class EnrollReadingCriterion : Entity, IAuditAdd
{
/// <summary>
/// Id
/// </summary>
[Key]
[Required]
public Guid Id { get; set; }
/// <summary>
/// EnrollId
/// </summary>
[Required]
public Guid EnrollId { get; set; }
/// <summary>
/// TrialReadingCriterionId
/// </summary>
[Required]
public Guid TrialReadingCriterionId { get; set; }
/// <summary>
/// IsJoinAnalysis
/// </summary>
[Required]
public bool IsJoinAnalysis { get; set; }
/// <summary>
/// CreateTime
/// </summary>
[Required]
public DateTime CreateTime { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
[Required]
public Guid CreateUserId { get; set; }
}
}

View File

@ -15,6 +15,8 @@ namespace IRaCIS.Core.Domain.Models
[Table("EnrollReadingCategory")] [Table("EnrollReadingCategory")]
public class EnrollReadingCategory : Entity, IAuditAdd public class EnrollReadingCategory : Entity, IAuditAdd
{ {
public bool IsJoinAnalysis { get; set; }=true;
/// <summary> /// <summary>
/// EnrollId /// EnrollId
/// </summary> /// </summary>

View File

@ -359,6 +359,8 @@ namespace IRaCIS.Core.Domain.Models
public int IndicationEnum { get; set; } = -1; public int IndicationEnum { get; set; } = -1;
public string VitrualSiteCode { get; set; }
#region 邮件配置 #region 邮件配置
/// <summary> /// <summary>
/// 发件箱账号 /// 发件箱账号

View File

@ -672,6 +672,8 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<Internationalization> Internationalization { get; set; } public virtual DbSet<Internationalization> Internationalization { get; set; }
public virtual DbSet<TrialVirtualSiteCodeUpdate> TrialVirtualSiteCodeUpdate { get; set; }
public virtual DbSet<EnrollReadingCriterion> EnrollReadingCriterion { get; set; }
} }

View File

@ -1,10 +1,10 @@
<#+ <#+
public class config public class config
{ {
public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.IRC;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"; public static readonly string ConnectionString = "Server=123.56.94.154,1435;Database=Test_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true";
public static readonly string DbDatabase = "Test.IRC"; public static readonly string DbDatabase = "Test_IRC";
//表名称用字符串,拼接 //表名称用字符串,拼接
public static readonly string TableName = "ReadingTaskQuestionMark"; public static readonly string TableName = "EnrollReadingCriterion";
//具体文件里面 例如service 可以配置是否分页 //具体文件里面 例如service 可以配置是否分页
} }
#> #>