From 0b3fe111b7cbbbc82ae88d23d7aeecd152b46cb7 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 25 Dec 2024 12:27:48 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=AD=E5=BF=83=E4=BA=BA?=
=?UTF-8?q?=E5=91=98=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 18 +-
.../Recurring/OldRecurringEmailHelper.cs | 6 +-
.../Recurring/QCRecurringEmailConsumer.cs | 12 +-
.../Service/Common/ExcelExportService.cs | 6 +-
.../Service/Document/EmailSendService.cs | 6 +-
.../Service/Institution/SiteService.cs | 4 +-
.../Service/Management/DTO/UserModel.cs | 2 +-
.../SiteSurvey/TrialSiteSurveyService.cs | 20 +-
.../Service/SiteSurvey/_MapConfig.cs | 2 +-
.../TrialSiteUser/DTO/UserTrialViewModel.cs | 3 +
.../TrialSiteUser/TrialMaintenanceService.cs | 23 +-
.../Service/TrialSiteUser/TrialService.cs | 2 +-
.../Service/TrialSiteUser/TrialSiteService.cs | 53 +-
.../Service/TrialSiteUser/_MapConfig.cs | 6 +-
.../Service/TrialSiteUser/_MapConfig2.cs | 1 -
IRaCIS.Core.Domain/Trial/Trial.cs | 2 +-
IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs | 2 +-
.../TrialSiteUser/TrialSiteUser.cs | 4 +-
.../Common/AuditingData.cs | 22 +-
.../Context/IRaCISDBContext.cs | 2 +-
...042651_TrialSiteUserRoleModify.Designer.cs | 18497 ++++++++++++++++
.../20241225042651_TrialSiteUserRoleModify.cs | 61 +
.../IRaCISDBContextModelSnapshot.cs | 32 +-
23 files changed, 18688 insertions(+), 98 deletions(-)
create mode 100644 IRaCIS.Core.Infra.EFCore/Migrations/20241225042651_TrialSiteUserRoleModify.Designer.cs
create mode 100644 IRaCIS.Core.Infra.EFCore/Migrations/20241225042651_TrialSiteUserRoleModify.cs
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 07c9d9684..db2ee53fe 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -690,7 +690,7 @@
-
+
Site用户列表导出
@@ -698,7 +698,7 @@
-
+
@@ -13474,7 +13474,7 @@
QC 影像质疑
-
+
QC 影像质疑
@@ -13484,7 +13484,7 @@
CRC 影像质疑
-
+
CRC 影像质疑
@@ -13494,7 +13494,7 @@
影像质控 发送给QC的
-
+
影像质控 发送给QC的
@@ -15425,7 +15425,7 @@
TrialSiteSurveyService
-
+
TrialSiteSurveyService
@@ -16202,15 +16202,15 @@
指定资源Id,渲染Dicom序列的Jpeg预览图像
Dicom序列的Id
+
+ 获取某一Site下面的负责的CRC列表
+
Pannel 进去 SiteTab
[new] setting页面Site列表,和getSiteCRCList对比 没有统计数据,增加了一些site信息
-
- 获取某一Site下面的负责的CRC列表
-
[new] Setting页面 Site勾选列表(
diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/OldRecurringEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Recurring/OldRecurringEmailHelper.cs
index 2b5f7d8cf..37790520a 100644
--- a/IRaCIS.Core.Application/MassTransit/Recurring/OldRecurringEmailHelper.cs
+++ b/IRaCIS.Core.Application/MassTransit/Recurring/OldRecurringEmailHelper.cs
@@ -24,7 +24,7 @@ public static class OldRecurringEmailHelper
IRepository _trialRepository,
IRepository _trialUserRepository,
IRepository _visitTaskRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
Guid trialId, EmailBusinessScenario businessScenario,
Func topicAndHtmlFunc,
@@ -72,7 +72,7 @@ public static class OldRecurringEmailHelper
}
if (trialSiteId != null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA))
{
- var curentSiteUserIdList = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
+ var curentSiteUserIdList = _trialSiteUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
toUserList = toUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList();
}
@@ -86,7 +86,7 @@ public static class OldRecurringEmailHelper
if (trialSiteId != null && copyUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA))
{
- var curentSiteUserIdList = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
+ var curentSiteUserIdList = _trialSiteUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
copyUserList = copyUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList();
}
diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs
index 8169c93dd..06bea6a25 100644
--- a/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Recurring/QCRecurringEmailConsumer.cs
@@ -25,7 +25,7 @@ public class QCImageQuestionRecurringEventConsumer(IRepository _trialRepo
IRepository _trialEmailNoticeConfigRepository,
IRepository _trialUserRepository,
IRepository _visitTaskRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IOptionsMonitor _SystemEmailSendConfig) : IConsumer
{
public async Task Consume(ConsumeContext context)
@@ -75,7 +75,7 @@ public class QCImageQuestionRecurringEventConsumer(IRepository _trialRepo
_trialRepository,
_trialUserRepository,
_visitTaskRepository,
- _trialSiteUserRepository,
+ _trialSiteUserRoleRepository,
trialId, EmailBusinessScenario.QCToCRCImageQuestion, topicAndHtmlFunc);
}
}
@@ -90,7 +90,7 @@ public class CRCImageQuestionRecurringEventConsumer(IRepository _trialRep
IRepository _trialEmailNoticeConfigRepository,
IRepository _trialUserRepository,
IRepository _visitTaskRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IOptionsMonitor _SystemEmailSendConfig) : IConsumer
{
public async Task Consume(ConsumeContext context)
@@ -143,7 +143,7 @@ public class CRCImageQuestionRecurringEventConsumer(IRepository _trialRep
_trialRepository,
_trialUserRepository,
_visitTaskRepository,
- _trialSiteUserRepository,
+ _trialSiteUserRoleRepository,
trialId, EmailBusinessScenario.CRCToQCQuestion, topicAndHtmlFunc);
}
}
@@ -157,7 +157,7 @@ public class ImageQCRecurringEventConsumer(IRepository _trialRepository,
IRepository _trialEmailNoticeConfigRepository,
IRepository _trialUserRepository,
IRepository _visitTaskRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IOptionsMonitor _SystemEmailSendConfig) : IConsumer
{
public async Task Consume(ConsumeContext context)
@@ -211,7 +211,7 @@ public class ImageQCRecurringEventConsumer(IRepository _trialRepository,
_trialRepository,
_trialUserRepository,
_visitTaskRepository,
- _trialSiteUserRepository,
+ _trialSiteUserRoleRepository,
trialId, EmailBusinessScenario.QCTask, topicAndHtmlFunc);
}
}
diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
index 99fd14535..7df6d8e99 100644
--- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
+++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
@@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.Service.Common
///
///
///
- ///
+ ///
///
///
[HttpPost]
@@ -107,14 +107,14 @@ namespace IRaCIS.Core.Application.Service.Common
[FromServices] IRepository _commonDocumentRepository,
[FromServices] IDictionaryService _dictionaryService,
[FromServices] IRepository _trialRepository,
- [FromServices] IRepository _trialSiteUserRepository
+ [FromServices] IRepository _trialSiteUserRoleRepository
)
{
var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
- var list = await _trialSiteUserRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
+ var list = await _trialSiteUserRoleRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
.WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted)
.WhereIf(!string.IsNullOrWhiteSpace(param.SiteName), t => t.TrialSite.TrialSiteName.Contains(param.SiteName) || t.TrialSite.TrialSiteAliasName.Contains(param.SiteName))
.WhereIf(!string.IsNullOrWhiteSpace(param.TrialSiteAliasName),
diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
index 69ac22d20..9c1ace4df 100644
--- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
+++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
@@ -17,7 +17,7 @@ namespace IRaCIS.Core.Application.Service
IRepository _trialRepository,
IRepository _trialUserRepository,
IRepository _visitTaskRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IOptionsMonitor _SystemEmailSendConfig, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IEmailSendService
{
@@ -157,7 +157,7 @@ namespace IRaCIS.Core.Application.Service
}
if (trialSiteId != null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA))
{
- var curentSiteUserIdList = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
+ var curentSiteUserIdList = _trialSiteUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
toUserList = toUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList();
}
@@ -171,7 +171,7 @@ namespace IRaCIS.Core.Application.Service
if (trialSiteId != null && copyUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA))
{
- var curentSiteUserIdList = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
+ var curentSiteUserIdList = _trialSiteUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList();
copyUserList = copyUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList();
}
diff --git a/IRaCIS.Core.Application/Service/Institution/SiteService.cs b/IRaCIS.Core.Application/Service/Institution/SiteService.cs
index 4a12a4c3e..6ed3ef3d8 100644
--- a/IRaCIS.Core.Application/Service/Institution/SiteService.cs
+++ b/IRaCIS.Core.Application/Service/Institution/SiteService.cs
@@ -9,7 +9,7 @@ namespace IRaCIS.Core.Application.Service
{
[ApiExplorerSettings(GroupName = "Institution")]
public class SiteService(IRepository _siteRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IDistributedLockProvider _distributedLockProvider,
IRepository _trialSiteRepository,
IRepository _hospitalRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ISiteService
@@ -114,7 +114,7 @@ namespace IRaCIS.Core.Application.Service
public async Task DeleteSite(Guid siteId)
{
- if (await _trialSiteUserRepository.AnyAsync(t => t.TrialSite.SiteId == siteId))
+ if (await _trialSiteUserRoleRepository.AnyAsync(t => t.TrialSite.SiteId == siteId))
{
//---该中心已经加入项目,不可以被删除。
return ResponseOutput.NotOk(_localizer["Site_InProject"]);
diff --git a/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs b/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs
index 40499fbbb..4bd6c214b 100644
--- a/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs
+++ b/IRaCIS.Core.Application/Service/Management/DTO/UserModel.cs
@@ -47,7 +47,7 @@ namespace IRaCIS.Application.Contracts
public Guid UserTypeId { get; set; }
- public UserTypeEnum UserType { get; set; }
+ public UserTypeEnum UserTypeEnum { get; set; }
public string UserTypeShortName { get; set; }
diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
index 25ca620e3..1ea0d70e9 100644
--- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
+++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
@@ -37,7 +37,7 @@ namespace IRaCIS.Core.Application.Contracts
IRepository _doctorRepository,
IRepository _verificationCodeRepository,
IRepository _trialUserRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IDistributedLockProvider _distributedLockProvider,
ITokenService _tokenService,
IRepository _userTypeRepository,
@@ -311,7 +311,7 @@ namespace IRaCIS.Core.Application.Contracts
TrialSiteSurvey? currentEntity = null;
- var userList = await _trialSiteUserRepository.Where(t => t.TrialId == userInfo.TrialId && t.TrialSiteId == userInfo.TrialSiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
+ var userList = await _trialSiteUserRoleRepository.Where(t => t.TrialId == userInfo.TrialId && t.TrialSiteId == userInfo.TrialSiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
//普通登录
@@ -489,7 +489,7 @@ namespace IRaCIS.Core.Application.Contracts
if (find.State != TrialSiteSurveyEnum.PMCreatedAndLock && find.IsDeleted != true)
{
- var userList = await _trialSiteUserRepository.Where(t => t.TrialId == find.TrialId && t.TrialSiteId == find.TrialSiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
+ var userList = await _trialSiteUserRoleRepository.Where(t => t.TrialId == find.TrialId && t.TrialSiteId == find.TrialSiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
await UnlockSyncSiteUserAsync(find.TrialId, find.TrialSiteId, find.Id, userList);
@@ -970,11 +970,11 @@ namespace IRaCIS.Core.Application.Contracts
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
}
- var findTrialSiteUser = await _trialSiteUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true);
+ var findTrialSiteUser = await _trialSiteUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true);
if (findTrialSiteUser == null)
{
- await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
+ await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
}
else
@@ -1005,14 +1005,14 @@ namespace IRaCIS.Core.Application.Contracts
var userIdList = list.Select(t => t.SystemUserId).ToList();
- await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.TrialSiteId == siteId && userIdList.Contains(t.UserId), c => new TrialSiteUser()
+ await _trialSiteUserRoleRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.TrialSiteId == siteId && userIdList.Contains(t.UserId), c => new TrialSiteUserRole()
{
IsDeleted = true,
DeletedTime = DateTime.Now,
});
- await _trialSiteUserRepository.SaveChangesAsync();
+ await _trialSiteUserRoleRepository.SaveChangesAsync();
}
@@ -1091,11 +1091,11 @@ namespace IRaCIS.Core.Application.Contracts
}
- var findTrialSiteUser = await _trialSiteUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true);
+ var findTrialSiteUser = await _trialSiteUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true);
if (findTrialSiteUser == null)
{
- await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
+ await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
}
else
@@ -1106,7 +1106,7 @@ namespace IRaCIS.Core.Application.Contracts
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
- await _trialSiteUserRepository.SaveChangesAsync();
+ await _trialSiteUserRoleRepository.SaveChangesAsync();
}
diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/_MapConfig.cs b/IRaCIS.Core.Application/Service/SiteSurvey/_MapConfig.cs
index 2c56f3450..eb9dcbf1f 100644
--- a/IRaCIS.Core.Application/Service/SiteSurvey/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/SiteSurvey/_MapConfig.cs
@@ -20,7 +20,7 @@ namespace IRaCIS.Core.Application.AutoMapper
CreateMap().ForMember(d => d.Email, t => t.MapFrom(t => t.EmailOrPhone));
- CreateMap()
+ CreateMap()
.ForMember(d => d.Id, u => u.Ignore())
.ForMember(d => d.Phone, u => u.MapFrom(c => c.UserRole.Phone))
.ForMember(d => d.Email, u => u.MapFrom(c => c.UserRole.EMail))
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
index 7990e4ce0..64276c9fc 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
@@ -11,7 +11,10 @@ namespace IRaCIS.Application.Contracts
{
+ public class TrialSiteCRCListDTO
+ {
+ }
public class UserTrialDTO : UserTrialCommand
{
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
index 4ef40427f..7f1053f77 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
@@ -10,7 +10,7 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialMaintenanceService(IRepository _trialUseRoleRepository, IRepository _trialIdentityUserRepository,
IRepository _userRoleRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IRepository _subjectVisitRepository,
IRepository _trialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialMaintenanceService
{
@@ -56,7 +56,7 @@ namespace IRaCIS.Core.Application.Service
if (updateTrialUserCommand.IsDeleted)
{
- if (await _trialSiteUserRepository.AnyAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.TrialId == trialUser.TrialId))
+ if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.TrialId == trialUser.TrialId))
{
// ----人员已加入现场维护
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
@@ -145,17 +145,20 @@ namespace IRaCIS.Core.Application.Service
{
var currentUserRoleList = item.ToList();
- var addArray = _mapper.Map(currentUserRoleList);
+ var first = currentUserRoleList.FirstOrDefault();
- var trialUsers = await _trialIdentityUserRepository.AddRangeAsync(addArray);
-
- foreach (var trialUser in trialUsers)
+ var currentUser = new TrialIdentityUser()
{
- trialUser.JoinTime = DateTime.Now;
- }
+ TrialId = first.TrialId,
+ IdentityUserId = item.Key,
+ JoinTime = DateTime.Now,
+ TrialUserRoleList = currentUserRoleList.Select(t => new TrialUserRole() { UserId = t.UserId, TrialId = t.TrialId }).ToList()
+ };
- var success = await _trialUseRoleRepository.SaveChangesAsync();
+ await _trialIdentityUserRepository.AddAsync(currentUser);
+
+ var success = await _trialIdentityUserRepository.SaveChangesAsync();
}
@@ -207,7 +210,7 @@ namespace IRaCIS.Core.Application.Service
if (trialUser == null) return Null404NotFound(trialUser);
- if (await _trialSiteUserRepository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
+ if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
{
//---人员已加入现场维护
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs
index 51deb3c84..3e0bd8fd5 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs
@@ -551,7 +551,7 @@ namespace IRaCIS.Core.Application.Service
await _repository.BatchDeleteNoTrackingAsync(t => t.TrialSiteSurvey.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
- await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
+ await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync(t => t.TrialId == trialId);
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs
index e34b7cf42..d5b320fd0 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs
@@ -10,15 +10,30 @@ namespace IRaCIS.Core.Application.Services
{
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialMaintenanceService(IRepository _trialSiteRepository,
- IRepository _trialSiteUserRepository,
+ IRepository _trialSiteUserRoleRepository,
IRepository _siteRepository,
IRepository _subjectRepository,
IRepository _visitTaskRepository,
IRepository _trialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialSiteService
{
+ #region 账户修改已维护
+ /// 获取某一Site下面的负责的CRC列表
+ [HttpGet, Route("{trialId:guid}/{siteId:guid}")]
+ public async Task> GetTrialSiteCRCList(Guid trialId, Guid siteId)
+ {
+ var query = _trialSiteUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == siteId).IgnoreQueryFilters()
+ .ProjectTo(_mapper.ConfigurationProvider);
+
+ return await query.ToListAsync();
+ }
+
+
+
+ #endregion
+
/// Pannel 进去 SiteTab
[HttpPost]
@@ -65,16 +80,6 @@ namespace IRaCIS.Core.Application.Services
}
- /// 获取某一Site下面的负责的CRC列表
- [HttpGet, Route("{trialId:guid}/{siteId:guid}")]
- public async Task> GetTrialSiteCRCList(Guid trialId, Guid siteId)
- {
- var query = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == siteId).IgnoreQueryFilters()
- .ProjectTo(_mapper.ConfigurationProvider);
-
- return await query.ToListAsync();
- }
-
/// [new] Setting页面 Site勾选列表(
[HttpPost]
@@ -111,7 +116,7 @@ namespace IRaCIS.Core.Application.Services
[HttpPost]
[UnitOfWork]
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
- [TrialGlobalLimit( "AfterStopCannNotOpt" )]
+ [TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task AddTrialSites(List trialSites)
{
var addArray = _mapper.Map>(trialSites);
@@ -152,7 +157,7 @@ namespace IRaCIS.Core.Application.Services
if (editTrialSiteCommand.IsDeleted)
{
- if (await _trialSiteUserRepository.AnyAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId))
+ if (await _trialSiteUserRoleRepository.AnyAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId))
{
//---The site has been associated with CRC, and couldn't be deleted.
return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteAssociatedCRC"]);
@@ -205,36 +210,36 @@ namespace IRaCIS.Core.Application.Services
/// 批量添加Site下 CRC的负责人
[HttpPost]
- [TrialGlobalLimit( "AfterStopCannNotOpt" )]
+ [TrialGlobalLimit("AfterStopCannNotOpt")]
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
public async Task AssignSiteCRC(List trialSiteCRCList)
{
- var addArray = _mapper.Map>(trialSiteCRCList);
+ var addArray = _mapper.Map>(trialSiteCRCList);
- await _trialSiteUserRepository.AddRangeAsync(addArray);
+ await _trialSiteUserRoleRepository.AddRangeAsync(addArray);
- await _trialSiteUserRepository.SaveChangesAsync();
+ await _trialSiteUserRoleRepository.SaveChangesAsync();
return ResponseOutput.Result(true);
}
/// 删除CRC人员
[HttpDelete, Route("{id:guid}/{trialId:guid}/{isDelete:bool}")]
- [TrialGlobalLimit( "AfterStopCannNotOpt" )]
+ [TrialGlobalLimit("AfterStopCannNotOpt")]
//[Authorize(Policy = IRaCISPolicy.PM_APM)]
public async Task DeleteSiteCRC(Guid id, bool isDelete)
{
- await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.Id == id, u => new TrialSiteUser() { IsDeleted = isDelete, DeletedTime = isDelete ? DateTime.Now : null }, true, true);
+ await _trialSiteUserRoleRepository.UpdatePartialFromQueryAsync(t => t.Id == id, u => new TrialSiteUserRole() { IsDeleted = isDelete, DeletedTime = isDelete ? DateTime.Now : null }, true, true);
//删除又启用改授权时间
if (isDelete == false)
{
- await _trialSiteUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialSiteUser() { CreateTime = DateTime.Now });
+ await _trialSiteUserRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialSiteUserRole() { CreateTime = DateTime.Now });
}
////不跟踪
- //await _trialSiteUserRepository.ExecuteUpdateAsync(t => t.Id == id, s=>s.SetProperty(t=>t.IsDeleted,u=>isDelete)
+ //await _trialSiteUserRoleRepository.ExecuteUpdateAsync(t => t.Id == id, s=>s.SetProperty(t=>t.IsDeleted,u=>isDelete)
// .SetProperty(t=>t.DeletedTime,u=> isDelete ? DateTime.Now : null)
// .SetProperty(t=>t.CreateTime,u=>isDelete?u.CreateTime:DateTime.Now));
@@ -280,7 +285,7 @@ namespace IRaCIS.Core.Application.Services
/// 删除 项目 下某一site
[HttpDelete("{id:guid}/{trialId:guid}")]
- [TrialGlobalLimit( "AfterStopCannNotOpt" )]
+ [TrialGlobalLimit("AfterStopCannNotOpt")]
[Obsolete]
public async Task DeleteTrialSite(Guid id)
{
@@ -291,7 +296,7 @@ namespace IRaCIS.Core.Application.Services
var trialId = relation.TrialId;
var trialSiteId = relation.Id;
- if (await _trialSiteUserRepository.AnyAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId))
+ if (await _trialSiteUserRoleRepository.AnyAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId))
{
//---The site has been associated with CRC, and couldn't be deleted.
return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteAssociatedCRC"]);
@@ -305,7 +310,7 @@ namespace IRaCIS.Core.Application.Services
await _trialSiteRepository.DeleteAsync(relation);
- return ResponseOutput.Result(await _trialSiteUserRepository.SaveChangesAsync());
+ return ResponseOutput.Result(await _trialSiteUserRoleRepository.SaveChangesAsync());
}
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs
index 934957d47..4545dcfd2 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs
@@ -149,7 +149,7 @@ namespace IRaCIS.Core.Application.Service
- CreateMap().IncludeMembers(t => t.UserRole)
+ CreateMap().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserRole.UserTypeRole.UserTypeShortName))
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName));
CreateMap();
@@ -157,7 +157,7 @@ namespace IRaCIS.Core.Application.Service
- CreateMap();
+ CreateMap();
CreateMap().ForMember(t => t.TrialId, u => u.MapFrom(c => c.Id))
@@ -266,7 +266,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap()
.ForMember(t => t.TrialSiteUserList, u => u.Ignore());
- CreateMap().IncludeMembers(t => t.UserRole)
+ CreateMap().IncludeMembers(t => t.UserRole)
.ForMember(t => t.TrialSiteCode, u => u.MapFrom(c => c.TrialSite.TrialSiteCode))
.ForMember(t => t.TrialSiteAliasName, u => u.MapFrom(c => c.TrialSite.TrialSiteAliasName))
.ForMember(t => t.UserRealName, u => u.MapFrom(c => c.UserRole.FullName))
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig2.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig2.cs
index f65511ce3..24be0e2fc 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig2.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig2.cs
@@ -59,7 +59,6 @@ namespace IRaCIS.Core.Application.Service
CreateMap();
- CreateMap();
diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs
index ca2eda65e..1f182f811 100644
--- a/IRaCIS.Core.Domain/Trial/Trial.cs
+++ b/IRaCIS.Core.Domain/Trial/Trial.cs
@@ -50,7 +50,7 @@ public partial class Trial : BaseFullDeleteAuditEntity
[JsonIgnore]
public List TrialSiteList { get; set; } = new List();
[JsonIgnore]
- public List TrialSiteUserList { get; set; } = new List();
+ public List TrialSiteUserList { get; set; } = new List();
[JsonIgnore]
public List ReadModuleList { get; set; } = new List();
[JsonIgnore]
diff --git a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs
index 810d82070..f20b90246 100644
--- a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs
+++ b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs
@@ -21,7 +21,7 @@ public class TrialSite : BaseFullDeleteAuditEntity
public List TrialSiteSurveyList { get; set; }
[Comment("Site 由多个人负责")]
[JsonIgnore]
- public List CRCUserList { get; set; }
+ public List CRCUserList { get; set; }
[JsonIgnore]
public List SubjectList { get; set; }
diff --git a/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs b/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs
index cb2113b78..3349f5985 100644
--- a/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs
+++ b/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs
@@ -1,8 +1,8 @@
namespace IRaCIS.Core.Domain.Models;
-[Comment("项目 - 项目中心用户关系表")]
+[Comment("项目 - 项目中心用户角色关系表")]
[Table("TrialSiteUser")]
-public class TrialSiteUser : BaseFullDeleteAuditEntity
+public class TrialSiteUserRole : BaseFullDeleteAuditEntity
{
#region 导航属性
diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
index fa6ae3232..15d4c4cbe 100644
--- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
+++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs
@@ -63,7 +63,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{
typeof(TrialUserRole),
typeof(TrialSiteSurvey),
- typeof(TrialSiteUser),
+ typeof(TrialSiteUserRole),
typeof(VisitStage),
typeof(TrialSite)
};
@@ -1736,12 +1736,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common
// 项目中心人员
- foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialSiteUser)))
+ foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialSiteUserRole)))
{
var type = GetEntityAuditOpt(item);
- var entity = item.Entity as TrialSiteUser;
+ var entity = item.Entity as TrialSiteUserRole;
if (entity.TrialSite == null)
@@ -1749,7 +1749,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
entity.TrialSite = await _dbContext.TrialSite.Where(x => x.Id == entity.TrialSiteId).IgnoreQueryFilters().FirstOrDefaultAsync();
}
- await InsertInspection(item.Entity as TrialSiteUser, type, x => new InspectionConvertDTO
+ await InsertInspection(item.Entity as TrialSiteUserRole, type, x => new InspectionConvertDTO
{
IsDistinctionInterface = type == AuditOpt.Update ? true : false,
TrialId = x.TrialId,
@@ -1926,8 +1926,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection(item.Entity as TaskStudy, type, x => new InspectionConvertDTO()
{
ObjectRelationParentId = x.VisitTaskId,
- },new {
- ArmEnum= armEnum,
+ }, new
+ {
+ ArmEnum = armEnum,
});
}
@@ -1980,7 +1981,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
var extraIdentification = string.Empty;
Arm armEnum = Arm.SingleReadingArm;
- if (entity.VisitTaskId!=null)
+ if (entity.VisitTaskId != null)
{
extraIdentification = "/VisitTask";
armEnum = await _dbContext.VisitTask.Where(x => x.Id == entity.VisitTaskId).Select(x => x.ArmEnum).FirstOrDefaultAsync();
@@ -1991,7 +1992,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
await InsertInspection(item.Entity as NoneDicomStudyFile, type, x => new InspectionConvertDTO()
{
- TrialId= trialid,
+ TrialId = trialid,
ObjectRelationParentId = x.VisitTaskId,
ExtraIndentification = extraIdentification
}, new
@@ -3718,7 +3719,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common
///
public string GetInspectionRecordIdentification(T entityObj, string type, bool IsDistinctionInterface = true, bool isSelfDefine = false)
{
- var entityTypeName = entityObj.GetType().Name;
+ var entityType = _dbContext.Model.FindEntityType(entityObj.GetType());
+ var tableName = entityType.GetTableName();
+
+ var entityTypeName = tableName.IsNotNullOrEmpty() ? tableName : entityObj.GetType().Name;
//文档签署这块,不区分系统和项目的 需要处理为同一个标识
if (typeof(T) == typeof(TrialDocConfirmedUser) || typeof(T) == typeof(SystemDocConfirmedUser))
diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
index 2e3c5b8a3..28c116856 100644
--- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
+++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
@@ -451,7 +451,7 @@ public class IRaCISDBContext : DbContext
public virtual DbSet ProjectDictionary { get; set; }
- public virtual DbSet UserTrialSite { get; set; }
+ public virtual DbSet UserTrialSite { get; set; }
public virtual DbSet TrialSite { get; set; }
public virtual DbSet Site { get; set; }
diff --git a/IRaCIS.Core.Infra.EFCore/Migrations/20241225042651_TrialSiteUserRoleModify.Designer.cs b/IRaCIS.Core.Infra.EFCore/Migrations/20241225042651_TrialSiteUserRoleModify.Designer.cs
new file mode 100644
index 000000000..75dc08641
--- /dev/null
+++ b/IRaCIS.Core.Infra.EFCore/Migrations/20241225042651_TrialSiteUserRoleModify.Designer.cs
@@ -0,0 +1,18497 @@
+//
+using System;
+using IRaCIS.Core.Infra.EFCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace IRaCIS.Core.Infra.EFCore.Migrations
+{
+ [DbContext(typeof(IRaCISDBContext))]
+ [Migration("20241225042651_TrialSiteUserRoleModify")]
+ partial class TrialSiteUserRoleModify
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.Attachment", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Code")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("编码");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("DoctorId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("datetime2")
+ .HasComment("过期时间");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("IsOfficial")
+ .HasColumnType("bit")
+ .HasComment("是否正式简历");
+
+ b.Property("Language")
+ .HasColumnType("int")
+ .HasComment("1 中文 2为英文");
+
+ b.Property("Path")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("文件类型名");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("DoctorId");
+
+ b.ToTable("Attachment", t =>
+ {
+ t.HasComment("医生 - 简历|证书 文档表");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CROCode")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("CROName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("CRONameCN")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("IsTrialLevel")
+ .HasColumnType("bit")
+ .HasComment("是否是项目级别");
+
+ b.Property("TrialId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("UpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("UpdateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("CROCompany", t =>
+ {
+ t.HasComment("机构 - CRO");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.CheckChallengeDialog", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("IsCRCNeedReply")
+ .HasColumnType("bit")
+ .HasComment("CRC是否需要回复 前端使用");
+
+ b.Property("ParamInfo")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("核查的检查信息Json");
+
+ b.Property("SubjectVisitId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("TalkContent")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserTypeEnum")
+ .HasColumnType("int")
+ .HasComment("核查过程中的操作用户类型");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("SubjectVisitId");
+
+ b.ToTable("CheckChallengeDialog", t =>
+ {
+ t.HasComment("一致性核查 - 对话记录表");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalAnswerRowInfo", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ClinicalFormId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("表单Id");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("QuestionId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("问题Id");
+
+ b.Property("RowIndex")
+ .HasColumnType("int");
+
+ b.Property("SubjectId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("受试者Id");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("ClinicalAnswerRowInfo", t =>
+ {
+ t.HasComment("受试者 - 临床表单表格问题行记录");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalDataSystemSet", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ClinicalDataLevel")
+ .HasColumnType("int");
+
+ b.Property("ClinicalDataSetEnName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ClinicalDataSetEnum")
+ .HasColumnType("int")
+ .HasComment("枚举(字典里面取的)");
+
+ b.Property("ClinicalDataSetName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ClinicalUploadType")
+ .HasColumnType("int")
+ .HasComment("上传方式");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CriterionEnumListStr")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("IsApply")
+ .HasColumnType("bit")
+ .HasComment("是否应用");
+
+ b.Property("IsEnable")
+ .HasColumnType("bit");
+
+ b.Property("Path")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("UploadRole")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("ClinicalDataSystemSet", t =>
+ {
+ t.HasComment("系统 - 临床数据配置");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalDataTrialSet", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ClinicalDataLevel")
+ .HasColumnType("int")
+ .HasComment("临床级别");
+
+ b.Property("ClinicalDataSetEnName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ClinicalDataSetName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ClinicalUploadType")
+ .HasColumnType("int")
+ .HasComment("上传方式");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CriterionEnumListStr")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("IsApply")
+ .HasColumnType("bit")
+ .HasComment("是否应用");
+
+ b.Property("IsConfirm")
+ .HasColumnType("bit");
+
+ b.Property("Path")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("SystemClinicalDataSetId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("TrialId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("UploadRole")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("SystemClinicalDataSetId");
+
+ b.HasIndex("TrialId");
+
+ b.ToTable("ClinicalDataTrialSet", t =>
+ {
+ t.HasComment("项目 - 临床数据适应标准配置");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalForm", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CheckDate")
+ .HasColumnType("datetime2")
+ .HasComment("检查日期");
+
+ b.Property("ClinicalDataTrialSetId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("PicturePath")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)")
+ .HasComment("截图地址");
+
+ b.Property("ReadingId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("SubjectId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("受试者Id");
+
+ b.Property("TrialId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("VisitId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ClinicalDataTrialSetId");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("SubjectId");
+
+ b.ToTable("ClinicalForm", t =>
+ {
+ t.HasComment("受试者 - 临床表单");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalQuestionAnswer", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Answer")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("ClinicalDataTrialSetId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ClinicalFormId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("表单Id");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("QuestionId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("问题Id");
+
+ b.Property("SubjectId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("受试者Id");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ClinicalFormId");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("ClinicalQuestionAnswer", t =>
+ {
+ t.HasComment("受试者 - 临床表单问题答案");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.ClinicalTableAnswer", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Answer")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)")
+ .HasComment("答案");
+
+ b.Property("ClinicalFormId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("表单Id");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("QuestionId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("问题Id");
+
+ b.Property("RowId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("答案行的Id");
+
+ b.Property("SubjectId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("受试者Id");
+
+ b.Property("TableQuestionId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("RowId");
+
+ b.ToTable("ClinicalTableAnswer", t =>
+ {
+ t.HasComment("受试者 - 临床表单表格问题答案");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.CommonDocument", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BusinessScenarioEnum")
+ .HasColumnType("int")
+ .HasComment("业务场景");
+
+ b.Property("Code")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CriterionTypeEnum")
+ .HasColumnType("int")
+ .HasComment("系统标准枚举");
+
+ b.Property("DeleteUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("DeletedTime")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("FileTypeEnum")
+ .HasColumnType("int")
+ .HasComment("类型-上传|导出|邮件附件");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("NameCN")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("Path")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("UpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("UpdateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("CommonDocument", t =>
+ {
+ t.HasComment("数据上传 | 数据导出 | 邮件附件 文件记录表 (需要同步)");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.CriterionNidusSystem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CriterionId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("IsSystemCriterion")
+ .HasColumnType("bit");
+
+ b.Property("LesionType")
+ .HasColumnType("int")
+ .HasComment("病灶类型");
+
+ b.Property("OrganType")
+ .HasColumnType("int")
+ .HasComment("器官类型");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("CriterionId");
+
+ b.ToTable("CriterionNidusSystem", t =>
+ {
+ t.HasComment("系统标准 - 病灶器官表 (需要同步)");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.CriterionNidusTrial", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property