IRC_NewDev
he 2023-11-28 16:46:27 +08:00
parent ec64533b4b
commit 73cbf96a65
5 changed files with 252 additions and 13 deletions

View File

@ -14,7 +14,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>.\IRaCIS.Core.API.xml</DocumentationFile>
<NoWarn>1701;1702;1591;</NoWarn>
<NoWarn>1701;1702;1591;CS1570;</NoWarn>
<OutputPath>..\bin\</OutputPath>
</PropertyGroup>

View File

@ -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)))
{

View File

@ -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; }

View File

@ -28,11 +28,16 @@ namespace IRaCIS.Core.Domain.Models
/// 检查日期
/// </summary>
public DateTime? CheckDate { get; set; }
/// <summary>
/// 截图地址
/// </summary>
public string PicturePath { get; set; } = string.Empty;
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人

View File

@ -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<ReadingClinicalDataPDF>(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<ClinicalForm>(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<Guid>();
var criterionIds = new List<Guid>();
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>(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<string> urlList = new List<string>() {
"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>(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<ReadModule>(item.Entity as ReadModule, type, x => new InspectionConvertDTO()
{
ObjectRelationParentId = entity.SubjectVisitId,
ObjectRelationParentId2 = entity.TrialReadingCriterionId,
ExtraIndentification= extraIndentification,
//SubjectVisitId = x.SubjectVisitId,
IsDistinctionInterface = false,
});
}, objData);
}