添加通用计算服务
parent
f7281f0daa
commit
fcf680d5a0
|
@ -0,0 +1,135 @@
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
{
|
||||||
|
public class GeneralCalculateService : BaseService, IGeneralCalculateService
|
||||||
|
{
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository;
|
||||||
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
|
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||||
|
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
|
||||||
|
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
||||||
|
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||||
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
|
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
|
||||||
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
|
|
||||||
|
public GeneralCalculateService(
|
||||||
|
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
|
||||||
|
IRepository<VisitTask> visitTaskRepository,
|
||||||
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||||
|
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
||||||
|
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
||||||
|
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
||||||
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
|
IRepository<TumorAssessment> tumorAssessmentRepository,
|
||||||
|
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
|
||||||
|
)
|
||||||
|
{
|
||||||
|
this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository;
|
||||||
|
this._visitTaskRepository = visitTaskRepository;
|
||||||
|
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||||
|
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
|
||||||
|
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
||||||
|
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
||||||
|
this._subjectVisitRepository = subjectVisitRepository;
|
||||||
|
this._tumorAssessmentRepository = tumorAssessmentRepository;
|
||||||
|
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取ReadingCalculateDto
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="visitTaskId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<ReadingCalculateDto> GetReadingCalculateDto(Guid visitTaskId)
|
||||||
|
{
|
||||||
|
var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
|
||||||
|
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == (visitTask.SourceSubjectVisitId ?? default(Guid))).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == visitTask.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync();
|
||||||
|
|
||||||
|
var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect
|
||||||
|
&& x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
|
||||||
|
&& x.ArmEnum == visitTask.ArmEnum).Select(x => x.Id).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
List<QuestionInfo> questionInfos = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == visitTask.TrialReadingCriterionId).Select(x => new QuestionInfo()
|
||||||
|
{
|
||||||
|
LesionType = x.LesionType,
|
||||||
|
QuestionId = x.Id,
|
||||||
|
QuesionName = x.QuestionName,
|
||||||
|
QuestionType = x.QuestionType,
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var questionAnswers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).Select(x => new
|
||||||
|
{
|
||||||
|
x.ReadingQuestionTrialId,
|
||||||
|
x.Answer
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var tableQuestion = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).Include(x => x.ReadingTableQuestionTrial).Select(x => new TableQuestionInfo()
|
||||||
|
{
|
||||||
|
Answer = x.Answer,
|
||||||
|
QuestionMark = x.ReadingTableQuestionTrial.QuestionMark,
|
||||||
|
TableQuestionId = x.TableQuestionId,
|
||||||
|
QuestionId = x.QuestionId,
|
||||||
|
QuestionType = x.ReadingQuestionTrial.QuestionType,
|
||||||
|
RowIndex = x.RowIndex,
|
||||||
|
RowId = x.RowId,
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
foreach (var item in questionInfos)
|
||||||
|
{
|
||||||
|
item.Answer = questionAnswers.Where(y => y.ReadingQuestionTrialId == item.QuestionId).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
var thisItemRowInfo = rowInfoList.Where(x => x.QuestionId == item.QuestionId).ToList();
|
||||||
|
|
||||||
|
var thisItemTableQuestions = tableQuestion.Where(x => x.QuestionId == item.QuestionId).ToList();
|
||||||
|
|
||||||
|
item.TableRowInfoList = thisItemRowInfo.Select(x => new TableRowInfo()
|
||||||
|
{
|
||||||
|
RowIndex = x.RowIndex,
|
||||||
|
MeasureData = x.MeasureData,
|
||||||
|
TableQuestionList = tableQuestion.Where(y => y.QuestionId == item.QuestionId && y.RowId == x.Id).ToList(),
|
||||||
|
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ReadingCalculateDto readingData = new ReadingCalculateDto()
|
||||||
|
{
|
||||||
|
SubjectId = visitTask.SubjectId,
|
||||||
|
VisitTaskId = visitTaskId,
|
||||||
|
SubjectVisitId = visitTask.SourceSubjectVisitId!.Value,
|
||||||
|
QuestionInfo = questionInfos,
|
||||||
|
CriterionId = visitTask.TrialReadingCriterionId,
|
||||||
|
TrialId = visitTask.TrialId,
|
||||||
|
IsAnalysisCreate = visitTask.IsAnalysisCreate,
|
||||||
|
IsSelfAnalysis = visitTask.IsSelfAnalysis,
|
||||||
|
IsBaseLine = subjectVisit!.IsBaseLine,
|
||||||
|
DoctorUserId = visitTask.DoctorUserId,
|
||||||
|
TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
||||||
|
BaseLineTaskId = baseLinetaskId,
|
||||||
|
ArmEnum = visitTask.ArmEnum,
|
||||||
|
VisitName = subjectVisit.VisitName,
|
||||||
|
BlindName = subjectVisit.BlindName,
|
||||||
|
};
|
||||||
|
|
||||||
|
return readingData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Service
|
||||||
|
{
|
||||||
|
public interface IGeneralCalculateService
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取ReadingCalculateDto
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="visitTaskId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<ReadingCalculateDto> GetReadingCalculateDto(Guid visitTaskId);
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,6 +26,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||||
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
|
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
|
||||||
|
private readonly IGeneralCalculateService _generalCalculateService;
|
||||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
|
|
||||||
public RECIST1Point1CalculateService(
|
public RECIST1Point1CalculateService(
|
||||||
|
@ -37,6 +38,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
||||||
IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<TumorAssessment> tumorAssessmentRepository,
|
IRepository<TumorAssessment> tumorAssessmentRepository,
|
||||||
|
IGeneralCalculateService generalCalculateService,
|
||||||
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
|
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -48,6 +50,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
||||||
this._subjectVisitRepository = subjectVisitRepository;
|
this._subjectVisitRepository = subjectVisitRepository;
|
||||||
this._tumorAssessmentRepository = tumorAssessmentRepository;
|
this._tumorAssessmentRepository = tumorAssessmentRepository;
|
||||||
|
this._generalCalculateService = generalCalculateService;
|
||||||
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +73,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task TestCalculate(Guid visitTaskId, QuestionType type)
|
public async Task TestCalculate(Guid visitTaskId, QuestionType type)
|
||||||
{
|
{
|
||||||
ReadingCalculateDto readingData = await GetReadingCalculateDto(visitTaskId);
|
ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(visitTaskId);
|
||||||
await ReadingCalculate(readingData,new List<QuestionType>() { type});
|
await ReadingCalculate(readingData,new List<QuestionType>() { type});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +86,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task CalculateTask(CalculateTaskInDto inDto)
|
public async Task CalculateTask(CalculateTaskInDto inDto)
|
||||||
{
|
{
|
||||||
ReadingCalculateDto readingData = await GetReadingCalculateDto(inDto.VisitTaskId);
|
ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(inDto.VisitTaskId);
|
||||||
readingData.IsChangeOtherTask = inDto.IsChangeOtherTask;
|
readingData.IsChangeOtherTask = inDto.IsChangeOtherTask;
|
||||||
await ReadingCalculate(readingData);
|
await ReadingCalculate(readingData);
|
||||||
}
|
}
|
||||||
|
@ -273,7 +276,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<string> GetReportTumor(Guid visitTaskId)
|
public async Task<string> GetReportTumor(Guid visitTaskId)
|
||||||
{
|
{
|
||||||
return await GetTumor(await GetReadingCalculateDto(visitTaskId));
|
return await GetTumor(await _generalCalculateService.GetReadingCalculateDto(visitTaskId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -283,7 +286,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<string> GetReportIsExistDisease(Guid visitTaskId)
|
public async Task<string> GetReportIsExistDisease(Guid visitTaskId)
|
||||||
{
|
{
|
||||||
return await GetIsExistDisease(await GetReadingCalculateDto(visitTaskId));
|
return await GetIsExistDisease(await _generalCalculateService.GetReadingCalculateDto(visitTaskId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -347,93 +350,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取ReadingCalculateDto
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="visitTaskId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<ReadingCalculateDto> GetReadingCalculateDto(Guid visitTaskId)
|
|
||||||
{
|
|
||||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
|
|
||||||
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == (visitTask.SourceSubjectVisitId ?? default(Guid))).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == visitTask.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
|
|
||||||
var rowInfoList = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync();
|
|
||||||
|
|
||||||
var baseLinetaskId = await _visitTaskRepository.Where(x => x.SourceSubjectVisitId == baseLineVisitId && x.TaskState == TaskState.Effect
|
|
||||||
&& x.TrialReadingCriterionId == visitTask.TrialReadingCriterionId
|
|
||||||
&& x.ArmEnum == visitTask.ArmEnum).Select(x => x.Id).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
List<QuestionInfo> questionInfos = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == visitTask.TrialReadingCriterionId).Select(x => new QuestionInfo()
|
|
||||||
{
|
|
||||||
LesionType = x.LesionType,
|
|
||||||
QuestionId = x.Id,
|
|
||||||
QuesionName = x.QuestionName,
|
|
||||||
QuestionType = x.QuestionType,
|
|
||||||
}).ToListAsync();
|
|
||||||
|
|
||||||
var questionAnswers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).Select(x => new
|
|
||||||
{
|
|
||||||
x.ReadingQuestionTrialId,
|
|
||||||
x.Answer
|
|
||||||
}).ToListAsync();
|
|
||||||
|
|
||||||
var tableQuestion = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).Include(x => x.ReadingTableQuestionTrial).Select(x => new TableQuestionInfo()
|
|
||||||
{
|
|
||||||
Answer = x.Answer,
|
|
||||||
QuestionMark = x.ReadingTableQuestionTrial.QuestionMark,
|
|
||||||
TableQuestionId = x.TableQuestionId,
|
|
||||||
QuestionId = x.QuestionId,
|
|
||||||
QuestionType = x.ReadingQuestionTrial.QuestionType,
|
|
||||||
RowIndex = x.RowIndex,
|
|
||||||
RowId = x.RowId,
|
|
||||||
}).ToListAsync();
|
|
||||||
|
|
||||||
foreach (var item in questionInfos)
|
|
||||||
{
|
|
||||||
item.Answer = questionAnswers.Where(y => y.ReadingQuestionTrialId == item.QuestionId).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
|
|
||||||
|
|
||||||
|
|
||||||
var thisItemRowInfo = rowInfoList.Where(x => x.QuestionId == item.QuestionId).ToList();
|
|
||||||
|
|
||||||
var thisItemTableQuestions = tableQuestion.Where(x => x.QuestionId == item.QuestionId).ToList();
|
|
||||||
|
|
||||||
item.TableRowInfoList = thisItemRowInfo.Select(x => new TableRowInfo()
|
|
||||||
{
|
|
||||||
RowIndex = x.RowIndex,
|
|
||||||
MeasureData = x.MeasureData,
|
|
||||||
TableQuestionList = tableQuestion.Where(y => y.QuestionId == item.QuestionId && y.RowId == x.Id).ToList(),
|
|
||||||
|
|
||||||
}).ToList();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ReadingCalculateDto readingData = new ReadingCalculateDto()
|
|
||||||
{
|
|
||||||
SubjectId = visitTask.SubjectId,
|
|
||||||
VisitTaskId = visitTaskId,
|
|
||||||
SubjectVisitId = visitTask.SourceSubjectVisitId!.Value,
|
|
||||||
QuestionInfo = questionInfos,
|
|
||||||
CriterionId = visitTask.TrialReadingCriterionId,
|
|
||||||
TrialId = visitTask.TrialId,
|
|
||||||
IsAnalysisCreate=visitTask.IsAnalysisCreate,
|
|
||||||
IsSelfAnalysis=visitTask.IsSelfAnalysis,
|
|
||||||
IsBaseLine = subjectVisit!.IsBaseLine,
|
|
||||||
DoctorUserId = visitTask.DoctorUserId,
|
|
||||||
TrialReadingCriterionId= visitTask.TrialReadingCriterionId,
|
|
||||||
BaseLineTaskId = baseLinetaskId,
|
|
||||||
ArmEnum = visitTask.ArmEnum,
|
|
||||||
VisitName = subjectVisit.VisitName,
|
|
||||||
BlindName = subjectVisit.BlindName,
|
|
||||||
};
|
|
||||||
|
|
||||||
return readingData;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 将上一次的访视病灶添加到这一次
|
#region 将上一次的访视病灶添加到这一次
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue