From 3ac49795529ecdce77b8ff008546c1401c90da4c Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Fri, 1 Jul 2022 15:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/IRaCIS.Core.API.xml | 7 + .../IRaCIS.Core.Application.xml | 34 +++- .../Reading/Dto/ReadingClinicalDataDto.cs | 2 + .../Reading/Dto/ReadingMedicalReviewDto.cs | 37 +++++ .../Reading/Dto/ReadingQuestionViewModel.cs | 4 +- .../Interface/IReadingClinicalDataService.cs | 2 + .../Reading/ReadingClinicalDataService.cs | 155 ++++++++++-------- .../Reading/ReadingImageTaskService.cs | 95 ++++------- .../Reading/ReadingMedicalReviewService.cs | 50 +++++- .../Service/Reading/ReadingQuestionService.cs | 8 +- .../Service/Reading/_MapConfig.cs | 4 +- 11 files changed, 243 insertions(+), 155 deletions(-) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 88e1c7688..cae7df970 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -90,6 +90,13 @@ + + + 确认项目医学审核问题 + + + + 提交阅片问题 diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 5ea2722d2..8e3ed0c73 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1439,6 +1439,21 @@ 答案 + + + 任务名称 + + + + + 盲态名称 + + + + + 评估结果 + + 项目ID @@ -2134,6 +2149,18 @@ 是否是系统数据 + + + 阅片医学审核 + + + + + 获取 + + + + 医学审核问题 @@ -4868,13 +4895,6 @@ - - - 触发裁判任务(老) - - - - 添加裁判任务 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index 26d8cb406..8643d47c9 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -290,6 +290,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } + + public class GetReadingClinicalDataListOutDto { diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs index ebf5058d4..ff8409445 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs @@ -17,4 +17,41 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TaskMedicalReviewId { get; set; } } + + public class GetMedicalReviewReadingTaskOutDto + { + //阅片类型 + public ReadingMethod ReadingType { get; set; } + + + public bool IsReadingTaskViewInOrder { get; set; } + + public List TaskList { get; set; } = new List(); + + public List OtherDoctorTaskList { get; set; } = new List(); + } + + public class TaskInfo + { + public Guid Id { get; set; } + + /// + /// 任务名称 + /// + + public string TaskName { get; set; } + + /// + /// 盲态名称 + /// + public string TaskBlindName { get; set; } + + /// + /// 评估结果 + /// + public string EvaluationResult { get; set; } + + public ReadingCategory ReadingCategory { get; set; } + } + } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs index a13375691..5511dbb77 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs @@ -175,7 +175,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string ParentQuestionName { get; set; } - public int ParentQuestionShowOrder { get; set; } + public int? ParentQuestionShowOrder { get; set; } /// /// 是否是裁判问题 @@ -237,7 +237,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string ParentQuestionName { get; set; } - public int ParentQuestionShowOrder { get; set; } + public int? ParentQuestionShowOrder { get; set; } /// diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs index 903f1cc1a..84ff697f2 100644 --- a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingClinicalDataService.cs @@ -16,5 +16,7 @@ namespace IRaCIS.Core.Application.Contracts Task AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto); Task ReadClinicalDataSign(ReadingClinicalDataSignIndto inDto); + + Task> GetClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto); } } \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index aa3c5ff28..4561c2842 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -45,7 +45,7 @@ namespace IRaCIS.Application.Services IRepository previousSurgeryRepository, IRepository subjectRepository, IRepository readModuleRepository, - IRepository readingClinicalDataPDFRepository, + IRepository readingClinicalDataPDFRepository, IRepository visitTaskRepository) { this._readingClinicalDataRepository = readingClinicalDataRepository; @@ -71,12 +71,12 @@ namespace IRaCIS.Application.Services public async Task AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto) { var existsQuery = _readingClinicalDataRepository - .WhereIf(indto.Id != null,x=>x.Id!=indto.Id) - .Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId&&x.ReadingId==indto.ReadingId); + .WhereIf(indto.Id != null, x => x.Id != indto.Id) + .Where(x => x.ClinicalDataTrialSetId == indto.ClinicalDataTrialSetId && x.ReadingId == indto.ReadingId); if (await existsQuery.AnyAsync()) { - return ResponseOutput.NotOk("存在同类型的临床数据"); + return ResponseOutput.NotOk("存在同类型的临床数据"); } var clinicalDataTrialSet = (await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.ClinicalDataTrialSetId).FirstOrDefaultAsync()).IfNullThrowException(); if (indto.Id == null) @@ -85,13 +85,13 @@ namespace IRaCIS.Application.Services entity.ReadingClinicalDataPDFList = indto.AddFileList.Select(x => new ReadingClinicalDataPDF() { TrialId = entity.TrialId, - SubjectId= indto.SubjectId, - FileName=x.FileName, - Path=x.Path, - ClinicalDataTrialSetId=indto.ClinicalDataTrialSetId, - IsVisit= indto.IsVisit, - ClinicalDataLevel= clinicalDataTrialSet.ClinicalDataLevel, - ReadingId=indto.ReadingId + SubjectId = indto.SubjectId, + FileName = x.FileName, + Path = x.Path, + ClinicalDataTrialSetId = indto.ClinicalDataTrialSetId, + IsVisit = indto.IsVisit, + ClinicalDataLevel = clinicalDataTrialSet.ClinicalDataLevel, + ReadingId = indto.ReadingId }).ToList(); await _readingClinicalDataRepository.AddAsync(entity, true); var success = await _readingClinicalDataRepository.SaveChangesAsync(); @@ -113,14 +113,14 @@ namespace IRaCIS.Application.Services IsVisit = indto.IsVisit, ClinicalDataLevel = clinicalDataTrialSet.ClinicalDataLevel, ReadingId = indto.ReadingId, - ReadingClinicalDataId= entity.Id, + ReadingClinicalDataId = entity.Id, }).ToList(); await _readingClinicalDataPDFRepository.AddRangeAsync(addFileList); var success = await _readingClinicalDataRepository.SaveChangesAsync(); return ResponseOutput.Ok(entity.Id); } - + } /// @@ -133,24 +133,24 @@ namespace IRaCIS.Application.Services { await this.AddCRCClinicalData(inDto); - List cRCClinicalDataList = await _readingClinicalDataRepository.Where(x =>x.ReadingId==inDto.SubjectVisitId) - .Where(x=> x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Read && x.ClinicalDataTrialSet.IsConfirm) + List cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId) + .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Read && x.ClinicalDataTrialSet.IsConfirm) .Select(x => new GetCRCClinicalDataOutDto() { - Id=x.Id, + Id = x.Id, ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName, - ClinicalUploadType=x.ClinicalDataTrialSet.ClinicalUploadType, + ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, ClinicalDataTrialSetId = x.ClinicalDataTrialSet.Id, - FileName=x.ClinicalDataTrialSet.FileName, - UploadRole=x.ClinicalDataTrialSet.UploadRole, - Path=x.ClinicalDataTrialSet.Path, - }).ToListAsync() ; + FileName = x.ClinicalDataTrialSet.FileName, + UploadRole = x.ClinicalDataTrialSet.UploadRole, + Path = x.ClinicalDataTrialSet.Path, + }).ToListAsync(); List clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto() { SubjectId = inDto.SubjectId, ReadingId = inDto.SubjectVisitId, - TrialId=inDto.TrialId, + TrialId = inDto.TrialId, })).Item1; var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -159,7 +159,7 @@ namespace IRaCIS.Application.Services foreach (var item in cRCClinicalDataList) { - item.PDFFileList = clinicalData.Where(y => y.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).SelectMany(x=>x.FileList).ToList(); + item.PDFFileList = clinicalData.Where(y => y.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).SelectMany(x => x.FileList).ToList(); item.ClinicalTableData = new ClinicalDataTable() { PreviousHistoryList = previousHistoryList.Where(x => x.ClinicalDataTrialSetId == item.ClinicalDataTrialSetId).ToList(), @@ -175,7 +175,7 @@ namespace IRaCIS.Application.Services /// 添加CRC数据类型 /// /// - private async Task AddCRCClinicalData(GetCRCClinicalDataInDto inDto) + private async Task AddCRCClinicalData(GetCRCClinicalDataInDto inDto) { var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.UploadRole == UploadRole.CRC && x.ClinicalDataLevel != ClinicalLevel.Read && x.IsConfirm).Select(x => x.Id).ToListAsync(); @@ -217,7 +217,7 @@ namespace IRaCIS.Application.Services [HttpDelete("{id:guid}")] public async Task DeleteReadingClinicalData(Guid id) { - + await _readingClinicalDataRepository.DeleteFromQueryAsync(x => x.Id == id, true); return ResponseOutput.Result(true); } @@ -238,31 +238,31 @@ namespace IRaCIS.Application.Services (int)UserTypeEnum.IndependentReviewer, }; - + if (userTypes.Contains(_userInfo.UserTypeEnumInt)) { inDto.UploadRole = UploadRole.PM; } - - - + + + var usedIdsQuery = _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.ReadingId && x.Id != inDto.ReadingClinicalDataId).Select(x => x.ClinicalDataTrialSetId); - List clinicalList = await _clinicalDataTrialSetRepository.Where(x=>x.TrialId==inDto.TrialId&&x.IsConfirm) - .WhereIf(inDto.UploadRole!=null,x=>x.UploadRole==inDto.UploadRole) - .Where(x=> !usedIdsQuery.Contains(x.Id)) - .WhereIf(inDto.IsVisit&&inDto.IsBaseLine,x=>x.ClinicalDataLevel == ClinicalLevel.Subject||x.ClinicalDataLevel== ClinicalLevel.SubjectVisit) - .WhereIf(inDto.IsVisit&&! inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) + List clinicalList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm) + .WhereIf(inDto.UploadRole != null, x => x.UploadRole == inDto.UploadRole) + .Where(x => !usedIdsQuery.Contains(x.Id)) + .WhereIf(inDto.IsVisit && inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) + .WhereIf(inDto.IsVisit && !inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) .WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.Read) .Select(x => new GetTrialClinicalDataSelectOutDto() - { - ClinicalDataLevel = x.ClinicalDataLevel, - ClinicalDataSetName = x.ClinicalDataSetName, - ClinicalUploadType = x.ClinicalUploadType, - FileName=x.FileName, - Path=x.Path, - Id = x.Id - }).ToListAsync() ; + { + ClinicalDataLevel = x.ClinicalDataLevel, + ClinicalDataSetName = x.ClinicalDataSetName, + ClinicalUploadType = x.ClinicalUploadType, + FileName = x.FileName, + Path = x.Path, + Id = x.Id + }).ToListAsync(); return clinicalList; } @@ -279,7 +279,7 @@ namespace IRaCIS.Application.Services IsSign = true }); - var result =await _readingClinicalDataRepository.SaveChangesAsync(); + var result = await _readingClinicalDataRepository.SaveChangesAsync(); return ResponseOutput.Result(result); } @@ -290,7 +290,7 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task<(List,object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto) + public async Task<(List, object)> GetReadingOrTaskClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto) { var readingNameOrTaskBlindName = string.Empty; if (inDto.ReadingId == null) @@ -310,33 +310,7 @@ namespace IRaCIS.Application.Services } } - var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) - .WhereIf(inDto.ReadingClinicalDataId!=null,x=>x.Id== inDto.ReadingClinicalDataId) - .Where(x => x.ReadingId == inDto.ReadingId||(x.SubjectId==inDto.SubjectId&&x.ClinicalDataTrialSet.ClinicalDataLevel==ClinicalLevel.Subject)) - .Select(x => new GetReadingClinicalDataListOutDto() - { - ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, - SubjectId = x.SubjectId, - ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName, - ClinicalDataTrialSetId = x.ClinicalDataTrialSetId, - IsSign = x.IsSign, - ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, - Id = x.Id, - UploadRole = x.ClinicalDataTrialSet.UploadRole, - IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC, - FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() - { - Id = y.Id, - FileName = y.FileName, - Path = y.Path, - CreateTime = y.CreateTime, - }).ToList() - }); - - - var result = await resultQuery.ToListAsync(); - result = result.Where(x => !(x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList(); - + var result = await GetClinicalDataList(inDto); var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -359,6 +333,45 @@ namespace IRaCIS.Application.Services }); } + [NonDynamicMethod] + public async Task> GetClinicalDataList(GetReadingOrTaskClinicalDataListInDto inDto) + { + + if (inDto.ReadingId == null) + { + var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(x => x.Id == inDto.VisitTaskId); + inDto.ReadingId = visitTask.SouceReadModuleId ?? visitTask.SourceSubjectVisitId; + } + + var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) + .WhereIf(inDto.ReadingClinicalDataId != null, x => x.Id == inDto.ReadingClinicalDataId) + .Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject)) + .Select(x => new GetReadingClinicalDataListOutDto() + { + ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, + SubjectId = x.SubjectId, + ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName, + ClinicalDataTrialSetId = x.ClinicalDataTrialSetId, + IsSign = x.IsSign, + ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, + Id = x.Id, + UploadRole = x.ClinicalDataTrialSet.UploadRole, + IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC, + FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() + { + Id = y.Id, + FileName = y.FileName, + Path = y.Path, + CreateTime = y.CreateTime, + }).ToList() + }); + + + var result = await resultQuery.ToListAsync(); + result = result.Where(x => !(x.ClinicalUploadType == ClinicalUploadType.PDF && x.FileList.Count() == 0)).ToList(); + return result; + } + /// /// 获取阅片临床数据列表 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 2edf69cde..d0d34513f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -31,6 +31,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _visitTaskRepository; private readonly IRepository _trialRepository; private readonly IVisitTaskHelpeService _visitTaskHelpeService; + private readonly IReadingClinicalDataService _readingClinicalDataService; private readonly IRepository _subjectVisitRepository; private readonly IRepository _subjectRepository; private readonly IRepository _readingJudgeInfoRepository; @@ -46,6 +47,7 @@ namespace IRaCIS.Application.Services IRepository visitTaskRepository, IRepository TrialRepository, IVisitTaskHelpeService visitTaskHelpeService, + IReadingClinicalDataService readingClinicalDataService, IRepository subjectVisitRepository, IRepository subjectRepository, IRepository readingJudgeInfoRepository, @@ -60,6 +62,7 @@ namespace IRaCIS.Application.Services this._visitTaskRepository = visitTaskRepository; this._trialRepository = TrialRepository; this._visitTaskHelpeService = visitTaskHelpeService; + this._readingClinicalDataService = readingClinicalDataService; this._subjectVisitRepository = subjectVisitRepository; this._subjectRepository = subjectRepository; this._readingJudgeInfoRepository = readingJudgeInfoRepository; @@ -148,6 +151,11 @@ namespace IRaCIS.Application.Services throw new BusinessValidationFailedException("任务都已经完成"); } } + + if (task.SubjectCode.IsNullOrEmpty()) + { + task.SubjectCode = await _subjectRepository.Where(x => x.Id == task.SubjectId).Select(x => x.Code).FirstOrDefaultAsync(); + } return task; @@ -183,7 +191,27 @@ namespace IRaCIS.Application.Services { x.IsReadingShowPreviousResults, x.IsReadingShowSubjectInfo, + x.ClinicalInformationTransmissionEnum, }).FirstOrDefaultAsync(); + + #region 临床数据 + + #endregion + bool isExistsClinicalData = false; + if (trialInfo.ClinicalInformationTransmissionEnum == 1) + { + isExistsClinicalData = (await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() + { + + SubjectId = task.SubjectId, + TrialId = inDto.TrialId, + VisitTaskId = task.VisitTaskId, + })).Count() > 0; + } + + + + return (result, new { VisitTaskId= task.VisitTaskId, SubjectId=task.SubjectId, @@ -192,6 +220,7 @@ namespace IRaCIS.Application.Services TaskBlindName=task.TaskBlindName, IsReadingShowPreviousResults = trialInfo.IsReadingShowPreviousResults, IsReadingShowSubjectInfo=trialInfo.IsReadingShowSubjectInfo, + IsExistsClinicalData= isExistsClinicalData, }); } @@ -686,72 +715,6 @@ namespace IRaCIS.Application.Services } } - /// - /// 触发裁判任务(老) - /// - /// - /// - private async Task TriggerJudgeQuestionOld(Guid visitTaskId) - { - var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync(); - var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync(); - if (visitTaskids.Count == 2) - { - var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x=> visitTaskids.Contains(x.VisitTaskId)) - join question in _readingQuestionTrialRepository.Where(x=>x.IsJudgeQuestion) on new { ReadingQuestionTrialId= questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId= question.Id } - select new TaskAnswerDto() - { - Answer= questionAnswet.Answer, - AnswerGroup= question.AnswerGroup, - QuestionId= question.Id, - VisitTaskId= questionAnswet.VisitTaskId, - }; - var questionAnswerlist =await query.ToListAsync(); - List groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup }).Select(x => new GroupTaskAnswerDto - { - QuestionId = x.Key.QuestionId, - AnswerGroup = x.Key.AnswerGroup, - TaskAnswerList = x.ToList(), - }).ToList(); - var verificationResults = true; - foreach (var item in groupTasks) - { - if (item.TaskAnswerList.Count() != 2|| item.AnswerGroup==string.Empty) - { - verificationResults = false; - break; - } - else - { - var item1= item.TaskAnswerList[0]; - var item2= item.TaskAnswerList[1]; - if (item1.Answer != item2.Answer) - { - var answerGroup = JsonConvert.DeserializeObject>(item.AnswerGroup).Select(x => new AnswerGroup() - { - GroupId = NewId.NextGuid(), - GroupValue = x - }).ToList(); - var itemAnswerGroupsitem1 = answerGroup.Where(x => x.GroupValue.Contains($"|{item1.Answer}|")); - var itemAnswerGroupsitem2 = answerGroup.Where(x => x.GroupValue.Contains($"|{item2.Answer}|")); - var unionList = itemAnswerGroupsitem1.Intersect(itemAnswerGroupsitem2).ToList(); - if (unionList.Count < 1) - { - verificationResults = false; - break; - } - } - } - } - - if (!verificationResults) - { - await this.SaveJudgeTask(new SaveJudgeTaskDto() { - VisitTaskIds= visitTaskids, - }); - } - } - } /// /// 添加裁判任务 diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs index 2476fd74d..1e65c8118 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs @@ -7,6 +7,7 @@ using IRaCIS.Core.Infra.EFCore.Common; using MassTransit; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Application.Service.Reading.Dto; +using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Service { @@ -19,16 +20,19 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _readingMedicineTrialQuestionRepository; private readonly IRepository _trialRepository; + private readonly IRepository _visitTaskRepository; private readonly IRepository _readingMedicineSystemQuestionRepository; public ReadingMedicalReviewService( IRepository readingMedicineTrialQuestionRepository, IRepository trialRepository, + IRepository visitTaskRepository, IRepository readingMedicineSystemQuestionRepository ) { this._readingMedicineTrialQuestionRepository = readingMedicineTrialQuestionRepository; this._trialRepository = trialRepository; + this._visitTaskRepository = visitTaskRepository; this._readingMedicineSystemQuestionRepository = readingMedicineSystemQuestionRepository; } @@ -37,10 +41,50 @@ namespace IRaCIS.Core.Application.Service /// /// /// - public async Task GetMedicalReviewReadingTask(GetMedicalReviewReadingTaskInDto inDto) + public async Task GetMedicalReviewReadingTask(GetMedicalReviewReadingTaskInDto inDto) { - - } + var medicalReviewInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetMedicalReviewReadingTaskOutDto() + { + ReadingType=x.ReadingType, + IsReadingTaskViewInOrder=x.IsReadingTaskViewInOrder + }).FirstOrDefaultAsync(); + + var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.TrialId).FirstOrDefaultAsync(); + + + // 单审有序 + if (medicalReviewInfo.IsReadingTaskViewInOrder) + { + switch (medicalReviewInfo.ReadingType) + { + //case ReadingMethod.Single: + // await GetOrderTaskInfo(); + // break; + //case ReadingMethod.Double: + // await GetOrderTaskInfo(); + // break; + } + } + + + //// 有序任务列表 + //async Task GetOrderTaskInfo() + //{ + // medicalReviewInfo.TaskList = await _visitTaskRepository.Where(x => x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId + // && x.DoctorUserId == taskInfo.DoctorUserId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReReadingApplyState != ReReadingApplyState.Agree + // ).OrderBy(x => x.VisitTaskNum).Select(x => new TaskInfo() + // { + // Id = x.Id, + // ReadingCategory = x.ReadingCategory, + // TaskBlindName = x.TaskBlindName, + // TaskName = x.TaskName + // }).ToListAsync(); + //} + + + return medicalReviewInfo; + + } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs index 1231abd3f..66b868d8e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs @@ -89,8 +89,8 @@ namespace IRaCIS.Application.Services .WhereIf(!inDto.CriterionName.IsNullOrEmpty(), x => x.CriterionName.Contains(inDto.CriterionName)) .ProjectTo(_mapper.ConfigurationProvider) .Where(x=>x.IsEnable); - return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionCriterionSystemView.ShowOrder) : inDto.SortField, - inDto.Asc); + return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionCriterionSystemView.ShowOrder) : inDto.SortField, + inDto.Asc); } @@ -369,7 +369,7 @@ namespace IRaCIS.Application.Services .WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName)) .WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type)) .ProjectTo(_mapper.ConfigurationProvider); - return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionSystemView.ShowOrder) : inDto.SortField, + return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, "GroupName ASC,ShowOrder", inDto.Asc); } @@ -678,7 +678,7 @@ namespace IRaCIS.Application.Services .WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName)) .WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type)) .ProjectTo(_mapper.ConfigurationProvider); - return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField.IsNullOrEmpty() ? nameof(ReadingQuestionTrialView.ShowOrder) : inDto.SortField, + return await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, "GroupName ASC,ShowOrder", inDto.Asc); } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 68b4908a6..05311fa55 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap() .ForMember(d => d.ParentQuestionName, u => u.MapFrom(s => s.ParentReadingQuestionSystem==null?string.Empty: s.ParentReadingQuestionSystem.QuestionName)) - .ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionSystem == null ? 0 : s.ParentReadingQuestionSystem.ShowOrder)); + .ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionSystem.ShowOrder)); CreateMap(); @@ -71,7 +71,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap() .ForMember(d => d.ParentQuestionName, u => u.MapFrom(s => s.ParentReadingQuestionTrial == null ? string.Empty : s.ParentReadingQuestionTrial.QuestionName)) - .ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionTrial == null ? 0 : s.ParentReadingQuestionTrial.ShowOrder)); + .ForMember(d => d.ParentQuestionShowOrder, u => u.MapFrom(s => s.ParentReadingQuestionTrial.ShowOrder)); #endregion #region IR阅片