一致性分析规则修改
parent
8a31a771ed
commit
b192b311eb
|
@ -130,7 +130,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
||||
|
||||
public string BlindSubjectCode { get; set; } = string.Empty;
|
||||
public string BlindTrialSiteCode { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class VisitTaskSimpleDTO :VisitTaskGroupSimpleDTO
|
||||
|
@ -148,8 +149,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
public bool IsHaveGeneratedTask { get; set; }
|
||||
|
||||
|
||||
public string BlindSubjectCode { get; set; } = string.Empty;
|
||||
public string BlindTrialSiteCode { get; set; } = string.Empty;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -149,14 +149,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var blindSubjectCode = string.Empty;
|
||||
|
||||
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId==trialReadingCriterionId).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault().IfNullThrowException();
|
||||
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId==trialReadingCriterionId && t.IsSelfAnalysis == true).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault().IfNullThrowException();
|
||||
if (subjectTask.BlindSubjectCode != String.Empty)
|
||||
{
|
||||
blindSubjectCode = subjectTask.BlindSubjectCode;
|
||||
}
|
||||
else
|
||||
{
|
||||
var maxCodeStr = _visitTaskRepository.Where(t => t.TrialId == subject.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId).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))
|
||||
{
|
||||
|
@ -287,109 +287,143 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var configDoctorUserIdList = await doctorUserIdQuery.ToListAsync();
|
||||
|
||||
|
||||
|
||||
foreach (var subject in subjectList.Where(t => t.IsHaveGeneratedTask == false))
|
||||
using (await _mutex.LockAsync())
|
||||
{
|
||||
int maxCodeInt = 0;
|
||||
|
||||
//组间一致性分析 也用盲态SubjectCode
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var subjectAddTaskList = new List<VisitTaskGroupSimpleDTO>();
|
||||
|
||||
|
||||
//需要处理的医生
|
||||
|
||||
var needAddDoctorUserIdList = configDoctorUserIdList.Except(subject.VisitTaskList.Select(t => (Guid)t.DoctorUserId)).ToList();
|
||||
|
||||
if (needAddDoctorUserIdList.Count == 0)
|
||||
{
|
||||
throw new BusinessValidationFailedException("请配置一致性分析的医生");
|
||||
}
|
||||
|
||||
|
||||
foreach (var needAddDoctorUserId in needAddDoctorUserIdList)
|
||||
foreach (var subject in subjectList.Where(t => t.IsHaveGeneratedTask == false))
|
||||
{
|
||||
|
||||
//每个医生 都生成处理的任务
|
||||
foreach (var task in subject.SubjectTaskVisitList.Take(filterObj.PlanVisitCount))
|
||||
//组间一致性分析 也用盲态SubjectCode
|
||||
//处理 Subject 编号
|
||||
|
||||
var blindSubjectCode = string.Empty;
|
||||
|
||||
var subjectTask = _visitTaskRepository.Where(t => t.SubjectId == subject.SubjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsSelfAnalysis==false).OrderByDescending(t => t.BlindSubjectCode).FirstOrDefault().IfNullThrowException();
|
||||
if (subjectTask.BlindSubjectCode != String.Empty)
|
||||
{
|
||||
|
||||
subjectAddTaskList.Add(new VisitTaskGroupSimpleDTO()
|
||||
{
|
||||
ReadingCategory = task.ReadingCategory,
|
||||
ReadingTaskState = task.ReadingTaskState,
|
||||
TaskBlindName = task.TaskBlindName,
|
||||
TaskName = task.TaskName,
|
||||
TaskState = task.TaskState,
|
||||
SubjectId = task.SubjectId,
|
||||
VisitTaskNum = task.VisitTaskNum,
|
||||
TrialId = task.TrialId,
|
||||
DoctorUserId = needAddDoctorUserId,
|
||||
ArmEnum = Arm.GroupConsistentArm,
|
||||
SouceReadModuleId = task.SouceReadModuleId,
|
||||
SourceSubjectVisitId = task.SourceSubjectVisitId,
|
||||
|
||||
TrialReadingCriterionId=task.TrialReadingCriterionId,
|
||||
});
|
||||
|
||||
blindSubjectCode = subjectTask.BlindSubjectCode;
|
||||
}
|
||||
|
||||
//最后一个访视添加全局
|
||||
|
||||
if (filterObj.IsGenerateGlobalTask)
|
||||
else
|
||||
{
|
||||
var lastTask = (subjectAddTaskList.Take(filterObj.PlanVisitCount).Last()).Clone();
|
||||
var maxCodeStr = _visitTaskRepository.Where(t => t.TrialId == subject.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsSelfAnalysis == false).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).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<VisitTaskGroupSimpleDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
|
||||
|
||||
|
||||
if (existGlobal == null)
|
||||
if (!string.IsNullOrEmpty(maxCodeStr))
|
||||
{
|
||||
existGlobal = new VisitTaskSimpleDTO()
|
||||
{
|
||||
SubjectId = lastTask.SubjectId,
|
||||
TrialId = lastTask.TrialId,
|
||||
ReadingCategory = ReadingCategory.Global,
|
||||
TaskName = lastTask.TaskName + "_Global",
|
||||
TaskBlindName = lastTask.TaskBlindName + "_Global",
|
||||
int.TryParse(maxCodeStr.Substring(maxCodeStr.Length - filterObj.BlindSubjectNumberOfPlaces), out maxCodeInt);
|
||||
|
||||
TrialReadingCriterionId =trialReadingCriterionId,
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
existGlobal.ArmEnum = Arm.GroupConsistentArm;
|
||||
existGlobal.DoctorUserId = needAddDoctorUserId;
|
||||
|
||||
subjectAddTaskList.Add(existGlobal);
|
||||
blindSubjectCode = filterObj.BlindTrialSiteCode + (maxCodeInt + 1).ToString($"D{filterObj.BlindSubjectNumberOfPlaces}");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var subjectAddTaskList = new List<VisitTaskGroupSimpleDTO>();
|
||||
|
||||
|
||||
//需要处理的医生
|
||||
|
||||
var needAddDoctorUserIdList = configDoctorUserIdList.Except(subject.VisitTaskList.Select(t => (Guid)t.DoctorUserId)).ToList();
|
||||
|
||||
if (needAddDoctorUserIdList.Count == 0)
|
||||
{
|
||||
throw new BusinessValidationFailedException("请配置一致性分析的医生");
|
||||
}
|
||||
|
||||
|
||||
foreach (var needAddDoctorUserId in needAddDoctorUserIdList)
|
||||
{
|
||||
|
||||
//每个医生 都生成处理的任务
|
||||
foreach (var task in subject.SubjectTaskVisitList.Take(filterObj.PlanVisitCount))
|
||||
{
|
||||
|
||||
subjectAddTaskList.Add(new VisitTaskGroupSimpleDTO()
|
||||
{
|
||||
ReadingCategory = task.ReadingCategory,
|
||||
ReadingTaskState = task.ReadingTaskState,
|
||||
TaskBlindName = task.TaskBlindName,
|
||||
TaskName = task.TaskName,
|
||||
TaskState = task.TaskState,
|
||||
SubjectId = task.SubjectId,
|
||||
VisitTaskNum = task.VisitTaskNum,
|
||||
TrialId = task.TrialId,
|
||||
DoctorUserId = needAddDoctorUserId,
|
||||
ArmEnum = Arm.GroupConsistentArm,
|
||||
SouceReadModuleId = task.SouceReadModuleId,
|
||||
SourceSubjectVisitId = task.SourceSubjectVisitId,
|
||||
|
||||
TrialReadingCriterionId = task.TrialReadingCriterionId,
|
||||
|
||||
BlindSubjectCode=blindSubjectCode,
|
||||
BlindTrialSiteCode=filterObj.BlindTrialSiteCode
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//最后一个访视添加全局
|
||||
|
||||
if (filterObj.IsGenerateGlobalTask)
|
||||
{
|
||||
var lastTask = (subjectAddTaskList.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<VisitTaskGroupSimpleDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
|
||||
|
||||
|
||||
if (existGlobal == null)
|
||||
{
|
||||
existGlobal = new VisitTaskSimpleDTO()
|
||||
{
|
||||
SubjectId = lastTask.SubjectId,
|
||||
TrialId = lastTask.TrialId,
|
||||
ReadingCategory = ReadingCategory.Global,
|
||||
TaskName = lastTask.TaskName + "_Global",
|
||||
TaskBlindName = lastTask.TaskBlindName + "_Global",
|
||||
|
||||
TrialReadingCriterionId = trialReadingCriterionId,
|
||||
|
||||
BlindSubjectCode = blindSubjectCode,
|
||||
BlindTrialSiteCode = filterObj.BlindTrialSiteCode
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
existGlobal.ArmEnum = Arm.GroupConsistentArm;
|
||||
existGlobal.DoctorUserId = needAddDoctorUserId;
|
||||
|
||||
subjectAddTaskList.Add(existGlobal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
TrialId = filterObj.TrialId,
|
||||
|
||||
ReadingCategory = GenerateTaskCategory.GroupConsistent,
|
||||
|
||||
|
||||
GenerataGroupConsistentTaskList = subjectAddTaskList
|
||||
});
|
||||
|
||||
|
||||
await _taskConsistentRuleRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
TrialId = filterObj.TrialId,
|
||||
|
||||
ReadingCategory = GenerateTaskCategory.GroupConsistent,
|
||||
|
||||
|
||||
GenerataGroupConsistentTaskList = subjectAddTaskList
|
||||
});
|
||||
|
||||
|
||||
await _taskConsistentRuleRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
|
||||
|
|
|
@ -1103,8 +1103,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
.Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification, t.IsUrgent, t.IsHaveFirstGiveMedicineDate, t.ClinicalInformationTransmissionEnum })
|
||||
.FirstOrDefaultAsync(t => t.TrialId == cRCRequestToQCCommand.TrialId)).IfNullThrowException();
|
||||
|
||||
//找到符合配置的标准 确认的、双重,有序,阅片期仲裁
|
||||
var trialReadingCriterionIdList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.IsConfirm && t.ReadingType == ReadingMethod.Double && t.ArbitrationRule == ArbitrationRule.Reading && t.IsReadingTaskViewInOrder).Select(t => t.Id).ToList();
|
||||
//找到符合配置的标准 确认的并且签名的、双重,有序,阅片期仲裁
|
||||
var trialReadingCriterionIdList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.IsConfirm t.ReadingInfoSignTime != null && t.ReadingType == ReadingMethod.Double && t.ArbitrationRule == ArbitrationRule.Reading && t.IsReadingTaskViewInOrder).Select(t => t.Id).ToList();
|
||||
|
||||
|
||||
var dbSubjectVisitList = await _subjectVisitRepository.Where(t => cRCRequestToQCCommand.SubjectVisitIds.Contains(t.Id), true).Include(t => t.Subject).ToListAsync();
|
||||
|
|
Loading…
Reference in New Issue