修改
This commit is contained in:
@@ -29,6 +29,28 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||
public Guid GlobalTaskId { get; set; }
|
||||
}
|
||||
|
||||
public class SetOncologyQuestion
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评估结果
|
||||
/// </summary>
|
||||
public string EvaluationResult { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 评估原因
|
||||
/// </summary>
|
||||
public string EvaluationReason { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class SetOncologyReadingInfoInDto
|
||||
{
|
||||
public Guid OncologyTaskId { get; set; }
|
||||
|
||||
public List<SetOncologyQuestion> OncologyQuestionList { get; set; }
|
||||
}
|
||||
|
||||
public class SaveGlobalReadingInfoInDto
|
||||
{
|
||||
public Guid GlobalTaskId { get; set; }
|
||||
@@ -51,10 +73,22 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||
public string Answer { get; set; }
|
||||
}
|
||||
|
||||
public class GetOncologyReadingInfoOutDto
|
||||
|
||||
public class OncologyQuestion
|
||||
{
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
public string QuestionName { get; set; }
|
||||
|
||||
public string Answer { get; set; }
|
||||
}
|
||||
|
||||
public class OncologyVisitTaskInfo
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public string VisitName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评估结果
|
||||
/// </summary>
|
||||
@@ -64,6 +98,27 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||
/// 评估原因
|
||||
/// </summary>
|
||||
public string EvaluationReason { get; set; } = string.Empty;
|
||||
|
||||
|
||||
public List<OncologyQuestion> QuestionList { get; set; } = new List<OncologyQuestion>();
|
||||
|
||||
}
|
||||
|
||||
public class GetOncologyReadingInfoOutDto
|
||||
{
|
||||
public Guid OncologyTaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评估结果
|
||||
/// </summary>
|
||||
public string TrialEvaluationResult { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 评估原因
|
||||
/// </summary>
|
||||
public string TrialEvaluationReason { get; set; } = string.Empty;
|
||||
|
||||
public List<OncologyVisitTaskInfo> OncologyVisits { get; set; } = new List<OncologyVisitTaskInfo>();
|
||||
}
|
||||
|
||||
public class GetOncologyReadingInfoInDto
|
||||
|
||||
@@ -19,5 +19,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
void FindChildQuestion(GetTrialReadingQuestionOutDto trialReadingQuestion, List<GetTrialReadingQuestionOutDto> questionlists);
|
||||
|
||||
Task<IResponseOutput> SubmitGlobalReadingInfo(SubmitGlobalReadingInfoInDto inDto);
|
||||
|
||||
Task<IResponseOutput> SetOncologyReadingInfo(SetOncologyReadingInfoInDto inDto);
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ namespace IRaCIS.Application.Services
|
||||
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IRepository<ReadingOncologyTaskInfo> _readingOncologyTaskInfoRepository;
|
||||
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
||||
private readonly IVisitTaskService _visitTaskService;
|
||||
private readonly IReadingClinicalDataService _readingClinicalDataService;
|
||||
@@ -51,6 +52,7 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
||||
IRepository<VisitTask> visitTaskRepository,
|
||||
IRepository<Trial> TrialRepository,
|
||||
IRepository<ReadingOncologyTaskInfo> ReadingOncologyTaskInfoRepository,
|
||||
IVisitTaskHelpeService visitTaskHelpeService,
|
||||
IVisitTaskService visitTaskService,
|
||||
IReadingClinicalDataService readingClinicalDataService,
|
||||
@@ -71,6 +73,7 @@ namespace IRaCIS.Application.Services
|
||||
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
||||
this._visitTaskRepository = visitTaskRepository;
|
||||
this._trialRepository = TrialRepository;
|
||||
this._readingOncologyTaskInfoRepository = ReadingOncologyTaskInfoRepository;
|
||||
this._visitTaskHelpeService = visitTaskHelpeService;
|
||||
this._visitTaskService = visitTaskService;
|
||||
this._readingClinicalDataService = readingClinicalDataService;
|
||||
@@ -88,16 +91,135 @@ namespace IRaCIS.Application.Services
|
||||
}
|
||||
|
||||
#region 肿瘤学阅片相关
|
||||
//public async Task<GetOncologyReadingInfoOutDto> GetOncologyReadingInfo(GetOncologyReadingInfoInDto inDto)
|
||||
//{
|
||||
// var taskInfo= await _visitTaskRepository.Where(x=>x.)
|
||||
|
||||
// var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm).FirstOrDefaultAsync();
|
||||
// if (trialCriterion == null)
|
||||
// {
|
||||
// throw new BusinessValidationFailedException("请先确认一个项目标准。");
|
||||
// }
|
||||
//}
|
||||
/// <summary>
|
||||
/// 获取肿瘤学任务信息
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||
[HttpPost]
|
||||
public async Task<GetOncologyReadingInfoOutDto> GetOncologyReadingInfo(GetOncologyReadingInfoInDto inDto)
|
||||
{
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
|
||||
if (taskInfo.ReadingCategory != ReadingCategory.Oncology)
|
||||
{
|
||||
throw new BusinessValidationFailedException("当前任务不是肿瘤学任务");
|
||||
}
|
||||
|
||||
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == taskInfo.TrialId && x.IsConfirm).FirstOrDefaultAsync();
|
||||
if (trialCriterion == null)
|
||||
{
|
||||
throw new BusinessValidationFailedException("请先确认一个项目标准。");
|
||||
}
|
||||
|
||||
GetOncologyReadingInfoOutDto result = new GetOncologyReadingInfoOutDto() {
|
||||
TrialEvaluationResult= trialCriterion.EvaluationResult,
|
||||
TrialEvaluationReason = trialCriterion.EvaluationReason,
|
||||
OncologyTaskId = inDto.VisitTaskId,
|
||||
};
|
||||
|
||||
// 先找到是R1还是R2的阅片 先找到全局阅片
|
||||
|
||||
var globalTaskInfo= await _visitTaskRepository
|
||||
.Where(x => x.SubjectId == taskInfo.SubjectId&&
|
||||
x.TaskState== TaskState.Effect&&
|
||||
x.ReadingCategory== ReadingCategory.Global&&
|
||||
x.VisitTaskNum< taskInfo.VisitTaskNum
|
||||
).OrderByDescending(x=>x.VisitTaskNum)
|
||||
.FirstNotNullAsync();
|
||||
|
||||
|
||||
// 最后取哪组的数据
|
||||
VisitTask visitTask = new VisitTask();
|
||||
|
||||
// 判断是否产生裁判
|
||||
|
||||
if (globalTaskInfo.JudgeVisitTaskId == null)
|
||||
{
|
||||
visitTask = globalTaskInfo;
|
||||
}
|
||||
else
|
||||
{
|
||||
var judgeResultTaskId = await _visitTaskRepository.Where(x => x.Id == globalTaskInfo.JudgeVisitTaskId).Select(x => x.JudgeResultTaskId).FirstOrDefaultAsync();
|
||||
if (judgeResultTaskId == null)
|
||||
{
|
||||
throw new BusinessValidationFailedException("异常,裁判结果为null");
|
||||
}
|
||||
visitTask = await _visitTaskRepository.Where(x=>x.Id== judgeResultTaskId).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
|
||||
// 找到对应的访视
|
||||
|
||||
List<OncologyVisitTaskInfo> oncologyVisits = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
|
||||
x.SubjectId == visitTask.SubjectId && x.IsAnalysisCreate == visitTask.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < visitTask.VisitTaskNum)
|
||||
.WhereIf(visitTask.ArmEnum == Arm.GroupConsistentArm, x => x.DoctorUserId == visitTask.DoctorUserId)
|
||||
.WhereIf(visitTask.ArmEnum != Arm.GroupConsistentArm, x => x.ArmEnum == visitTask.ArmEnum)
|
||||
.OrderBy(x => x.VisitTaskNum).Select(x => new OncologyVisitTaskInfo()
|
||||
{
|
||||
VisitName = x.SourceSubjectVisit.VisitName,
|
||||
VisitTaskId = x.Id,
|
||||
QuestionList = x.ReadingTaskQuestionAnswerList.Where(y => y.ReadingQuestionTrial.IsJudgeQuestion).OrderBy(y => y.ReadingQuestionTrial.ShowOrder)
|
||||
.Select(y => new OncologyQuestion()
|
||||
{
|
||||
QuestionId = y.ReadingQuestionTrialId,
|
||||
QuestionName = y.ReadingQuestionTrial.QuestionName,
|
||||
Answer = y.Answer
|
||||
}).ToList()
|
||||
}).ToListAsync();
|
||||
|
||||
var oncologyReadingQuestions = await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == inDto.VisitTaskId).ToListAsync();
|
||||
|
||||
oncologyVisits.ForEach(x =>
|
||||
{
|
||||
var oncologyData = oncologyReadingQuestions.Where(y => y.VisitTaskId == x.VisitTaskId).FirstOrDefault();
|
||||
|
||||
if (oncologyData != null)
|
||||
{
|
||||
x.EvaluationResult = oncologyData.EvaluationResult;
|
||||
x.EvaluationReason = oncologyData.EvaluationReason;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
result.OncologyVisits = oncologyVisits;
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改全局阅片信息
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> SetOncologyReadingInfo(SetOncologyReadingInfoInDto inDto)
|
||||
{
|
||||
await _readingOncologyTaskInfoRepository.BatchDeleteNoTrackingAsync(x => x.OncologyTaskId == inDto.OncologyTaskId);
|
||||
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.OncologyTaskId).FirstNotNullAsync();
|
||||
|
||||
List<ReadingOncologyTaskInfo> readingOncologies = inDto.OncologyQuestionList.Select(x => new ReadingOncologyTaskInfo()
|
||||
{
|
||||
EvaluationReason = x.EvaluationReason,
|
||||
SubjectId = taskInfo.SubjectId,
|
||||
EvaluationResult = x.EvaluationResult,
|
||||
OncologyTaskId = inDto.OncologyTaskId,
|
||||
TrialId = taskInfo.TrialId,
|
||||
VisitTaskId = x.VisitTaskId
|
||||
}).ToList();
|
||||
|
||||
await _readingOncologyTaskInfoRepository.AddRangeAsync(readingOncologies);
|
||||
|
||||
var result = await _readingOncologyTaskInfoRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok(result);
|
||||
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 全局阅片相关
|
||||
|
||||
Reference in New Issue
Block a user