修改一版
parent
d1e9ab8033
commit
cf70afda15
|
@ -1955,6 +1955,11 @@
|
|||
<member name="T:IRaCIS.Core.Application.ViewModel.TaskAllocationRuleAddOrEdit">
|
||||
<summary> TaskAllocationRuleAddOrEdit 列表查询参数模型</summary>
|
||||
</member>
|
||||
<member name="F:IRaCIS.Core.Application.ViewModel.GenerateTaskCommand.ReadingGenerataTaskList">
|
||||
<summary>
|
||||
阅片期
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.ViewModel.VisitTaskView">
|
||||
<summary> VisitTaskView 列表视图模型 </summary>
|
||||
</member>
|
||||
|
@ -2721,6 +2726,21 @@
|
|||
1 Mint、2 PACS
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.TrialBasicConfigView.QCProcessEnum">
|
||||
<summary>
|
||||
QC流程 0 不审,1 单审,2双审
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.TrialBasicConfigView.IsImageConsistencyVerification">
|
||||
<summary>
|
||||
影像一致性核查
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.TrialBasicConfigView.IsTrialProcessConfirmed">
|
||||
<summary>
|
||||
流程是否确认
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.TrialUrgentConfig.IsEnrollementQualificationConfirm">
|
||||
<summary>
|
||||
是否有 入组评估确认
|
||||
|
@ -4227,6 +4247,12 @@
|
|||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.FinishReadUpdateState">
|
||||
<summary>
|
||||
完成阅片修改状态
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.AddReadingTask(System.Guid)">
|
||||
<summary>
|
||||
添加阅片期任务
|
||||
|
@ -4237,14 +4263,14 @@
|
|||
<summary>
|
||||
触发裁判任务(新)
|
||||
</summary>
|
||||
<param name="VisitTaskId"></param>
|
||||
<param name="visitTaskId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.TriggerJudgeQuestionOld(System.Guid)">
|
||||
<summary>
|
||||
触发裁判任务(老)
|
||||
</summary>
|
||||
<param name="VisitTaskId"></param>
|
||||
<param name="visitTaskId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SaveJudgeTask(IRaCIS.Core.Application.Service.Reading.Dto.SaveJudgeTaskDto)">
|
||||
|
|
|
@ -138,6 +138,11 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
|
||||
//裁判的时候传递
|
||||
public List<Guid> JudgeVisitTaskIdList { get; set; } = new List<Guid>();
|
||||
|
||||
/// <summary>
|
||||
/// 阅片期
|
||||
/// </summary>
|
||||
public List<ReadingGenerataTaskDTO> ReadingGenerataTaskList= new List<ReadingGenerataTaskDTO>();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -317,62 +317,61 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
if (trialConfig.ReadingType == ReadingMethod.Double)
|
||||
{
|
||||
//每个访视 根据项目配置生成任务 双审生成两个
|
||||
var task1 = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
|
||||
{
|
||||
TrialId = trialId,
|
||||
//SubjectId = subjectVisit.SubjectId,
|
||||
//IsUrgent = subjectVisit.IsUrgent,
|
||||
//TaskBlindName = subjectVisit.BlindName,
|
||||
//TaskName = subjectVisit.VisitName,
|
||||
ArmEnum = Arm.DoubleReadingArm1,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
//SourceSubjectVisitId = subjectVisit.Id,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod
|
||||
});
|
||||
|
||||
var task2 = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
//SubjectId = subjectVisit.SubjectId,
|
||||
//IsUrgent = subjectVisit.IsUrgent,
|
||||
//TaskBlindName = subjectVisit.BlindName,
|
||||
//TaskName = subjectVisit.VisitName,
|
||||
ArmEnum = Arm.DoubleReadingArm2,//特殊
|
||||
Code = currentMaxCodeInt + 2,
|
||||
//SourceSubjectVisitId = subjectVisit.Id,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod
|
||||
});
|
||||
|
||||
currentMaxCodeInt = currentMaxCodeInt + 2;
|
||||
|
||||
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
|
||||
|
||||
|
||||
//每个访视 根据项目配置生成任务 双审生成两个
|
||||
var task1 = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = item.SubjectId,
|
||||
IsUrgent = item.IsUrgent,
|
||||
TaskName = item.ReadingName,
|
||||
ArmEnum = Arm.DoubleReadingArm1,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
SouceReadModuleId=item.ReadModuleId,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod
|
||||
});
|
||||
var task2 = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = item.SubjectId,
|
||||
IsUrgent = item.IsUrgent,
|
||||
TaskName = item.ReadingName,
|
||||
ArmEnum = Arm.DoubleReadingArm2,//特殊
|
||||
Code = currentMaxCodeInt + 2,
|
||||
SouceReadModuleId = item.ReadModuleId,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod
|
||||
});
|
||||
currentMaxCodeInt = currentMaxCodeInt + 2;
|
||||
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
|
||||
{
|
||||
TrialId = trialId,
|
||||
//SubjectId = subjectVisit.SubjectId,
|
||||
//IsUrgent = subjectVisit.IsUrgent,
|
||||
//TaskBlindName = subjectVisit.BlindName,
|
||||
//TaskName = subjectVisit.VisitName,
|
||||
ArmEnum = Arm.SingleReadingArm, //特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
//SourceSubjectVisitId = subjectVisit.Id,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod
|
||||
});
|
||||
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = item.SubjectId,
|
||||
IsUrgent = item.IsUrgent,
|
||||
TaskName = item.ReadingName,
|
||||
ArmEnum = Arm.SingleReadingArm, //特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
SouceReadModuleId = item.ReadModuleId,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod
|
||||
});
|
||||
|
||||
singleTask.AllocateTime = DateTime.Now;
|
||||
singleTask.AllocateTime = DateTime.Now;
|
||||
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
|
||||
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
|
||||
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -310,58 +310,122 @@ namespace IRaCIS.Application.Services
|
|||
ReadingTaskState = ReadingTaskState.HaveSigned
|
||||
});
|
||||
var result = await _visitTaskRepository.SaveChangesAsync();
|
||||
// 触裁判任务
|
||||
await this.TriggerJudgeQuestionNew(inDto.VisitTaskId);
|
||||
|
||||
// 添加阅片期任务
|
||||
await this.AddReadingTask(inDto.VisitTaskId);
|
||||
|
||||
// 完成阅片修改状态
|
||||
await this.FinishReadUpdateState(inDto.VisitTaskId);
|
||||
return ResponseOutput.Ok(result);
|
||||
}
|
||||
|
||||
|
||||
public async Task FinishReadUpdateState()
|
||||
/// <summary>
|
||||
/// 完成阅片修改状态
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task FinishReadUpdateState(Guid visitTaskId)
|
||||
{
|
||||
|
||||
}
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
|
||||
if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
|
||||
{
|
||||
|
||||
if (taskInfo.SouceReadModuleId != null)
|
||||
{
|
||||
await _readModuleRepository.UpdatePartialFromQueryAsync(taskInfo.SouceReadModuleId.Value, x => new ReadModule
|
||||
{
|
||||
ReadingStatus = ReadingStatusEnum.ReadCompleted
|
||||
});
|
||||
}
|
||||
else if (taskInfo.SourceSubjectVisitId != null)
|
||||
{
|
||||
await _subjectVisitRepository.UpdatePartialFromQueryAsync(taskInfo.SourceSubjectVisitId.Value, x => new SubjectVisit
|
||||
{
|
||||
ReadingStatus = ReadingStatusEnum.ReadCompleted
|
||||
});
|
||||
}
|
||||
|
||||
await _subjectVisitRepository.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加阅片期任务
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task AddReadingTask(Guid VisitTaskId)
|
||||
private async Task AddReadingTask(Guid visitTaskId)
|
||||
{
|
||||
// ****** 先生成阅片期 阅片期任务阅片完成之后生成肿瘤学的 如果没有阅片期 直接生成肿瘤学 *********////
|
||||
|
||||
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
|
||||
|
||||
// 任务类型
|
||||
switch (taskInfo.ReadingCategory)
|
||||
#region 建立关系
|
||||
Dictionary<ModuleTypeEnum, ReadingCategory> typeChange = new Dictionary<ModuleTypeEnum, ReadingCategory>();
|
||||
typeChange.Add(ModuleTypeEnum.InPlanSubjectVisit, ReadingCategory.Visit);
|
||||
typeChange.Add(ModuleTypeEnum.OutPlanSubjectVisit, ReadingCategory.Visit);
|
||||
typeChange.Add(ModuleTypeEnum.Read, ReadingCategory.ReadingPeriod);
|
||||
typeChange.Add(ModuleTypeEnum.Global, ReadingCategory.Global);
|
||||
typeChange.Add(ModuleTypeEnum.Referee, ReadingCategory.Judge);
|
||||
typeChange.Add(ModuleTypeEnum.Oncology, ReadingCategory.Oncology);
|
||||
#endregion
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
|
||||
List<ReadingGenerataTaskDTO> needReadList = new List<ReadingGenerataTaskDTO>();
|
||||
if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId&&x.SouceReadModuleId== taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
|
||||
{
|
||||
case ReadingCategory.Visit:
|
||||
//if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
|
||||
//{
|
||||
// var needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId)
|
||||
// .Select(x=> new ReadingGenerataTaskDTO {
|
||||
// IsUrgent=x.IsUrgent,
|
||||
// SubjectId=x.SubjectId,
|
||||
// ReadingName=
|
||||
// }).ToListAsync();
|
||||
// if()
|
||||
// 任务类型
|
||||
switch (taskInfo.ReadingCategory)
|
||||
{
|
||||
case ReadingCategory.Visit:
|
||||
needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId)
|
||||
.Select(x => new ReadingGenerataTaskDTO
|
||||
{
|
||||
IsUrgent = x.IsUrgent ?? false,
|
||||
SubjectId = x.SubjectId,
|
||||
ReadingName = x.ModuleName,
|
||||
ReadModuleId = x.Id,
|
||||
ReadingCategory = typeChange[x.ModuleType],
|
||||
}).ToListAsync();
|
||||
if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.ReadingPeriod))
|
||||
{
|
||||
needReadList = needReadList.Where(x => x.ReadingCategory != ReadingCategory.Oncology).ToList();
|
||||
}
|
||||
needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
|
||||
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
|
||||
|
||||
//}
|
||||
break;
|
||||
ReadingCategory = ReadingCategory.ReadingPeriod,
|
||||
TrialId = taskInfo.TrialId,
|
||||
ReadingGenerataTaskList = needReadList
|
||||
}) ;
|
||||
break;
|
||||
// 肿瘤学
|
||||
case ReadingCategory.ReadingPeriod:
|
||||
var subjectId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
|
||||
needReadList=await _readModuleRepository.Where(x => x.SubjectVisitId == subjectId&&x.ModuleType==ModuleTypeEnum.Oncology)
|
||||
.Select(x => new ReadingGenerataTaskDTO
|
||||
{
|
||||
IsUrgent = x.IsUrgent ?? false,
|
||||
SubjectId = x.SubjectId,
|
||||
ReadingName = x.ModuleName,
|
||||
ReadModuleId = x.Id,
|
||||
ReadingCategory = typeChange[x.ModuleType],
|
||||
}).ToListAsync();
|
||||
needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 触发裁判任务(新)
|
||||
/// </summary>
|
||||
/// <param name="VisitTaskId"></param>
|
||||
/// <param name="visitTaskId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task TriggerJudgeQuestionNew(Guid VisitTaskId)
|
||||
private async Task TriggerJudgeQuestionNew(Guid visitTaskId)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
|
||||
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned &&x.ReadingCategory!= ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
||||
if (visitTaskids.Count == 2)
|
||||
{
|
||||
|
@ -423,11 +487,11 @@ namespace IRaCIS.Application.Services
|
|||
/// <summary>
|
||||
/// 触发裁判任务(老)
|
||||
/// </summary>
|
||||
/// <param name="VisitTaskId"></param>
|
||||
/// <param name="visitTaskId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task TriggerJudgeQuestionOld(Guid VisitTaskId)
|
||||
private async Task TriggerJudgeQuestionOld(Guid visitTaskId)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
|
||||
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
||||
if (visitTaskids.Count == 2)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue