diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 27b1e783d..1f405948e 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -1425,9 +1425,12 @@ namespace IRaCIS.Core.Application.Service && t.ClinicalUploadType == ClinicalUploadType.PDF); var taskState = exsitPDF ? TaskState.NotEffect : TaskState.Effect; + var firsttask = generateTaskCommand.GenerataConsistentTaskList[0]; + var clinicalDataList = _readingClinicalDataRepository.Where(t => t.SubjectId == subjectId + && t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == firsttask.TrialReadingCriterionId) + && t.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF).Include(t => t.ReadingClinicalDataPDFList).Include(t => t.ClinicalDataTrialSet).ToList(); - var clinicalDataList = _readingClinicalDataRepository.Where(t => t.SubjectId == subjectId && t.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF).Include(t => t.ReadingClinicalDataPDFList).Include(t => t.ClinicalDataTrialSet).ToList(); - + foreach (var clinicalData in clinicalDataList) { var consistnentClinicalData = _mapper.Map(clinicalData); diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 7dcc8114c..722c5497e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -729,11 +729,14 @@ namespace IRaCIS.Application.Services public async Task<(List, object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto) { var readingNameOrTaskBlindName = string.Empty; + var subjectCode = string.Empty; if (inDto.ReadingId == null) { - var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId); - - readingNameOrTaskBlindName = visitTask.TaskBlindName; + var visitTask = await _visitTaskRepository.AsQueryable().Include(x=>x.Subject) + + .FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId); + subjectCode=visitTask.BlindSubjectCode.IsNullOrEmpty() ? visitTask.Subject.Code : visitTask.BlindSubjectCode; + readingNameOrTaskBlindName = visitTask.TaskBlindName; } inDto.SelectIsSign = false; var result = await GetClinicalDataList(inDto); @@ -776,7 +779,7 @@ namespace IRaCIS.Application.Services return (result, new { - SubjectCode = await _subjectRepository.Where(x => x.Id == inDto.SubjectId).Select(x => x.Code).FirstOrDefaultAsync(), + SubjectCode = subjectCode, ReadingNameOrTaskBlindName = readingNameOrTaskBlindName, }); } @@ -1266,13 +1269,24 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task SetTaskValid(SetTaskValidInDto inDto) { - var visittask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); + var visittask = await _visitTaskRepository.AsQueryable().Include(x=>x.TrialReadingCriterion).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)) + if (await _readingConsistentClinicalDataRepository.AnyAsync(x => x.ReadingId == readingId + + && x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == visittask.TrialReadingCriterionId) && x.IsSign == false)) { return ResponseOutput.NotOk(_localizer["ReadingClinicalData_HaveUnsignedClinicalData"]); } + if(visittask.TrialReadingCriterion.IsReadingTaskViewInOrder== ReadingOrder.InOrder) + { + if(await _visitTaskRepository.Where(x=>x.SubjectId== visittask.SubjectId&&x.VisitTaskNum< visittask.VisitTaskNum&&x.IsAnalysisCreate==visittask.IsAnalysisCreate + &&x.IsSelfAnalysis==visittask.IsSelfAnalysis&&x.ArmEnum==visittask.ArmEnum&&x.TaskState==TaskState.NotEffect).AnyAsync() + ) + { + return ResponseOutput.NotOk(_localizer["ReadingClinicalData_NeedSetBeforeTaskEffect"]); + } + } await _visitTaskRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask() {