修改一版
parent
3333744391
commit
fa0f04c808
|
@ -5,10 +5,14 @@
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
public interface IVisitTaskHelpeService
|
public interface IVisitTaskHelpeService
|
||||||
{
|
{
|
||||||
Task GenerateVisitTaskAsync(Guid trialId, List<Guid> subjectVisitIdList, bool isAssignSubjectToDoctor = false);
|
Task GenerateVisitTaskAsync(Guid trialId, List<Guid> subjectVisitIdList, bool isAssignSubjectToDoctor = false);
|
||||||
|
|
||||||
|
Task AddTaskAsync(GenerateTaskCommand generateTaskCommand);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -294,7 +294,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
SubjectId = firstTask.SubjectId,
|
SubjectId = firstTask.SubjectId,
|
||||||
ReadingTaskState = ReadingTaskState.WaitReading,
|
ReadingTaskState = ReadingTaskState.WaitReading,
|
||||||
TaskName = firstTask.TaskName + "AD",
|
TaskName = firstTask.TaskName,
|
||||||
ReadingCategory = ReadingCategory.Judge,
|
ReadingCategory = ReadingCategory.Judge,
|
||||||
TrialId = firstTask.TrialId,
|
TrialId = firstTask.TrialId,
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public string TypeValue { get; set; }
|
public string TypeValue { get; set; }
|
||||||
|
|
||||||
public List<string> AnswerGroup { get; set; }
|
public List<AnswerGroupDto> AnswerGroup { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -153,6 +153,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class AnswerGroupDto
|
||||||
|
{
|
||||||
|
public List<string> AnswerGroupA { get; set; }
|
||||||
|
|
||||||
|
public List<string> AnswerGroupB { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class TaskAnswerDto
|
public class TaskAnswerDto
|
||||||
{
|
{
|
||||||
public Guid VisitTaskId { get; set; }
|
public Guid VisitTaskId { get; set; }
|
||||||
|
|
|
@ -15,6 +15,8 @@ using AutoMapper;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using IRaCIS.Core.Application.Service;
|
||||||
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -27,15 +29,18 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IMapper mapper;
|
private readonly IMapper mapper;
|
||||||
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
||||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
|
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||||
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||||
|
|
||||||
|
|
||||||
public ReadingImageTaskService(
|
public ReadingImageTaskService(
|
||||||
IMapper mapper,
|
IMapper mapper,
|
||||||
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
||||||
IRepository<VisitTask> visitTaskRepository,
|
IRepository<VisitTask> visitTaskRepository,
|
||||||
|
IVisitTaskHelpeService visitTaskHelpeService,
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
|
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||||
|
@ -45,6 +50,7 @@ namespace IRaCIS.Application.Services
|
||||||
this.mapper = mapper;
|
this.mapper = mapper;
|
||||||
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
||||||
this._visitTaskRepository = visitTaskRepository;
|
this._visitTaskRepository = visitTaskRepository;
|
||||||
|
this._visitTaskHelpeService = visitTaskHelpeService;
|
||||||
this._subjectVisitRepository = subjectVisitRepository;
|
this._subjectVisitRepository = subjectVisitRepository;
|
||||||
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||||
|
@ -170,7 +176,7 @@ namespace IRaCIS.Application.Services
|
||||||
var result = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId && x.IsJudgeQuestion)
|
var result = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId && x.IsJudgeQuestion)
|
||||||
.Select(x => new GetTrialCriterionJudgeQuestionListOutDto()
|
.Select(x => new GetTrialCriterionJudgeQuestionListOutDto()
|
||||||
{
|
{
|
||||||
AnswerGroup = JsonConvert.DeserializeObject<List<string>>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup),
|
AnswerGroup = JsonConvert.DeserializeObject<List<AnswerGroupDto>>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup),
|
||||||
QuestionName = x.QuestionName,
|
QuestionName = x.QuestionName,
|
||||||
TypeValue =x.TypeValue,
|
TypeValue =x.TypeValue,
|
||||||
ReadingQuestionTrialId = x.Id
|
ReadingQuestionTrialId = x.Id
|
||||||
|
@ -301,17 +307,92 @@ namespace IRaCIS.Application.Services
|
||||||
ReadingTaskState = ReadingTaskState.HaveSigned
|
ReadingTaskState = ReadingTaskState.HaveSigned
|
||||||
});
|
});
|
||||||
var result = await _visitTaskRepository.SaveChangesAsync();
|
var result = await _visitTaskRepository.SaveChangesAsync();
|
||||||
await this.TriggerJudgeQuestion(inDto.VisitTaskId);
|
await this.TriggerJudgeQuestionNew(inDto.VisitTaskId);
|
||||||
|
|
||||||
return ResponseOutput.Ok(result);
|
return ResponseOutput.Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 触发裁判任务
|
/// 添加阅片期任务
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task AddReadingTask(Guid VisitTaskId)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 触发裁判任务(新)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="VisitTaskId"></param>
|
/// <param name="VisitTaskId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task TriggerJudgeQuestion(Guid VisitTaskId)
|
private async Task TriggerJudgeQuestionNew(Guid VisitTaskId)
|
||||||
|
{
|
||||||
|
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
|
||||||
|
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
||||||
|
if (visitTaskids.Count == 2)
|
||||||
|
{
|
||||||
|
var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x => visitTaskids.Contains(x.VisitTaskId))
|
||||||
|
join question in _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion) on new { ReadingQuestionTrialId = questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId = question.Id }
|
||||||
|
select new TaskAnswerDto()
|
||||||
|
{
|
||||||
|
Answer = questionAnswet.Answer,
|
||||||
|
AnswerGroup = question.AnswerGroup,
|
||||||
|
QuestionId = question.Id,
|
||||||
|
VisitTaskId = questionAnswet.VisitTaskId,
|
||||||
|
};
|
||||||
|
var questionAnswerlist = await query.ToListAsync();
|
||||||
|
List<GroupTaskAnswerDto> groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup }).Select(x => new GroupTaskAnswerDto
|
||||||
|
{
|
||||||
|
QuestionId = x.Key.QuestionId,
|
||||||
|
AnswerGroup = x.Key.AnswerGroup,
|
||||||
|
TaskAnswerList = x.ToList(),
|
||||||
|
}).ToList();
|
||||||
|
var verificationResults = false;
|
||||||
|
foreach (var item in groupTasks)
|
||||||
|
{
|
||||||
|
if (item.TaskAnswerList.Count() != 2)
|
||||||
|
{
|
||||||
|
verificationResults = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var taskAnswer1 = item.TaskAnswerList[0];
|
||||||
|
var taskAnswer2 = item.TaskAnswerList[1];
|
||||||
|
if (taskAnswer1.Answer != taskAnswer2.Answer)
|
||||||
|
{
|
||||||
|
var answerGroup = JsonConvert.DeserializeObject<List<AnswerGroupDto>>(item.AnswerGroup==string.Empty?"[]": item.AnswerGroup).ToList();
|
||||||
|
answerGroup.ForEach(x =>
|
||||||
|
{
|
||||||
|
if (x.AnswerGroupA.Contains(taskAnswer1.Answer) && x.AnswerGroupB.Contains(taskAnswer2.Answer))
|
||||||
|
{
|
||||||
|
verificationResults = true;
|
||||||
|
}
|
||||||
|
if (x.AnswerGroupB.Contains(taskAnswer1.Answer) && x.AnswerGroupA.Contains(taskAnswer2.Answer))
|
||||||
|
{
|
||||||
|
verificationResults = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (verificationResults)
|
||||||
|
{
|
||||||
|
await this.SaveJudgeTask(new SaveJudgeTaskDto()
|
||||||
|
{
|
||||||
|
VisitTaskIds = visitTaskids,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 触发裁判任务(老)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="VisitTaskId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
||||||
|
@ -379,29 +460,14 @@ namespace IRaCIS.Application.Services
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task SaveJudgeTask(SaveJudgeTaskDto inDto)
|
private async Task SaveJudgeTask(SaveJudgeTaskDto inDto)
|
||||||
{
|
{
|
||||||
var firstTask = await _visitTaskRepository.Where(x => inDto.VisitTaskIds.Contains(x.Id)).FirstOrDefaultAsync();
|
var trialId = await _visitTaskRepository.Where(x => inDto.VisitTaskIds.Contains(x.Id)).Select(x => x.TrialId).FirstOrDefaultAsync();
|
||||||
|
|
||||||
VisitTask visitTask = new VisitTask()
|
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||||
{
|
{
|
||||||
Id = NewId.NextGuid(),
|
JudgeVisitTaskIdList= inDto.VisitTaskIds,
|
||||||
ArmEnum = Arm.JudgeArm,
|
ReadingCategory= ReadingCategory.Judge,
|
||||||
SouceReadModuleId = firstTask.SouceReadModuleId,
|
TrialId= trialId
|
||||||
SourceSubjectVisitId = firstTask.SourceSubjectVisitId,
|
|
||||||
SubjectId = firstTask.SubjectId,
|
|
||||||
ReadingTaskState = ReadingTaskState.WaitReading,
|
|
||||||
TaskName = firstTask.TaskName + " AD",
|
|
||||||
ReadingCategory = ReadingCategory.Judge,
|
|
||||||
TrialId = firstTask.TrialId,
|
|
||||||
};
|
|
||||||
|
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => inDto.VisitTaskIds.Contains(x.Id), x => new VisitTask()
|
|
||||||
{
|
|
||||||
JudgeVisitTaskId = visitTask.Id
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await _visitTaskRepository.AddAsync(visitTask);
|
|
||||||
|
|
||||||
await _visitTaskRepository.SaveChangesAsync();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue