diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 458d15cbd..9a620aaed 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -12,6 +12,8 @@ using System.Linq.Dynamic.Core; using Microsoft.Extensions.Logging; using IRaCIS.Core.Infrastructure.Extention; using System.Linq; +using BeetleX.Redis.Commands; +using NPOI.SS.Formula.Functions; namespace IRaCIS.Application.Services { @@ -1124,7 +1126,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task> GetConsistencyAnalysisReadingClinicalDataList(GetConsistencyAnalysisReadingClinicalDataListInDto inDto) + public async Task<(List, object)> GetConsistencyAnalysisReadingClinicalDataList(GetConsistencyAnalysisReadingClinicalDataListInDto inDto) { var result = await this.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() { @@ -1134,7 +1136,7 @@ namespace IRaCIS.Application.Services IsGetAllConsistencyAnalysis = false, }); - return result; + return (result,true); } @@ -1221,6 +1223,56 @@ namespace IRaCIS.Application.Services } } + + + /// + /// 一致性分析临床数据签名 + /// + /// + /// + [HttpPost] + public async Task SignConsistencyAnalysisReadingClinicalData(SignConsistencyAnalysisReadingClinicalDataInDto inDto) + { + var pdfCount = await _readingConsistentClinicalDataPDFRepository.Where(x => x.ReadingConsistentClinicalDataId == inDto.ConsistentClinicalDataId).CountAsync(); + if (pdfCount == 0) + { + return ResponseOutput.NotOk(_localizer["ReadingClinicalData_NoHavePDF"]); + } + await _readingConsistentClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.ConsistentClinicalDataId, x => new ReadingConsistentClinicalData() + { + IsSign = true, + IsBlind = inDto.IsBlind, + IsComplete = inDto.IsComplete + }); + await _readingClinicalDataPDFRepository.SaveChangesAsync(); + return ResponseOutput.Ok(pdfCount); + } + + /// + /// 一致性分析临床数据签名完设置任务为有效 + /// + /// + /// + [HttpPost] + public async Task SetTaskValid(SetTaskValidInDto inDto) + { + var visittask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); + var readingId = visittask.SouceReadModuleId==null? visittask.SourceSubjectVisitId: visittask.SouceReadModuleId; + + if (await _readingConsistentClinicalDataRepository.AnyAsync(x => x.ReadingId == readingId && x.IsSign == false)) + { + return ResponseOutput.NotOk(_localizer["ReadingClinicalData_HaveUnsignedClinicalData"]); + } + + await _visitTaskRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask() + { + + TaskState = TaskState.Effect + }); + await _visitTaskRepository.SaveChangesAsync(); + return ResponseOutput.Ok(); + + } #endregion #region 阅片临床数据PDF diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index 8bbf13388..edf51866c 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -9,8 +9,30 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Application.Service.Reading.Dto { + public class SetTaskValidInDto + { + public Guid VisitTaskId { get; set; } + } - public class AddOrUpdateReadingClinicalDataDto + + public class SignConsistencyAnalysisReadingClinicalDataInDto + { + public Guid ConsistentClinicalDataId { get; set; } + + /// + /// 是否盲化 + /// + public bool? IsBlind { get; set; } + + /// + /// 是否完整 + /// + public bool? IsComplete { get; set; } + + } + + + public class AddOrUpdateReadingClinicalDataDto { public Guid? Id { get; set; } diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index f1eb0a159..77516f056 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -368,9 +368,14 @@ namespace IRaCIS.Core.Domain.Models public bool IsNeedClinicalDataSign { get; set; } + /// + /// 临床数据是否签名 + /// public bool IsClinicalDataSign { get; set; } - //前序任务需要签名 但是未签名 + /// + /// 前序任务需要签名 但是未签名 + /// public bool IsFrontTaskNeedSignButNotSign { get; set; } [JsonIgnore]