diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs index 30f6acc46..18b5e569c 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs @@ -17,6 +17,34 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto + public class ReadModuleAddDto + { + /// + /// 截止日期 + /// + public DateTime? ExpirationDate { get; set; } + + /// + /// 截止访视 + /// + public Guid? ExpirationVisit { get; set; } + + /// + /// 受试者ID + /// + public Guid SubjectId { get; set; } + + /// + /// 是否加急 + /// + public bool? IsUrgent { get; set; } + + /// + /// 名称 + /// + public string Name { get; set; } + } + public class ReadModuleAddOrEdit: ReadModule { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs index b9750c22a..42d02f62e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs @@ -20,16 +20,19 @@ namespace IRaCIS.Application.Services public IRepository _subjectVisitRepository; private readonly IRepository _subjectRepository; + private readonly IRepository _visitstageRepository; private readonly IRepository _readModuleRepository; public ReadModuleService(IRepository subjectVisitRepository, IRepository subjectRepository, + IRepository visitstageRepository, IRepository readModuleRepository ) { _subjectVisitRepository = subjectVisitRepository; this._subjectRepository = subjectRepository; + this._visitstageRepository = visitstageRepository; this._readModuleRepository = readModuleRepository; } @@ -138,6 +141,54 @@ namespace IRaCIS.Application.Services return GetReadModuleOutDto; } + + + public async Task AddReadModule(ReadModuleAddDto dto) + { + var visits =await _subjectVisitRepository.Where(x => x.SubjectId == dto.SubjectId && x.InPlan).Select(x => new + { + x.Id, + x.LatestScanDate, + x.VisitNum, + }).ToListAsync(); + + if (dto.ExpirationDate != null) + { + visits = visits.Where(x => x.LatestScanDate <= dto.ExpirationDate.Value).ToList(); + } + + if (dto.ExpirationVisit != null) + { + var visitstage =await _visitstageRepository.FirstOrDefaultAsync(x => x.Id == dto.ExpirationVisit); + visits = visits.Where(x => x.VisitNum <= visitstage.VisitNum).ToList(); + } + + var visit = visits.OrderByDescending(x => x.VisitNum).FirstOrDefault(); + + if (visit != null) + { + await _readModuleRepository.AddAsync(new ReadModule() + { + SubjectId = dto.SubjectId, + ModuleType = ModuleTypeEnum.Read, + IsUrgent = dto.IsUrgent, + ModuleName = dto.Name, + SubjectVisitId = visit.Id, + Status = ReadModuleEnum.ImageRead, + }); + + var res = await _readModuleRepository.SaveChangesAsync(); + + return ResponseOutput.Ok(res); + } + else + { + return ResponseOutput.NotOk("No qualified visit was found "); + } + + + } + /// /// 新增或者修改 ///