From 6a9faa690a8239b23f3e1f8ed916994b88186b13 Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Thu, 2 Jun 2022 16:36:05 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 85 +++++++++++++++++--
.../Reading/Dto/ReadingPeriodSetViewModel.cs | 77 +++++++++++++++++
.../Reading/Interface/IReadModuleService.cs | 16 ++++
.../Service/Reading/ReadModuleService.cs | 70 +++++----------
.../Reading/ReadingPeriodSetService.cs | 80 +++++++++++++++++
.../Service/Reading/_MapConfig.cs | 2 +-
IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 12 +++
IRaCIS.Core.Domain/Reading/ReadModule.cs | 5 ++
.../Reading/ReadingPeriodSet.cs | 10 ++-
.../Reading/ReadingPeriodSite.cs | 2 +
IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs | 3 +
.../Common/ReadingCommon.cs | 41 +++++++++
.../ReadingPeriodSiteConfigration.cs | 22 +++++
13 files changed, 363 insertions(+), 62 deletions(-)
create mode 100644 IRaCIS.Core.Application/Service/Reading/Interface/IReadModuleService.cs
create mode 100644 IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
create mode 100644 IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 83b2c8df5..2fc40ff7f 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -737,6 +737,71 @@
是否生效
+
+
+ 阅片期ID
+
+
+
+
+ 访视ID
+
+
+
+
+ 阅片期ID
+
+
+
+
+ 获取影像阅片预览的Dto
+
+
+
+
+ 项目中心Code
+
+
+
+
+ 访视Id
+
+
+
+
+ 受试者Id
+
+
+
+
+ 受试者名称
+
+
+
+
+ 备注
+
+
+
+
+ 最晚拍片日期
+
+
+
+
+ 截止日期
+
+
+
+
+ 阅片期ID
+
+
+
+
+ 阅片期名称
+
+
id
@@ -2985,6 +3050,19 @@
+
+
+ 获取影像阅片的预览
+
+
+
+
+
+ 添加对应的阅片
+
+
+
+
分页获取
@@ -3023,13 +3101,6 @@
获取读片模块
-
-
- 获取访视的状态
-
-
-
-
获取单条信息
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs
index 020e4935d..cd9b4e66e 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingPeriodSetViewModel.cs
@@ -48,12 +48,89 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
///
public ReadingPeriodStatus IsTakeEffect { get; set; } = ReadingPeriodStatus.NotTakeEffect;
+ public ReadingSetType ReadingSetType { get; set; } = ReadingSetType.ImageReading;
public List SiteIds { get; set; } = new List();
}
+ public class ReadingToGenerateInDto
+ {
+ ///
+ /// 阅片期ID
+ ///
+
+ public Guid ReadingPeriodSetId { get; set; }
+
+ ///
+ /// 访视ID
+ ///
+ public List SubjectVisitIds { get; set; }
+ }
+
+ public class PreviewTheReadingListInDto
+ {
+ ///
+ /// 阅片期ID
+ ///
+
+ public Guid ReadingPeriodSetId { get; set; }
+ }
+
+ ///
+ /// 获取影像阅片预览的Dto
+ ///
+ public class PreviewTheReadingListOutDto
+ {
+ ///
+ /// 项目中心Code
+ ///
+ public string TrialSiteCode { get; set; }
+
+ ///
+ /// 访视Id
+ ///
+ public Guid SubjectVisitId { get; set; }
+
+ ///
+ /// 受试者Id
+ ///
+ public Guid SubjectId { get; set; }
+
+ ///
+ /// 受试者名称
+ ///
+ public string SubjectCode { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
+
+ ///
+ /// 最晚拍片日期
+ ///
+ public DateTime? LatestScanDate { get; set; }
+
+ ///
+ /// 截止日期
+ ///
+ public DateTime? ExpirationDate { get; set; }
+
+ ///
+ /// 阅片期ID
+ ///
+
+ public Guid ReadingPeriodSetId { get; set; }
+
+ ///
+ /// 阅片期名称
+ ///
+ public string ReadingPeriodName { get; set; }
+
+ }
+
public class ReadingPeriodSetView
{
///
diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IReadModuleService.cs
new file mode 100644
index 000000000..a51dd3a09
--- /dev/null
+++ b/IRaCIS.Core.Application/Service/Reading/Interface/IReadModuleService.cs
@@ -0,0 +1,16 @@
+//--------------------------------------------------------------------
+// 此代码由T4模板自动生成 byzhouhang 20210918
+// 生成时间 2021-12-23 13:20:59
+// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
+//--------------------------------------------------------------------
+
+
+using IRaCIS.Core.Domain.Share.Reading;
+
+namespace IRaCIS.Core.Application.Contracts
+{
+ public interface IReadModuleService
+ {
+ ReadModuleEnum GetVisitSubmitStateEnum(SubjectVisit visit);
+ }
+}
\ No newline at end of file
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs
index adca1879a..798d10ffd 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadModuleService.cs
@@ -10,6 +10,8 @@ using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share.Reading;
using MassTransit;
using Panda.DynamicWebApi.Attributes;
+using IRaCIS.Core.Application.Contracts;
+using IRaCIS.Core.Infra.EFCore.Common;
namespace IRaCIS.Application.Services
{
@@ -17,7 +19,7 @@ namespace IRaCIS.Application.Services
/// 生成的阅片模块(在大列表上展示的) 阅片期
///
[ApiExplorerSettings(GroupName = "Reading")]
- public class ReadModuleService : BaseService
+ public class ReadModuleService : BaseService
{
public IRepository _subjectVisitRepository;
@@ -50,10 +52,10 @@ namespace IRaCIS.Application.Services
{
var subjectquery = _subjectRepository.WhereIf(dto.TrialId!=null, x => x.TrialId == dto.TrialId)
.WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId)
- .Include(x => x.SubjectVisitList).Include(x=>x.Site)
+ .Include(x => x.SubjectVisitList).Include(x=>x.Site).Include(x => x.TrialSite)
.Select(x => new GetReadModuleDtoOut
{
- SiteCode = x.Site.SiteCode,
+ SiteCode = x.TrialSite.TrialSiteCode,
SiteId = x.SiteId,
SubjectCode = x.Code,
SubjectId = x.Id,
@@ -65,10 +67,10 @@ namespace IRaCIS.Application.Services
IsUrgent = x.IsUrgent, // 是否加急
SubjectVisitId = y.Id, // 访视ID
SubjectVisitName=y.VisitName, // 访视名称
- Status= GetVisitSubmitStateEnum(y), // 状态
+ Status= ReadingCommon.GetVisitSubmitStateEnum(y), // 状态
CreateTime = y.CreateTime, // 创建时间
SubjectCode = y.Subject.Code, // 受试者code
- SiteCode = x.Site.SiteCode, // 中心Code
+ SiteCode = x.TrialSite.TrialSiteCode, // 中心Code
IsFinalVisit=y.IsFinalVisit, // 是否为末次评估
OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视
@@ -101,7 +103,7 @@ namespace IRaCIS.Application.Services
Name=y.ModuleName,
SubjectId=x.SubjectId,
ModuleType=y.ModuleType,
- Status= GetVisitSubmitStateEnum(y.SubjectVisit),
+ Status= ReadingCommon.GetVisitSubmitStateEnum(y.SubjectVisit),
SubjectCode= x.SubjectCode,
SiteCode=x.SiteCode,
SubjectVisitId= y.SubjectVisitId,
@@ -123,31 +125,7 @@ namespace IRaCIS.Application.Services
});
}
- ///
- /// 获取访视的状态
- ///
- ///
- ///
- [NonDynamicMethod]
- public static ReadModuleEnum GetVisitSubmitStateEnum(SubjectVisit visit)
- {
- if (visit.SubmitState != SubmitStateEnum.Submitted) // 未提交
- {
- return ReadModuleEnum.ImageUpload;
- }
- else if (visit.AuditState != AuditStateEnum.QCPassed) // 审核未通过
- {
- return ReadModuleEnum.ImageUpload;
- }
- else if (visit.ForwardState != ForwardStateEnum.Forwarded) // 未通过一致性核查
- {
- return ReadModuleEnum.ConsistencyCheck;
- }
- else {
- // 暂时
- return ReadModuleEnum.ReadComplete;
- }
- }
+
/////
@@ -183,12 +161,12 @@ namespace IRaCIS.Application.Services
}).FirstOrDefault();
- var visit = (await _subjectVisitRepository.Where(x => x.Id == GetReadModuleOutDto.SubjectVisitId).FirstOrDefaultAsync()).IfNullThrowConvertException();
+ SubjectVisit visit = (await _subjectVisitRepository.Where(x => x.Id == GetReadModuleOutDto.SubjectVisitId).FirstOrDefaultAsync()).IfNullThrowConvertException();
//switch (GetVisitSubmitStateEnum(visit))
//{
// case ReadModuleEnum.ImageUpload:
-
+ // case
// break;
//};
@@ -205,26 +183,15 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task AddReadModule(ReadModuleAddDto dto)
{
- var visits =await _subjectVisitRepository.Where(x => x.SubjectId == dto.SubjectId && x.InPlan).Select(x => new
- {
- x.Id,
- x.LatestScanDate,
- x.VisitNum,
- x.IsUrgent,
-
- }).ToListAsync();
+ var visitquery = _subjectVisitRepository.Where(x => x.SubjectId == dto.SubjectId && x.InPlan);
- if (dto.ExpirationDate != null)
- {
- visits = visits.Where(x => x.LatestScanDate <= dto.ExpirationDate.Value).ToList();
- }
+ visitquery = visitquery.WhereIf(dto.ExpirationDate != null,x => x.LatestScanDate <= dto.ExpirationDate.Value);
- if (dto.ExpirationVisitNum != null)
- {
- visits = visits.Where(x => x.VisitNum <= dto.ExpirationVisitNum).ToList();
- }
+ visitquery = visitquery.WhereIf(dto.ExpirationVisitNum != null, x => x.VisitNum <= dto.ExpirationVisitNum.Value);
- var visit = visits.OrderByDescending(x => x.VisitNum).FirstOrDefault();
+
+
+ var visit = visitquery.OrderByDescending(x => x.VisitNum).FirstOrDefault();
if (visit != null)
{
@@ -236,7 +203,8 @@ namespace IRaCIS.Application.Services
IsUrgent = visit.IsUrgent,
ModuleName = dto.Name,
SubjectVisitId = visit.Id,
- Status = ReadModuleEnum.ImageRead,
+ ReadingSetType= ReadingSetType.ImageReading,
+ Status = ReadingCommon.GetVisitSubmitStateEnum(visit),
});
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs
index 1ace23010..eff7e4667 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs
@@ -8,6 +8,8 @@ using Microsoft.AspNetCore.Authorization;
using IRaCIS.Core.Application.Auth;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share.Reading;
+using MassTransit;
+using IRaCIS.Core.Infra.EFCore.Common;
namespace IRaCIS.Application.Services
{
@@ -20,15 +22,18 @@ namespace IRaCIS.Application.Services
public IRepository _subjectVisitRepository;
private readonly IRepository _readingPeriodSetRepository;
+ private readonly IRepository _readModuleRepository;
private readonly IRepository _siteSetRepository;
public ReadingPeriodSetService(IRepository subjectVisitRepository,
IRepository ReadingPeriodSetRepository,
+ IRepository readModuleRepository,
IRepository SiteSetRepository
)
{
_subjectVisitRepository = subjectVisitRepository;
_readingPeriodSetRepository = ReadingPeriodSetRepository;
+ this._readModuleRepository = readModuleRepository;
_siteSetRepository = SiteSetRepository;
}
@@ -70,6 +75,81 @@ namespace IRaCIS.Application.Services
}
}
+ ///
+ /// 获取影像阅片的预览
+ ///
+ ///
+ public async Task> GetPreviewTheReadingList(PreviewTheReadingListInDto inDto)
+ {
+ var readset = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowConvertException();
+ var visitquery = _subjectVisitRepository.Where(x => x.TrialId == readset.TrialId && x.LatestScanDate != null && x.InPlan);
+ if (readset.ReadingScope == ReadingScopeEnum.Site)
+ {
+ var siteids = readset.ReadingPeriodSites.Select(x => x.Id);
+ visitquery = visitquery.Where(x => siteids.Contains(x.SiteId));
+ }
+
+ visitquery = visitquery.WhereIf(readset.ExpirationDate != null, x => x.LatestScanDate <= readset.ExpirationDate.Value);
+ visitquery = visitquery.WhereIf(readset.ExpirationVisitNum != null, x => x.VisitNum <= readset.ExpirationVisitNum);
+ var visits = (await visitquery.Include(x=>x.Subject).Include(x=>x.TrialSite).GroupBy(x => x.SubjectId).Select(x => new
+ {
+ SubjectId = x.Key,
+ visit = x.OrderByDescending(x => x.VisitNum).FirstOrDefault()
+ }).ToListAsync()).Select(x => x.visit).ToList();
+
+
+ return visits.Where(x => _readModuleRepository.Where(y => y.ReadingSetType == readset.ReadingSetType && x.Id == y.SubjectVisitId).Count() == 0)
+ .Select(x => new PreviewTheReadingListOutDto
+ {
+ ExpirationDate= readset.ExpirationDate,
+ SubjectVisitId=x.Id,
+ TrialSiteCode = x.TrialSite.TrialSiteCode,
+ LatestScanDate=x.LatestScanDate,
+ ReadingPeriodName= readset.ReadingPeriodName,
+ ReadingPeriodSetId=readset.Id,
+ SubjectCode=x.Subject.Code,
+ SubjectId=x.SubjectId,
+ Remark= readset.Remark
+ }).ToList();
+ }
+
+ ///
+ /// 添加对应的阅片
+ ///
+ ///
+ ///
+ public async Task ReadingToGenerate(ReadingToGenerateInDto inDto)
+ {
+ var readset = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowConvertException();
+ var visits = await _subjectVisitRepository.Where(x => inDto.SubjectVisitIds.Contains(x.Id)).ToListAsync();
+
+ List readModules = new List();
+
+ foreach (var item in visits)
+ {
+ readModules.Add(new ReadModule()
+ {
+
+ Id = NewId.NextGuid(),
+ SubjectId = item.SubjectId,
+ ModuleType = readset.ReadingSetType == ReadingSetType.ImageReading ? ModuleTypeEnum.Read : ModuleTypeEnum.Oncology,
+ IsUrgent = item.IsUrgent,
+ ModuleName = readset.ReadingPeriodName,
+ SubjectVisitId = item.Id,
+ ReadingSetType = readset.ReadingSetType,
+ Status = ReadingCommon.GetVisitSubmitStateEnum(item),
+ });
+ };
+
+ await _readModuleRepository.AddRangeAsync(readModules);
+
+
+ var res = await _subjectVisitRepository.SaveChangesAsync();
+
+
+ return ResponseOutput.Result(res);
+ }
+
///
/// 分页获取
///
diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
index 402261fb2..4127e59ab 100644
--- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
@@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap()
.ForMember(d => d.SiteIds, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.SiteId)))
- .ForMember(d => d.SiteCodes, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.Site.SiteCode)));
+ .ForMember(d => d.SiteCodes, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.TrialSite.TrialSiteCode)));
//.ForMember(d => d.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList()));
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index c9ecf712a..fd8b7b4bf 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -37,6 +37,18 @@ namespace IRaCIS.Core.Domain.Share.Reading
Oncology = 4,
}
+ public enum ReadingSetType
+ {
+ ///
+ /// 影像阅片
+ ///
+ ImageReading=0,
+
+ ///
+ /// 肿瘤阅片
+ ///
+ TumorReading=1,
+ }
///
/// 阅片期范围
diff --git a/IRaCIS.Core.Domain/Reading/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadModule.cs
index 481fcd130..8416fbf8c 100644
--- a/IRaCIS.Core.Domain/Reading/ReadModule.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadModule.cs
@@ -90,6 +90,11 @@ namespace IRaCIS.Core.Domain.Models
public SubjectVisit SubjectVisit { get; set; }
+ ///
+ /// 阅片配置的类型
+ ///
+ public ReadingSetType ReadingSetType { get; set; }
+
///
/// 访视
diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs
index f1f5733f6..25d89cf67 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingPeriodSet.cs
@@ -61,11 +61,15 @@ namespace IRaCIS.Core.Domain.Models
///
public Guid CreateUserId { get; set; }
-
///
- /// 备注
+ /// 阅片配置的类型
///
- public string Remark { get; set; } = string.Empty;
+ public ReadingSetType ReadingSetType { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; } = string.Empty;
public List ReadingPeriodSites { get; set; } = new List();
diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriodSite.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriodSite.cs
index 1a0aa598a..b7e79c18f 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingPeriodSite.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingPeriodSite.cs
@@ -49,6 +49,8 @@ namespace IRaCIS.Core.Domain.Models
+ public TrialSite TrialSite { get; set; }
+
public ReadingPeriodSet ReadingPeriodSet { get; set; }
diff --git a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs
index 915f997e2..e0754ce8e 100644
--- a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs
+++ b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs
@@ -55,5 +55,8 @@ namespace IRaCIS.Core.Domain.Models
public List StudyMonitorList { get; set; }
+
+
+ public List ReadingPeriodSites { get; set; }
}
}
\ No newline at end of file
diff --git a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
new file mode 100644
index 000000000..3cfc88715
--- /dev/null
+++ b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs
@@ -0,0 +1,41 @@
+using IRaCIS.Core.Domain.Models;
+using IRaCIS.Core.Domain.Share;
+using IRaCIS.Core.Domain.Share.Reading;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IRaCIS.Core.Infra.EFCore.Common
+{
+ public static class ReadingCommon
+ {
+ ///
+ /// 获取访视的状态
+ ///
+ ///
+ ///
+
+ public static ReadModuleEnum GetVisitSubmitStateEnum(SubjectVisit visit)
+ {
+ if (visit.SubmitState != SubmitStateEnum.Submitted) // 未提交
+ {
+ return ReadModuleEnum.ImageUpload;
+ }
+ else if (visit.AuditState != AuditStateEnum.QCPassed) // 审核未通过
+ {
+ return ReadModuleEnum.ImageUpload;
+ }
+ else if (visit.ForwardState != ForwardStateEnum.Forwarded) // 未通过一致性核查
+ {
+ return ReadModuleEnum.ConsistencyCheck;
+ }
+ else
+ {
+ // 暂时
+ return ReadModuleEnum.ReadComplete;
+ }
+ }
+ }
+}
diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs
new file mode 100644
index 000000000..14fe438fe
--- /dev/null
+++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs
@@ -0,0 +1,22 @@
+using IRaCIS.Core.Domain.Models;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+
+namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
+{
+ public class ReadingPeriodSiteConfigration : IEntityTypeConfiguration
+ {
+
+
+ public void Configure(EntityTypeBuilder builder)
+ {
+
+ builder
+ .HasOne(s => s.TrialSite)
+ .WithMany(c => c.ReadingPeriodSites)
+ .HasForeignKey(s => new { s.TrialId, s.SiteId })
+ .HasPrincipalKey(c => new { c.TrialId, c.SiteId });
+ }
+ }
+}