//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2023-03-17 11:58:57
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Service
{
///
/// SubjectCriteriaEvaluationService
///
[ApiExplorerSettings(GroupName = "Trial")]
public class SubjectCriteriaEvaluationService : BaseService, ISubjectCriteriaEvaluationService
{
private readonly IRepository _subjectCriteriaEvaluationRepository;
private readonly IRepository _subjectRepository;
private readonly IRepository _subjectVisitRepository;
private readonly IRepository _subjectCriteriaEvaluationVisitFilterRepository;
public SubjectCriteriaEvaluationService(IRepository subjectCriteriaEvaluationRepository, IRepository subjectRepository,
IRepository subjectCriteriaEvaluationVisitFilterRepository, IRepository subjectVisitRepository)
{
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
_subjectRepository = subjectRepository;
_subjectCriteriaEvaluationVisitFilterRepository = subjectCriteriaEvaluationVisitFilterRepository;
_subjectVisitRepository = subjectVisitRepository;
}
///
/// subject 某标准 是否评估列表
///
///
///
[HttpPost]
public async Task> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
{
var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), t => t.Code.Contains(inQuery.SubjectCode))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), t => t.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
.WhereIf(inQuery.SubjectStatus != null, t => t.Status == inQuery.SubjectStatus)
join subjectCriteriaEvaluation in _subjectCriteriaEvaluationRepository.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) on subject.Id equals subjectCriteriaEvaluation.SubjectId into d
from subjectCriteriaEvaluation in d.DefaultIfEmpty()
select new SubjectCriteriaEvaluationView()
{
SubjectCode = subject.Code,
SubjectId = subject.Id,
SubjectStatus = subject.Status,
TrialSiteCode = subject.TrialSite.TrialSiteCode,
Id = subjectCriteriaEvaluation.Id,
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
IsImageFiltering=subjectCriteriaEvaluation.IsImageFiltering,
IsJoinEvaluation=subjectCriteriaEvaluation.IsJoinEvaluation,
};
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
return pageList;
}
///
/// 添加 编辑 是否参与评估
///
///
///
public async Task AddOrUpdateSubjectCriteriaEvaluation(SubjectCriteriaEvaluationAddOrEdit addOrEditSubjectCriteriaEvaluation)
{
// 在此处拷贝automapper 映射
var entity = await _subjectCriteriaEvaluationRepository.InsertOrUpdateAsync(addOrEditSubjectCriteriaEvaluation, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
///
/// 评估访视筛选列表
///
///
///
public async Task> GetSubjectCriteriaEvaluationVisitFilterList(SubjectCriteriaEvaluationVisitFilterQuery inQuery)
{
var subjectCriteriaEvaluationVisitFilterQueryable = from subjectVisit in _subjectVisitRepository.Where(t => t.SubjectId == inQuery.SubjectId)
join subjectCriteriaEvaluationVisitFilter in _subjectCriteriaEvaluationVisitFilterRepository.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) on subjectVisit.Id equals subjectCriteriaEvaluationVisitFilter.SubjectVisitId into d
from subjectCriteriaEvaluationVisitFilter in d.DefaultIfEmpty()
select new SubjectCriteriaEvaluationVisitFilterView()
{
VisitName = subjectVisit.VisitName,
SubjectVisitId = subjectVisit.Id,
SubjectId = subjectVisit.SubjectId,
TrialReadingCriterionId=inQuery.TrialReadingCriterionId,
LatestScanDate=subjectVisit.LatestScanDate,
EarliestScanDate=subjectVisit.LatestScanDate,
ImageDeterminationResultState= subjectCriteriaEvaluationVisitFilter.ImageDeterminationResultState,
ImageFilterState= subjectCriteriaEvaluationVisitFilter.ImageFilterState,
IsGeneratedTask=subjectCriteriaEvaluationVisitFilter.IsGeneratedTask,
};
return await subjectCriteriaEvaluationVisitFilterQueryable.ToListAsync();
}
///
/// 评估访视 判断结果 影像筛选状态 手动添加/编辑接口
///
///
///
public async Task AddOrUpdateSubjectCriteriaEvaluationVisitFilter(SubjectCriteriaEvaluationVisitFilterAddOrEdit addOrEditSubjectCriteriaEvaluationVisitFilter)
{
// 在此处拷贝automapper 映射
//CreateMap();
// CreateMap< SubjectCriteriaEvaluationVisitFilter,SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap();
var entity = await _subjectCriteriaEvaluationVisitFilterRepository.InsertOrUpdateAsync(addOrEditSubjectCriteriaEvaluationVisitFilter, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
//[HttpDelete("{subjectCriteriaEvaluationId:guid}")]
// public async Task DeleteSubjectCriteriaEvaluation(Guid subjectCriteriaEvaluationId)
//{
// var success = await _subjectCriteriaEvaluationRepository.DeleteFromQueryAsync(t => t.Id == subjectCriteriaEvaluationId,true);
// return ResponseOutput.Ok();
//}
}
}