S-49 任务的临床状态维护
							parent
							
								
									a08cc44cd0
								
							
						
					
					
						commit
						260e29989c
					
				| 
						 | 
					@ -15,6 +15,7 @@ using IRaCIS.Core.Infrastructure;
 | 
				
			||||||
using IRaCIS.Core.Domain.Models;
 | 
					using IRaCIS.Core.Domain.Models;
 | 
				
			||||||
using IRaCIS.Core.Infrastructure.Extention;
 | 
					using IRaCIS.Core.Infrastructure.Extention;
 | 
				
			||||||
using IRaCIS.Core.Application.Service.Reading.Interface;
 | 
					using IRaCIS.Core.Application.Service.Reading.Interface;
 | 
				
			||||||
 | 
					using IRaCIS.Core.Application.Contracts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace IRaCIS.Core.Application.Service
 | 
					namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -51,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private readonly IClinicalQuestionService _iClinicalQuestionService;
 | 
							private readonly IClinicalQuestionService _iClinicalQuestionService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private readonly IReadingClinicalDataService _iReadingClinicalDataService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
 | 
					        public ClinicalAnswerService(IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
 | 
				
			||||||
            IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
 | 
					            IRepository<SystemClinicalTableQuestion> systemClinicalTableQuestionRepository,
 | 
				
			||||||
| 
						 | 
					@ -58,7 +61,8 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
			IRepository<ReadingClinicalData> readingClinicalDataRepository,
 | 
								IRepository<ReadingClinicalData> readingClinicalDataRepository,
 | 
				
			||||||
		IRepository<ClinicalForm> clinicalFormRepository,
 | 
							IRepository<ClinicalForm> clinicalFormRepository,
 | 
				
			||||||
		IRepository<Subject> subjectRepository,
 | 
							IRepository<Subject> subjectRepository,
 | 
				
			||||||
			IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
 | 
					        IReadingClinicalDataService iReadingClinicalDataService
 | 
				
			||||||
 | 
					            IRepository<ReadModuleCriterionFrom> readModuleCriterionFromRepository,
 | 
				
			||||||
			IRepository<ReadModule> readModuleRepository,
 | 
								IRepository<ReadModule> readModuleRepository,
 | 
				
			||||||
		IRepository<SubjectVisit> subjectVisitRepository,
 | 
							IRepository<SubjectVisit> subjectVisitRepository,
 | 
				
			||||||
			IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
 | 
								IRepository<ClinicalTableAnswer> clinicalTableAnswerRepository,
 | 
				
			||||||
| 
						 | 
					@ -78,8 +82,8 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
            _trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
 | 
					            _trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository;
 | 
				
			||||||
            _systemClinicalQuestionRepository = systemClinicalQuestionRepository;
 | 
					            _systemClinicalQuestionRepository = systemClinicalQuestionRepository;
 | 
				
			||||||
            _clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
 | 
					            _clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
 | 
				
			||||||
		
 | 
					            _iReadingClinicalDataService = iReadingClinicalDataService;
 | 
				
			||||||
			_clinicalFormRepository = clinicalFormRepository;
 | 
					                _clinicalFormRepository = clinicalFormRepository;
 | 
				
			||||||
			this._subjectRepository = subjectRepository;
 | 
								this._subjectRepository = subjectRepository;
 | 
				
			||||||
			this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
 | 
								this._readModuleCriterionFromRepository = readModuleCriterionFromRepository;
 | 
				
			||||||
			this._readModuleRepository = readModuleRepository;
 | 
								this._readModuleRepository = readModuleRepository;
 | 
				
			||||||
| 
						 | 
					@ -860,6 +864,8 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    IsPMConfirm = true
 | 
					                    IsPMConfirm = true
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					                await _readModuleRepository.SaveChangesAsync();
 | 
				
			||||||
 | 
					                await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModuleData.TrialReadingCriterionId);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -870,11 +876,13 @@ namespace IRaCIS.Core.Application.Service
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== x.Id);
 | 
					                await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== x.Id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              
 | 
					                await _readModuleRepository.SaveChangesAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			await _readModuleRepository.SaveChangesAsync();
 | 
								
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return ResponseOutput.Ok(true);
 | 
								return ResponseOutput.Ok(true);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -303,7 +303,7 @@ namespace IRaCIS.Application.Services
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //处理 任务  临床数据是否签名
 | 
					        //处理 任务  临床数据是否签名
 | 
				
			||||||
        private async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
 | 
					        public async Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            //获取确认的临床数据配置
 | 
					            //获取确认的临床数据配置
 | 
				
			||||||
             var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
 | 
					             var trialClinicalDataSetList = _clinicalDataTrialSetRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Include(t => t.TrialClinicalDataSetCriteriaList).ToList();
 | 
				
			||||||
