+1
-1
@@ -149,7 +149,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
var pageList = await subjectCriteriaEvaluationQueryable
|
||||
.WhereIf(inQuery.IsImageFiltering != null, t => t.IsImageFiltering == inQuery.IsImageFiltering)
|
||||
.WhereIf(inQuery.IsJoinEvaluation != null, t => t.IsJoinEvaluation == inQuery.IsJoinEvaluation)
|
||||
.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||
.ToPagedListAsync(inQuery,nameof(SubjectCriteriaEvaluationView.SubjectCode));
|
||||
|
||||
|
||||
foreach (var item in pageList.CurrentPageData)
|
||||
|
||||
@@ -264,10 +264,10 @@ namespace IRaCIS.Core.Application.Service
|
||||
/// <summary>
|
||||
/// 获取CRC受试者临床数据
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto)
|
||||
public async Task<PageOutput<GetCRCSubjectClinicalOutDto>> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inQuery)
|
||||
{
|
||||
|
||||
//await AutoAddCRCClinical(new AutoAddClinicalInDto()
|
||||
@@ -275,22 +275,22 @@ namespace IRaCIS.Core.Application.Service
|
||||
// TrialId = inDto.TrialId
|
||||
//}) ;
|
||||
|
||||
var subjects = await _subjectRepository.Where(x => x.TrialId == inDto.TrialId).Select(x => new GetCRCSubjectClinicalResultDto()
|
||||
var subjects = await _subjectRepository.Where(x => x.TrialId == inQuery.TrialId).Select(x => new GetCRCSubjectClinicalResultDto()
|
||||
{
|
||||
SubjectId = x.Id,
|
||||
SubjectCode = x.Code
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
var clinicalData= _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit)
|
||||
var clinicalData= _readingClinicalDataRepository.Where(x=>x.TrialId == inQuery.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit)
|
||||
.Where(x=>!x.IsSign)
|
||||
.WhereIf(inDto.SubjectId!=null,x=>x.SubjectId==inDto.SubjectId)
|
||||
.WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode??string.Empty))
|
||||
.WhereIf(inQuery.SubjectId!=null,x=>x.SubjectId==inQuery.SubjectId)
|
||||
.WhereIf(inQuery.SubjectCode != null, x => x.Subject.Code.Contains(inQuery.SubjectCode??string.Empty))
|
||||
.Where(x=> x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject)
|
||||
.Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() {
|
||||
SubjectId=x.SubjectId,
|
||||
SubjectCode=x.Subject.Code,
|
||||
TrialId=inDto.TrialId,
|
||||
TrialId=inQuery.TrialId,
|
||||
ReadingId= x.ReadingId,
|
||||
ReadingClinicalDataId=x.Id,
|
||||
UploadRole = x.ClinicalDataTrialSet.UploadRole,
|
||||
@@ -302,13 +302,13 @@ namespace IRaCIS.Core.Application.Service
|
||||
ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName,
|
||||
});
|
||||
|
||||
var pageList = await clinicalData.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, string.IsNullOrWhiteSpace(inDto.SortField) ? nameof(GetCRCSubjectClinicalOutDto.SubjectCode) : inDto.SortField, inDto.Asc);
|
||||
var pageList = await clinicalData.ToPagedListAsync(inQuery, nameof(GetCRCSubjectClinicalOutDto.SubjectCode) );
|
||||
// 一次查询报错 分两次写
|
||||
pageList.CurrentPageData.ForEach(x =>
|
||||
{
|
||||
x.ClinicalDataSetEnName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us);
|
||||
});
|
||||
var clinicalFormData = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId).ToListAsync();
|
||||
var clinicalFormData = await _clinicalFormRepository.Where(x => x.TrialId == inQuery.TrialId).ToListAsync();
|
||||
pageList.CurrentPageData.ForEach(n =>
|
||||
{
|
||||
n.ClinicalCount = clinicalFormData.Where(y => y.ClinicalDataTrialSetId == n.ClinicalDataTrialSetId && y.SubjectId == n.SubjectId).Count();
|
||||
|
||||
@@ -43,79 +43,79 @@ namespace IRaCIS.Core.Application.Service
|
||||
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取问题计算关系
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetTrialClinicalQuestionCalculateRelationOutDto>> GetTrialClinicalQuestionCalculateRelation(GetTrialClinicalQuestionCalculateRelationInDto inDto)
|
||||
/// <summary>
|
||||
/// 获取问题计算关系
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetTrialClinicalQuestionCalculateRelationOutDto>> GetTrialClinicalQuestionCalculateRelation(GetTrialClinicalQuestionCalculateRelationInDto inDto)
|
||||
{
|
||||
|
||||
var result= await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||
.Where( x=> x.ClinicalQuestionType == "number")
|
||||
.Where(x => x.CustomCalculateMark != null && x.CustomCalculateMark > ClinicalCalculateMark.None)
|
||||
.Select(x => new GetTrialClinicalQuestionCalculateRelationOutDto()
|
||||
{
|
||||
QuestionId = x.Id,
|
||||
QuestionName = x.QuestionName,
|
||||
CustomCalculateMark = x.CustomCalculateMark,
|
||||
CalculateQuestionList = x.CalculateQuestionList,
|
||||
}).ToListAsync();
|
||||
var result = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||
.Where(x => x.ClinicalQuestionType == "number")
|
||||
.Where(x => x.CustomCalculateMark != null && x.CustomCalculateMark > ClinicalCalculateMark.None)
|
||||
.Select(x => new GetTrialClinicalQuestionCalculateRelationOutDto()
|
||||
{
|
||||
QuestionId = x.Id,
|
||||
QuestionName = x.QuestionName,
|
||||
CustomCalculateMark = x.CustomCalculateMark,
|
||||
CalculateQuestionList = x.CalculateQuestionList,
|
||||
}).ToListAsync();
|
||||
result = result.Where(x => x.CalculateQuestionList.Count() > 0).ToList();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取计算问题
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetClinicalCalculateQuestionsOutDto>> GetClinicalCalculateQuestions(GetClinicalCalculateQuestionsInDto inDto)
|
||||
{
|
||||
var result = await _trialClinicalQuestionRepository
|
||||
/// <summary>
|
||||
/// 获取计算问题
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetClinicalCalculateQuestionsOutDto>> GetClinicalCalculateQuestions(GetClinicalCalculateQuestionsInDto inDto)
|
||||
{
|
||||
var result = await _trialClinicalQuestionRepository
|
||||
|
||||
.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||
.WhereIf(!inDto.ClinicalQuestionType.IsNullOrEmpty(), x => x.ClinicalQuestionType == inDto.ClinicalQuestionType)
|
||||
.OrderBy(x => x.ShowOrder)
|
||||
.Select(x => new GetClinicalCalculateQuestionsOutDto
|
||||
()
|
||||
{
|
||||
QuestionId = x.Id,
|
||||
QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us)
|
||||
.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||
.WhereIf(!inDto.ClinicalQuestionType.IsNullOrEmpty(), x => x.ClinicalQuestionType == inDto.ClinicalQuestionType)
|
||||
.OrderBy(x => x.ShowOrder)
|
||||
.Select(x => new GetClinicalCalculateQuestionsOutDto
|
||||
()
|
||||
{
|
||||
QuestionId = x.Id,
|
||||
QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us)
|
||||
|
||||
}).ToListAsync();
|
||||
}).ToListAsync();
|
||||
|
||||
var tablequestion = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.ClinicalTableQuestionType == "number").Select(x =>
|
||||
new
|
||||
{
|
||||
TableQuestionId = x.Id,
|
||||
QuestionId= x.QuestionId,
|
||||
QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us)
|
||||
}).ToListAsync();
|
||||
var tablequestion = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.ClinicalTableQuestionType == "number").Select(x =>
|
||||
new
|
||||
{
|
||||
TableQuestionId = x.Id,
|
||||
QuestionId = x.QuestionId,
|
||||
QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us)
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
result.ForEach(x =>
|
||||
{
|
||||
x.TableQuestions = tablequestion.Where(y => x.QuestionId == y.QuestionId).Select(y => new CalculateQuestion()
|
||||
{
|
||||
result.ForEach(x =>
|
||||
{
|
||||
x.TableQuestions = tablequestion.Where(y => x.QuestionId == y.QuestionId).Select(y => new CalculateQuestion()
|
||||
{
|
||||
|
||||
QuestionId = y.QuestionId,
|
||||
QuestionName = y.QuestionName
|
||||
QuestionId = y.QuestionId,
|
||||
QuestionName = y.QuestionName
|
||||
|
||||
}).ToList();
|
||||
});
|
||||
}).ToList();
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取系统临床数据预览
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
/// <summary>
|
||||
/// 获取系统临床数据预览
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<(List<ClinicalQuestionPreviewDto>, bool)> GetSystemClinicalQuestionPreview(GetSystemClinicalQuestionPreviewDto inDto)
|
||||
{
|
||||
var questions = await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
||||
@@ -123,18 +123,20 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
if (_userInfo.IsEn_Us)
|
||||
{
|
||||
questions.ForEach(x => {
|
||||
questions.ForEach(x =>
|
||||
{
|
||||
x.GroupName = x.GroupEnName;
|
||||
x.QuestionName = x.QuestionEnName;
|
||||
});
|
||||
}
|
||||
var tableQuestions= await _systemClinicalTableQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
||||
var tableQuestions = await _systemClinicalTableQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId)
|
||||
.ProjectTo<ClinicalTablePreviewDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||
|
||||
|
||||
if (_userInfo.IsEn_Us)
|
||||
{
|
||||
tableQuestions.ForEach(x => {
|
||||
tableQuestions.ForEach(x =>
|
||||
{
|
||||
x.QuestionName = x.QuestionEnName;
|
||||
});
|
||||
}
|
||||
@@ -159,11 +161,12 @@ namespace IRaCIS.Core.Application.Service
|
||||
public async Task<(List<ClinicalQuestionPreviewDto>, bool)> GetTrialClinicalQuestionPreview(GetTrialClinicalQuestionPreviewDto inDto)
|
||||
{
|
||||
var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId)
|
||||
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync();
|
||||
|
||||
.ProjectTo<ClinicalQuestionPreviewDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||
|
||||
if (_userInfo.IsEn_Us)
|
||||
{
|
||||
questions.ForEach(x => {
|
||||
questions.ForEach(x =>
|
||||
{
|
||||
x.GroupName = x.GroupEnName;
|
||||
x.QuestionName = x.QuestionEnName;
|
||||
});
|
||||
@@ -175,7 +178,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
if (_userInfo.IsEn_Us)
|
||||
{
|
||||
tableQuestions.ForEach(x => {
|
||||
tableQuestions.ForEach(x =>
|
||||
{
|
||||
x.QuestionName = x.QuestionEnName;
|
||||
});
|
||||
}
|
||||
@@ -185,7 +189,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
result.ForEach(x =>
|
||||
{
|
||||
this.FindChildQuestion(x, questions, tableQuestions,new List<ClinicalFormQuestionAnswer> (),new List<ClinicalFormTableQuestionAnswer>());
|
||||
this.FindChildQuestion(x, questions, tableQuestions, new List<ClinicalFormQuestionAnswer>(), new List<ClinicalFormTableQuestionAnswer>());
|
||||
});
|
||||
|
||||
return (result, true);
|
||||
@@ -201,15 +205,15 @@ namespace IRaCIS.Core.Application.Service
|
||||
/// <param name="tableQuestions"></param>
|
||||
/// <param name="answers"></param>
|
||||
/// <param name="tableAnswers"></param>
|
||||
public void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions,List<ClinicalFormQuestionAnswer> answers, List<ClinicalFormTableQuestionAnswer> tableAnswers)
|
||||
public void FindChildQuestion(ClinicalQuestionPreviewDto item, List<ClinicalQuestionPreviewDto> questions, List<ClinicalTablePreviewDto> tableQuestions, List<ClinicalFormQuestionAnswer> answers, List<ClinicalFormTableQuestionAnswer> tableAnswers)
|
||||
{
|
||||
item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).OrderBy(x => x.ShowOrder).ToList();
|
||||
item.Childrens = questions.Where(x => (x.ParentId == item.Id) || (x.GroupId == item.Id && x.ParentId == null)).OrderBy(x => x.ShowOrder).ToList();
|
||||
|
||||
item.RelationQuestions = questions.Where(x => x.RelevanceId == item.Id).ToList();
|
||||
item.RelationQuestions = questions.Where(x => x.RelevanceId == item.Id).ToList();
|
||||
|
||||
item.Answer = answers.Where(x => x.QuestionId == item.Id).Select(x => x.Answer).FirstOrDefault()??string.Empty;
|
||||
item.Answer = answers.Where(x => x.QuestionId == item.Id).Select(x => x.Answer).FirstOrDefault() ?? string.Empty;
|
||||
|
||||
var tableIndexs = tableAnswers.Where(x => x.QuestionId == item.Id).Select(x => x.RowIndex).Distinct().OrderBy(x=>x).ToList();
|
||||
var tableIndexs = tableAnswers.Where(x => x.QuestionId == item.Id).Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList();
|
||||
|
||||
item.TableAnswer = new List<Dictionary<Guid, string>>();
|
||||
|
||||
@@ -221,16 +225,18 @@ namespace IRaCIS.Core.Application.Service
|
||||
});
|
||||
|
||||
|
||||
item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x=>x.ShowOrder).OrderBy(x => x.ShowOrder).ToList();
|
||||
item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x => x.ShowOrder).OrderBy(x => x.ShowOrder).ToList();
|
||||
|
||||
item.RelationQuestions.ForEach(x => {
|
||||
item.RelationQuestions.ForEach(x =>
|
||||
{
|
||||
this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers);
|
||||
});
|
||||
|
||||
item.Childrens.ForEach(x => {
|
||||
this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers);
|
||||
});
|
||||
}
|
||||
item.Childrens.ForEach(x =>
|
||||
{
|
||||
this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers);
|
||||
});
|
||||
}
|
||||
|
||||
#region 项目问题
|
||||
|
||||
@@ -243,12 +249,11 @@ namespace IRaCIS.Core.Application.Service
|
||||
public async Task<PageOutput<TrialClinicalQuestionDto>> GetTrialClinicalQuestionList(TrialClinicalQuestionQuery inQuery)
|
||||
{
|
||||
|
||||
var trialClinicalQuestionQueryable = _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inQuery.TrialClinicalId)
|
||||
var trialClinicalQuestionQueryable = _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inQuery.TrialClinicalId)
|
||||
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
||||
var pageList = await trialClinicalQuestionQueryable
|
||||
.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TrialClinicalQuestion.ShowOrder) : inQuery.SortField,
|
||||
inQuery.Asc);
|
||||
.ToPagedListAsync(inQuery, nameof(TrialClinicalQuestion.ShowOrder));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@@ -265,18 +270,18 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
|
||||
{
|
||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"],string.Empty,ApiResponseCodeEnum.NeedTips);
|
||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||
{
|
||||
return ResponseOutput.NotOk("问题序号存在重复!");
|
||||
}
|
||||
|
||||
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.IsCheckDate == inDto.IsCheckDate&&inDto.IsCheckDate))
|
||||
if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.IsCheckDate == inDto.IsCheckDate && inDto.IsCheckDate))
|
||||
{
|
||||
return ResponseOutput.NotOk("已经添加过类型为检查日期的问题!");
|
||||
}
|
||||
@@ -306,7 +311,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
[HttpPost]
|
||||
public async Task<List<TrialClinicalQuestionDto>> GetTrialClinicalGroupQuestionList(GetTrialGroupDto inDto)
|
||||
{
|
||||
return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId&&x.ClinicalQuestionType== "group")
|
||||
return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.ClinicalQuestionType == "group")
|
||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
}
|
||||
|
||||
@@ -322,7 +327,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
"select","radio"
|
||||
};
|
||||
return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && types.Contains( x.ClinicalQuestionType))
|
||||
return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && types.Contains(x.ClinicalQuestionType))
|
||||
.ProjectTo<TrialClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
}
|
||||
|
||||
@@ -341,12 +346,11 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
|
||||
var systemClinicalQuestionQueryable = _systemClinicalQuestionRepository
|
||||
.Where(x=>x.SystemClinicalId==inQuery.SystemClinicalId)
|
||||
.Where(x => x.SystemClinicalId == inQuery.SystemClinicalId)
|
||||
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName))
|
||||
.ProjectTo<SystemClinicalQuestionDto>(_mapper.ConfigurationProvider);
|
||||
var pageList = await systemClinicalQuestionQueryable
|
||||
.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(SystemClinicalQuestion.ShowOrder) : inQuery.SortField,
|
||||
inQuery.Asc);
|
||||
.ToPagedListAsync(inQuery, nameof(SystemClinicalQuestion.ShowOrder));
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@@ -367,7 +371,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder))
|
||||
{
|
||||
@@ -404,7 +408,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
[HttpPost]
|
||||
public async Task<List<SystemClinicalQuestionDto>> GetSystemClinicalGroupQuestionList(GetSystemGroupDto inDto)
|
||||
{
|
||||
return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionType =="group")
|
||||
return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionType == "group")
|
||||
.ProjectTo<SystemClinicalQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
}
|
||||
|
||||
@@ -443,8 +447,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
.Where(x => x.QuestionId == inQuery.QuestionId)
|
||||
.ProjectTo<SystemClinicalTableQuestionDto>(_mapper.ConfigurationProvider);
|
||||
|
||||
var pageList = await systemClinicalTableQuestionQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(SystemClinicalTableQuestion.ShowOrder) : inQuery.SortField,
|
||||
inQuery.Asc);
|
||||
var pageList = await systemClinicalTableQuestionQueryable.ToPagedListAsync(inQuery, nameof(SystemClinicalTableQuestion.ShowOrder));
|
||||
|
||||
return pageList;
|
||||
}
|
||||
@@ -502,7 +505,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
"select","radio"
|
||||
};
|
||||
return await this._systemClinicalTableQuestionRepository.Where(x => x.QuestionId == inDto.QuestionId && types.Contains(x.ClinicalTableQuestionType))
|
||||
.Where(x=>x.Id!= inDto.TableQuestionId)
|
||||
.Where(x => x.Id != inDto.TableQuestionId)
|
||||
.ProjectTo<SystemClinicalTableQuestionDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
}
|
||||
#endregion
|
||||
@@ -541,8 +544,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
.Where(x => x.QuestionId == inQuery.QuestionId)
|
||||
.ProjectTo<TrialClinicalTableQuestionDto>(_mapper.ConfigurationProvider);
|
||||
|
||||
var pageList = await trialClinicalTableQuestionQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TrialClinicalTableQuestion.ShowOrder) : inQuery.SortField,
|
||||
inQuery.Asc);
|
||||
var pageList = await trialClinicalTableQuestionQueryable.ToPagedListAsync(inQuery, nameof(TrialClinicalTableQuestion.ShowOrder));
|
||||
|
||||
return pageList;
|
||||
}
|
||||
@@ -600,11 +602,11 @@ namespace IRaCIS.Core.Application.Service
|
||||
var trialClinicalId = inDto.Select(x => x.TrialClinicalId).ToList();
|
||||
|
||||
var systemClinicalId = inDto.Select(x => x.SystemClinicalId).ToList();
|
||||
var questionRelationList =await _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic()
|
||||
var questionRelationList = await _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic()
|
||||
{
|
||||
SystemQuestionId=x.SystemClinicalQuestionId?? default(Guid),
|
||||
TrialQuestionId=x.Id,
|
||||
TrialClinicalId=x.TrialClinicalId,
|
||||
SystemQuestionId = x.SystemClinicalQuestionId ?? default(Guid),
|
||||
TrialQuestionId = x.Id,
|
||||
TrialClinicalId = x.TrialClinicalId,
|
||||
}).ToListAsync();
|
||||
|
||||
var tableQuestionRelationList = await _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic()
|
||||
@@ -625,7 +627,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
List<TrialClinicalTableQuestion> addTrialTableList = new List<TrialClinicalTableQuestion>();
|
||||
foreach (var item in inDto)
|
||||
{
|
||||
var questionRelation = questionRelationList.Where(x=>x.TrialClinicalId==item.TrialClinicalId).ToDictionary(
|
||||
var questionRelation = questionRelationList.Where(x => x.TrialClinicalId == item.TrialClinicalId).ToDictionary(
|
||||
x => x.SystemQuestionId,
|
||||
x => x.TrialQuestionId
|
||||
);
|
||||
@@ -659,11 +661,11 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
question.GroupId = questionRelation[question.GroupId ?? default(Guid)];
|
||||
}
|
||||
if (question.RelevanceId != null)
|
||||
{
|
||||
question.RelevanceId = questionRelation[question.RelevanceId ?? default(Guid)];
|
||||
}
|
||||
addTrialDataList.Add(question);
|
||||
if (question.RelevanceId != null)
|
||||
{
|
||||
question.RelevanceId = questionRelation[question.RelevanceId ?? default(Guid)];
|
||||
}
|
||||
addTrialDataList.Add(question);
|
||||
};
|
||||
|
||||
|
||||
@@ -711,7 +713,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
await _trialClinicalQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId));
|
||||
await _trialClinicalQuestionRepository.AddRangeAsync(addTrialDataList);
|
||||
await _trialClinicalTableQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId) );
|
||||
await _trialClinicalTableQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId));
|
||||
await _trialClinicalTableQuestionRepository.AddRangeAsync(addTrialTableList);
|
||||
await _trialClinicalQuestionRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
+46
-46
@@ -255,7 +255,7 @@ namespace IRaCIS.Application.Services
|
||||
var query = _readingClinicalDataRepository.AsQueryable();
|
||||
if (inDto.StudyId != null)
|
||||
{
|
||||
query = query.Where(x => x.StudyId == inDto.StudyId.Value && x.TrialId==inDto.TrialId&&x.SubjectId==inDto.SubjectId);
|
||||
query = query.Where(x => x.StudyId == inDto.StudyId.Value && x.TrialId == inDto.TrialId && x.SubjectId == inDto.SubjectId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -393,7 +393,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
//如果先生成了任务,再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护
|
||||
|
||||
if (await _repository.AnyAsync<ClinicalDataTrialSet>(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.Subject|| t.ClinicalDataLevel == ClinicalLevel.SubjectVisit)))
|
||||
if (await _repository.AnyAsync<ClinicalDataTrialSet>(t => t.Id == data.ClinicalDataTrialSetId && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataLevel == ClinicalLevel.SubjectVisit)))
|
||||
{
|
||||
var needDealTrialReadingCriterionIdList = _repository.Where<ClinicalDataTrialSet>(t => t.Id == data.ClinicalDataTrialSetId)
|
||||
.SelectMany(t => t.TrialClinicalDataSetCriteriaList)
|
||||
@@ -435,7 +435,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
// var readingId = await _readingClinicalDataRepository.Where(x => x.Id == inDto.ReadingClinicalDataId).Select(x => x.ReadingId).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
// //如果先生成了任务,再签名subject级别 PM 临床数据,那么会导致其他标准的任务签名状态无法得到维护
|
||||
|
||||
@@ -511,7 +511,7 @@ namespace IRaCIS.Application.Services
|
||||
else
|
||||
{
|
||||
//判断是影像学 还是肿瘤学阅片
|
||||
readModule = await _readModuleRepository.Where(t => t.Id == readingId).FirstNotNullAsync();
|
||||
readModule = await _readModuleRepository.Where(t => t.Id == readingId).FirstNotNullAsync();
|
||||
|
||||
//CRC 阅片期自定义结构化录入是否签名
|
||||
bool crcReadModuleSign = true;
|
||||
@@ -573,7 +573,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
Expression<Func<VisitTask, bool>> visitTaskLambda = x => x.TrialId == trialId && x.SubjectId == subjectId && x.TrialReadingCriterionId == trialReadingCritrialId;
|
||||
|
||||
if (isVisit ||(isVisit==false && readModule.ReadingSetType == ReadingSetType.ImageReading))
|
||||
if (isVisit || (isVisit == false && readModule.ReadingSetType == ReadingSetType.ImageReading))
|
||||
{
|
||||
//访视类型的任务 不影响肿瘤学任务的临床数据状态
|
||||
visitTaskLambda = visitTaskLambda.And(x => x.ArmEnum != Arm.TumorArm);
|
||||
@@ -730,11 +730,11 @@ namespace IRaCIS.Application.Services
|
||||
var subjectCode = string.Empty;
|
||||
if (inDto.ReadingId == null)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.AsQueryable().Include(x=>x.Subject)
|
||||
|
||||
var visitTask = await _visitTaskRepository.AsQueryable().Include(x => x.Subject)
|
||||
|
||||
.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
||||
subjectCode=visitTask.BlindSubjectCode.IsNullOrEmpty() ? visitTask.Subject.Code : visitTask.BlindSubjectCode;
|
||||
readingNameOrTaskBlindName = visitTask.TaskBlindName;
|
||||
subjectCode = visitTask.BlindSubjectCode.IsNullOrEmpty() ? visitTask.Subject.Code : visitTask.BlindSubjectCode;
|
||||
readingNameOrTaskBlindName = visitTask.TaskBlindName;
|
||||
}
|
||||
inDto.SelectIsSign = false;
|
||||
var result = await GetClinicalDataList(inDto);
|
||||
@@ -747,7 +747,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||
|
||||
@@ -806,14 +806,15 @@ namespace IRaCIS.Application.Services
|
||||
var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine);
|
||||
|
||||
|
||||
var result = await this.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() {
|
||||
ClinicalDataTrialSetId = inDto.ClinicalDataTrialSetId,
|
||||
GetClinicalType=inDto.GetClinicalType,
|
||||
SubjectId=inDto.SubjectId,
|
||||
TrialId=inDto.TrialId,
|
||||
SelectIsSign=false,
|
||||
ReadingId =inDto.ReadingId,
|
||||
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||
var result = await this.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto()
|
||||
{
|
||||
ClinicalDataTrialSetId = inDto.ClinicalDataTrialSetId,
|
||||
GetClinicalType = inDto.GetClinicalType,
|
||||
SubjectId = inDto.SubjectId,
|
||||
TrialId = inDto.TrialId,
|
||||
SelectIsSign = false,
|
||||
ReadingId = inDto.ReadingId,
|
||||
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||
});
|
||||
var readingIds = result.Select(x => x.ReadingId).ToList();
|
||||
|
||||
@@ -841,9 +842,9 @@ namespace IRaCIS.Application.Services
|
||||
public async Task<List<GetReadingClinicalDataListOutDto>> GetClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto)
|
||||
{
|
||||
|
||||
var resultQuery = _readingClinicalDataRepository.Where(x=>1==1).Select(x=> new GetReadingClinicalDataListOutDto() { });
|
||||
var resultQuery = _readingClinicalDataRepository.Where(x => 1 == 1).Select(x => new GetReadingClinicalDataListOutDto() { });
|
||||
bool isSelfAnalysis = false;
|
||||
var otherIsSelfAnalysisList=new List<GetReadingClinicalDataListOutDto>();
|
||||
var otherIsSelfAnalysisList = new List<GetReadingClinicalDataListOutDto>();
|
||||
if (inDto.ReadingId == null)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId);
|
||||
@@ -890,23 +891,23 @@ namespace IRaCIS.Application.Services
|
||||
Id = y.Id,
|
||||
FileName = y.FileName,
|
||||
Path = y.Path,
|
||||
Size=y.Size,
|
||||
Type=y.Type,
|
||||
Size = y.Size,
|
||||
Type = y.Type,
|
||||
CreateTime = y.CreateTime,
|
||||
}).ToList(),
|
||||
});
|
||||
|
||||
// 是否获取所有一致性分析的数据
|
||||
if(inDto.IsGetAllConsistencyAnalysis)
|
||||
if (inDto.IsGetAllConsistencyAnalysis)
|
||||
{
|
||||
// 原来的非PDF
|
||||
otherIsSelfAnalysisList =await _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||
otherIsSelfAnalysisList = await _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
|
||||
.WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId)
|
||||
.WhereIf(inDto.ClinicalDataTrialSetId != null, x => x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId)
|
||||
.WhereIf(inDto.SelectIsSign, x => x.IsSign == true)
|
||||
.Where(x => x.ReadingId == inDto.ReadingId)
|
||||
.WhereIf(inDto.TrialReadingCriterionId != null, x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
|
||||
.Where(x => x.ClinicalDataTrialSet.ClinicalUploadType != ClinicalUploadType.PDF||x.ClinicalDataTrialSet.ClinicalDataLevel== ClinicalLevel.Study)
|
||||
.Where(x => x.ClinicalDataTrialSet.ClinicalUploadType != ClinicalUploadType.PDF || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Study)
|
||||
.Select(x => new GetReadingClinicalDataListOutDto()
|
||||
{
|
||||
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,
|
||||
@@ -937,9 +938,9 @@ namespace IRaCIS.Application.Services
|
||||
}).ToList(),
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -980,9 +981,9 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var result = new List<GetReadingClinicalDataListOutDto>();
|
||||
if (!inDto.IsOnlyGetCRCReadModule)
|
||||
@@ -1143,10 +1144,10 @@ namespace IRaCIS.Application.Services
|
||||
TrialId = inDto.TrialId,
|
||||
SelectIsSign = false,
|
||||
IsGetAllConsistencyAnalysis = false,
|
||||
VisitTaskId=inDto.VisitTaskId,
|
||||
VisitTaskId = inDto.VisitTaskId,
|
||||
});
|
||||
|
||||
return (result,true);
|
||||
|
||||
return (result, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -1227,7 +1228,7 @@ namespace IRaCIS.Application.Services
|
||||
entity.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded;
|
||||
entity.IsSign = false;
|
||||
entity.FileCount = fileCount;
|
||||
entity.CreateTime=DateTime.Now;
|
||||
entity.CreateTime = DateTime.Now;
|
||||
var success = await _readingConsistentClinicalDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(entity.Id);
|
||||
|
||||
@@ -1254,7 +1255,7 @@ namespace IRaCIS.Application.Services
|
||||
IsSign = true,
|
||||
IsBlind = inDto.IsBlind,
|
||||
IsComplete = inDto.IsComplete,
|
||||
ReadingClinicalDataState= ReadingClinicalDataStatus.HaveSigned,
|
||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned,
|
||||
});
|
||||
await _readingClinicalDataPDFRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(pdfCount);
|
||||
@@ -1268,8 +1269,8 @@ namespace IRaCIS.Application.Services
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> SetTaskValid(SetTaskValidInDto inDto)
|
||||
{
|
||||
var visittask = await _visitTaskRepository.AsQueryable().Include(x=>x.TrialReadingCriterion).Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
var readingId = visittask.SouceReadModuleId==null? visittask.SourceSubjectVisitId: visittask.SouceReadModuleId;
|
||||
var visittask = await _visitTaskRepository.AsQueryable().Include(x => x.TrialReadingCriterion).Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
var readingId = visittask.SouceReadModuleId == null ? visittask.SourceSubjectVisitId : visittask.SouceReadModuleId;
|
||||
|
||||
if (await _readingConsistentClinicalDataRepository.AnyAsync(x => x.ReadingId == readingId
|
||||
|
||||
@@ -1277,12 +1278,12 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
return ResponseOutput.NotOk(_localizer["ReadingClinicalData_HaveUnsignedClinicalData"]);
|
||||
}
|
||||
if(visittask.TrialReadingCriterion.IsReadingTaskViewInOrder== ReadingOrder.InOrder)
|
||||
if (visittask.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
|
||||
{
|
||||
if(await _visitTaskRepository.Where(x=>x.SubjectId== visittask.SubjectId
|
||||
&&x.TrialReadingCriterionId== visittask.TrialReadingCriterionId
|
||||
&&x.VisitTaskNum< visittask.VisitTaskNum&&x.IsAnalysisCreate==visittask.IsAnalysisCreate
|
||||
&&x.IsSelfAnalysis==visittask.IsSelfAnalysis&&x.ArmEnum==visittask.ArmEnum&&x.TaskState==TaskState.NotEffect).AnyAsync()
|
||||
if (await _visitTaskRepository.Where(x => x.SubjectId == visittask.SubjectId
|
||||
&& x.TrialReadingCriterionId == visittask.TrialReadingCriterionId
|
||||
&& x.VisitTaskNum < visittask.VisitTaskNum && x.IsAnalysisCreate == visittask.IsAnalysisCreate
|
||||
&& x.IsSelfAnalysis == visittask.IsSelfAnalysis && x.ArmEnum == visittask.ArmEnum && x.TaskState == TaskState.NotEffect).AnyAsync()
|
||||
)
|
||||
{
|
||||
return ResponseOutput.NotOk(_localizer["ReadingClinicalData_NeedSetBeforeTaskEffect"]);
|
||||
@@ -1305,15 +1306,14 @@ namespace IRaCIS.Application.Services
|
||||
/// <summary>
|
||||
/// 获取单个阅片临床数据的所有文件
|
||||
/// </summary>
|
||||
/// <param name="inDto"></param>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<GetReadingClinicalDataPDFListOutDto>> GetReadingClinicalDataPDFList(GetReadingClinicalDataPDFListIndto inDto)
|
||||
public async Task<PageOutput<GetReadingClinicalDataPDFListOutDto>> GetReadingClinicalDataPDFList(GetReadingClinicalDataPDFListIndto inQuery)
|
||||
{
|
||||
|
||||
var result = await _readingClinicalDataPDFRepository.Where(x => x.ReadingClinicalDataId == inDto.ReadingClinicalDataId).ProjectTo<GetReadingClinicalDataPDFListOutDto>(_mapper.ConfigurationProvider)
|
||||
.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataPDFListOutDto.FileName) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
var result = await _readingClinicalDataPDFRepository.Where(x => x.ReadingClinicalDataId == inQuery.ReadingClinicalDataId).ProjectTo<GetReadingClinicalDataPDFListOutDto>(_mapper.ConfigurationProvider)
|
||||
.ToPagedListAsync(inQuery, nameof(GetReadingClinicalDataPDFListOutDto.FileName));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -880,8 +880,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
}).WhereIf(!inDto.SubjectCode.IsNullOrEmpty(), x => x.SubjectCode == inDto.SubjectCode);
|
||||
|
||||
var result=await taskMedicalReviewquery.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(GetIRMedicalFeedbackListOutDto.AuditState) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
var result=await taskMedicalReviewquery.ToPagedListAsync(inDto, nameof(GetIRMedicalFeedbackListOutDto.AuditState));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
+11
-11
@@ -166,26 +166,26 @@ namespace IRaCIS.Core.Application.Service
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<(PageOutput<ReadingMedicineTrialQuestionView>, object)> GetReadingMedicineTrialQuestionList(ReadingMedicineTrialQuestionQuery inDto)
|
||||
public async Task<(PageOutput<ReadingMedicineTrialQuestionView>, object)> GetReadingMedicineTrialQuestionList(ReadingMedicineTrialQuestionQuery inQuery)
|
||||
{
|
||||
var query = _readingMedicineTrialQuestionRepository.AsQueryable()
|
||||
.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||
.WhereIf(!inDto.TypeValue.IsNullOrEmpty(), x => x.TypeValue.Contains(inDto.TypeValue))
|
||||
.WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue))
|
||||
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
||||
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
||||
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
||||
.WhereIf(inDto.LanguageType != null, x => x.LanguageType == inDto.LanguageType)
|
||||
.Where(x => x.TrialId == inQuery.TrialId && x.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||
.WhereIf(!inQuery.TypeValue.IsNullOrEmpty(), x => x.TypeValue.Contains(inQuery.TypeValue))
|
||||
.WhereIf(!inQuery.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inQuery.ParentTriggerValue))
|
||||
.WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName))
|
||||
.WhereIf(!inQuery.Type.IsNullOrEmpty(), x => x.Type.Contains(inQuery.Type))
|
||||
.WhereIf(inQuery.ReadingCategory != null, x => x.ReadingCategory == inQuery.ReadingCategory)
|
||||
.WhereIf(inQuery.LanguageType != null, x => x.LanguageType == inQuery.LanguageType)
|
||||
.ProjectTo<ReadingMedicineTrialQuestionView>(_mapper.ConfigurationProvider).OrderByDescending(x=>x.LanguageType).ThenBy(x => x.ShowOrder);
|
||||
|
||||
|
||||
var isConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync();
|
||||
var questionList = await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField, inDto.Asc);
|
||||
var isConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inQuery.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync();
|
||||
var questionList = await query.ToPagedListAsync(inQuery);
|
||||
return (questionList, new
|
||||
{
|
||||
|
||||
IsConfirmMedicineQuestion = isConfirmMedicineQuestion,
|
||||
LanguageType=(await _readingMedicineTrialQuestionRepository.FirstOrDefaultAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId&& x.SystemQuestionId != null))?.LanguageType,
|
||||
LanguageType=(await _readingMedicineTrialQuestionRepository.FirstOrDefaultAsync(x => x.TrialReadingCriterionId == inQuery.TrialReadingCriterionId&& x.SystemQuestionId != null))?.LanguageType,
|
||||
//QuestionCount = questionList.Count(),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -106,7 +106,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
.WhereIf(inQuery.LesionType != null, x => organs.Contains(x.OrganType))
|
||||
.WhereIf(inQuery.OrganType != null, x => x.OrganType == inQuery.OrganType)
|
||||
.ProjectTo<OrganInfoView>(_mapper.ConfigurationProvider);
|
||||
return await organInfoQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(OrganInfoView.ShowOrder) : inQuery.SortField, inQuery.Asc,true,new string[] { nameof(OrganInfoView.OrganType) , nameof(OrganInfoView.ShowOrder) });
|
||||
|
||||
return await organInfoQueryable.ToPagedListAsync(inQuery,new string[] { nameof(OrganInfoView.OrganType) , nameof(OrganInfoView.ShowOrder) });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -263,8 +263,7 @@ namespace IRaCIS.Core.Application.Service.RC
|
||||
.WhereIf(!inDto.CriterionName.IsNullOrEmpty(), x => x.CriterionName.Contains(inDto.CriterionName))
|
||||
.ProjectTo<ReadingQuestionCriterionSystemView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionCriterionSystemView.ShowOrder) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
return await query.ToPagedListAsync(inDto, nameof(ReadingQuestionCriterionSystemView.ShowOrder));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -450,8 +449,7 @@ namespace IRaCIS.Core.Application.Service.RC
|
||||
.WhereIf(!inDto.CriterionName.IsNullOrEmpty(), x => x.CriterionName.Contains(inDto.CriterionName))
|
||||
|
||||
.ProjectTo<ReadingQuestionCriterionTrialView>(_mapper.ConfigurationProvider);
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionCriterionTrialView.ShowOrder) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
return await query.ToPagedListAsync(inDto, nameof(ReadingQuestionCriterionTrialView.ShowOrder));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -231,8 +231,7 @@ namespace IRaCIS.Application.Services
|
||||
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
||||
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
||||
.ProjectTo<ReadingQuestionSystemView>(_mapper.ConfigurationProvider);
|
||||
return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, nameof(ReadingQuestionSystemView.ShowOrder),
|
||||
inDto.Asc);
|
||||
return await query.ToPagedListAsync(inDto, nameof(ReadingQuestionSystemView.ShowOrder));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace IRaCIS.Core.Application.Service.TA
|
||||
private readonly IRepository<TumorAssessment_IRECIST1Point1> _tumorAssessmentIRepository1Point1;
|
||||
private readonly IRepository<TumorAssessment_RECIST1Point1BM> _tumorAssessmentRepository1Point1BM;
|
||||
|
||||
public ReadingQuestionService( IRepository<TumorAssessment_RECIST1Point1> tumorAssessmentRepository1Point1,
|
||||
public ReadingQuestionService(IRepository<TumorAssessment_RECIST1Point1> tumorAssessmentRepository1Point1,
|
||||
IRepository<TumorAssessment_IRECIST1Point1> tumorAssessmentIRepository1Point1,
|
||||
IRepository<TumorAssessment_RECIST1Point1BM> tumorAssessmentRepository1Point1BM
|
||||
)
|
||||
@@ -52,14 +52,14 @@ namespace IRaCIS.Core.Application.Service.TA
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<(object,List<ColumnInfo>)> GetTumorAssessmentPageList(GetTumorAssessmentListInDto inQuery)
|
||||
public async Task<(object, List<ColumnInfo>)> GetTumorAssessmentPageList(GetTumorAssessmentListInDto inQuery)
|
||||
{
|
||||
var result = new object();
|
||||
List<ColumnInfo> columnList = new List<ColumnInfo>();
|
||||
switch (inQuery.CriterionType)
|
||||
{
|
||||
case CriterionType.RECIST1Point1:
|
||||
result= await _tumorAssessmentRepository1Point1.AsQueryable().ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TumorAssessmentView.Id) : inQuery.SortField, inQuery.Asc);
|
||||
result = await _tumorAssessmentRepository1Point1.AsQueryable().ToPagedListAsync(inQuery, nameof(TumorAssessmentView.Id));
|
||||
columnList = new List<ColumnInfo>()
|
||||
{
|
||||
new ColumnInfo(){ ColumnName="靶病灶",ColumnKey=nameof(TumorAssessment_RECIST1Point1.TargetLesion),DictionaryKey=typeof(TargetAssessment).Name },
|
||||
@@ -69,7 +69,7 @@ namespace IRaCIS.Core.Application.Service.TA
|
||||
};
|
||||
break;
|
||||
case CriterionType.RECIST1Pointt1_MB:
|
||||
result = await _tumorAssessmentRepository1Point1BM.AsQueryable().ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TumorAssessmentView.Id) : inQuery.SortField, inQuery.Asc);
|
||||
result = await _tumorAssessmentRepository1Point1BM.AsQueryable().ToPagedListAsync(inQuery, nameof(TumorAssessmentView.Id));
|
||||
columnList = new List<ColumnInfo>()
|
||||
{
|
||||
new ColumnInfo(){ ColumnName="靶病灶",ColumnKey=nameof(TumorAssessment_RECIST1Point1.TargetLesion),DictionaryKey=typeof(TargetAssessment).Name },
|
||||
@@ -79,7 +79,7 @@ namespace IRaCIS.Core.Application.Service.TA
|
||||
};
|
||||
break;
|
||||
case CriterionType.IRECIST1Point1:
|
||||
result = await _tumorAssessmentIRepository1Point1.AsQueryable().ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TumorAssessmentView.Id) : inQuery.SortField, inQuery.Asc);
|
||||
result = await _tumorAssessmentIRepository1Point1.AsQueryable().ToPagedListAsync(inQuery, nameof(TumorAssessmentView.Id));
|
||||
columnList = new List<ColumnInfo>()
|
||||
{
|
||||
new ColumnInfo(){ ColumnName="靶病灶",ColumnKey=nameof(TumorAssessment_RECIST1Point1.TargetLesion),DictionaryKey=typeof(TargetAssessment).Name },
|
||||
|
||||
@@ -137,12 +137,12 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
|
||||
IsDeleted = true
|
||||
}) ;
|
||||
});
|
||||
await _readingPeriodPlanRepository.UpdatePartialFromQueryAsync(t => t.ReadingPeriodSetId == readingPeriodSetId, x => new ReadingPeriodPlan()
|
||||
{
|
||||
IsDeleted = true
|
||||
|
||||
}) ;
|
||||
});
|
||||
await _readingPeriodPlanRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
@@ -245,10 +245,11 @@ namespace IRaCIS.Application.Services
|
||||
var globalModuleIds = await _readModuleRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && subjectVisitIds.Contains(x.SubjectVisitId) && x.ModuleType == ModuleTypeEnum.Global).Select(x => x.Id).ToListAsync();
|
||||
|
||||
//增加标准
|
||||
var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid))
|
||||
|
||||
var globalTaskInfo = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && globalModuleIds.Contains(x.SouceReadModuleId ?? default(Guid))
|
||||
|
||||
&& x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate).GroupBy(x => new { x.SouceReadModuleId }).Select(x =>
|
||||
new {
|
||||
new
|
||||
{
|
||||
SouceReadModuleId = x.Key.SouceReadModuleId,
|
||||
Count = x.ToList().Count,
|
||||
TaskId = x.Select(x => x.Id).FirstOrDefault(),
|
||||
@@ -277,7 +278,7 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
IsUrgent = readModule.IsUrgent ?? false,
|
||||
SubjectId = readModule.SubjectId,
|
||||
|
||||
|
||||
ReadingName = readModule.ModuleName,
|
||||
ReadModuleId =readModule.Id,
|
||||
ReadingCategory = ReadingCategory.Oncology,
|
||||
@@ -306,10 +307,10 @@ namespace IRaCIS.Application.Services
|
||||
List<Guid> readModuleIds = await _readModuleRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Select(x => x.Id).ToListAsync();
|
||||
|
||||
if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid))
|
||||
&& x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId
|
||||
&& x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId
|
||||
&& x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect))
|
||||
{
|
||||
//---当前标准阅片已生成任务并且阅片完成,撤销失败。
|
||||
//---当前标准阅片已生成任务并且阅片完成,撤销失败。
|
||||
throw new BusinessValidationFailedException(_localizer["ReadingPeriodSet_TaskCompletedCannotRevoke"]);
|
||||
}
|
||||
|
||||
@@ -319,9 +320,10 @@ namespace IRaCIS.Application.Services
|
||||
TaskState = TaskState.Adbandon
|
||||
});
|
||||
|
||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.ReadingPeriodSetId == indto.Id,x=>new ReadModule() {
|
||||
|
||||
IsDeleted=true
|
||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.ReadingPeriodSetId == indto.Id, x => new ReadModule()
|
||||
{
|
||||
|
||||
IsDeleted = true
|
||||
});
|
||||
}
|
||||
|
||||
@@ -366,8 +368,7 @@ namespace IRaCIS.Application.Services
|
||||
EffectOfTime = x.ReadingPeriodSet.EffectOfTime,
|
||||
});
|
||||
|
||||
return await plans.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(PreviewTheReadingListOutDto.SubjectId) : inDto.SortField,
|
||||
inDto.Asc);
|
||||
return await plans.ToPagedListAsync(inDto, nameof(PreviewTheReadingListOutDto.SubjectId));
|
||||
}
|
||||
|
||||
|
||||
@@ -420,8 +421,7 @@ namespace IRaCIS.Application.Services
|
||||
.WhereIf(query.ReadingPeriodName != null, x => x.ReadingPeriodName.Contains(query.ReadingPeriodName!))
|
||||
.WhereIf(query.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == query.TrialReadingCriterionId)
|
||||
.ProjectTo<ReadingPeriodSetView>(_mapper.ConfigurationProvider);
|
||||
var pageList = await readQuery.ToPagedListAsync(query.PageIndex, query.PageSize, query.SortField == null ? nameof(ReadingPeriodSetView.CreateTime) : query.SortField,
|
||||
query.Asc);
|
||||
var pageList = await readQuery.ToPagedListAsync(query, nameof(ReadingPeriodSetView.CreateTime));
|
||||
|
||||
pageList.CurrentPageData.ForEach(x =>
|
||||
{
|
||||
@@ -470,7 +470,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
List<GetReadingVisitListOutDto> result = await _visitStageRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||
.WhereIf(inDto.ReadingSetType == ReadingSetType.TumorReading, x => globalVisitNum.Contains(x.VisitNum))
|
||||
.Where(x=>x.VisitNum>0)// 不能是基线
|
||||
.Where(x => x.VisitNum > 0)// 不能是基线
|
||||
.Where(x => x.VisitNum == thisVisitNum || x.VisitNum >= maxVisitNum).Select(x => new GetReadingVisitListOutDto()
|
||||
{
|
||||
VisitName = x.VisitName,
|
||||
@@ -494,7 +494,7 @@ namespace IRaCIS.Application.Services
|
||||
// 当前项目 最晚拍片日期不为null 中心筛选
|
||||
var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && x.LatestScanDate != null && !x.IsLostVisit)
|
||||
.WhereIf(inDto.ReadingScope == ReadingScopeEnum.Site, x => inDto.SiteIds.Contains(x.TrialSiteId))
|
||||
.Where(x=>!x.IsBaseLine);// 排除基线
|
||||
.Where(x => !x.IsBaseLine);// 排除基线
|
||||
|
||||
// 已经存在的访视 需要排除
|
||||
var existsBubjectVisitsQuery = _readModuleRepository.Where(y => y.ReadingSetType == inDto.ReadingSetType && y.TrialId == inDto.TrialId && y.TrialReadingCriterionId == inDto.TrialReadingCriterionId).Select(x => x.SubjectVisitId);
|
||||
|
||||
Reference in New Issue
Block a user