Uat_Study
parent
102a6f851a
commit
ca3c818ac7
|
@ -28,6 +28,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
public int ShowOrder { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否显示在Dicom阅片中
|
||||
/// </summary>
|
||||
public bool IsShowInDicom { get; set; } = false;
|
||||
|
||||
public int RowIndex { get; set; }
|
||||
|
||||
public string GroupName { get; set; }
|
||||
|
@ -52,6 +58,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public string Answer { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -141,6 +149,36 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public string TaskName { get; set; }
|
||||
|
||||
public decimal VisitTaskNum { get; set; }
|
||||
|
||||
public bool IsCurrentTask { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class ChangeDicomReadingQuestionAnswerInDto
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public List<ChangeDicomReadingQuestionAnswerDto> Answers { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class ChangeDicomReadingQuestionAnswerDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public string Answer { get; set; }
|
||||
}
|
||||
public class DicomReadingQuestionAnswer : ReadingQuestionTrial
|
||||
{
|
||||
public string Answer { get; set; }
|
||||
|
||||
public List<DicomReadingQuestionAnswer> Childrens = new List<DicomReadingQuestionAnswer>();
|
||||
}
|
||||
public class GetDicomReadingQuestionAnswerInDto
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public Guid TrialId { get; set; }
|
||||
}
|
||||
|
||||
public class GetReadingReportEvaluationInDto
|
||||
|
@ -205,6 +243,51 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
public List<GetTrialReadingQuestionOutDto> RelationQuestions { get; set; } = new List<GetTrialReadingQuestionOutDto>();
|
||||
}
|
||||
|
||||
|
||||
public class GetTableAnswerRowInfoOutDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// QuestionId
|
||||
/// </summary>
|
||||
public Guid QuestionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// VisitTaskId
|
||||
/// </summary>
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// TrialId
|
||||
/// </summary>
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// InstanceId
|
||||
/// </summary>
|
||||
public Guid? InstanceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// SeriesId
|
||||
/// </summary>
|
||||
public Guid? SeriesId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RowIndex
|
||||
/// </summary>
|
||||
public int RowIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// MeasureData
|
||||
/// </summary>
|
||||
public string MeasureData { get; set; }
|
||||
|
||||
public int ShowOrder { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class GetTableAnswerRowInfoInDto
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// <summary>
|
||||
/// 阅片计算
|
||||
/// </summary>
|
||||
[NonDynamicWebApi]
|
||||
|
||||
[ApiExplorerSettings(GroupName = "Reading")]
|
||||
public class ReadingCalculateService : BaseService, IReadingCalculateService
|
||||
{
|
||||
|
@ -57,6 +57,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task CalculateTask(CalculateTaskInDto inDto)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
|
|
|
@ -108,6 +108,75 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
#region 表格问题相关
|
||||
|
||||
/// <summary>
|
||||
/// 修改Dicom阅片问题
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> ChangeDicomReadingQuestionAnswer(ChangeDicomReadingQuestionAnswerInDto inDto)
|
||||
{
|
||||
|
||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
var criterionId = await _readingQuestionCriterionTrialRepository.Where(x => x.IsConfirm && x.TrialId == taskInfo.TrialId).Select(x => x.Id).FirstOrDefaultAsync();
|
||||
|
||||
var questionIds = inDto.Answers.Select(x => x.Id).ToList();
|
||||
await _readingTaskQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionIds.Contains(x.ReadingQuestionTrialId));
|
||||
|
||||
var needAddAnswer = inDto.Answers.Select(x => new ReadingTaskQuestionAnswer()
|
||||
{
|
||||
|
||||
Answer = x.Answer,
|
||||
SubjectId = taskInfo.SubjectId,
|
||||
ReadingQuestionCriterionTrialId = criterionId,
|
||||
ReadingQuestionTrialId = x.Id,
|
||||
TrialId = taskInfo.TrialId,
|
||||
VisitTaskId = inDto.VisitTaskId,
|
||||
|
||||
}).ToList();
|
||||
|
||||
await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer);
|
||||
|
||||
await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(true);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取DIcom阅片问题答案
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<DicomReadingQuestionAnswer>> GetDicomReadingQuestionAnswer(GetDicomReadingQuestionAnswerInDto inDto)
|
||||
{
|
||||
var criterionId = await _readingQuestionCriterionTrialRepository.Where(x => x.IsConfirm && x.TrialId == inDto.TrialId).Select(x => x.Id).FirstOrDefaultAsync();
|
||||
|
||||
var questions = await _readingQuestionTrialRepository.Where(x => x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == criterionId)
|
||||
.ProjectTo<DicomReadingQuestionAnswer>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||
|
||||
var answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ToListAsync();
|
||||
|
||||
var result = questions.Where(x => x.Type == "group").ToList();
|
||||
|
||||
foreach (var item in result)
|
||||
{
|
||||
GetDicomReadingAnswer(item, questions, answers);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item,List<DicomReadingQuestionAnswer> questions,List<ReadingTaskQuestionAnswer> answers)
|
||||
{
|
||||
item.Answer = answers.Where(x => x.ReadingQuestionTrialId == item.Id).Select(x => x.Answer).FirstIsNullReturnEmpty();
|
||||
item.Childrens = questions.Where(x => x.ParentId == item.Id || (x.GroupName == item.GroupName && x.ParentId == null)).ToList();
|
||||
foreach (var question in item.Childrens)
|
||||
{
|
||||
GetDicomReadingAnswer(question, questions, answers);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取阅片报告
|
||||
/// </summary>
|
||||
|
@ -128,6 +197,8 @@ namespace IRaCIS.Application.Services
|
|||
VisitTaskId = x.Id,
|
||||
TaskName = x.TaskName,
|
||||
VisitTaskNum = x.VisitTaskNum,
|
||||
IsCurrentTask=x.Id==indto.VisitTaskId,
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
result.VisitTaskList = taskInfoList;
|
||||
|
@ -150,8 +221,10 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
QuestionId = x.Id,
|
||||
GroupName = x.GroupName,
|
||||
IsShowInDicom=x.IsShowInDicom,
|
||||
QuestionName = x.QuestionName,
|
||||
ShowOrder = x.ShowOrder,
|
||||
|
||||
}).ToList();
|
||||
|
||||
// 分组
|
||||
|
@ -161,6 +234,7 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
GroupName = x.GroupName,
|
||||
QuestionId = x.Id,
|
||||
IsShowInDicom = x.IsShowInDicom,
|
||||
QuestionName = x.QuestionName,
|
||||
ShowOrder = x.ShowOrder,
|
||||
OrderMark=x.OrderMark,
|
||||
|
@ -248,10 +322,11 @@ namespace IRaCIS.Application.Services
|
|||
/// (QuestionId) 可为空
|
||||
/// </remarks>
|
||||
/// <returns></returns>
|
||||
public async Task<List<ReadingTableAnswerRowInfo>> GetTableAnswerRowInfoList(GetTableAnswerRowInfoInDto inDto)
|
||||
public async Task<List<GetTableAnswerRowInfoOutDto>> GetTableAnswerRowInfoList(GetTableAnswerRowInfoInDto inDto)
|
||||
{
|
||||
return await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId)
|
||||
.WhereIf(inDto.QuestionId != null, x => x.QuestionId == inDto.QuestionId)
|
||||
.ProjectTo<GetTableAnswerRowInfoOutDto>(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ThenBy(x=>x.RowIndex)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
|
|
|
@ -51,6 +51,19 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
#region 阅片问题
|
||||
|
||||
// 忽略列
|
||||
CreateMap<ReadingQuestionTrial, DicomReadingQuestionAnswer>()
|
||||
.ForMember(dest => dest.ReadingCriterionPage, opt => opt.Ignore())
|
||||
.ForMember(dest => dest.ParentReadingQuestionTrial, opt => opt.Ignore())
|
||||
.ForMember(dest => dest.RelevanceReadingQuestionTrial, opt => opt.Ignore())
|
||||
.ForMember(dest => dest.ReadingQuestionCriterionTrial, opt => opt.Ignore());
|
||||
|
||||
|
||||
CreateMap<ReadingTableAnswerRowInfo, GetTableAnswerRowInfoOutDto>()
|
||||
.ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder));
|
||||
|
||||
|
||||
|
||||
CreateMap<ReadingTableQuestionTrial, TableQuestionTrial>();
|
||||
CreateMap<ReadingTableQuestionAnswer, ReadingTableQuestionAnswerInfo>()
|
||||
.ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder));
|
||||
|
|
|
@ -60,8 +60,11 @@ namespace IRaCIS.Core.Domain.Models
|
|||
/// CreateUserId
|
||||
/// </summary>
|
||||
public Guid CreateUserId { get; set; }
|
||||
|
||||
}
|
||||
|
||||
[ForeignKey("QuestionId")]
|
||||
public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue