diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index 51d2273ca..332626d2d 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -455,33 +455,6 @@ 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 = taskInfo.TrialReadingCriterionId;
- 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);
- }
///
@@ -1002,7 +975,248 @@ namespace IRaCIS.Application.Services
- #region 获取下一个阅片任务
+ #region 访视任务 - Dicom 阅片
+
+ ///
+ /// 修改Dicom阅片问题
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task ChangeDicomReadingQuestionAnswer(ChangeDicomReadingQuestionAnswerInDto inDto)
+ {
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
+ var criterionId = taskInfo.TrialReadingCriterionId;
+ 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);
+ }
+
+
+ ///
+ /// 提交表格问题答案 病灶
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task SubmitTableQuestion(SubmitTableQuestionInDto inDto)
+ {
+ SubmitTableQuestionOutDto result = new SubmitTableQuestionOutDto();
+ await VerifyTaskIsSign(inDto.VisitTaskId);
+
+ var tableQuestionIds = inDto.AnswerList.Select(x => x.TableQuestionId).ToList();
+
+ var tableQuestionIdGroup = tableQuestionIds.GroupBy(x => new { TableQuestionId = x }).Select(x => new TableQuestionData
+ {
+ TableQuestionId = x.Key.TableQuestionId,
+ Count = x.Count()
+ }).ToList();
+
+ if (tableQuestionIdGroup.Any(x => x.Count > 1))
+ {
+ throw new BusinessValidationFailedException($"相同问题传入两次!");
+ }
+
+ if (inDto.RowIndex % 1 == 0)
+ {
+ var questionInfo = await _readingQuestionTrialRepository.Where(x => x.Id == inDto.QuestionId).FirstNotNullAsync();
+ if (questionInfo.MaxQuestionCount != null)
+ {
+ if (questionInfo.MaxQuestionCount <
+ (
+ (await _readingTableAnswerRowInfoRepository.Where(x => x.RowIndex != inDto.RowIndex && ((x.RowIndex % 1) == 0) && x.VisitTaskId == inDto.VisitTaskId
+ && x.QuestionId == inDto.QuestionId
+ ).CountAsync()) + 1))
+ {
+ throw new BusinessValidationFailedException($"当前提交问题最大问题数为{questionInfo.MaxQuestionCount}!");
+ }
+ }
+
+
+ var tableQuestions = await _readingTableQuestionTrialRepository.Where(x => tableQuestionIds.Contains(x.Id) && x.MaxRowCount != null && x.MaxRowCount != 0).ToListAsync();
+
+ foreach (var item in tableQuestions)
+ {
+ var answer = inDto.AnswerList.Where(x => x.TableQuestionId == item.Id).Select(x => x.Answer).FirstOrDefault();
+ if (!answer.IsNullOrEmpty())
+ {
+ var rowCount = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.TableQuestionId == item.Id && ((x.RowIndex % 1) == 0) && x.Answer == answer && x.RowIndex != inDto.RowIndex).CountAsync();
+
+ if (rowCount > item.MaxRowCount.Value - 1)
+ {
+ throw new BusinessValidationFailedException($"问题{item.QuestionName}最大相同问题数为{item.MaxRowCount.Value},当前已存在{rowCount}条!");
+ }
+ }
+
+ }
+ }
+ var isCurrentTaskAddList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex).Select(x => x.IsCurrentTaskAdd).ToListAsync();
+ bool isCurrentTaskAdd = true;
+ if (isCurrentTaskAddList.Count() > 0)
+ {
+ isCurrentTaskAdd = isCurrentTaskAddList[0];
+ }
+
+
+ ReadingTableAnswerRowInfo rowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex).AsNoTracking().FirstOrDefaultAsync();
+
+ rowInfo = rowInfo == null ? new ReadingTableAnswerRowInfo() : rowInfo;
+
+ await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex);
+ await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex);
+
+ rowInfo.Id = NewId.NextGuid();
+ rowInfo.TrialId = inDto.TrialId;
+ rowInfo.QuestionId = inDto.QuestionId;
+ rowInfo.MeasureData = inDto.MeasureData;
+ rowInfo.IsCurrentTaskAdd = isCurrentTaskAdd;
+ rowInfo.RowIndex = inDto.RowIndex;
+ rowInfo.InstanceId = inDto.InstanceId;
+ rowInfo.SeriesId = inDto.SeriesId;
+ rowInfo.VisitTaskId = inDto.VisitTaskId;
+ rowInfo.StudyId = inDto.StudyId;
+ rowInfo.IsCanEditPosition = inDto.IsCanEditPosition;
+ result.RowId = rowInfo.Id;
+
+ List answerList = inDto.AnswerList.Select(x => new ReadingTableQuestionAnswer()
+ {
+ Answer = x.Answer,
+ Id = NewId.NextGuid(),
+ TrialId = inDto.TrialId,
+ QuestionId = inDto.QuestionId,
+ TableQuestionId = x.TableQuestionId,
+ RowIndex = inDto.RowIndex,
+ RowId = rowInfo.Id,
+ VisitTaskId = inDto.VisitTaskId
+ }).ToList();
+
+
+ await _readingTableAnswerRowInfoRepository.AddAsync(rowInfo);
+ await _readingTableQuestionAnswerRepository.AddRangeAsync(answerList);
+
+ await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
+ {
+ ReadingTaskState = ReadingTaskState.Reading,
+
+ });
+ await _readingTableQuestionAnswerRepository.SaveChangesAsync();
+ await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
+ {
+ IsChangeOtherTask = false,
+ VisitTaskId = inDto.VisitTaskId,
+ });
+
+
+
+
+ return result;
+ }
+
+
+
+ ///
+ /// 提交Dicom阅片信息
+ ///
+ ///
+ ///
+ [NonDynamicMethod]
+ public async Task SubmitDicomVisitTask(SubmitDicomVisitTaskInDto inDto)
+ {
+
+
+ await VerifyTaskIsSign(inDto.VisitTaskId);
+
+ // 修改编号
+
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
+
+ // 获取标准表格外层问题
+ var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.LesionType != null && x.ReadingTableQuestionTrialList.Any(x => x.QuestionMark == QuestionMark.AutoId))
+ .SelectMany(x => x.ReadingTableQuestionTrialList).Where(x => x.QuestionMark == QuestionMark.AutoId).Select(x => new
+ {
+ x.ReadingQuestionId,
+ TableQuestionId = x.Id,
+
+ }).ToListAsync();
+
+ var questionIds = questionList.Select(x => x.ReadingQuestionId).ToList();
+
+ var questionMarkList = await _readingQuestionTrialRepository.Where(x => questionIds.Contains(x.Id)).Select(x => new
+ {
+ QuestionId = x.Id,
+ x.OrderMark,
+
+ }).ToListAsync();
+
+ var rowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && questionIds.Contains(x.QuestionId)).ToListAsync();
+ List questionAnswerList = new List();
+ foreach (var item in questionList)
+ {
+ await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.QuestionId == item.ReadingQuestionId
+ && x.TableQuestionId == item.TableQuestionId && x.VisitTaskId == inDto.VisitTaskId);
+
+ var orderMark = questionMarkList.Where(x => x.QuestionId == item.ReadingQuestionId).Select(x => x.OrderMark).FirstOrDefault();
+
+ foreach (var row in rowInfo.Where(x => x.QuestionId == item.ReadingQuestionId))
+ {
+ questionAnswerList.Add(new ReadingTableQuestionAnswer()
+ {
+ Answer = orderMark + row.RowIndex.GetLesionMark(),
+ Id = NewId.NextGuid(),
+ QuestionId = item.ReadingQuestionId,
+ RowId = row.Id,
+ RowIndex = row.RowIndex,
+ TableQuestionId = item.TableQuestionId,
+ TrialId = taskInfo.TrialId,
+ VisitTaskId = taskInfo.Id,
+
+ });
+ }
+ }
+ await _readingTableQuestionAnswerRepository.AddRangeAsync(questionAnswerList);
+ await _readingTableQuestionAnswerRepository.SaveChangesAsync();
+
+ await this.SubmitTaskChangeState(inDto.VisitTaskId);
+ return ResponseOutput.Ok(true);
+ }
+
+ #endregion
+
+
+ #region Dicom 非dicom 公用
+
+
+ ///
+ /// 验证访视提交
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto)
+ {
+
+ await _readingCalculateService.VerifyVisitTaskQuestions(inDto);
+
+ //await _readingCalculateService.VerifyVisitTaskQuestions(inDto);
+ return ResponseOutput.Ok(true);
+ }
+
+
+
+
///
/// 获取下一个阅片任务
///
@@ -1015,7 +1229,7 @@ namespace IRaCIS.Application.Services
var trialReadingCriterionId = inDto.TrialReadingCriterionId;
- if(trialReadingCriterionId==null && inDto.VisistTaskId == null)
+ if (trialReadingCriterionId == null && inDto.VisistTaskId == null)
{
throw new BusinessValidationFailedException("当没有任务Id的时候,标准Id必传");
}
@@ -1030,7 +1244,7 @@ namespace IRaCIS.Application.Services
ReadingCategory = x.ReadingCategory,
VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : default(Guid),
VisitNum = x.VisitTaskNum,
- TrialReadingCriterionId=x.TrialReadingCriterionId,
+ TrialReadingCriterionId = x.TrialReadingCriterionId,
}).FirstOrDefaultAsync();
@@ -1104,8 +1318,8 @@ namespace IRaCIS.Application.Services
}
else
{
- task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId==trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id
- && x.TrialReadingCriterionId == trialReadingCriterionId
+ task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.DoctorUserId == _userInfo.Id
+ && x.TrialReadingCriterionId == trialReadingCriterionId
&& x.TaskState == TaskState.Effect).Select(x => new GetReadingTaskDto()
{
VisitTaskId = x.Id,
@@ -1143,7 +1357,7 @@ namespace IRaCIS.Application.Services
{
x.IsReadingShowPreviousResults,
x.IsReadingShowSubjectInfo,
-
+
}).FirstOrDefaultAsync();
task.IsReadingShowPreviousResults = criterionInfo.IsReadingShowPreviousResults;
@@ -1153,254 +1367,9 @@ namespace IRaCIS.Application.Services
return task;
}
- #endregion
-
-
- #region 阅片任务 提交填写表单
-
- ///
- /// 保存任务问题
- ///
- ///
- ///
- [HttpPost]
- public async Task SaveVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto)
- {
- var subjectId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.SubjectId).FirstOrDefaultAsync();
- await _readingTaskQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId);
- List readingTaskAnswerList = inDto.AnswerList.Select(x => new ReadingTaskQuestionAnswer()
- {
- Id = NewId.NextGuid(),
- SubjectId = subjectId,
- Answer = x.Answer,
- ReadingQuestionCriterionTrialId = inDto.ReadingQuestionCriterionTrialId,
- ReadingQuestionTrialId = x.ReadingQuestionTrialId,
- VisitTaskId = inDto.VisitTaskId,
- TrialId = inDto.TrialId
- }).ToList();
-
- await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
- {
- ReadingTaskState = ReadingTaskState.Reading,
-
- });
- await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList);
- var result = await _visitTaskRepository.SaveChangesAsync();
- return ResponseOutput.Ok(result);
- }
-
- ///
- /// 验证访视提交
- ///
- ///
- ///
- [HttpPost]
- public async Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto)
- {
-
- await _readingCalculateService.VerifyVisitTaskQuestions(inDto);
-
- //await _readingCalculateService.VerifyVisitTaskQuestions(inDto);
- return ResponseOutput.Ok(true);
- }
-
- ///
- /// 提交表格问题
- ///
- ///
- ///
- [HttpPost]
- public async Task SubmitTableQuestion(SubmitTableQuestionInDto inDto)
- {
- SubmitTableQuestionOutDto result = new SubmitTableQuestionOutDto();
- await VerifyTaskIsSign(inDto.VisitTaskId);
-
- var tableQuestionIds = inDto.AnswerList.Select(x => x.TableQuestionId).ToList();
-
- var tableQuestionIdGroup = tableQuestionIds.GroupBy(x => new { TableQuestionId = x }).Select(x => new TableQuestionData
- {
- TableQuestionId = x.Key.TableQuestionId,
- Count = x.Count()
- }).ToList();
-
- if (tableQuestionIdGroup.Any(x => x.Count > 1))
- {
- throw new BusinessValidationFailedException($"相同问题传入两次!");
- }
-
- if (inDto.RowIndex % 1 == 0)
- {
- var questionInfo = await _readingQuestionTrialRepository.Where(x => x.Id == inDto.QuestionId).FirstNotNullAsync();
- if (questionInfo.MaxQuestionCount != null)
- {
- if (questionInfo.MaxQuestionCount <
- (
- (await _readingTableAnswerRowInfoRepository.Where(x => x.RowIndex != inDto.RowIndex && ((x.RowIndex % 1) == 0) && x.VisitTaskId == inDto.VisitTaskId
- && x.QuestionId == inDto.QuestionId
- ).CountAsync()) + 1))
- {
- throw new BusinessValidationFailedException($"当前提交问题最大问题数为{questionInfo.MaxQuestionCount}!");
- }
- }
-
-
- var tableQuestions = await _readingTableQuestionTrialRepository.Where(x => tableQuestionIds.Contains(x.Id) && x.MaxRowCount != null && x.MaxRowCount != 0).ToListAsync();
-
- foreach (var item in tableQuestions)
- {
- var answer = inDto.AnswerList.Where(x => x.TableQuestionId == item.Id).Select(x => x.Answer).FirstOrDefault();
- if (!answer.IsNullOrEmpty())
- {
- var rowCount = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.TableQuestionId == item.Id && ((x.RowIndex % 1) == 0) && x.Answer == answer && x.RowIndex != inDto.RowIndex).CountAsync();
-
- if (rowCount > item.MaxRowCount.Value - 1)
- {
- throw new BusinessValidationFailedException($"问题{item.QuestionName}最大相同问题数为{item.MaxRowCount.Value},当前已存在{rowCount}条!");
- }
- }
-
- }
- }
- var isCurrentTaskAddList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex).Select(x => x.IsCurrentTaskAdd).ToListAsync();
- bool isCurrentTaskAdd = true;
- if (isCurrentTaskAddList.Count() > 0)
- {
- isCurrentTaskAdd = isCurrentTaskAddList[0];
- }
-
-
- ReadingTableAnswerRowInfo rowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex).AsNoTracking().FirstOrDefaultAsync();
-
- rowInfo = rowInfo == null ? new ReadingTableAnswerRowInfo() : rowInfo;
-
- await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex);
- await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == inDto.QuestionId && x.TrialId == inDto.TrialId && x.RowIndex == inDto.RowIndex);
-
- rowInfo.Id = NewId.NextGuid();
- rowInfo.TrialId = inDto.TrialId;
- rowInfo.QuestionId = inDto.QuestionId;
- rowInfo.MeasureData = inDto.MeasureData;
- rowInfo.IsCurrentTaskAdd = isCurrentTaskAdd;
- rowInfo.RowIndex = inDto.RowIndex;
- rowInfo.InstanceId = inDto.InstanceId;
- rowInfo.SeriesId = inDto.SeriesId;
- rowInfo.VisitTaskId = inDto.VisitTaskId;
- rowInfo.StudyId = inDto.StudyId;
- rowInfo.IsCanEditPosition = inDto.IsCanEditPosition;
- result.RowId = rowInfo.Id;
-
- List answerList = inDto.AnswerList.Select(x => new ReadingTableQuestionAnswer()
- {
- Answer = x.Answer,
- Id = NewId.NextGuid(),
- TrialId = inDto.TrialId,
- QuestionId = inDto.QuestionId,
- TableQuestionId = x.TableQuestionId,
- RowIndex = inDto.RowIndex,
- RowId= rowInfo.Id,
- VisitTaskId = inDto.VisitTaskId
- }).ToList();
-
-
- await _readingTableAnswerRowInfoRepository.AddAsync(rowInfo);
- await _readingTableQuestionAnswerRepository.AddRangeAsync(answerList);
-
- await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
- {
- ReadingTaskState = ReadingTaskState.Reading,
-
- });
- await _readingTableQuestionAnswerRepository.SaveChangesAsync();
- await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
- {
- IsChangeOtherTask = false,
- VisitTaskId = inDto.VisitTaskId,
- });
-
-
-
-
- return result;
- }
-
-
-
- ///
- /// 提交Dicom阅片信息
- ///
- ///
- ///
- [NonDynamicMethod]
- public async Task SubmitDicomVisitTask(SubmitDicomVisitTaskInDto inDto)
- {
-
-
- await VerifyTaskIsSign(inDto.VisitTaskId);
-
- // 修改编号
-
- var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
-
- // 获取标准表格外层问题
- var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId && x.LesionType != null && x.ReadingTableQuestionTrialList.Any(x => x.QuestionMark == QuestionMark.AutoId))
- .SelectMany(x => x.ReadingTableQuestionTrialList).Where(x => x.QuestionMark == QuestionMark.AutoId).Select(x => new
- {
- x.ReadingQuestionId,
- TableQuestionId=x.Id,
-
- }).ToListAsync();
-
- var questionIds = questionList.Select(x => x.ReadingQuestionId).ToList();
-
- var questionMarkList = await _readingQuestionTrialRepository.Where(x => questionIds.Contains(x.Id)).Select(x => new
- {
- QuestionId=x.Id,
- x.OrderMark,
-
- }).ToListAsync();
-
- var rowInfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && questionIds.Contains(x.QuestionId)).ToListAsync();
- List questionAnswerList = new List< ReadingTableQuestionAnswer >();
- foreach (var item in questionList)
- {
- await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.QuestionId == item.ReadingQuestionId
- && x.TableQuestionId == item.TableQuestionId && x.VisitTaskId == inDto.VisitTaskId);
-
- var orderMark= questionMarkList.Where(x=>x.QuestionId==item.ReadingQuestionId).Select(x=>x.OrderMark).FirstOrDefault();
-
- foreach (var row in rowInfo.Where(x=>x.QuestionId== item.ReadingQuestionId))
- {
- questionAnswerList.Add(new ReadingTableQuestionAnswer() {
- Answer= orderMark+row.RowIndex.GetLesionMark(),
- Id=NewId.NextGuid(),
- QuestionId= item.ReadingQuestionId,
- RowId= row.Id,
- RowIndex=row.RowIndex,
- TableQuestionId=item.TableQuestionId,
- TrialId= taskInfo.TrialId,
- VisitTaskId= taskInfo.Id,
-
- });
- }
- }
- await _readingTableQuestionAnswerRepository.AddRangeAsync(questionAnswerList);
- await _readingTableQuestionAnswerRepository.SaveChangesAsync();
-
- await this.SubmitTaskChangeState(inDto.VisitTaskId);
- return ResponseOutput.Ok(true);
- }
-
-
-
-
-
-
-
-
-
///
/// 签名提交任务修改状态
///
@@ -1409,7 +1378,7 @@ namespace IRaCIS.Application.Services
private async Task SubmitTaskChangeState(Guid visitTaskId)
{
await VerifyTaskIsSign(visitTaskId);
- await _visitTaskRepository.UpdatePartialFromQueryAsync( visitTaskId, x => new VisitTask()
+ await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
{
ReadingTaskState = ReadingTaskState.HaveSigned,
SignTime = DateTime.Now,
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs
index f81cdf29e..3fddcd835 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingNoDicomTaskService.cs
@@ -1,19 +1,13 @@
using IRaCIS.Core.Domain.Share;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Service.Reading.Dto;
-using MassTransit;
using IRaCIS.Core.Infra.EFCore.Common;
using Panda.DynamicWebApi.Attributes;
-using AutoMapper;
using IRaCIS.Core.Application.Contracts;
-using IRaCIS.Core.Infrastructure;
-using Newtonsoft.Json;
-using IRaCIS.Core.Application.Service;
-using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Application.Services
{
-
+
///
/// 非Dicom
///
@@ -35,7 +29,38 @@ namespace IRaCIS.Application.Services
return ResponseOutput.Ok(true);
}
- #region 获取阅片非Dicom文件
+
+ ///
+ /// 保存任务问题
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task SaveVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto)
+ {
+ var subjectId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.SubjectId).FirstOrDefaultAsync();
+ await _readingTaskQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId);
+ List readingTaskAnswerList = inDto.AnswerList.Select(x => new ReadingTaskQuestionAnswer()
+ {
+ Id = NewId.NextGuid(),
+ SubjectId = subjectId,
+ Answer = x.Answer,
+ ReadingQuestionCriterionTrialId = inDto.ReadingQuestionCriterionTrialId,
+ ReadingQuestionTrialId = x.ReadingQuestionTrialId,
+ VisitTaskId = inDto.VisitTaskId,
+ TrialId = inDto.TrialId
+ }).ToList();
+
+ await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
+ {
+ ReadingTaskState = ReadingTaskState.Reading,
+
+ });
+ await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList);
+ var result = await _visitTaskRepository.SaveChangesAsync();
+ return ResponseOutput.Ok(result);
+ }
+
///
/// 获取阅片非Dicom文件
///
@@ -112,11 +137,9 @@ namespace IRaCIS.Application.Services
});
}
- #endregion
- #region 找子问题
///
/// 找子问题
///
@@ -189,6 +212,5 @@ namespace IRaCIS.Application.Services
}
- #endregion
}
}