| 
						 | 
					@ -321,6 +321,8 @@ namespace IRaCIS.Application.Services
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
 | 
					                var isBaseLine = await _subjectVisitRepository.Where(t => t.Id == readingId).Select(t => t.IsBaseLine).FirstOrDefaultAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //判断是否基线
 | 
					                //判断是否基线
 | 
				
			||||||
                if (isBaseLine)
 | 
					                if (isBaseLine)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					@ -349,21 +351,43 @@ namespace IRaCIS.Application.Services
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //判断是影像学 还是肿瘤学阅片
 | 
					                //判断是影像学 还是肿瘤学阅片
 | 
				
			||||||
                var readingSetType = await _readModuleRepository.Where(t => t.Id == readingId).Select(t => t.ReadingSetType).FirstOrDefaultAsync();
 | 
					                var readModule = await _readModuleRepository.Where(t => t.Id == readingId).FirstNotNullAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //CRC 阅片期自定义结构化录入是否签名
 | 
				
			||||||
 | 
					                bool crcReadModuleSign = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //影像学
 | 
					                //影像学
 | 
				
			||||||
                if (readingSetType == ReadingSetType.ImageReading)
 | 
					                if (readModule.ReadingSetType == ReadingSetType.ImageReading)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
 | 
					                    needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.ImageRead).Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // 不存在需要CRC上传的临床数据 或者 PM已确认
 | 
				
			||||||
 | 
					                    crcReadModuleSign =
 | 
				
			||||||
 | 
					                    !trialClinicalDataSetList.Any(x =>
 | 
				
			||||||
 | 
					                     x.UploadRole == UploadRole.CRC
 | 
				
			||||||
 | 
					                    && x.ClinicalDataLevel == ClinicalLevel.ImageRead
 | 
				
			||||||
 | 
					                    && x.ClinicalUploadType == ClinicalUploadType.Structuring
 | 
				
			||||||
 | 
					                    && x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId)) || readModule.IsPMConfirm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                //肿瘤学
 | 
					                //肿瘤学
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
 | 
					                    needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead).Count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // 不存在需要CRC上传的临床数据 或者 PM已确认
 | 
				
			||||||
 | 
					                    crcReadModuleSign =
 | 
				
			||||||
 | 
					                    !trialClinicalDataSetList.Any(x =>
 | 
				
			||||||
 | 
					                     x.UploadRole == UploadRole.CRC
 | 
				
			||||||
 | 
					                    && x.ClinicalDataLevel == ClinicalLevel.OncologyRead
 | 
				
			||||||
 | 
					                    && x.ClinicalUploadType == ClinicalUploadType.Structuring
 | 
				
			||||||
 | 
					                    && x.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCritrialId)) || readModule.IsPMConfirm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //可能仅仅CRC 基线   没有PM
 | 
					                //可能仅仅CRC 基线   没有PM
 | 
				
			||||||
                if (needSignCount == haveSignedCount /*&& needSignCount != 0*/)
 | 
					                if (needSignCount == haveSignedCount && crcReadModuleSign/*&& needSignCount != 0*/)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    //将该标准  该subject 该阅片期|肿瘤学 任务临床数据状态变更
 | 
					                    //将该标准  该subject 该阅片期|肿瘤学 任务临床数据状态变更
 | 
				
			||||||
                    await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
 | 
					                    await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,5 +23,7 @@ namespace IRaCIS.Core.Application.Contracts
 | 
				
			||||||
       // Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto);
 | 
					       // Task<(List<GetReadingClinicalDataListOutDto>, object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto);
 | 
					        Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Task DealVisiTaskClinicalDataSignedAsync(Guid trialId, Guid subjectId, Guid readingId, bool isVisit, Guid trialReadingCritrialId);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue