From ca3c818ac7b115e03862b527f7bd10be3200da90 Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Thu, 1 Sep 2022 14:03:05 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Reading/Dto/ReadingImageTaskViewModel.cs | 83 +++++++++++++++++++
.../Reading/ReadingCalculateService.cs | 3 +-
.../Reading/ReadingImageTaskService.cs | 77 ++++++++++++++++-
.../Service/Reading/_MapConfig.cs | 13 +++
.../Reading/ReadingTableAnswerRowInfo.cs | 7 +-
5 files changed, 179 insertions(+), 4 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
index 1eee09dc8..18308a6c0 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
@@ -28,6 +28,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public int ShowOrder { get; set; }
+
+ ///
+ /// 是否显示在Dicom阅片中
+ ///
+ 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 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 Childrens = new List();
+ }
+ 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 RelationQuestions { get; set; } = new List();
}
+
+ public class GetTableAnswerRowInfoOutDto
+ {
+ public Guid Id { get; set; }
+
+ ///
+ /// QuestionId
+ ///
+ public Guid QuestionId { get; set; }
+
+ ///
+ /// VisitTaskId
+ ///
+ public Guid VisitTaskId { get; set; }
+
+ ///
+ /// TrialId
+ ///
+ public Guid TrialId { get; set; }
+
+
+ ///
+ /// InstanceId
+ ///
+ public Guid? InstanceId { get; set; }
+
+ ///
+ /// SeriesId
+ ///
+ public Guid? SeriesId { get; set; }
+
+ ///
+ /// RowIndex
+ ///
+ public int RowIndex { get; set; }
+
+ ///
+ /// MeasureData
+ ///
+ public string MeasureData { get; set; }
+
+ public int ShowOrder { get; set; }
+
+ }
+
public class GetTableAnswerRowInfoInDto
{
public Guid VisitTaskId { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs
index 80105ea76..d4dff623d 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs
@@ -17,7 +17,7 @@ namespace IRaCIS.Core.Application.Service
///
/// 阅片计算
///
- [NonDynamicWebApi]
+
[ApiExplorerSettings(GroupName = "Reading")]
public class ReadingCalculateService : BaseService, IReadingCalculateService
{
@@ -57,6 +57,7 @@ namespace IRaCIS.Core.Application.Service
///
///
///
+ [HttpPost]
public async Task CalculateTask(CalculateTaskInDto inDto)
{
var visitTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
index 4082ab458..bf12cba96 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs
@@ -108,6 +108,75 @@ namespace IRaCIS.Application.Services
#region 表格问题相关
+ ///
+ /// 修改Dicom阅片问题
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task 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);
+ }
+
+
+ ///
+ /// 获取DIcom阅片问题答案
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task> 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(_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 questions,List 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);
+ }
+ }
+
///
/// 获取阅片报告
///
@@ -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) 可为空
///
///
- public async Task> GetTableAnswerRowInfoList(GetTableAnswerRowInfoInDto inDto)
+ public async Task> GetTableAnswerRowInfoList(GetTableAnswerRowInfoInDto inDto)
{
return await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId)
.WhereIf(inDto.QuestionId != null, x => x.QuestionId == inDto.QuestionId)
+ .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ThenBy(x=>x.RowIndex)
.ToListAsync();
}
diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
index 7695c74da..cd66366f2 100644
--- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
@@ -51,6 +51,19 @@ namespace IRaCIS.Core.Application.Service
#region 阅片问题
+ // 忽略列
+ CreateMap()
+ .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()
+ .ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder));
+
+
+
CreateMap();
CreateMap()
.ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder));
diff --git a/IRaCIS.Core.Domain/Reading/ReadingTableAnswerRowInfo.cs b/IRaCIS.Core.Domain/Reading/ReadingTableAnswerRowInfo.cs
index 7aa6de1d4..83514767f 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingTableAnswerRowInfo.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingTableAnswerRowInfo.cs
@@ -60,8 +60,11 @@ namespace IRaCIS.Core.Domain.Models
/// CreateUserId
///
public Guid CreateUserId { get; set; }
-
- }
+
+ [ForeignKey("QuestionId")]
+ public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
+
+ }
}