Uat_Study
parent
435384cf92
commit
00427897a6
|
@ -106,6 +106,20 @@ namespace IRaCIS.Core.API.Controllers
|
|||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 提交肿瘤学阅片任务
|
||||
/// </summary>
|
||||
/// <param name="opt"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, Route("Inspection/ReadingImageTask/SetOncologyReadingInfo")]
|
||||
[UnitOfWork]
|
||||
public async Task<IResponseOutput> SetOncologyReadingInfo(DataInspectionDto<SetOncologyReadingInfoInDto> opt)
|
||||
{
|
||||
var singid = await _inspectionService.RecordSing(opt.SignInfo);
|
||||
var result = await _iReadingImageTaskService.SetOncologyReadingInfo(opt.Data);
|
||||
await _inspectionService.CompletedSign(singid, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 提交全局阅片任务
|
||||
|
|
|
@ -1507,6 +1507,36 @@
|
|||
文件路径
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.SetOncologyQuestion.EvaluationResult">
|
||||
<summary>
|
||||
评估结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.SetOncologyQuestion.EvaluationReason">
|
||||
<summary>
|
||||
评估原因
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OncologyVisitTaskInfo.EvaluationResult">
|
||||
<summary>
|
||||
评估结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.OncologyVisitTaskInfo.EvaluationReason">
|
||||
<summary>
|
||||
评估原因
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetOncologyReadingInfoOutDto.TrialEvaluationResult">
|
||||
<summary>
|
||||
评估结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetOncologyReadingInfoOutDto.TrialEvaluationReason">
|
||||
<summary>
|
||||
评估原因
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetGlobalReadingInfoInDto.UsingOriginalData">
|
||||
<summary>
|
||||
当新答案为空的时候 是否是有原数据
|
||||
|
@ -4235,6 +4265,31 @@
|
|||
项目问题集合
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.TrialId">
|
||||
<summary>
|
||||
项目ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.EvaluationResult">
|
||||
<summary>
|
||||
评估结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.EvaluationReason">
|
||||
<summary>
|
||||
评估原因
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.EvaluationResult">
|
||||
<summary>
|
||||
评估结果
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.EvaluationReason">
|
||||
<summary>
|
||||
评估原因
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IRaCIS.Core.Application.Contracts.SetTrialReadingCriterionInDto.FormType">
|
||||
<summary>
|
||||
表单类型
|
||||
|
@ -4876,6 +4931,20 @@
|
|||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetOncologySet(IRaCIS.Core.Application.Contracts.GetOncologySetInDto)">
|
||||
<summary>
|
||||
获取项目肿瘤学配置
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.SetOncologySet(IRaCIS.Core.Application.Contracts.SetOncologySetInDto)">
|
||||
<summary>
|
||||
设置项目肿瘤学配置
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialReadingJudgeList(IRaCIS.Core.Application.Contracts.GetTrialReadingInfoInDto)">
|
||||
<summary>
|
||||
获取项目裁判信息
|
||||
|
@ -5781,6 +5850,21 @@
|
|||
IR影像阅片
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.GetOncologyReadingInfo(IRaCIS.Core.Application.Service.Reading.Dto.GetOncologyReadingInfoInDto)">
|
||||
<summary>
|
||||
获取肿瘤学任务信息
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SetOncologyReadingInfo(IRaCIS.Core.Application.Service.Reading.Dto.SetOncologyReadingInfoInDto)">
|
||||
<summary>
|
||||
修改全局阅片信息
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SaveGlobalReadingInfo(IRaCIS.Core.Application.Service.Reading.Dto.SaveGlobalReadingInfoInDto)">
|
||||
<summary>
|
||||
保存全局阅片结果
|
||||
|
|
|
@ -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 全局阅片相关
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace IRaCIS.Core.Domain.Models
|
|||
/// <summary>
|
||||
/// 访视任务Id
|
||||
/// </summary>
|
||||
public Guid TaskId { get; set; }
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 结果
|
||||
|
|
|
@ -79,7 +79,7 @@ namespace IRaCIS.Core.Domain.Models
|
|||
/// <summary>
|
||||
/// 评估原因
|
||||
/// </summary>
|
||||
public string EvaluationReason { get; set; } = string.Empty;
|
||||
public string EvaluationReason { get; set; } = "肿瘤学阅片评估原因请依据临床数据填写,在与影像学结果不一致时必填。";
|
||||
|
||||
/// <summary>
|
||||
/// 项目
|
||||
|
|
Loading…
Reference in New Issue