diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index f3a2cc883..6514877f6 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -915,10 +915,8 @@ namespace IRaCIS.Core.Application.Service IsCRCConfirm = false, IsCRCApplicationRevoke=false, }); - await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== inDto.ReadModuleId); - await _readModuleRepository.SaveChangesAsync(); - + await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x => x.ReadModuleId == inDto.ReadModuleId); } diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 484db67a6..6eefb8d0d 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -2081,45 +2081,49 @@ namespace IRaCIS.Core.Infra.EFCore.Common var entity = item.Entity as ReadingClinicalDataPDF; var clinicalData = await _dbContext.ReadingClinicalData.Where(t => t.Id == entity.ReadingClinicalDataId).FirstOrDefaultAsync(); - var clinicalDataTrialSet = await _dbContext.ClinicalDataTrialSet.Where(t => t.Id == clinicalData.ClinicalDataTrialSetId).FirstOrDefaultAsync(); - - SubjectVisit? visit = await _dbContext.SubjectVisit.Where(x => x.Id == clinicalData.ReadingId).FirstOrDefaultAsync(); - Site? siteInfo = null; - Subject? subject = null; - - //阅片标准 - var trialReadingCriterionIdList = await _dbContext.TrialClinicalDataSetCriterion.Where(t => t.TrialClinicalDataSetId == clinicalDataTrialSet.Id).Select(t => t.TrialReadingCriterionId).ToListAsync(); - - - - //阅片标准 - var criterionNameList = await _dbContext.ReadingQuestionCriterionTrial.Where(t => trialReadingCriterionIdList.Contains(t.Id)).OrderBy(t => t.ShowOrder).Select(t => t.CriterionName).ToListAsync(); - - - - if (visit != null) + if (clinicalData != null) { - siteInfo = await _dbContext.Site.Where(x => x.Id == visit.SiteId).FirstOrDefaultAsync(); - subject= await _dbContext.Subject.Where(x => x.Id == clinicalData.SubjectId).FirstOrDefaultAsync(); + var clinicalDataTrialSet = await _dbContext.ClinicalDataTrialSet.Where(t => t.Id == clinicalData.ClinicalDataTrialSetId).FirstOrDefaultAsync(); + + SubjectVisit? visit = await _dbContext.SubjectVisit.Where(x => x.Id == clinicalData.ReadingId).FirstOrDefaultAsync(); + Site? siteInfo = null; + Subject? subject = null; + + //阅片标准 + var trialReadingCriterionIdList = await _dbContext.TrialClinicalDataSetCriterion.Where(t => t.TrialClinicalDataSetId == clinicalDataTrialSet.Id).Select(t => t.TrialReadingCriterionId).ToListAsync(); + + + + //阅片标准 + var criterionNameList = await _dbContext.ReadingQuestionCriterionTrial.Where(t => trialReadingCriterionIdList.Contains(t.Id)).OrderBy(t => t.ShowOrder).Select(t => t.CriterionName).ToListAsync(); + + + + if (visit != null) + { + siteInfo = await _dbContext.Site.Where(x => x.Id == visit.SiteId).FirstOrDefaultAsync(); + subject = await _dbContext.Subject.Where(x => x.Id == clinicalData.SubjectId).FirstOrDefaultAsync(); + } + + Guid? subjectVisitId = visit == null ? null : visit.Id; + await InsertInspection(entity, type, x => new InspectionConvertDTO() + { + TrialId = clinicalData.TrialId, + SubjectId = clinicalData.SubjectId, + SubjectVisitId = subjectVisitId, + }, new + { + SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, + SubjectCode = subject == null ? "" : subject.Code, + VisitName = visit == null ? "" : visit.VisitName, + clinicalDataTrialSet.ClinicalDataSetName, + clinicalDataTrialSet.ClinicalDataLevel, + clinicalDataTrialSet.ClinicalUploadType, + CriterionNames = string.Join(",", criterionNameList.Distinct()), + FileCount = 1, + + }); } - - Guid? subjectVisitId = visit==null?null: visit.Id; - await InsertInspection(entity, type, x => new InspectionConvertDTO() - { - TrialId= clinicalData.TrialId, - SubjectId=clinicalData.SubjectId, - SubjectVisitId= subjectVisitId, - },new { - SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, - SubjectCode = subject == null ? "" : subject.Code, - VisitName= visit==null?"": visit.VisitName, - clinicalDataTrialSet.ClinicalDataSetName, - clinicalDataTrialSet.ClinicalDataLevel, - clinicalDataTrialSet.ClinicalUploadType, - CriterionNames = string.Join(",", criterionNameList.Distinct()), - FileCount= 1, - - }); } @@ -2172,67 +2176,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - //临床数据表单确认 - var readModuleCriterionFromList = entitys.Where(x => x.Entity.GetType() == typeof(ReadModuleCriterionFrom)).ToList(); - if (readModuleCriterionFromList.Count() > 0) - { - var item = readModuleCriterionFromList.FirstOrDefault(); - - var readModuleCriterionFrom = item.Entity as ReadModuleCriterionFrom; - var type = GetEntityAuditOpt(item); - - - var clinicalFormIds = new List(); - var criterionIds = new List(); - readModuleCriterionFromList.ForEach(x => { - var form = x.Entity as ReadModuleCriterionFrom; - clinicalFormIds.Add(form.ClinicalFormId); - }); - - var clinicalFormList = await _dbContext.ClinicalForm.Where(t =>clinicalFormIds.Contains(t.Id)).ToListAsync(); - - var clinicalDataTrialSetIds = clinicalFormList.Select(x => x.ClinicalDataTrialSetId).ToList().Distinct(); - - var readModule= await _dbContext.ReadModule.Where(t => t.Id == readModuleCriterionFrom.ReadModuleId).Include(x => x.SubjectVisit).FirstOrDefaultAsync(); - var latestScanDate = readModule.SubjectVisit.LatestScanDate; - - var clinicalDataTrialSetList = await _dbContext.ClinicalDataTrialSet.Where(t => clinicalDataTrialSetIds.Contains(t.Id)).ToListAsync(); - - - var clinicalSetIds = clinicalDataTrialSetList.Select(x => x.Id).ToList(); - - // 项目临床数据和标准的关联 - var trialReadingCriterionIdList = await _dbContext.TrialClinicalDataSetCriterion.Where(x => clinicalSetIds.Contains(x.TrialClinicalDataSetId)).Select(x => x.TrialReadingCriterionId).Distinct().ToListAsync(); - - // 标准 - var criterionNameList = await _dbContext.ReadingQuestionCriterionTrial.Where(t => trialReadingCriterionIdList.Contains(t.Id)).OrderBy(t => t.ShowOrder).Select(t => t.CriterionName).ToListAsync(); - - - - Subject subject = await _dbContext.Subject.Where(x => x.Id == readModule.SubjectId).FirstOrDefaultAsync(); - Site siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync(); - - var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList(); - await InsertInspection(readModuleCriterionFrom, type, x => new InspectionConvertDTO() - { - ObjectRelationParentId= readModuleCriterionFrom.ReadModuleId, - GeneralId = readModuleCriterionFrom.ReadModuleId, - TrialId = subject.TrialId, - SubjectId = subject.Id, - }, new - { - SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, - SubjectCode = subject == null ? "" : subject.Code, - LatestScanDate= latestScanDate, - ClinicalDataSetName = string.Join(",", clinicalDataSetNameList), - ClinicalDataLevel = clinicalDataTrialSetList.Select(x => x.ClinicalDataLevel).FirstOrDefault(), - ClinicalUploadType = clinicalDataTrialSetList.Select(x => x.ClinicalUploadType).FirstOrDefault(), - CriterionNames = string.Join(",", criterionNameList.Distinct()), - RecordNumber= readModuleCriterionFromList.Count(), - - }); - } //系统临床数据配置 @@ -2434,14 +2378,85 @@ namespace IRaCIS.Core.Infra.EFCore.Common object objData = new { }; + //临床数据表单确认 + if(_userInfo.RequestUrl== "ClinicalAnswer/cRCConfirmClinical") + { + extraIndentification = "/" + _userInfo.RequestUrl; + var readModuleCriterionFromList = entitys.Where(x => x.Entity.GetType() == typeof(ReadModuleCriterionFrom)).ToList(); + if (readModuleCriterionFromList.Count() > 0) + { + var readModuleCriterionFrom = readModuleCriterionFromList.FirstOrDefault().Entity as ReadModuleCriterionFrom; + + + var clinicalFormIds = new List(); + var criterionIds = new List(); + readModuleCriterionFromList.ForEach(x => { + var form = x.Entity as ReadModuleCriterionFrom; + clinicalFormIds.Add(form.ClinicalFormId); + }); + + var clinicalFormList = await _dbContext.ClinicalForm.Where(t => clinicalFormIds.Contains(t.Id)).ToListAsync(); + + var clinicalDataTrialSetIds = clinicalFormList.Select(x => x.ClinicalDataTrialSetId).ToList().Distinct(); + + + var readModule = await _dbContext.ReadModule.Where(t => t.Id == readModuleCriterionFrom.ReadModuleId).Include(x => x.SubjectVisit).FirstOrDefaultAsync(); + var latestScanDate = readModule.SubjectVisit.LatestScanDate; + + var clinicalDataTrialSetList = await _dbContext.ClinicalDataTrialSet.Where(t => clinicalDataTrialSetIds.Contains(t.Id)).ToListAsync(); + + + var clinicalSetIds = clinicalDataTrialSetList.Select(x => x.Id).ToList(); + + // 项目临床数据和标准的关联 + var trialReadingCriterionIdList = await _dbContext.TrialClinicalDataSetCriterion.Where(x => clinicalSetIds.Contains(x.TrialClinicalDataSetId)).Select(x => x.TrialReadingCriterionId).Distinct().ToListAsync(); + + // 标准 + var criterionNameList = await _dbContext.ReadingQuestionCriterionTrial.Where(t => trialReadingCriterionIdList.Contains(t.Id)).OrderBy(t => t.ShowOrder).Select(t => t.CriterionName).ToListAsync(); + + + + Subject subject = await _dbContext.Subject.Where(x => x.Id == readModule.SubjectId).FirstOrDefaultAsync(); + Site siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync(); + + var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList(); + objData= new + { + SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, + SubjectCode = subject == null ? "" : subject.Code, + LatestScanDate = latestScanDate, + ClinicalDataSetName = string.Join(",", clinicalDataSetNameList), + ClinicalDataLevel = clinicalDataTrialSetList.Select(x => x.ClinicalDataLevel).FirstOrDefault(), + ClinicalUploadType = clinicalDataTrialSetList.Select(x => x.ClinicalUploadType).FirstOrDefault(), + CriterionNames = string.Join(",", criterionNameList.Distinct()), + RecordNumber = readModuleCriterionFromList.Count(), + + }; + } + } + + List urlList = new List() { "ClinicalAnswer/cRCCancelConfirmClinical", + "ClinicalAnswer/PMConfirmClinical" }; + + if (urlList.Contains(_userInfo.RequestUrl)) { - extraIndentification = "/" + _userInfo.RequestUrl; + string status = string.Empty; + if (!entity.IsCRCConfirm && _userInfo.RequestUrl == "ClinicalAnswer/PMConfirmClinical") + { + status = "已撤回"; + extraIndentification += "/revocation"; + } else if (entity.IsPMConfirm && _userInfo.RequestUrl == "ClinicalAnswer/PMConfirmClinical") + { + status = "已核对"; + extraIndentification += "/Confirm"; + } + var readModuleCriterionFrom = await _dbContext.ReadModuleCriterionFrom.Where(t => t.ReadModuleId == entity.Id).FirstOrDefaultAsync(); var latestScanDate = await _dbContext.ReadModule.Where(t => t.Id == entity.Id).Select(x => x.SubjectVisit.LatestScanDate).FirstOrDefaultAsync(); @@ -2485,6 +2500,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common ClinicalUploadType = clinicalDataTrialSetList.Select(x => x.ClinicalUploadType).FirstOrDefault(), CriterionNames = string.Join(",", criterionNameList.Distinct()), RecordNumber = clinicalFormIds.Count(), + Status= status, }; }