Uat_Study
parent
391a5f906f
commit
bc69bb1b43
|
@ -111,12 +111,12 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="opt"></param>
|
/// <param name="opt"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost, Route("Inspection/ReadingImageTask/SetOncologyReadingInfo")]
|
[HttpPost, Route("Inspection/ReadingImageTask/SubmitOncologyReadingInfo")]
|
||||||
[UnitOfWork]
|
[UnitOfWork]
|
||||||
public async Task<IResponseOutput> SetOncologyReadingInfo(DataInspectionDto<SetOncologyReadingInfoInDto> opt)
|
public async Task<IResponseOutput> SetOncologyReadingInfo(DataInspectionDto<SubmitOncologyReadingInfoInDto> opt)
|
||||||
{
|
{
|
||||||
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||||
var result = await _iReadingImageTaskService.SetOncologyReadingInfo(opt.Data);
|
var result = await _iReadingImageTaskService.SubmitOncologyReadingInfo(opt.Data);
|
||||||
await _inspectionService.CompletedSign(singid, result);
|
await _inspectionService.CompletedSign(singid, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
public Guid VisitTaskId { get; set; }
|
public Guid VisitTaskId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class SubmitOncologyReadingInfoInDto
|
||||||
|
{
|
||||||
|
public Guid OncologyTaskId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class SubmitGlobalReadingInfoInDto
|
public class SubmitGlobalReadingInfoInDto
|
||||||
{
|
{
|
||||||
public Guid GlobalTaskId { get; set; }
|
public Guid GlobalTaskId { get; set; }
|
||||||
|
@ -118,6 +124,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TrialEvaluationReason { get; set; } = string.Empty;
|
public string TrialEvaluationReason { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
//任务阅片状态
|
||||||
|
public ReadingTaskState ReadingTaskState { get; set; }
|
||||||
|
|
||||||
public List<OncologyVisitTaskInfo> OncologyVisits { get; set; } = new List<OncologyVisitTaskInfo>();
|
public List<OncologyVisitTaskInfo> OncologyVisits { get; set; } = new List<OncologyVisitTaskInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,6 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
Task<IResponseOutput> SubmitGlobalReadingInfo(SubmitGlobalReadingInfoInDto inDto);
|
Task<IResponseOutput> SubmitGlobalReadingInfo(SubmitGlobalReadingInfoInDto inDto);
|
||||||
|
|
||||||
Task<IResponseOutput> SetOncologyReadingInfo(SetOncologyReadingInfoInDto inDto);
|
Task<IResponseOutput> SubmitOncologyReadingInfo(SubmitOncologyReadingInfoInDto inDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -359,8 +359,8 @@ namespace IRaCIS.Application.Services
|
||||||
switch (readModuleData.ModuleType)
|
switch (readModuleData.ModuleType)
|
||||||
{
|
{
|
||||||
case ModuleTypeEnum.Global:
|
case ModuleTypeEnum.Global:
|
||||||
var taskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.SourceSubjectVisitId == readModuleData.SubjectVisitId && x.ReadingTaskState == ReadingTaskState.HaveSigned);
|
var taskListInfo = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == readModuleData.SubjectVisitId&&x.TaskState==TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
||||||
if (taskInfo != null)
|
foreach (var taskInfo in taskListInfo)
|
||||||
{
|
{
|
||||||
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||||
{
|
{
|
||||||
|
@ -383,18 +383,33 @@ namespace IRaCIS.Application.Services
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ModuleTypeEnum.Oncology:
|
case ModuleTypeEnum.Oncology:
|
||||||
var globalModule = await _readModuleRepository.Where(x => x.SubjectId == readModuleData.SubjectId && x.SubjectVisitId == readModuleData.SubjectVisitId && x.ModuleType == ModuleTypeEnum.Global).FirstOrDefaultAsync();
|
|
||||||
|
var trialInfo = await _trialRepository.Where(x => x.Id == visit.TrialId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
var globalModule = await _readModuleRepository.Where(x => x.SubjectId == readModuleData.SubjectId && x.SubjectVisitId == readModuleData.SubjectVisitId&& x.ModuleType == ModuleTypeEnum.Global).FirstOrDefaultAsync();
|
||||||
if (globalModule != null)
|
if (globalModule != null)
|
||||||
{
|
{
|
||||||
var globalTaskInfo = await _visitTaskRepository.FirstOrDefaultAsync(x => x.SouceReadModuleId == globalModule.Id && x.ReadingTaskState == ReadingTaskState.HaveSigned);
|
var globalTaskInfoList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalModule.Id && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
||||||
if (globalTaskInfo != null)
|
|
||||||
|
if (globalTaskInfoList.Count() > 0 && globalTaskInfoList.Count == (int)trialInfo.ReadingType)
|
||||||
{
|
{
|
||||||
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
var isAdd = false;
|
||||||
|
if (globalTaskInfoList[0].JudgeVisitTaskId == null)
|
||||||
{
|
{
|
||||||
OriginalVisitId = globalTaskInfo.Id,
|
isAdd = true;
|
||||||
ReadingCategory = GenerateTaskCategory.Oncology,
|
}
|
||||||
TrialId = dto.TrialId,
|
else
|
||||||
ReadingGenerataTaskList = new List<ReadingGenerataTaskDTO>() {
|
{
|
||||||
|
isAdd = await _visitTaskRepository.AnyAsync(x => x.Id == globalTaskInfoList[0].JudgeVisitTaskId && x.ReadingTaskState == ReadingTaskState.HaveSigned);
|
||||||
|
}
|
||||||
|
if (isAdd)
|
||||||
|
{
|
||||||
|
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||||
|
{
|
||||||
|
OriginalVisitId = globalTaskInfoList[0].Id,
|
||||||
|
ReadingCategory = GenerateTaskCategory.Oncology,
|
||||||
|
TrialId = dto.TrialId,
|
||||||
|
ReadingGenerataTaskList = new List<ReadingGenerataTaskDTO>() {
|
||||||
new ReadingGenerataTaskDTO()
|
new ReadingGenerataTaskDTO()
|
||||||
{
|
{
|
||||||
IsUrgent = readModuleData.IsUrgent ?? false,
|
IsUrgent = readModuleData.IsUrgent ?? false,
|
||||||
|
@ -405,8 +420,12 @@ namespace IRaCIS.Application.Services
|
||||||
ReadingCategory = ReadingCategory.Oncology,
|
ReadingCategory = ReadingCategory.Oncology,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,8 +116,9 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
GetOncologyReadingInfoOutDto result = new GetOncologyReadingInfoOutDto() {
|
GetOncologyReadingInfoOutDto result = new GetOncologyReadingInfoOutDto() {
|
||||||
TrialEvaluationResult= trialCriterion.EvaluationResult,
|
TrialEvaluationResult= trialCriterion.EvaluationResult,
|
||||||
TrialEvaluationReason = trialCriterion.EvaluationReason,
|
TrialEvaluationReason = trialCriterion.EvaluationReason.IsNullOrEmpty()? "肿瘤学阅片评估原因请依据临床数据填写,在与影像学结果不一致时必填。": trialCriterion.EvaluationReason,
|
||||||
OncologyTaskId = inDto.VisitTaskId,
|
OncologyTaskId = inDto.VisitTaskId,
|
||||||
|
ReadingTaskState= taskInfo.ReadingTaskState,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 先找到是R1还是R2的阅片 先找到全局阅片
|
// 先找到是R1还是R2的阅片 先找到全局阅片
|
||||||
|
@ -1224,6 +1225,26 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 提交肿瘤阅片结果
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[NonDynamicMethod]
|
||||||
|
public async Task<IResponseOutput> SubmitOncologyReadingInfo(SubmitOncologyReadingInfoInDto inDto)
|
||||||
|
{
|
||||||
|
//var result = await this.SaveGlobalReadingInfo(inDto);
|
||||||
|
|
||||||
|
await FinishReadUpdateState(inDto.OncologyTaskId);
|
||||||
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.OncologyTaskId, x => new VisitTask()
|
||||||
|
{
|
||||||
|
ReadingTaskState = ReadingTaskState.HaveSigned,
|
||||||
|
SignTime = DateTime.Now,
|
||||||
|
});
|
||||||
|
await _visitTaskRepository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Ok(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提交全局阅片结果
|
/// 提交全局阅片结果
|
||||||
|
|
|
@ -27,6 +27,7 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
|
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
|
||||||
private readonly IRepository<ReadModule> _readModuleRepository;
|
private readonly IRepository<ReadModule> _readModuleRepository;
|
||||||
private readonly IRepository<VisitStage> _visitStageRepository;
|
private readonly IRepository<VisitStage> _visitStageRepository;
|
||||||
|
private readonly IRepository<Trial> _trialRepository;
|
||||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
||||||
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
||||||
|
@ -38,6 +39,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<ReadingPeriodSet> ReadingPeriodSetRepository,
|
IRepository<ReadingPeriodSet> ReadingPeriodSetRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
IRepository<VisitStage> visitStageRepository,
|
IRepository<VisitStage> visitStageRepository,
|
||||||
|
IRepository<Trial> trialRepository,
|
||||||
IRepository<VisitTask> visitTaskRepository,
|
IRepository<VisitTask> visitTaskRepository,
|
||||||
IVisitTaskHelpeService visitTaskHelpeService,
|
IVisitTaskHelpeService visitTaskHelpeService,
|
||||||
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
||||||
|
@ -49,6 +51,7 @@ namespace IRaCIS.Application.Services
|
||||||
_readingPeriodSetRepository = ReadingPeriodSetRepository;
|
_readingPeriodSetRepository = ReadingPeriodSetRepository;
|
||||||
this._readModuleRepository = readModuleRepository;
|
this._readModuleRepository = readModuleRepository;
|
||||||
this._visitStageRepository = visitStageRepository;
|
this._visitStageRepository = visitStageRepository;
|
||||||
|
this._trialRepository = trialRepository;
|
||||||
this._visitTaskRepository = visitTaskRepository;
|
this._visitTaskRepository = visitTaskRepository;
|
||||||
this._visitTaskHelpeService = visitTaskHelpeService;
|
this._visitTaskHelpeService = visitTaskHelpeService;
|
||||||
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
||||||
|
@ -341,7 +344,7 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
case ReadingSetType.ImageReading:
|
case ReadingSetType.ImageReading:
|
||||||
|
|
||||||
var taskInfoList = await _visitTaskRepository.Where(x => subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
var taskInfoList = await _visitTaskRepository.Where(x => subjectVisitIds.Contains(x.SourceSubjectVisitId ?? default(Guid))&&x.TaskState==TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
||||||
|
|
||||||
foreach (var item in taskInfoList)
|
foreach (var item in taskInfoList)
|
||||||
{
|
{
|
||||||
|
@ -371,30 +374,54 @@ namespace IRaCIS.Application.Services
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ReadingSetType.TumorReading:
|
case ReadingSetType.TumorReading:
|
||||||
|
|
||||||
|
|
||||||
|
var trialInfo = await _trialRepository.Where(x => x.Id == readingPeriodSet.TrialId).FirstNotNullAsync();
|
||||||
|
|
||||||
var globalModuleIds = await _readModuleRepository.Where(x => subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync();
|
var globalModuleIds = await _readModuleRepository.Where(x => subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
var globalTaskInfo = await _visitTaskRepository.Where(x => globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
var globalTaskInfo = await _visitTaskRepository.Where(x => globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned).GroupBy(x=> new { x.SouceReadModuleId }).Select(x =>
|
||||||
|
new {
|
||||||
|
SouceReadModuleId=x.Key.SouceReadModuleId,
|
||||||
|
Count=x.ToList().Count,
|
||||||
|
TaskId = x.Select(x=>x.Id).FirstOrDefault(),
|
||||||
|
ReadModuleId = x.Select(x => x.SouceReadModuleId).FirstOrDefault(),
|
||||||
|
JudgeTaskId = x.Select(x => x.JudgeVisitTaskId).FirstOrDefault(),
|
||||||
|
JudgeTaskResultId = x.Select(x => x.JudgeVisitTask.JudgeResultTaskId).FirstOrDefault(),
|
||||||
|
}).ToListAsync();
|
||||||
foreach (var item in globalTaskInfo)
|
foreach (var item in globalTaskInfo)
|
||||||
{
|
{
|
||||||
var readModule = readModules.Where(x => x.SubjectVisitId == item.SourceSubjectVisitId).FirstOrDefault();
|
|
||||||
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
|
||||||
|
if (item.Count == (int)trialInfo.ReadingType)
|
||||||
{
|
{
|
||||||
OriginalVisitId = item.Id,
|
if (item.JudgeTaskId == null || item.JudgeTaskResultId != null)
|
||||||
ReadingCategory = GenerateTaskCategory.Oncology,
|
{
|
||||||
TrialId = item.TrialId,
|
var readModule = readModules.Where(x => x.Id == item.ReadModuleId).FirstOrDefault();
|
||||||
ReadingGenerataTaskList = new List<ReadingGenerataTaskDTO>() {
|
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||||
new ReadingGenerataTaskDTO()
|
{
|
||||||
{
|
OriginalVisitId = item.TaskId,
|
||||||
IsUrgent = readModule.IsUrgent ?? false,
|
ReadingCategory = GenerateTaskCategory.Oncology,
|
||||||
SubjectId = readModule.SubjectId,
|
TrialId = readingPeriodSet.TrialId,
|
||||||
VisitNum=readModule.VisitNum,
|
ReadingGenerataTaskList = new List<ReadingGenerataTaskDTO>() {
|
||||||
ReadingName = readModule.ModuleName,
|
new ReadingGenerataTaskDTO()
|
||||||
ReadModuleId =readModule.Id,
|
{
|
||||||
ReadingCategory = ReadingCategory.Oncology,
|
IsUrgent = readModule.IsUrgent ?? false,
|
||||||
}
|
SubjectId = readModule.SubjectId,
|
||||||
|
VisitNum=readModule.VisitNum,
|
||||||
|
ReadingName = readModule.ModuleName,
|
||||||
|
ReadModuleId =readModule.Id,
|
||||||
|
ReadingCategory = ReadingCategory.Oncology,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue