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; using MassTransit; using System.ComponentModel.DataAnnotations; using System.Reflection; using IRaCIS.Core.Infra.EFCore.Common; namespace IRaCIS.Application.Services { /// /// 阅片临床数据配置 /// [ApiExplorerSettings(GroupName = "Reading")] public class ReadingClinicalDataService : BaseService { private readonly IRepository _readingClinicalDataRepository; private readonly IRepository _clinicalDataTrialSetRepository; private readonly IRepository _readingClinicalDataPDFRepository; public ReadingClinicalDataService(IRepository readingClinicalDataRepository, IRepository clinicalDataTrialSetRepository, IRepository readingClinicalDataPDFRepository ) { this._readingClinicalDataRepository = readingClinicalDataRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository; } /// /// 新增或者修改 /// /// /// [HttpPost] public async Task AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto) { var entity = await _readingClinicalDataRepository.InsertOrUpdateAsync(indto,true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除 /// /// /// [HttpDelete("{id:guid}")] public async Task DeleteReadingClinicalData(Guid id) { await _readingClinicalDataRepository.DeleteFromQueryAsync(x => x.Id == id, true); return ResponseOutput.Result(true); } /// /// 获取下拉菜单 /// /// /// [HttpPost] public async Task> GetTrialClinicalDataSelect(GetTrialClinicalDataSelectIndto inDto) { List clinicalList = await _clinicalDataTrialSetRepository.Select(x => new GetTrialClinicalDataSelectOutDto() { ClinicalDataLevel = x.ClinicalDataLevel, ClinicalDataSetName = x.ClinicalDataSetName, ClinicalUploadType = x.ClinicalUploadType, ClinicalDataLevelName = x.ClinicalDataLevel.GetDisplayName(), ClinicalUploadTypeName = x.ClinicalUploadType.GetDisplayName(), Id = x.Id }).ToListAsync() ; return clinicalList; } /// /// 获取阅片临床数据列表 /// /// /// [HttpPost] public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) { var result = await _readingClinicalDataRepository.Where(x => x.ObjectId == inDto.ObjectId).ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, inDto.Asc); result.CurrentPageData.ForEach(x => { x.ClinicalDataLevelName = x.ClinicalDataLevel.GetDisplayName(); x.ClinicalUploadTypeName = x.ClinicalUploadType.GetDisplayName(); }); return result; } /// /// 获取单个阅片临床数据的所有文件 /// /// /// public async Task> GetReadingClinicalDataPDFList(GetReadingClinicalDataPDFListIndto inDto) { var result = await _readingClinicalDataPDFRepository.Where(x => x.ReadingClinicalDataId == inDto.ReadingClinicalDataId).ProjectTo(_mapper.ConfigurationProvider) .ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataPDFListOutDto.FileName) : inDto.SortField, inDto.Asc); return result; } /// /// 新增或者修改PDF /// /// /// [HttpPost] public async Task AddOrUpdateReadingClinicalDataPDF(AddOrUpdateReadingClinicalDataPDFDto indto) { var entity = await _readingClinicalDataPDFRepository.InsertOrUpdateAsync(indto, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除PDF /// /// /// [HttpDelete("{id:guid}")] public async Task DeleteReadingClinicalDataPDF(Guid id) { await _readingClinicalDataPDFRepository.DeleteFromQueryAsync(x => x.Id == id, true); return ResponseOutput.Result(true); } } }