Uat_Study
he 2022-09-08 17:45:33 +08:00
parent abca2d730c
commit 946b5ab961
4 changed files with 223 additions and 97 deletions

View File

@ -1225,6 +1225,106 @@
排序字段
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.SumOfDiameter">
<summary>
非淋巴结靶病灶长径之和 decimal
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.DiameterLessThan10">
<summary>
所有淋巴结靶病灶的短径小于10mm
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.SODPercentBigger30">
<summary>
SOD 百分比与基线期SOD相比减小≥30%
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.SODPercentLess30">
<summary>
SOD 百分比 与基线期SOD相比减小30%
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowPercentLess20">
<summary>
SOD 百分比 整体访视期间最低点SOD相比增加
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowPercentBigger20">
<summary>
SOD 百分比 比整体访视期间最低点SOD增加≥20%
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowChangeLess5">
<summary>
SOD 变化值 比整体访视期间最低点SOD绝对增加值5 mm
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LowChangeBigger5">
<summary>
比整体访视期间最低点SOD绝对增加值≥5 mm
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.ExixtsNETargetLesion">
<summary>
被评估为NE的单个靶病灶 是否存在状态为不可评估的靶病灶
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.LastTargetLesionEvaluate">
<summary>
上次访视点整体肿瘤评估
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.CurrentMajoreBigger0">
<summary>
当前访视点非淋巴结病灶长径>0
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.CurrenShortBigger10">
<summary>
至少一个淋巴结靶病灶短径≥10 mm
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TargetLesionCalculateDto.IsAddFive">
<summary>
该淋巴结靶病灶短径绝对增加值≥5 mm
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto">
<summary>
阅片计算Dto
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.QuestionInfo.Answer">
<summary>
答案
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.QuestionInfo.QuesionName">
<summary>
问题名称
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.QuestionInfo.LesionType">
<summary>
病灶类型
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TableQuestionInfo.Answer">
<summary>
答案
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TableQuestionInfo.TableQuestionId">
<summary>
问题Id
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TableQuestionInfo.QuestionMark">
<summary>
问题标识
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataDto.TrialId">
<summary>
项目ID
@ -3610,7 +3710,7 @@
阅片计算
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.CalculateTask(IRaCIS.Core.Application.ViewModel.CalculateTaskInDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.CalculateTask(IRaCIS.Core.Application.Service.Reading.Dto.CalculateTaskInDto)">
<summary>
计算任务
</summary>
@ -3631,14 +3731,14 @@
<param name="visitTaskId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.ReadingCalculate(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.ReadingCalculate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
自动计算
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSODData(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSODData(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取SOD
</summary>
@ -3648,28 +3748,28 @@
</remarks>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSumOfDiameter(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSumOfDiameter(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
非淋巴结靶病灶长径之和
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSODChange(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSODChange(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
与基线SOD相比变化量mm
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSODPercent(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetSODPercent(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
与整个访视期间最低点相比增加的百分比
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLowestIncrease(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLowestIncrease(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
与整个访视期间最低点相比增加的值mm
</summary>
@ -3679,7 +3779,7 @@
</remarks>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLowPercent(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLowPercent(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
与整个访视期间最低点相比增加的百分比
</summary>
@ -3689,7 +3789,7 @@
</remarks>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLowVisit(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLowVisit(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
整个访视期间最低点访视名称
</summary>
@ -3699,35 +3799,35 @@
</remarks>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetIsLymphTarget(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetIsLymphTarget(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
是否存在非淋巴结靶病灶
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetIsAddFive(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetIsAddFive(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetNETarget(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetNETarget(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
被评估为NE的单个靶病灶
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetTumor(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetTumor(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
整体肿瘤评估
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.ChangeAllLowestIncrease(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto,System.Guid)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.ChangeAllLowestIncrease(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto,System.Guid)">
<summary>
修改与整个访视期间最低点相比增加的值mm
</summary>
@ -3735,7 +3835,7 @@
<param name="questionId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.ChangeAllLowPercent(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto,System.Guid)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.ChangeAllLowPercent(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto,System.Guid)">
<summary>
修改整个访视期间最低点相比增加的百分比
</summary>
@ -3752,41 +3852,41 @@
<param name="answer"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetBaseLineSOD(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetBaseLineSOD(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取基线SOD
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetVisitTaskAnswerList(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetVisitTaskAnswerList(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取访视任务信息
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLastVisitTaskId(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetLastVisitTaskId(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取上一个访视任务Id
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetTargetLesionEvaluate(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取靶病灶评估
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetNoTargetLesionEvaluate(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetNoTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取非靶病灶评估
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetNewLesionEvaluate(IRaCIS.Core.Application.ViewModel.ReadingCalculateDto)">
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculateService.GetNewLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
<summary>
获取新病灶评估
</summary>
@ -4422,41 +4522,6 @@
标准 病灶类型
</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.ReadingCalculateDto">
<summary>
阅片计算Dto
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.QuestionInfo.Answer">
<summary>
答案
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.QuestionInfo.QuesionName">
<summary>
问题名称
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.QuestionInfo.LesionType">
<summary>
病灶类型
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.TableQuestionInfo.Answer">
<summary>
答案
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.TableQuestionInfo.TableQuestionId">
<summary>
问题Id
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.TableQuestionInfo.QuestionMark">
<summary>
问题标识
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.ReadingMedicineSystemQuestionView.Type">
<summary>
类型

View File

@ -6,7 +6,7 @@
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.ViewModel
namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public class CalculateTaskInDto
@ -16,6 +16,75 @@ namespace IRaCIS.Core.Application.ViewModel
public bool IsChangeOtherTask { get; set; }
}
public class TargetLesionCalculateDto
{
/// <summary>
/// 非淋巴结靶病灶长径之和 decimal
/// </summary>
public decimal SumOfDiameter { get; set; }
/// <summary>
/// 所有淋巴结靶病灶的短径小于10mm
/// </summary>
public bool DiameterLessThan10 { get; set; }
/// <summary>
/// SOD 百分比与基线期SOD相比减小≥30%
/// </summary>
public bool SODPercentBigger30 { get; set; }
/// <summary>
/// SOD 百分比 与基线期SOD相比减小30%
/// </summary>
public bool SODPercentLess30 { get; set; }
/// <summary>
/// SOD 百分比 整体访视期间最低点SOD相比增加
/// </summary>
public bool LowPercentLess20 { get; set; }
/// <summary>
/// SOD 百分比 比整体访视期间最低点SOD增加≥20%
/// </summary>
public bool LowPercentBigger20 { get; set; }
/// <summary>
/// SOD 变化值 比整体访视期间最低点SOD绝对增加值5 mm
/// </summary>
public bool LowChangeLess5 { get; set; }
/// <summary>
/// 比整体访视期间最低点SOD绝对增加值≥5 mm
/// </summary>
public bool LowChangeBigger5 { get; set; }
/// <summary>
/// 被评估为NE的单个靶病灶 是否存在状态为不可评估的靶病灶
/// </summary>
public bool ExixtsNETargetLesion { get; set; }
/// <summary>
/// 上次访视点整体肿瘤评估
/// </summary>
public string LastTargetLesionEvaluate { get; set; }
/// <summary>
/// 当前访视点非淋巴结病灶长径>0
/// </summary>
public bool CurrentMajoreBigger0 { get; set; }
/// <summary>
/// 至少一个淋巴结靶病灶短径≥10 mm
/// </summary>
public bool CurrenShortBigger10 { get; set; }
/// <summary>
/// 该淋巴结靶病灶短径绝对增加值≥5 mm
/// </summary>
public bool IsAddFive { get; set; }
}
/// <summary>
/// 阅片计算Dto
/// </summary>

View File

@ -889,6 +889,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
}
public class VerifyVisitTaskDto
{
public QuestionType QuestionType { get; set; }
public Func<ReadingCalculateDto, Task<string>> Fun { get; set; }
}
public class VerifyVisitTaskQuestionsOutDto
{
public bool IsVerified { get; set; }

View File

@ -90,41 +90,26 @@ namespace IRaCIS.Core.Application.Service
ErrorMessage=string.Empty,
};
foreach (var item in data.QuestionInfo.Where(x => x.QuestionType != null))
{
switch (item.QuestionType)
{
case QuestionType.TargetLesion:
var targetLesionAnswer = await GetTargetLesionEvaluate(data);
if (item.Answer != targetLesionAnswer)
{
result.IsVerified = false;
var msg = $"问题【{item.QuesionName}】的答案为【{item.Answer}】但是计算答案为【{targetLesionAnswer}】";
result.ErrorMessage += result.ErrorMessage == string.Empty ? msg : "," + msg;
}
break;
List<VerifyVisitTaskDto> types = new List<VerifyVisitTaskDto>() {
new VerifyVisitTaskDto (){ QuestionType=QuestionType.TargetLesion,Fun=this.GetTargetLesionEvaluate },
new VerifyVisitTaskDto (){ QuestionType=QuestionType.NoTargetLesion,Fun=this.GetNoTargetLesionEvaluate },
new VerifyVisitTaskDto (){ QuestionType=QuestionType.NewLesions,Fun=this.GetNewLesionEvaluate }
};
case QuestionType.NoTargetLesion:
var noTargetLesionAnswer = await GetNoTargetLesionEvaluate(data);
if (item.Answer != noTargetLesionAnswer)
foreach (var type in types)
{
var question=data.QuestionInfo.Where(x => x.QuestionType == type.QuestionType).FirstOrDefault();
if (question != null)
{
var calculateAnswer = await type.Fun(data);
if (question.Answer != calculateAnswer)
{
result.IsVerified = false;
var msg = $"问题【{item.QuesionName}】的答案为【{item.Answer}】但是计算答案为【{noTargetLesionAnswer}】";
var msg = $"问题【{question.QuesionName}】的答案为【{question.Answer}】但是计算答案为【{calculateAnswer}】";
result.ErrorMessage += result.ErrorMessage == string.Empty ? msg : "," + msg;
}
break;
case QuestionType.NewLesions:
var newTargetLesionAnswer = await GetNewLesionEvaluate(data);
if (item.Answer != newTargetLesionAnswer)
{
result.IsVerified = false;
var msg = $"问题【{item.QuesionName}】的答案为【{item.Answer}】但是计算答案为【{newTargetLesionAnswer}】";
result.ErrorMessage += result.ErrorMessage == string.Empty ? msg : "," + msg;
}
break;
}
}
return result;
}
@ -798,18 +783,18 @@ namespace IRaCIS.Core.Application.Service
public async Task<string> GetTargetLesionEvaluate(ReadingCalculateDto inDto)
{
var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
dynamic resultData = new
TargetLesionCalculateDto resultData = new TargetLesionCalculateDto()
{
//非淋巴结靶病灶长径之和
//非淋巴结靶病灶长径之和 decimal
SumOfDiameter = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SumOfDiameter).Sum(x => x.Answer.IsNullOrEmptyReturn0()),
//所有淋巴结靶病灶的短径小于10mm
//所有淋巴结靶病灶的短径小于10mm bool
DiameterLessThan10 = true,
// SOD 百分比与基线期SOD相比减小≥30%
// SOD 百分比与基线期SOD相比减小≥30% bool
SODPercentBigger30 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= (decimal)0.3,
// SOD 百分比 与基线期SOD相比减小30%
// SOD 百分比 与基线期SOD相比减小30% bool
SODPercentLess30 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SODPercent).Sum(x => x.Answer.IsNullOrEmptyReturn0()) < (decimal)0.3,
// SOD 百分比 整体访视期间最低点SOD相比增加20%
@ -872,7 +857,7 @@ namespace IRaCIS.Core.Application.Service
string result = string.Empty;
if (resultData.calculateData == 0 && resultData.DiameterLessThan10 && !resultData.ExixtsNETargetLesion)
if (resultData.SumOfDiameter == 0 && resultData.DiameterLessThan10 && !resultData.ExixtsNETargetLesion)
{
result = "CR";
}