Uat_Study
parent
e18b890f96
commit
9296871b28
|
@ -169,14 +169,31 @@ namespace IRaCIS.Application.Services
|
|||
result.JudgeTaskId = judgeInfo.Id;
|
||||
result.JudgeTaskName = judgeInfo.TaskBlindName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 一致性分析按照doctorId 其他按照分组
|
||||
|
||||
result.TaskList = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.SubjectId == taskInfo.SubjectId && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < taskInfo.VisitTaskNum)
|
||||
.Where(x => x.DoctorUserId == taskInfo.DoctorUserId)
|
||||
|
||||
var queruTask = _visitTaskRepository.Where(x =>
|
||||
x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||
x.TaskState == TaskState.Effect &&
|
||||
x.VisitTaskNum < taskInfo.VisitTaskNum);
|
||||
|
||||
|
||||
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
{
|
||||
queruTask = _visitTaskRepository.Where(x => taskInfo.RelatedVisitTaskIdList.Contains(x.Id));
|
||||
}
|
||||
|
||||
result.TaskList = await queruTask
|
||||
.OrderBy(x => x.VisitTaskNum).Select(x => new GlobalVisitInfo()
|
||||
{
|
||||
VisitName = x.TaskName,
|
||||
|
|
|
@ -282,9 +282,9 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
|
||||
var baselineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == taskInfo.SubjectId && x.IsBaseLine && !x.IsLostVisit).Select(x => x.Id).FirstNotNullAsync();
|
||||
var result = await _visitTaskRepository
|
||||
.WhereIf(taskInfo.TaskState != TaskState.Effect, x => x.Id == inDto.VisitTaskId)
|
||||
.Where(x =>
|
||||
|
||||
|
||||
var taskQuery = _visitTaskRepository.Where(x =>
|
||||
(x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
|
@ -294,7 +294,14 @@ namespace IRaCIS.Application.Services
|
|||
x.TaskState == TaskState.Effect &&
|
||||
x.VisitTaskNum <= taskInfo.VisitTaskNum &&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||
x.ReadingCategory == ReadingCategory.Visit) || x.Id == inDto.VisitTaskId)
|
||||
x.ReadingCategory == ReadingCategory.Visit) || x.Id == inDto.VisitTaskId);
|
||||
|
||||
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
{
|
||||
taskQuery = _visitTaskRepository.Where(x => taskInfo.RelatedVisitTaskIdList.Contains(x.Id));
|
||||
}
|
||||
|
||||
var result = await taskQuery
|
||||
.Select(x => new GetRelatedVisitTaskOutDto()
|
||||
{
|
||||
TaskBlindName = x.TaskBlindName,
|
||||
|
@ -327,20 +334,28 @@ namespace IRaCIS.Application.Services
|
|||
public async Task<List<GetReadingPastResultListOutDto>> GetReadingPastResultList(GetReadingPastResultListInDto inDto)
|
||||
{
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
var readingPastResultList = await _visitTaskRepository.Where(x =>
|
||||
x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.VisitTaskNum <= taskInfo.VisitTaskNum &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
x.Id != inDto.VisitTaskId &&
|
||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||
x.TaskState == TaskState.Effect &&
|
||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis&&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate)
|
||||
.WhereIf(taskInfo.ReadingCategory != ReadingCategory.Visit, x => x.ReadingCategory == taskInfo.ReadingCategory)
|
||||
|
||||
var taskQuery = _visitTaskRepository.Where(x =>
|
||||
x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.VisitTaskNum <= taskInfo.VisitTaskNum &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
x.Id != inDto.VisitTaskId &&
|
||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||
x.TaskState == TaskState.Effect &&
|
||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||
x.ReadingCategory == taskInfo.ReadingCategory
|
||||
);
|
||||
|
||||
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
{
|
||||
taskQuery = _visitTaskRepository.Where(x => taskInfo.RelatedVisitTaskIdList.Contains(x.Id));
|
||||
}
|
||||
|
||||
var readingPastResultList = await taskQuery
|
||||
.ProjectTo<GetReadingPastResultListOutDto>(_mapper.ConfigurationProvider).OrderBy(x => x.VisitTaskNum).ToListAsync();
|
||||
return readingPastResultList;
|
||||
}
|
||||
|
@ -1931,6 +1946,8 @@ namespace IRaCIS.Application.Services
|
|||
// 完成阅片修改状态
|
||||
//await this.FinishReadUpdateState(visitTaskId);
|
||||
|
||||
// 创建任务关联关系
|
||||
await this.CreateTaskRelated(visitTaskId);
|
||||
|
||||
await _visitTaskRepository.SaveChangesAsync();
|
||||
|
||||
|
@ -1938,6 +1955,84 @@ namespace IRaCIS.Application.Services
|
|||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 签名时创建任务关联
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task CreateTaskRelated(Guid visitTaskId)
|
||||
{
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
|
||||
|
||||
|
||||
// 判断是否有序阅片
|
||||
|
||||
var isReadingTaskViewInOrder = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == taskInfo.TrialReadingCriterionId).Select(x => x.IsReadingTaskViewInOrder).FirstNotNullAsync();
|
||||
|
||||
// 判断任务类型
|
||||
|
||||
// 关联Id
|
||||
List<Guid> relatedVisitTaskIdList = new List<Guid>();
|
||||
|
||||
// 既往任务Id
|
||||
List<Guid> pastResultTaskIdList = new List<Guid>();
|
||||
|
||||
|
||||
if (isReadingTaskViewInOrder)
|
||||
{
|
||||
pastResultTaskIdList = await _visitTaskRepository.Where(x =>
|
||||
x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.VisitTaskNum < taskInfo.VisitTaskNum &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||
x.TaskState == TaskState.Effect &&
|
||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||
x.ReadingCategory == taskInfo.ReadingCategory &&
|
||||
x.Id != taskInfo.Id
|
||||
).Select(x => x.Id).ToListAsync();
|
||||
|
||||
switch (taskInfo.ReadingCategory)
|
||||
{
|
||||
case ReadingCategory.Visit:
|
||||
case ReadingCategory.Global:
|
||||
case ReadingCategory.Oncology:
|
||||
relatedVisitTaskIdList = await _visitTaskRepository.Where(x =>
|
||||
x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||
x.TaskState == TaskState.Effect && x.VisitTaskNum <= taskInfo.VisitTaskNum).Select(x => x.Id).ToListAsync();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (taskInfo.ReadingCategory == ReadingCategory.Visit)
|
||||
{
|
||||
relatedVisitTaskIdList.Add(taskInfo.Id);
|
||||
}
|
||||
}
|
||||
|
||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(taskInfo.Id, x => new VisitTask()
|
||||
{
|
||||
|
||||
PastResultTaskIds = JsonConvert.SerializeObject(pastResultTaskIdList),
|
||||
RelatedVisitTaskIds = JsonConvert.SerializeObject(relatedVisitTaskIdList),
|
||||
});
|
||||
|
||||
await _visitTaskRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 阅片期 -全局和肿瘤学任务的生成
|
||||
/// </summary>
|
||||
|
|
|
@ -123,13 +123,11 @@ namespace IRaCIS.Application.Services
|
|||
// 判断是否是全局访视任务
|
||||
if (await VerifyIsGlobalVisitTask(taskList[0].Id))
|
||||
{
|
||||
|
||||
|
||||
var globalVisitTaskIds = await _visitTaskRepository.Where(x=>x.Id== taskList[0].Id).Select(x=>x.RelatedVisitTaskIdList).FirstNotNullAsync();
|
||||
|
||||
// 找到所有的的任务
|
||||
var globalVisitTasks = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge
|
||||
&& x.TaskState == TaskState.Effect
|
||||
&& x.TrialReadingCriterionId == taskList[0].TrialReadingCriterionId
|
||||
&& x.IsAnalysisCreate == false
|
||||
&& x.ReadingCategory == ReadingCategory.Visit && x.VisitTaskNum <= taskList[0].VisitTaskNum).Select(x => new {
|
||||
var globalVisitTasks = await _visitTaskRepository.Where(x => globalVisitTaskIds.Contains(x.Id)).Select(x => new {
|
||||
x.Id,
|
||||
x.ArmEnum,
|
||||
x.VisitTaskNum,
|
||||
|
@ -137,7 +135,7 @@ namespace IRaCIS.Application.Services
|
|||
x.TaskBlindName,
|
||||
} ).ToListAsync();
|
||||
|
||||
var globalVisitTaskIds = globalVisitTasks.Select(x => x.Id).ToList();
|
||||
|
||||
|
||||
var taskNum = globalVisitTasks.Select(x => x.VisitTaskNum).Distinct().OrderBy(x=>x).ToList();
|
||||
|
||||
|
@ -394,6 +392,10 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
|
||||
var result = await _visitTaskRepository.SaveChangesAsync();
|
||||
|
||||
|
||||
// 创建任务关联关系
|
||||
await this.CreateTaskRelated(inDto.VisitTaskId);
|
||||
return ResponseOutput.Ok(result);
|
||||
}
|
||||
|
||||
|
|
|
@ -93,10 +93,18 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
|
||||
// 找到对应的访视
|
||||
List<OncologyVisitTaskInfo> oncologyVisits = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.SubjectId == visitTask.SubjectId && x.IsAnalysisCreate == visitTask.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < visitTask.VisitTaskNum)
|
||||
.Where(x => x.DoctorUserId == visitTask.DoctorUserId)
|
||||
List<OncologyVisitTaskInfo> oncologyVisits = await _visitTaskRepository.Where(x =>
|
||||
x.TrialId == taskInfo.TrialId &&
|
||||
x.SubjectId == taskInfo.SubjectId &&
|
||||
x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate &&
|
||||
x.ArmEnum == taskInfo.ArmEnum &&
|
||||
x.IsSelfAnalysis == taskInfo.IsSelfAnalysis &&
|
||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||
x.TaskState == TaskState.Effect &&
|
||||
x.VisitTaskNum < taskInfo.VisitTaskNum)
|
||||
.OrderBy(x => x.VisitTaskNum).Select(x => new OncologyVisitTaskInfo()
|
||||
{
|
||||
VisitName = x.SourceSubjectVisit.VisitName,
|
||||
|
@ -305,6 +313,9 @@ namespace IRaCIS.Application.Services
|
|||
SignTime = DateTime.Now,
|
||||
});
|
||||
await _visitTaskRepository.SaveChangesAsync();
|
||||
|
||||
// 创建任务关联关系
|
||||
await this.CreateTaskRelated(inDto.OncologyTaskId);
|
||||
return ResponseOutput.Ok(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -150,18 +150,23 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
{
|
||||
var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
|
||||
|
||||
var taskInfoList = await _visitTaskRepository
|
||||
// 失效的只查看自己
|
||||
.WhereIf(visitTaskInfo.TaskState != TaskState.Effect, x => x.Id == visitTaskId)
|
||||
.Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect
|
||||
&& x.IsAnalysisCreate == visitTaskInfo.IsAnalysisCreate
|
||||
&&x.DoctorUserId==visitTaskInfo.DoctorUserId
|
||||
&& x.IsSelfAnalysis == visitTaskInfo.IsSelfAnalysis
|
||||
&& x.VisitTaskNum<= visitTaskInfo.VisitTaskNum
|
||||
var taskquery = _visitTaskRepository
|
||||
.Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect
|
||||
&& x.IsAnalysisCreate == visitTaskInfo.IsAnalysisCreate
|
||||
&& x.DoctorUserId == visitTaskInfo.DoctorUserId
|
||||
&& x.IsSelfAnalysis == visitTaskInfo.IsSelfAnalysis
|
||||
&& x.VisitTaskNum <= visitTaskInfo.VisitTaskNum
|
||||
&& x.ArmEnum == visitTaskInfo.ArmEnum
|
||||
&& x.TrialReadingCriterionId == visitTaskInfo.TrialReadingCriterionId
|
||||
&& x.ReadingCategory == ReadingCategory.Visit && x.ReadingTaskState == ReadingTaskState.HaveSigned) || x.Id == visitTaskId
|
||||
).OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo()
|
||||
);
|
||||
if(visitTaskInfo.ReadingTaskState==ReadingTaskState.HaveSigned)
|
||||
{
|
||||
taskquery = _visitTaskRepository.Where(x => visitTaskInfo.RelatedVisitTaskIdList.Contains(x.Id));
|
||||
}
|
||||
|
||||
|
||||
var taskInfoList = await taskquery.OrderBy(x => x.VisitTaskNum).Select(x => new VisitTaskInfo()
|
||||
{
|
||||
BlindName = x.TaskBlindName,
|
||||
IsBaseLine = x.SourceSubjectVisit.IsBaseLine,
|
||||
|
|
|
@ -175,6 +175,64 @@ namespace IRaCIS.Core.Domain.Models
|
|||
/// </summary>
|
||||
public bool IsReadClinicalData { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 关联的访视任务ID (当前任务是访视任务的话会有自己)
|
||||
/// </summary>
|
||||
public string RelatedVisitTaskIds { get; set; } = "[]";
|
||||
|
||||
/// <summary>
|
||||
/// 关联的访视任务ID (当前任务是访视任务的话会有自己)集合
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public List<Guid> RelatedVisitTaskIdList
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
return this.RelatedVisitTaskIds.Trim().Split(',').Select(x=>Guid.Parse(x)).ToList();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return new List<Guid>();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 既往任务Id 不包括自己
|
||||
/// </summary>
|
||||
|
||||
public string PastResultTaskIds { get; set; } = "[]";
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 既往任务Id 不包括自己集合
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public List<Guid> PastResultTaskIdList
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
return this.PastResultTaskIds.Trim().Split(',').Select(x => Guid.Parse(x)).ToList();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return new List<Guid>();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#region 裁判任务特有
|
||||
|
||||
|
@ -231,6 +289,8 @@ namespace IRaCIS.Core.Domain.Models
|
|||
//前序任务需要签名 但是未签名
|
||||
public bool IsFrontTaskNeedSignButNotSign { get; set; }
|
||||
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
|
||||
public Trial Trial { get; set; }
|
||||
|
|
|
@ -421,6 +421,13 @@ GROUP BY V.TrialId, V.SubjectId, V.SouceReadModuleId , V.TrialReadingCriterion
|
|||
HAVING Count(*)>2
|
||||
|
||||
|
||||
---------------------维护表格问题ID
|
||||
update ReadingTableQuestionTrial set ReadingTableQuestionTrial.SystemTableQuestionId= ReadingTableQuestionSystem.Id from ReadingTableQuestionSystem
|
||||
inner join ReadingTableQuestionTrial on ReadingTableQuestionSystem.QuestionName=ReadingTableQuestionTrial.QuestionName
|
||||
inner join ReadingQuestionTrial on ReadingTableQuestionTrial.ReadingQuestionId=ReadingQuestionTrial.Id and ReadingQuestionTrial.ReadingQuestionSystemId=ReadingTableQuestionSystem.ReadingQuestionId
|
||||
|
||||
where ReadingQuestionTrial.ReadingQuestionSystemId is not null and ReadingTableQuestionTrial.SystemTableQuestionId is null
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue