From 73cbf96a65c097cafb318400471a9dd65228d75c Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Tue, 28 Nov 2023 16:46:27 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E7=A8=BD=E6=9F=A52?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.API/IRaCIS.Core.API.csproj | 2 +-
.../ClinicalData/ClinicalAnswerService.cs | 17 +-
.../Service/Reading/Dto/ClinicalAnswerDto.cs | 2 +
.../ClinicalQuestionAnswer/ClinicalForm.cs | 9 +-
.../Common/AuditingData.cs | 235 +++++++++++++++++-
5 files changed, 252 insertions(+), 13 deletions(-)
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj
index 28ac6a452..ad4a9289f 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj
@@ -14,7 +14,7 @@
.\IRaCIS.Core.API.xml
- 1701;1702;1591;
+ 1701;1702;1591;CS1570;
..\bin\
diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs
index d5055d242..f3a2cc883 100644
--- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs
@@ -352,14 +352,15 @@ namespace IRaCIS.Core.Application.Service
ClinicalForm clinicalForm = new ClinicalForm() { };
- clinicalForm = new ClinicalForm()
- {
- ClinicalDataTrialSetId = inDto.ClinicalDataTrialSetId,
- SubjectId = inDto.SubjectId,
- TrialId= inDto.TrialId,
- Id = inDto.ClinicalFormId ?? NewId.NextGuid(),
- ReadingId = inDto.ReadingId,
- };
+ clinicalForm = new ClinicalForm()
+ {
+ ClinicalDataTrialSetId = inDto.ClinicalDataTrialSetId,
+ SubjectId = inDto.SubjectId,
+ PicturePath = inDto.PicturePath,
+ TrialId = inDto.TrialId,
+ Id = inDto.ClinicalFormId ?? NewId.NextGuid(),
+ ReadingId = inDto.ReadingId,
+ };
if (inDto.ClinicalFormId!=null&&(await _readModuleCriterionFromRepository.AnyAsync(x => x.ClinicalFormId == inDto.ClinicalFormId.Value)))
{
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs
index 00d9647e9..fb669cb58 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs
@@ -349,6 +349,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? ClinicalFormId { get; set; }
+ public string PicturePath { get; set; } = string.Empty;
+
public Guid SubjectId { get; set; }
public Guid TrialId { get; set; }
diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestionAnswer/ClinicalForm.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestionAnswer/ClinicalForm.cs
index b59d1374d..6ccb8f9cf 100644
--- a/IRaCIS.Core.Domain/Reading/ClinicalQuestionAnswer/ClinicalForm.cs
+++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestionAnswer/ClinicalForm.cs
@@ -28,11 +28,16 @@ namespace IRaCIS.Core.Domain.Models
/// 检查日期
///
public DateTime? CheckDate { get; set; }
-
+
///
+ /// 截图地址
+ ///
+ public string PicturePath { get; set; } = string.Empty;
+
+ ///
/// 创建日期
///
- public DateTime CreateTime { get; set; }
+ public DateTime CreateTime { get; set; }
///
/// 创建人
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
index fa20e384d..167620876 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
@@ -7,12 +7,14 @@ using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
+using NetTopologySuite.Index.HPRtree;
using Newtonsoft.Json;
using SharpCompress.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
+using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
@@ -2067,6 +2069,232 @@ namespace IRaCIS.Core.Infra.EFCore.Common
+
+ //临床数据上传PDF
+
+ foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ReadingClinicalDataPDF)))
+ {
+ var type = GetEntityAuditOpt(item);
+
+ 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)
+ {
+ 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,
+
+ });
+ }
+
+
+ foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ClinicalForm)))
+ {
+ var type = GetEntityAuditOpt(item);
+
+ var entity = item.Entity as ClinicalForm;
+
+ var clinicalDataTrialSet = await _dbContext.ClinicalDataTrialSet.Where(t => t.Id == entity.ClinicalDataTrialSetId).FirstOrDefaultAsync();
+
+ SubjectVisit? visit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.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 == entity.SubjectId).FirstOrDefaultAsync();
+ }
+
+ Guid? subjectVisitId = visit == null ? null : visit.Id;
+ await InsertInspection(entity, type, x => new InspectionConvertDTO()
+ {
+ TrialId = entity.TrialId,
+ SubjectId = entity.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()),
+
+
+ });
+ }
+
+
+ //临床数据表单确认
+ 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()
+ {
+ 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(),
+
+ });
+ }
+
+ var readModuleList = entitys.Where(x => x.Entity.GetType() == typeof(ReadModule)).ToList();
+ if (readModuleList.Count > 0)
+ {
+ List urlList = new List() {
+ "ClinicalAnswer/cRCCancelConfirmClinical",
+ };
+ if (urlList.Contains(_userInfo.RequestUrl))
+ {
+ var item = readModuleList.FirstOrDefault();
+ var type = GetEntityAuditOpt(item);
+ var entity = item.Entity as ReadModule;
+ string extraIndentification = "/"+ _userInfo.RequestUrl;
+
+ 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();
+ Site? siteInfo = null;
+ Subject? subject = null;
+ //阅片标准
+
+
+ var clinicalFormIds = await _dbContext.ReadModuleCriterionFrom.Where(x => x.ReadModuleId == entity.Id).Select(x => x.ClinicalFormId).ToListAsync();
+ var clinicalDataTrialSetIds = await _dbContext.ClinicalForm.Where(x => clinicalFormIds.Contains(x.Id)).Select(x => x.ClinicalDataTrialSetId).Distinct().ToListAsync();
+
+ // 临床数据
+ var clinicalDataTrialSetList = await _dbContext.ClinicalDataTrialSet.Where(x => clinicalDataTrialSetIds.Contains(x.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 = await _dbContext.Subject.Where(x => x.Id == entity.SubjectId).FirstOrDefaultAsync();
+ siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync();
+
+ var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList().Distinct();
+
+
+
+
+
+ await InsertInspection(readModuleCriterionFrom, type, x => new InspectionConvertDTO()
+ {
+ 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 = clinicalFormIds.Count(),
+
+ });
+ }
+ }
+
+
//系统临床数据配置
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(ClinicalDataSystemSet)))
@@ -2262,15 +2490,18 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var entity = item.Entity as ReadModule;
+ string extraIndentification = string.Empty;
+ object objData = new { };
+
await InsertInspection(item.Entity as ReadModule, type, x => new InspectionConvertDTO()
{
ObjectRelationParentId = entity.SubjectVisitId,
ObjectRelationParentId2 = entity.TrialReadingCriterionId,
-
+ ExtraIndentification= extraIndentification,
//SubjectVisitId = x.SubjectVisitId,
IsDistinctionInterface = false,
- });
+ }, objData);
}
From aacfbf7178e18ef4186e45e0413ab2fbc54b3f9b Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Tue, 28 Nov 2023 16:51:16 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E7=A8=BD=E6=9F=A53?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
index ee620541b..d77762729 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
@@ -2216,6 +2216,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList();
await InsertInspection(readModuleCriterionFrom, type, x => new InspectionConvertDTO()
{
+ GeneralId= readModuleCriterionFrom.ReadModuleId,
TrialId = subject.TrialId,
SubjectId = subject.Id,
}, new
@@ -2279,6 +2280,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection(readModuleCriterionFrom, type, x => new InspectionConvertDTO()
{
+ GeneralId= entity.Id,
TrialId = subject.TrialId,
SubjectId = subject.Id,
}, new
From 638fb12e16b6f2bc11663cc9f8ae172122d3be5e Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Tue, 28 Nov 2023 17:40:05 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E7=A8=BD=E6=9F=A54?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Common/AuditingData.cs | 128 +++++++++---------
1 file changed, 61 insertions(+), 67 deletions(-)
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
index d77762729..484db67a6 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
@@ -2216,7 +2216,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList();
await InsertInspection(readModuleCriterionFrom, type, x => new InspectionConvertDTO()
{
- GeneralId= readModuleCriterionFrom.ReadModuleId,
+ ObjectRelationParentId= readModuleCriterionFrom.ReadModuleId,
+ GeneralId = readModuleCriterionFrom.ReadModuleId,
TrialId = subject.TrialId,
SubjectId = subject.Id,
}, new
@@ -2232,71 +2233,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
});
}
-
- var readModuleList = entitys.Where(x => x.Entity.GetType() == typeof(ReadModule)).ToList();
- if (readModuleList.Count > 0)
- {
- List urlList = new List() {
- "ClinicalAnswer/cRCCancelConfirmClinical",
- };
- if (urlList.Contains(_userInfo.RequestUrl))
- {
- var item = readModuleList.FirstOrDefault();
- var type = GetEntityAuditOpt(item);
- var entity = item.Entity as ReadModule;
- string extraIndentification = "/"+ _userInfo.RequestUrl;
-
- 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();
- Site? siteInfo = null;
- Subject? subject = null;
- //阅片标准
-
-
- var clinicalFormIds = await _dbContext.ReadModuleCriterionFrom.Where(x => x.ReadModuleId == entity.Id).Select(x => x.ClinicalFormId).ToListAsync();
- var clinicalDataTrialSetIds = await _dbContext.ClinicalForm.Where(x => clinicalFormIds.Contains(x.Id)).Select(x => x.ClinicalDataTrialSetId).Distinct().ToListAsync();
-
- // 临床数据
- var clinicalDataTrialSetList = await _dbContext.ClinicalDataTrialSet.Where(x => clinicalDataTrialSetIds.Contains(x.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 = await _dbContext.Subject.Where(x => x.Id == entity.SubjectId).FirstOrDefaultAsync();
- siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync();
-
- var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList().Distinct();
-
-
-
-
-
- await InsertInspection(readModuleCriterionFrom, type, x => new InspectionConvertDTO()
- {
- GeneralId= entity.Id,
- 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 = clinicalFormIds.Count(),
-
- });
- }
- }
//系统临床数据配置
@@ -2496,7 +2432,65 @@ namespace IRaCIS.Core.Infra.EFCore.Common
string extraIndentification = string.Empty;
object objData = new { };
-
+
+
+ List urlList = new List() {
+ "ClinicalAnswer/cRCCancelConfirmClinical",
+ };
+
+ if (urlList.Contains(_userInfo.RequestUrl))
+ {
+
+ extraIndentification = "/" + _userInfo.RequestUrl;
+
+ 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();
+ Site? siteInfo = null;
+ Subject? subject = null;
+ //阅片标准
+
+
+ var clinicalFormIds = await _dbContext.ReadModuleCriterionFrom.Where(x => x.ReadModuleId == entity.Id).Select(x => x.ClinicalFormId).ToListAsync();
+ var clinicalDataTrialSetIds = await _dbContext.ClinicalForm.Where(x => clinicalFormIds.Contains(x.Id)).Select(x => x.ClinicalDataTrialSetId).Distinct().ToListAsync();
+
+ // 临床数据
+ var clinicalDataTrialSetList = await _dbContext.ClinicalDataTrialSet.Where(x => clinicalDataTrialSetIds.Contains(x.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 = await _dbContext.Subject.Where(x => x.Id == entity.SubjectId).FirstOrDefaultAsync();
+ siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync();
+
+ var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList().Distinct();
+
+
+
+
+
+ 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 = clinicalFormIds.Count(),
+
+ };
+ }
+
+
+
await InsertInspection(item.Entity as ReadModule, type, x => new InspectionConvertDTO()
{
ObjectRelationParentId = entity.SubjectVisitId,
From 1274eaaec3477c1b82a465e81df707abbad13c30 Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Wed, 29 Nov 2023 10:41:32 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E7=A8=BD=E6=9F=A55?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ClinicalData/ClinicalAnswerService.cs | 4 +-
.../Common/AuditingData.cs | 212 ++++++++++--------
2 files changed, 115 insertions(+), 101 deletions(-)
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,
};
}