Uat_Study
he 2023-05-31 10:36:42 +08:00
commit a726021ea9
8 changed files with 111 additions and 43 deletions

View File

@ -1269,7 +1269,6 @@ namespace IRaCIS.Core.Application.Service.Allocation
var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == trialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsAutoCreate, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException();
foreach (var task in taskList)
{
@ -1340,7 +1339,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
&& t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default))
{
//---当前为有序阅片,该受试者已有访视已申请重阅还未处理,暂不能继续申请重阅
return ResponseOutput.NotOk(_localizer["VisitTask_SequentialReading"]);
throw new BusinessValidationFailedException(_localizer["VisitTask_SequentialReading"]);
}
@ -1358,7 +1357,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
.AnyAsync(t => t.VisitTaskNum == task.VisitTaskNum))
{
//---当前为有序阅片,影像存在问题,项目组已申请回退,暂不能申请重阅
return ResponseOutput.NotOk(_localizer["VisitTask_ImageProblem"]);
throw new BusinessValidationFailedException(_localizer["VisitTask_ImageProblem"]);
}
}
@ -1539,21 +1538,32 @@ namespace IRaCIS.Core.Application.Service.Allocation
//是否是一致性分析任务 正常申请 会影响一致性分析任务
filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate);
//附加评估 IR 和PM 看到的影响列表不一样
//附加评估 IR 和PM 看到的影响列表不一样 //1.1 有附加评估,会影响其他标准的任务
//1.1 有附加评估,会影响其他标准的任务
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment)
{
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM)
// PM申请 SPM / CPM审批
if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM))
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
}
//IR 申请 PM审批
else
{
// 1.1 基线任务影响BM任务
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && _subjectVisitRepository.Any(t => t.Id == origenalTask.SourceSubjectVisitId && t.IsBaseLine == true))
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
}
// 1.1 非基线任务不影响BM任务
else
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId);
}
}
}
else
{
//默认影响的都是该标准的任务
@ -2226,18 +2236,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated;
//附加评估 IR 和PM 看到的影响列表不一样
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment)
{
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM)
{
//影像退回,必定影响两个标准的任务
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == task.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
}
else
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == task.TrialReadingCriterionId);
}
}
else
{
@ -2580,15 +2584,30 @@ namespace IRaCIS.Core.Application.Service.Allocation
//附加评估 IR 和PM 看到的影响列表不一样
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment)
{
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM)
// IR 申请 PM 同意
if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)))
{
// 1.1 基线任务影响BM任务
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && _subjectVisitRepository.Any(t=>t.Id==filterObj.SourceSubjectVisitId && t.IsBaseLine==true))
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
}
// 1.1 非基线任务不影响BM任务
else
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
}
}
//1、PM回退PM申请重阅SPM同意回退
else
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
}
}
else
{
@ -2611,8 +2630,25 @@ namespace IRaCIS.Core.Application.Service.Allocation
{
//if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment)
//{
// if(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
// {
// filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
// }
// else
// {
// filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
// }
//}
//else
//{
// //默认影响的都是该标准的任务
// filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
//}
//当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务

View File

@ -144,6 +144,7 @@ namespace IRaCIS.Core.Application.ViewModel
public string Value { get; set; } = string.Empty;
public string ValueCN { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public string DescriptionCN { get; set; } = string.Empty;
public DateTime CreateTime { get; set; }
public Guid CreateUserId { get; set; }
public DateTime UpdateTime { get; set; }

View File

@ -375,8 +375,10 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO
public string CreateUserRealName { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public string DescriptionCN { get; set; } = string.Empty;
public string ModuleTypeName { get; set; } = string.Empty;
public string ModuleTypeNameCN { get; set; } = string.Empty;
public string SignText { get; set; } = string.Empty;
@ -386,6 +388,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO
public bool? InPlan { get; set; }
public string OptType { get; set; } = string.Empty;
public string OptTypeCN { get; set; } = string.Empty;
public Guid? FrontAuditConfigId { get; set; }

View File

@ -17,6 +17,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Management;
using System.Text.Json.Nodes;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Infrastructure.Extention;
namespace IRaCIS.Core.Application.Service
{
@ -780,6 +781,19 @@ namespace IRaCIS.Core.Application.Service
dynamicDictionaryNameList = dynamicDictionaryNameList.Distinct().ToList();
}
var specialDynamicColumnValueList = new List<string>();
if (tableConfigList.Any(t => t.IsDynamicTranslate && t.IsList == false))
{
// 兼容之前数组的那种方式 实际配置只会配置一条
specialDynamicColumnValueList = tableConfigList.Where(t => t.IsDynamicTranslate && t.IsList == false)
.Select(t => t.ColumnValue ).Distinct().ToList();
var dicNames= arrays.Where(t=>!string.IsNullOrEmpty( t["DictionaryCode"].ToString()) ).Select(t => t["DictionaryCode"].ToString()).Distinct().ToList();
dictionaryNameList.AddRange(dicNames);
}
var allDictionaryNameList = dictionaryNameList.Union(dynamicDictionaryNameList).Distinct();
@ -801,6 +815,12 @@ namespace IRaCIS.Core.Application.Service
jsonObject[translateInfo.ColumnValue] = translateDataList[translateInfo.TranslateDictionaryName].Where(t => t.Code.ToLower() == jsonObject[translateInfo.ColumnValue]?.ToString().ToLower()).Select(t => t.ValueCN).FirstOrDefault();
}
foreach (var specialDynamicColumnValue in specialDynamicColumnValueList)
{
jsonObject[specialDynamicColumnValue] =
translateDataList[jsonObject["DictionaryCode"].ToString()].Where(t => t.Code.ToLower() == jsonObject[specialDynamicColumnValue]?.ToString().ToLower()).Select(t => t.ValueCN).FirstOrDefault();
}
//处理动态翻译
foreach (var dynamicTranslateInfo in dynamicTranslateInfoList)
@ -1170,8 +1190,8 @@ namespace IRaCIS.Core.Application.Service
[HttpGet]
public async Task<List<string>> GetModuleTypeDescriptionList(Guid moduleTypeId)
{
var result = await _frontAuditConfigRepository.Where(x => x.ModuleTypeId == moduleTypeId && x.ObjectTypeId != null && x.OptTypeId != null && x.Description.Length > 0).Select(x => new { x.Description, x.Sort }).OrderBy(t => t.Sort).ToListAsync();
return result.Select(t => t.Description).Distinct().ToList();
var result = await _frontAuditConfigRepository.Where(x => x.ModuleTypeId == moduleTypeId && x.ObjectTypeId != null && x.OptTypeId != null && x.Description.Length > 0).Select(x => new { x.Description, x.DescriptionCN, x.Sort }).OrderBy(t => t.Sort).Select(t => _userInfo.IsEn_Us? t.Description:t.DescriptionCN).Distinct().ToListAsync();
return result;
}
/// <summary>
@ -1200,6 +1220,7 @@ namespace IRaCIS.Core.Application.Service
CreateTime = data.CreateTime,
CreateUserId = data.CreateUserId,
Description = data.Description,
DescriptionCN=data.DescriptionCN,
IsConfig = data.IsConfig,
IsEnable = data.IsEnable,
ModuleTypeId = data.ModuleTypeId,

View File

@ -138,7 +138,11 @@ namespace IRaCIS.Core.Application.Service.Inspection
ResearchProgramNo = leftrial.ResearchProgramNo,
ObjectTypeId = data.ObjectTypeId,
Description = leftfrontAuditConfig.Description,
ModuleTypeName = leftmoduleTypec.ValueCN,
DescriptionCN=leftfrontAuditConfig.DescriptionCN,
ModuleTypeName = leftmoduleTypec.Value,
ModuleTypeNameCN=leftmoduleTypec.ValueCN,
SignText = lefttrialSign.SignText,
Identification = leftfrontAuditConfig.Identification,
FrontAuditConfigId = leftfrontAuditConfig.Id,
@ -149,6 +153,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
//IsFrontAdd=data.IsFrontAdd,
BatchId = data.BatchId,
OptType = leftOptType.Value,
OptTypeCN = leftOptType.ValueCN,
ObjectRelationParentId = data.ObjectRelationParentId,
GeneralId = data.GeneralId,

View File

@ -586,9 +586,10 @@ namespace IRaCIS.Core.Application.Service
TaskIdList = new List<Guid>()
{
visitTaskId
}
});
await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(x => !x.IsClosedDialog && x.Id == inDto.TaskMedicalReviewId, x => new TaskMedicalReview()
{
IsClosedDialog = true,
@ -599,8 +600,6 @@ namespace IRaCIS.Core.Application.Service
FileName = inDto.FileName,
ImagePath = JsonConvert.SerializeObject(inDto.FileList),
DisagreeReason = inDto.DisagreeReason,
});
}

View File

@ -24,6 +24,8 @@ namespace IRaCIS.Core.Domain.Models
public string Description { get; set; } = String.Empty;
public string DescriptionCN { get; set; } = String.Empty;
public DateTime CreateTime { get; set; }
public Guid CreateUserId { get; set; }

View File

@ -2375,11 +2375,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common
//保存影像质量 多条记录,只记录一条稽查
if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)))
{
// 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果
// 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果 、附加评估
if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer"
|| _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality"
|| _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions"
|| _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer")
|| _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer"
|| _userInfo.RequestUrl == "ReadingImageTask/submitTaskAdditionalQuestion")
{
var type = AuditOpt.Add;
@ -2389,7 +2390,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var taskQuestionAnswerList = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(t => t.Entity as ReadingTaskQuestionAnswer).ToList();
//获取问题名称 组合成数组
var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => taskQuestionAnswerList.Select(k => k.ReadingQuestionTrialId).Contains(t.Id)).Select(t => new
var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => taskQuestionAnswerList.Select(k => k.ReadingQuestionTrialId).Contains(t.Id)).IgnoreQueryFilters().Select(t => new
{
t.QuestionName,
QuestionId = t.Id,