138 lines
5.7 KiB
C#
138 lines
5.7 KiB
C#
using IRaCIS.Application.Interfaces;
|
|
using IRaCIS.Core.Infra.EFCore;
|
|
using IRaCIS.Core.Domain.Share;
|
|
using IRaCIS.Core.Application.Filter;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using IRaCIS.Core.Application.Auth;
|
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
|
using IRaCIS.Core.Domain.Share.Reading;
|
|
|
|
namespace IRaCIS.Application.Services
|
|
{
|
|
/// <summary>
|
|
/// 生成的阅片模块(在大列表上展示的)
|
|
/// </summary>
|
|
[ApiExplorerSettings(GroupName = "Reading")]
|
|
public class ReadModuleService : BaseService
|
|
{
|
|
|
|
public IRepository<SubjectVisit> _subjectVisitRepository;
|
|
private readonly IRepository<Subject> _subjectRepository;
|
|
private readonly IRepository<ReadModule> _readModuleRepository;
|
|
|
|
|
|
public ReadModuleService(IRepository<SubjectVisit> subjectVisitRepository,
|
|
IRepository<Subject> subjectRepository,
|
|
IRepository<ReadModule> readModuleRepository
|
|
)
|
|
{
|
|
_subjectVisitRepository = subjectVisitRepository;
|
|
this._subjectRepository = subjectRepository;
|
|
this._readModuleRepository = readModuleRepository;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取读片模块
|
|
/// </summary>
|
|
[HttpPost]
|
|
public async Task<(PageOutput<GetReadModuleDtoOut>,object)> GetReadModule(GetReadModuleDto dto)
|
|
{
|
|
var subjectquery = _subjectRepository.WhereIf(dto.TrialId!=null, x => x.TrialId == dto.TrialId).Include(x => x.SubjectVisitList).Include(x=>x.Site)
|
|
.Select(x => new GetReadModuleDtoOut
|
|
{
|
|
SiteCode = x.Site.SiteCode,
|
|
SiteId = x.SiteId,
|
|
SubjectCode = x.Code,
|
|
SubjectId = x.Id,
|
|
Data=x.SubjectVisitList.OrderByDescending(y=>y.InPlan).Select(y=>new GetReadModuleOutDto()
|
|
{
|
|
Id = y.Id, //id
|
|
Name=y.VisitName,
|
|
ModuleType = y.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit, // 模块类型
|
|
IsUrgent = x.IsUrgent, // 是否加急
|
|
SubjectVisitId = y.Id, // 访视ID
|
|
SubjectVisitName=y.VisitName, // 访视名称
|
|
Status= y.SubmitState== SubmitStateEnum.None|| y.SubmitState== SubmitStateEnum.ToSubmit? ReadModuleEnum.ImageUpload: ReadModuleEnum.ImageUpload, // 状态
|
|
CreateTime = y.CreateTime, // 创建时间
|
|
SubjectCode = y.Subject.Code, // 受试者code
|
|
SiteCode = x.Site.SiteCode, // 中心Code
|
|
|
|
|
|
IsFinalVisit=y.IsFinalVisit, // 是否为末次评估
|
|
OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视
|
|
OutPlanPreviousVisitName = y.OutPlanPreviousVisit.VisitName, // 上一访视名称
|
|
SiteId = x.Site.Id, // 中心ID
|
|
IsVisit=true, // 是否为访视
|
|
PDState = y.PDState, // PD 进展
|
|
IsEnrollmentConfirm=y.IsEnrollmentConfirm, // 入组
|
|
SubjectId = x.Id,
|
|
}).ToList()
|
|
});
|
|
|
|
var pageList = await subjectquery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null|| dto.SortField==string.Empty ? "SiteCode" : dto.SortField,
|
|
dto.Asc);
|
|
|
|
var subjectisd = pageList.CurrentPageData.Select(x => x.SubjectId).ToList();
|
|
|
|
var readModules =await _readModuleRepository.Where(x => subjectisd.Contains(x.SubjectId)).ToListAsync();
|
|
|
|
pageList.CurrentPageData.ForEach(x => {
|
|
x.Data.AddRange(readModules.Where(y => y.SubjectId == x.SubjectId).Select(
|
|
y => new GetReadModuleOutDto()
|
|
{
|
|
CreateTime = y.CreateTime,
|
|
Id = y.Id,
|
|
Name=y.ModuleName,
|
|
SubjectId=x.SubjectId,
|
|
ModuleType=y.ModuleType,
|
|
Status=y.Status,
|
|
SubjectCode= x.SubjectCode,
|
|
SiteCode=x.SiteCode,
|
|
CutOffVisitId = y.SubjectVisitId, // 截止访视
|
|
CutOffVisitName = y.SubjectVisit.VisitName // 截止访视名称
|
|
ReadModuleId=y.ReadModuleId,
|
|
ReadModuleName=y.ReadModuleModel.ModuleName,
|
|
|
|
}));
|
|
});
|
|
|
|
return (pageList, new
|
|
{
|
|
MaxLength = pageList.CurrentPageData.ToList().Max(x => x.Data.Count)
|
|
});
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 新增或者修改
|
|
/// </summary>
|
|
/// <param name="addOrEditReadModule"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<IResponseOutput> AddOrUpdateReadModuleService(ReadModuleAddOrEdit addOrEditReadModule)
|
|
{
|
|
var entity = await _repository.InsertOrUpdateAsync<ReadModule, ReadModuleAddOrEdit>(addOrEditReadModule, true);
|
|
return ResponseOutput.Ok(entity.Id.ToString());
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 删除
|
|
/// </summary>
|
|
/// <param name="readModuleId"></param>
|
|
/// <returns></returns>
|
|
[HttpDelete("{readModuleId:guid}")]
|
|
public async Task<IResponseOutput> DeleteReadModule(Guid readModuleId)
|
|
{
|
|
var success = await _readModuleRepository.DeleteFromQueryAsync(t => t.Id == readModuleId, true);
|
|
return ResponseOutput.Result(true);
|
|
}
|
|
|
|
|
|
}
|
|
}
|