diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index 27f6de674..bc8a4fb2f 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public Guid VisitTaskId { get; set; }
- public Guid QuestionId { get; set; }
+ public Guid TableQuestionId { get; set; }
public decimal RowIndex { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
index a96001111..7cb17a3f7 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs
@@ -1000,17 +1000,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
///
/// InstanceId
///
- public Guid InstanceId { get; set; }
+ public Guid? InstanceId { get; set; }
///
/// SeriesId
///
- public Guid SeriesId { get; set; }
+ public Guid? SeriesId { get; set; }
///
/// StudyId
///
- public Guid StudyId { get; set; }
+ public Guid? StudyId { get; set; }
///
/// MarkTool
@@ -1031,6 +1031,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// MeasureData
///
public string MeasureData { get; set; } = string.Empty;
+
+
+ public Guid? FirstAddTaskId { get; set; }
}
public class GetReadingQuestionAndAnswerInDto
{
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index eea64c0c0..0a4ffb4e8 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -829,6 +829,9 @@ namespace IRaCIS.Application.Services
.ToListAsync();
+
+
+
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync();
if (taskInfo.IsConvertedTask &&taskInfo.BeforeConvertedTaskId!=null)
@@ -845,6 +848,26 @@ namespace IRaCIS.Application.Services
x.OrderMarkName = x.OrderMark + x.RowIndexNum.GetLesionMark();
});
+
+ var questionMark = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).
+ Select(x => new GetTableAnswerRowInfoOutDto()
+ {
+ FristAddTaskId = x.FirstAddTaskId.Value,
+ Id = x.Id,
+ InstanceId = x.InstanceId,
+ MeasureData = x.MeasureData,
+ NumberOfFrames = x.NumberOfFrames,
+ PicturePath = x.PicturePath,
+ VisitTaskId = x.VisitTaskId,
+ StudyId = x.StudyId,
+ SeriesId = x.StudyId,
+ }).ToListAsync();
+
+ questionMark.ForEach(x => {
+
+ x.IsFirstChangeTask = x.VisitTaskId == inDto.VisitTaskId;
+ });
+ result.AddRange(questionMark);
return result;
}
@@ -1535,6 +1558,13 @@ namespace IRaCIS.Application.Services
}).ToList();
await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer);
+
+ var questionMarkList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Select(x => new
+ {
+ x.QuestionId,
+ x.FirstAddTaskId,
+
+ }).ToListAsync();
await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId);
var datetime = DateTime.Now;
@@ -1551,8 +1581,8 @@ namespace IRaCIS.Application.Services
QuestionId = x.QuestionId,
SeriesId = x.SeriesId,
StudyId = x.StudyId,
- CreateTime = datetime
-
+ CreateTime = datetime,
+ FirstAddTaskId= questionMarkList.Where(y=>y.QuestionId==x.QuestionId).Select(x=>x.FirstAddTaskId).FirstOrDefault() ?? inDto.VisitTaskId,
}).ToList();
await _readingTaskQuestionMarkRepository.AddRangeAsync(markList);
await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
index 531bf8f93..1def50633 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs
@@ -23,6 +23,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
private readonly IRepository _visitTaskRepository;
private readonly IRepository _readingQuestionCriterionTrialRepository;
private readonly IRepository _readingTableQuestionTrialRepository;
+ private readonly IRepository _readingTaskQuestionMarkRepository;
private readonly IRepository _readingTableAnswerRowInfoRepository;
private readonly IRepository _readingQuestionTrialRepository;
private readonly IRepository _organInfoRepository;
@@ -36,6 +37,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository visitTaskRepository,
IRepository readingQuestionCriterionTrialRepository,
IRepository readingTableQuestionTrialRepository,
+ IRepository readingTaskQuestionMarkRepository,
IRepository readingTableAnswerRowInfoRepository,
IRepository readingQuestionTrialRepository,
IRepository organInfoRepository,
@@ -49,6 +51,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
this._visitTaskRepository = visitTaskRepository;
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
+ this._readingTaskQuestionMarkRepository = readingTaskQuestionMarkRepository;
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
this._organInfoRepository = organInfoRepository;
@@ -880,6 +883,47 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
QuestionMark.State,
};
+
+
+ var rowIndexList = copyTableAnswers.Select(x => x.RowIndex).Distinct().ToList();
+ // 找到靶病灶问题Id
+ var questionId=await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId && x.LesionType == LesionType.TargetLesion).Select(x => x.Id).FirstNotNullAsync();
+
+ foreach (var item in rowIndexList)
+ {
+ var lowPPD =await this.GetLowPPDInfo(new GetPPDInfoInDto() {
+
+ VisitTaskId= visitTaskId,
+ QuestionId= questionId,
+ RowIndex=item
+ });
+
+ copyTableAnswers.Where(x => x.RowIndex == item).ForEach(x =>
+ {
+
+
+ switch (x.QuestionMark)
+ {
+ case QuestionMark.LowPPDLDi:
+ x.Answer = lowPPD.LowPPDLDi.ToString();
+ break;
+ case QuestionMark.LowPPDSDi:
+ x.Answer = lowPPD.LowPPDSDi.ToString();
+ break;
+ case QuestionMark.NadirPPD:
+ x.Answer = lowPPD.NadirPPD.ToString();
+ break;
+ case QuestionMark.LowPPDVisit:
+ x.Answer = lowPPD.LowPPDVisit.ToString();
+ break;
+
+
+ }
+
+
+ });
+ }
+
var tableAnswers = copyTableAnswers.Select(x => new ReadingTableQuestionAnswer
{
Id = NewId.NextGuid(),
@@ -893,10 +937,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
});
+ var questionMarkList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == LastVisitTaskId).Select(x => new ReadingTaskQuestionMark()
+ {
+ VisitTaskId= visitTaskId,
+ FirstAddTaskId=x.FirstAddTaskId,
+ QuestionId=x.QuestionId,
+ }).ToListAsync();
+ questionMarkList.ForEach(x => {
+ x.Id = NewId.NextGuid();
+ });
var addList = _mapper.Map>(tableRowAnswers);
+ await _readingTaskQuestionMarkRepository.AddRangeAsync(questionMarkList);
await _readingTableAnswerRowInfoRepository.AddRangeAsync(addList);
await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers);
await _readingTableQuestionAnswerRepository.SaveChangesAsync();
diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs
index 858c66eb8..16d607564 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskQuestionMark.cs
@@ -33,40 +33,38 @@ namespace IRaCIS.Core.Domain.Models
///
/// InstanceId
///
- [Required]
- public Guid InstanceId { get; set; }
+ public Guid? InstanceId { get; set; }
///
/// SeriesId
///
- [Required]
- public Guid SeriesId { get; set; }
+ public Guid? SeriesId { get; set; }
///
/// StudyId
///
- [Required]
- public Guid StudyId { get; set; }
+
+ public Guid? StudyId { get; set; }
///
/// MarkTool
///
- public string MarkTool { get; set; }
-
- ///
+ public string MarkTool { get; set; } = string.Empty;
+
+ ///
/// PicturePath
///
- public string PicturePath { get; set; }
-
- ///
+ public string PicturePath { get; set; } = string.Empty;
+
+ ///
/// NumberOfFrames
///
- public int? NumberOfFrames { get; set; }
+ public int? NumberOfFrames { get; set; }
- ///
- /// MeasureData
- ///
- [Required]
+ ///
+ /// MeasureData
+ ///
+ [Required]
public string MeasureData { get; set; } = string.Empty;
///
@@ -79,6 +77,8 @@ namespace IRaCIS.Core.Domain.Models
///
public Guid CreateUserId { get; set; }
+ public Guid? FirstAddTaskId { get; set; }
+
}