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(); 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) 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)) && 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)) .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); filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate);
//附加评估 IR 和PM 看到的影响列表不一样
//1.1 有附加评估,会影响其他标准的任务
//附加评估 IR 和PM 看到的影响列表不一样 //1.1 有附加评估,会影响其他标准的任务
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment) 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); filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
} }
//IR 申请 PM审批
else 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); filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId);
} }
} }
}
else 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; 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 (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); filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == task.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
}
else
{
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == task.TrialReadingCriterionId);
}
} }
else else
{ {
@ -2580,15 +2584,30 @@ namespace IRaCIS.Core.Application.Service.Allocation
//附加评估 IR 和PM 看到的影响列表不一样 //附加评估 IR 和PM 看到的影响列表不一样
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment) 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); filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
} }
// 1.1 非基线任务不影响BM任务
else else
{ {
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId); 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 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 Value { get; set; } = string.Empty;
public string ValueCN { get; set; } = string.Empty; public string ValueCN { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty; public string Description { get; set; } = string.Empty;
public string DescriptionCN { get; set; } = string.Empty;
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
public Guid CreateUserId { get; set; } public Guid CreateUserId { get; set; }
public DateTime UpdateTime { 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 CreateUserRealName { get; set; } = string.Empty;
public string Description { 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 ModuleTypeName { get; set; } = string.Empty;
public string ModuleTypeNameCN { get; set; } = string.Empty;
public string SignText { 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 bool? InPlan { get; set; }
public string OptType { get; set; } = string.Empty; public string OptType { get; set; } = string.Empty;
public string OptTypeCN { get; set; } = string.Empty;
public Guid? FrontAuditConfigId { get; set; } public Guid? FrontAuditConfigId { get; set; }

View File

@ -17,6 +17,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Management; using IRaCIS.Core.Domain.Share.Management;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
using IRaCIS.Application.Contracts; using IRaCIS.Application.Contracts;
using IRaCIS.Core.Infrastructure.Extention;
namespace IRaCIS.Core.Application.Service namespace IRaCIS.Core.Application.Service
{ {
@ -780,6 +781,19 @@ namespace IRaCIS.Core.Application.Service
dynamicDictionaryNameList = dynamicDictionaryNameList.Distinct().ToList(); 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(); 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(); 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) foreach (var dynamicTranslateInfo in dynamicTranslateInfoList)
@ -818,7 +838,7 @@ namespace IRaCIS.Core.Application.Service
var dicName = innerObject["DictionaryCode"]?.ToString(); var dicName = innerObject["DictionaryCode"]?.ToString();
if(dicName!=null && !string.IsNullOrEmpty(dicName)) if (dicName != null && !string.IsNullOrEmpty(dicName))
{ {
innerObject[dynamicTranslateInfo.ColumnValue] = translateDataList[dicName].Where(t => t.Code.ToLower() == innerObject[dynamicTranslateInfo.ColumnValue].ToString().ToLower()).Select(t => t.ValueCN).FirstOrDefault(); innerObject[dynamicTranslateInfo.ColumnValue] = translateDataList[dicName].Where(t => t.Code.ToLower() == innerObject[dynamicTranslateInfo.ColumnValue].ToString().ToLower()).Select(t => t.ValueCN).FirstOrDefault();
@ -827,7 +847,7 @@ namespace IRaCIS.Core.Application.Service
} }
jsonObject[dynamicTranslateInfo.ListName] = JToken.FromObject(innberJsonList) ; jsonObject[dynamicTranslateInfo.ListName] = JToken.FromObject(innberJsonList);
} }
@ -1170,8 +1190,8 @@ namespace IRaCIS.Core.Application.Service
[HttpGet] [HttpGet]
public async Task<List<string>> GetModuleTypeDescriptionList(Guid moduleTypeId) 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(); 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.Select(t => t.Description).Distinct().ToList(); return result;
} }
/// <summary> /// <summary>
@ -1200,6 +1220,7 @@ namespace IRaCIS.Core.Application.Service
CreateTime = data.CreateTime, CreateTime = data.CreateTime,
CreateUserId = data.CreateUserId, CreateUserId = data.CreateUserId,
Description = data.Description, Description = data.Description,
DescriptionCN=data.DescriptionCN,
IsConfig = data.IsConfig, IsConfig = data.IsConfig,
IsEnable = data.IsEnable, IsEnable = data.IsEnable,
ModuleTypeId = data.ModuleTypeId, ModuleTypeId = data.ModuleTypeId,

View File

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

View File

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

View File

@ -24,6 +24,8 @@ namespace IRaCIS.Core.Domain.Models
public string Description { get; set; } = String.Empty; public string Description { get; set; } = String.Empty;
public string DescriptionCN { get; set; } = String.Empty;
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
public Guid CreateUserId { 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))) if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)))
{ {
// 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果 // 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果 、附加评估
if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer" if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer"
|| _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality" || _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality"
|| _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions" || _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions"
|| _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer") || _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer"
|| _userInfo.RequestUrl == "ReadingImageTask/submitTaskAdditionalQuestion")
{ {
var type = AuditOpt.Add; 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 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, t.QuestionName,
QuestionId = t.Id, QuestionId = t.Id,