IRC_NewDev
parent
4c05da8335
commit
d2ff216396
|
@ -1364,13 +1364,6 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoCalculateService.SaveSplenicCalculate(System.Guid)">
|
|
||||||
<summary>
|
|
||||||
保存脾尖或者脾底进行计算
|
|
||||||
</summary>
|
|
||||||
<param name="visitTaskId"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.IRECIST1Point1CalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取阅片的计算数据
|
获取阅片的计算数据
|
||||||
|
@ -1786,6 +1779,13 @@
|
||||||
<param name="indto"></param>
|
<param name="indto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetIsSuvMaxLesion(IRaCIS.Core.Application.Service.Reading.Dto.GetIsSuvMaxLesionInDto)">
|
||||||
|
<summary>
|
||||||
|
获取是否是最大suvmax 病灶
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.TestCalculate(System.Guid,IRaCIS.Core.Domain.Share.QuestionType)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.TestCalculate(System.Guid,IRaCIS.Core.Domain.Share.QuestionType)">
|
||||||
<summary>
|
<summary>
|
||||||
测试计算
|
测试计算
|
||||||
|
@ -2074,13 +2074,6 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.SaveSplenicCalculate(System.Guid)">
|
|
||||||
<summary>
|
|
||||||
保存脾尖或者脾底进行计算
|
|
||||||
</summary>
|
|
||||||
<param name="visitTaskId"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetSplenicState(System.Guid,System.Decimal)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.LuganoCalculateService.GetSplenicState(System.Guid,System.Decimal)">
|
||||||
<summary>
|
<summary>
|
||||||
获取脾脏状态
|
获取脾脏状态
|
||||||
|
@ -12228,7 +12221,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.AsyncTrialCriterionDictionary(IRaCIS.Core.Application.Contracts.AsyncTrialCriterionDictionaryInDto)">
|
<member name="M:IRaCIS.Core.Application.TrialConfigService.AsyncTrialCriterionDictionary(IRaCIS.Core.Application.Contracts.AsyncTrialCriterionDictionaryInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
同步项目标准字典信息
|
同步项目标准所有信息
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
|
|
@ -11,7 +11,18 @@ using System.Reflection.Metadata.Ecma335;
|
||||||
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
{
|
{
|
||||||
|
|
||||||
public class GetPPDInfoInDto
|
public class GetIsSuvMaxLesionInDto
|
||||||
|
{
|
||||||
|
public Guid VisitTaskId { get; set; }
|
||||||
|
public Guid RowId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetIsSuvMaxLesionOutDto
|
||||||
|
{
|
||||||
|
public bool IsSuvMaxLesion { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetPPDInfoInDto
|
||||||
{
|
{
|
||||||
public Guid VisitTaskId { get; set; }
|
public Guid VisitTaskId { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -22,12 +22,5 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate.Interface
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task CalculateMergeTargetLesionStatus(CalculateTargetLesionStatusInDto inDto);
|
Task CalculateMergeTargetLesionStatus(CalculateTargetLesionStatusInDto inDto);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存脾尖或者脾底进行计算
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="visitTaskId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task SaveSplenicCalculate(Guid visitTaskId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -398,13 +398,39 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 测试计算
|
/// 获取是否是最大suvmax 病灶
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="visitTaskId"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <param name="type"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
public async Task<GetIsSuvMaxLesionOutDto> GetIsSuvMaxLesion(GetIsSuvMaxLesionInDto inDto)
|
||||||
|
{
|
||||||
|
ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(inDto.VisitTaskId);
|
||||||
|
|
||||||
|
var maxSuv = await GetSuvMax(readingData);
|
||||||
|
|
||||||
|
var rowInfo = readingData.QuestionInfo.SelectMany(x => x.TableRowInfoList).ToList();
|
||||||
|
var tableQuestions = rowInfo.SelectMany(x => x.TableQuestionList).Where(x=>x.RowId==inDto.RowId).ToList();
|
||||||
|
|
||||||
|
var lesionMaxSuv = tableQuestions.Where(x => x.QuestionMark == QuestionMark.SUVmax).Select(x => x.Answer.IsNullOrEmptyReturn0()).MaxOrDefault();
|
||||||
|
|
||||||
|
|
||||||
|
return new GetIsSuvMaxLesionOutDto()
|
||||||
|
{
|
||||||
|
IsSuvMaxLesion = maxSuv == lesionMaxSuv
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 测试计算
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="visitTaskId"></param>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
public async Task TestCalculate(Guid visitTaskId, QuestionType type)
|
public async Task TestCalculate(Guid visitTaskId, QuestionType type)
|
||||||
{
|
{
|
||||||
ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(visitTaskId);
|
ReadingCalculateDto readingData = await _generalCalculateService.GetReadingCalculateDto(visitTaskId);
|
||||||
|
@ -2178,87 +2204,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存脾尖或者脾底进行计算
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="visitTaskId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task SaveSplenicCalculate(Guid visitTaskId)
|
|
||||||
{
|
|
||||||
var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
|
|
||||||
|
|
||||||
List<QuestionType?> questionTypes = new List<QuestionType?>
|
|
||||||
{
|
|
||||||
QuestionType.SplenicTopPosition,
|
|
||||||
QuestionType.SplenicBottomPosition,
|
|
||||||
QuestionType.SpleenLength,
|
|
||||||
QuestionType.SplenicStatus,
|
|
||||||
|
|
||||||
};
|
|
||||||
var questionlist = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId &&
|
|
||||||
questionTypes.Contains(x.QuestionType)).ToListAsync();
|
|
||||||
|
|
||||||
var splenicTopQuestionId = questionlist.Where(x => x.QuestionType == QuestionType.SplenicTopPosition).Select(x => x.Id).FirstOrDefault();
|
|
||||||
var splenicBottomQuestionId = questionlist.Where(x => x.QuestionType == QuestionType.SplenicBottomPosition).Select(x => x.Id).FirstOrDefault();
|
|
||||||
|
|
||||||
decimal? spleenLength = null;
|
|
||||||
string? splenicState = null;
|
|
||||||
|
|
||||||
// 脾尖答案
|
|
||||||
var splenicTopAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId && x.ReadingQuestionTrialId == splenicTopQuestionId).FirstOrDefaultAsync();
|
|
||||||
// 脾底答案
|
|
||||||
var splenicBottomAnswer= await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId && x.ReadingQuestionTrialId == splenicBottomQuestionId).FirstOrDefaultAsync();
|
|
||||||
|
|
||||||
if (splenicTopAnswer != null && splenicBottomAnswer != null)
|
|
||||||
{
|
|
||||||
spleenLength = splenicTopAnswer.Answer.IsNullOrEmptyReturn0() - splenicBottomAnswer.Answer.IsNullOrEmptyReturn0();
|
|
||||||
if(spleenLength<0)
|
|
||||||
{
|
|
||||||
spleenLength = 0 - spleenLength;
|
|
||||||
}
|
|
||||||
splenicState =await GetSplenicState(visitTaskId, spleenLength.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
//脾脏垂直径Id
|
|
||||||
var spleenVerticalDiameterQuestionId = questionlist.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Id).FirstOrDefault();
|
|
||||||
// 脾脏状态Id
|
|
||||||
var splenicStatusQuestionId = questionlist.Where(x => x.QuestionType == QuestionType.SplenicStatus).Select(x => x.Id).FirstOrDefault();
|
|
||||||
|
|
||||||
List<ReadingTaskQuestionAnswer> readingTaskQuestionAnswers = new List<ReadingTaskQuestionAnswer>();
|
|
||||||
if (spleenLength != null)
|
|
||||||
{
|
|
||||||
readingTaskQuestionAnswers.Add(new ReadingTaskQuestionAnswer()
|
|
||||||
{
|
|
||||||
Answer = spleenLength.Value.ToString(),
|
|
||||||
ReadingQuestionTrialId = spleenVerticalDiameterQuestionId,
|
|
||||||
VisitTaskId = visitTaskId,
|
|
||||||
SubjectId = taskinfo.SubjectId,
|
|
||||||
TrialId = taskinfo.TrialId,
|
|
||||||
ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (splenicState != null)
|
|
||||||
{
|
|
||||||
readingTaskQuestionAnswers.Add(new ReadingTaskQuestionAnswer()
|
|
||||||
{
|
|
||||||
Answer = splenicState.ToString(),
|
|
||||||
ReadingQuestionTrialId = splenicStatusQuestionId,
|
|
||||||
VisitTaskId = visitTaskId,
|
|
||||||
SubjectId = taskinfo.SubjectId,
|
|
||||||
TrialId = taskinfo.TrialId,
|
|
||||||
ReadingQuestionCriterionTrialId = taskinfo.TrialReadingCriterionId,
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
await _readingTaskQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == visitTaskId && (x.ReadingQuestionTrialId == spleenVerticalDiameterQuestionId || x.ReadingQuestionTrialId == splenicStatusQuestionId));
|
|
||||||
await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskQuestionAnswers);
|
|
||||||
await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 获取脾脏状态
|
#region 获取脾脏状态
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -216,7 +216,7 @@ namespace IRaCIS.Core.Application
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 同步项目标准字典信息
|
/// 同步项目标准所有信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
Loading…
Reference in New Issue