From 7a37c01b7f45f0ba94409fe3580d106a88cadb8a Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 22 Oct 2025 10:25:11 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BD=92=E6=A1=A3=E5=A2=9E=E5=8A=A0=E5=AD=97?=
=?UTF-8?q?=E6=AE=B5-=E4=B8=89=E4=B8=AA=E5=BD=B1=E5=83=8F=E5=B1=82?=
=?UTF-8?q?=E7=BA=A7=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRC.Core.SCP/Service/DicomArchiveService.cs | 24 +
.../IRaCIS.Core.Application.xml | 7 +
.../ImageAndDoc/DTO/UnionStudyViewDodel.cs | 80 +-
.../SiteSurvey/TrialSiteSurveyService.cs | 19 +-
.../TrialSiteUser/DTO/UserTrialViewModel.cs | 2 +-
.../Service/TrialSiteUser/_MapConfig.cs | 3 +-
IRaCIS.Core.Domain/Image/DicomInstance.cs | 35 +
IRaCIS.Core.Domain/Image/DicomSeries.cs | 8 +
IRaCIS.Core.Domain/Image/DicomStudy.cs | 19 +-
IRaCIS.Core.Domain/Image/SCPInstance.cs | 31 +
IRaCIS.Core.Domain/Image/SCPSeries.cs | 8 +
IRaCIS.Core.Domain/Image/SCPStudy.cs | 15 +
IRaCIS.Core.Domain/Image/TaskInstance.cs | 31 +
IRaCIS.Core.Domain/Image/TaskSeries.cs | 8 +
IRaCIS.Core.Domain/Image/TaskStudy.cs | 16 +
IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs | 2 +-
.../20251022022235_studyAddField.Designer.cs | 20730 ++++++++++++++++
.../20251022022235_studyAddField.cs | 771 +
.../IRaCISDBContextModelSnapshot.cs | 309 +
19 files changed, 22096 insertions(+), 22 deletions(-)
create mode 100644 IRaCIS.Core.Infra.EFCore/Migrations/20251022022235_studyAddField.Designer.cs
create mode 100644 IRaCIS.Core.Infra.EFCore/Migrations/20251022022235_studyAddField.cs
diff --git a/IRC.Core.SCP/Service/DicomArchiveService.cs b/IRC.Core.SCP/Service/DicomArchiveService.cs
index fcda120b0..6a28537d4 100644
--- a/IRC.Core.SCP/Service/DicomArchiveService.cs
+++ b/IRC.Core.SCP/Service/DicomArchiveService.cs
@@ -220,6 +220,12 @@ namespace IRaCIS.Core.SCP.Service
AcquisitionNumber = dataset.GetSingleValueOrDefault(DicomTag.AcquisitionNumber, string.Empty),
TriggerTime = dataset.GetSingleValueOrDefault(DicomTag.TriggerTime, string.Empty),
+ Manufacturer = dataset.GetSingleValueOrDefault(DicomTag.Manufacturer, string.Empty),
+ ManufacturerModelName = dataset.GetSingleValueOrDefault(DicomTag.ManufacturerModelName, string.Empty),
+ DeviceSerialNumber = dataset.GetSingleValueOrDefault(DicomTag.DeviceSerialNumber, string.Empty),
+ DeviceUID = dataset.GetSingleValueOrDefault(DicomTag.DeviceUID, string.Empty),
+ SoftwareVersions = dataset.GetSingleValueOrDefault(DicomTag.SoftwareVersions, string.Empty),
+ PatientWeight = dataset.GetSingleValueOrDefault(DicomTag.PatientWeight, string.Empty),
//IsDoubleReview = addtionalInfo.IsDoubleReview,
@@ -281,6 +287,9 @@ namespace IRaCIS.Core.SCP.Service
AcquisitionNumber = dataset.GetSingleValueOrDefault(DicomTag.AcquisitionNumber, string.Empty),
TriggerTime = dataset.GetSingleValueOrDefault(DicomTag.TriggerTime, string.Empty),
+ RadiopharmaceuticalInformationSequence = dataset.GetSingleValueOrDefault(DicomTag.RadiopharmaceuticalInformationSequence, string.Empty),
+ AcquisitionDate = dataset.GetSingleValueOrDefault(DicomTag.AcquisitionDate, string.Empty),
+
InstanceCount = 0
};
@@ -332,6 +341,21 @@ namespace IRaCIS.Core.SCP.Service
WindowCenter = dataset.GetSingleValueOrDefault(DicomTag.WindowCenter, string.Empty),
WindowWidth = dataset.GetSingleValueOrDefault(DicomTag.WindowWidth, string.Empty),
+ PhotometricInterpretation = dataset.GetSingleValueOrDefault(DicomTag.PhotometricInterpretation, string.Empty),
+ BitsAllocated = dataset.GetSingleValueOrDefault(DicomTag.BitsAllocated, 0),
+ PixelRepresentation = dataset.GetSingleValueOrDefault(DicomTag.PixelRepresentation, string.Empty),
+ RescaleIntercept = dataset.GetSingleValueOrDefault(DicomTag.RescaleIntercept, string.Empty),
+ RescaleSlope = dataset.GetSingleValueOrDefault(DicomTag.RescaleSlope, string.Empty),
+ ImagePositionPatient = dataset.GetSingleValueOrDefault(DicomTag.ImagePositionPatient, string.Empty),
+ ImageOrientationPatient = dataset.GetSingleValueOrDefault(DicomTag.ImageOrientationPatient, string.Empty),
+ SequenceOfUltrasoundRegions = dataset.GetSingleValueOrDefault(DicomTag.SequenceOfUltrasoundRegions, string.Empty),
+ FrameTime = dataset.GetSingleValueOrDefault(DicomTag.FrameTime, string.Empty),
+ CorrectedImage = dataset.GetSingleValueOrDefault(DicomTag.CorrectedImage, string.Empty),
+ Units = dataset.GetSingleValueOrDefault(DicomTag.Units, string.Empty),
+ DecayCorrection = dataset.GetSingleValueOrDefault(DicomTag.DecayCorrection, string.Empty),
+ EncapsulatedDocument = dataset.GetSingleValueOrDefault(DicomTag.EncapsulatedDocument, string.Empty),
+
+
Path = fileRelativePath,
FileSize= fileSize,
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 6e7754288..852d943ae 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -17060,6 +17060,13 @@
+
+
+ 获取该中心最新调表信息 如果没有任何调研表,会返回null
+
+
+
+
初始登陆界面 项目基本信息+下拉框数据
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
index 7babf13b4..9ac6c4c3f 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
@@ -324,13 +324,26 @@ namespace IRaCIS.Core.Application.Contracts
public string BodyPartExamined { get; set; } = string.Empty;
- public string DicomStudyDate { get; set; }
+ public string DicomStudyDate { get; set; } = string.Empty;
- public string DicomStudyTime { get; set; }
+ public string DicomStudyTime { get; set; } = string.Empty;
public List SeriesList { get; set; }
+ #region 模态支持增加字段
+ public string Manufacturer { get; set; } = string.Empty;
+
+ public string ManufacturerModelName { get; set; } = string.Empty;
+
+ public string DeviceSerialNumber { get; set; } = string.Empty;
+ public string DeviceUID { get; set; } = string.Empty;
+
+ public string SoftwareVersions { get; set; } = string.Empty;
+
+ public string PatientWeight { get; set; } = string.Empty;
+
+ #endregion
}
@@ -358,14 +371,22 @@ namespace IRaCIS.Core.Application.Contracts
public string ImageResizePath { get; set; } = string.Empty;
- public string DicomSeriesDate { get; set; }
+ public string DicomSeriesDate { get; set; } = string.Empty;
- public string DicomSeriesTime { get; set; }
+ public string DicomSeriesTime { get; set; } = string.Empty;
public List InstanceList { get; set; }
public Guid? VisitTaskId { get; set; }
+
+ #region 模态增加
+
+ public string RadiopharmaceuticalInformationSequence { get; set; } = string.Empty;
+
+ public string AcquisitionDate { get; set; } = string.Empty;
+
+ #endregion
}
@@ -398,15 +419,46 @@ namespace IRaCIS.Core.Application.Contracts
public long FileSize { get; set; }
- public string SOPClassUID { get; set; }
+ public string SOPClassUID { get; set; } = string.Empty;
- public string MediaStorageSOPClassUID { get; set; }
+ public string MediaStorageSOPClassUID { get; set; } = string.Empty;
- public string TransferSytaxUID { get; set; }
+ public string TransferSytaxUID { get; set; } = string.Empty;
- public string MediaStorageSOPInstanceUID { get; set; }
+ public string MediaStorageSOPInstanceUID { get; set; } = string.Empty;
- public bool IsEncapsulated => DicomTransferSyntax.Lookup(DicomUID.Parse(TransferSytaxUID)).IsEncapsulated;
+ public bool IsEncapsulated => !string.IsNullOrEmpty(TransferSytaxUID) ? DicomTransferSyntax.Lookup(DicomUID.Parse(TransferSytaxUID)).IsEncapsulated : false;
+
+ #region 模态支持增加字段
+
+ public string PhotometricInterpretation { get; set; } = string.Empty;
+
+ public int BitsAllocated { get; set; }
+
+ public string PixelRepresentation { get; set; } = string.Empty;
+
+ public string RescaleIntercept { get; set; } = string.Empty;
+
+ public string RescaleSlope { get; set; } = string.Empty;
+
+ public string ImagePositionPatient { get; set; } = string.Empty;
+ public string ImageOrientationPatient { get; set; } = string.Empty;
+
+ //可能大
+ public string SequenceOfUltrasoundRegions { get; set; } = string.Empty;
+
+ public string FrameTime { get; set; } = string.Empty;
+
+ public string CorrectedImage { get; set; } = string.Empty;
+
+ public string Units { get; set; } = string.Empty;
+ public string DecayCorrection { get; set; } = string.Empty;
+
+ public string EncapsulatedDocument { get; set; } = string.Empty;
+
+
+
+ #endregion
}
@@ -536,11 +588,11 @@ namespace IRaCIS.Core.Application.Contracts
public string TaskBlindName { get; set; }
-
+
public Guid VisitId { get; set; }
public List StudyList { get; set; }
- public List NoneDicomStudyList { get; set; }
+ public List NoneDicomStudyList { get; set; }
}
public class DownloadDicomStudyDto
@@ -551,14 +603,14 @@ namespace IRaCIS.Core.Application.Contracts
public string StudyInstanceUid { get; set; }
public string StudyDIRPath { get; set; }
- public List SeriesList { get; set; }
+ public List SeriesList { get; set; }
}
public class DownloadDicomSeriesDto
{
public string Modality { get; set; }
- public List InstanceList { get; set; }
+ public List InstanceList { get; set; }
}
public class DownloadDicomInstanceDto
@@ -735,7 +787,7 @@ namespace IRaCIS.Core.Application.Contracts
? $"{TotalReadingImageSize.Value / 1024d / 1024d:F3} MB"
: "0.000 MB";
- public string ImageTypeStr => $"{(IsHaveDicom ? "DICOM" : "")}{(IsHaveNoneDicom&&IsHaveDicom?" , ":"")}{(IsHaveNoneDicom ? "Non-DICOM" : "")}";
+ public string ImageTypeStr => $"{(IsHaveDicom ? "DICOM" : "")}{(IsHaveNoneDicom && IsHaveDicom ? " , " : "")}{(IsHaveNoneDicom ? "Non-DICOM" : "")}";
public bool IsHaveDicom { get; set; }
diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
index 81b3e9ca6..805de20d5 100644
--- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
+++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
@@ -302,6 +302,19 @@ namespace IRaCIS.Core.Application.Contracts
#region 中心调研修改
+ ///
+ /// 获取该中心最新调表信息 如果没有任何调研表,会返回null
+ ///
+ ///
+ ///
+ public async Task GetTrialSiteLatestSurvey(Guid trialSiteId)
+ {
+ return await _trialSiteSurveyRepository.Where(t => t.TrialSiteId == trialSiteId).OrderByDescending(t => t.CreateTime).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
+ }
+
+
+
+
///
/// 初始登陆界面 项目基本信息+下拉框数据
///
@@ -631,11 +644,11 @@ namespace IRaCIS.Core.Application.Contracts
copy.State = TrialSiteSurveyEnum.ToSubmit;
copy.IsDeleted = false;
- copy.Phone = string.Empty;
- copy.UserName = string.Empty;
+ //copy.Phone = string.Empty;
+ //copy.UserName = string.Empty;
copy.Email = userInfo.EmailOrPhone;
copy.Id = Guid.Empty;
- copy.CreateTime = DateAndTime.Now;
+ copy.CreateTime = DateTime.Now;
if (userInfo.ReplaceUserEmailOrPhone != userInfo.EmailOrPhone)
{
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
index 68fba3f4a..0acfd32e1 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
@@ -427,7 +427,7 @@ namespace IRaCIS.Application.Contracts
public class SiteStatDTO : SiteStatSimpleDTO
{
-
+ public bool IsHaveSiteSurveyRecord { get; set; }
//public int? VisitCount { get; set; }
//public int? SubjectCount { get; set; }
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs
index fd466f6ae..f26851d42 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs
@@ -128,7 +128,8 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.IsDeleted == false && t.SubmitState != SubmitStateEnum.None)))
.ForMember(d => d.SubjectCount, u => u.MapFrom(s => s.SubjectList.Count(t => t.IsDeleted == false)))
//.ForMember(d => d.UserCount, u => u.MapFrom(s => s.CRCUserList.Count()))
- .ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.UserRole.IdentityUser.FullName)));
+ .ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.UserRole.IdentityUser.FullName)))
+ .ForMember(t => t.IsHaveSiteSurveyRecord, u => u.MapFrom(t => t.TrialSiteSurveyList.Any()));
#endregion
diff --git a/IRaCIS.Core.Domain/Image/DicomInstance.cs b/IRaCIS.Core.Domain/Image/DicomInstance.cs
index 36ca7684b..ad2cdc3c1 100644
--- a/IRaCIS.Core.Domain/Image/DicomInstance.cs
+++ b/IRaCIS.Core.Domain/Image/DicomInstance.cs
@@ -92,5 +92,40 @@ public class DicomInstance : BaseFullDeleteAuditEntity, IEntitySeqId
public bool IsEncapsulated { get; set; }
+ #endregion
+
+ //public int Rows { get; set; }
+
+ //public int Columns { get; set; }
+
+ #region 模态支持增加字段
+
+ public string PhotometricInterpretation { get; set; }
+
+ public int BitsAllocated { get; set; }
+
+ public string PixelRepresentation { get; set; }
+
+ public string RescaleIntercept { get; set; }
+
+ public string RescaleSlope { get; set; }
+
+ public string ImagePositionPatient { get; set; }
+ public string ImageOrientationPatient { get; set; }
+
+ //可能大
+ public string SequenceOfUltrasoundRegions { get; set; }
+
+ public string FrameTime { get; set; }
+
+ public string CorrectedImage { get; set; }
+
+ public string Units { get; set; }
+ public string DecayCorrection { get; set; }
+
+ public string EncapsulatedDocument { get; set; }
+
+
+
#endregion
}
diff --git a/IRaCIS.Core.Domain/Image/DicomSeries.cs b/IRaCIS.Core.Domain/Image/DicomSeries.cs
index 613e9bdf1..207549c9d 100644
--- a/IRaCIS.Core.Domain/Image/DicomSeries.cs
+++ b/IRaCIS.Core.Domain/Image/DicomSeries.cs
@@ -80,5 +80,13 @@ public class DicomSeries : BaseFullDeleteAuditEntity, IEntitySeqId
public string DicomSeriesTime { get; set; }
#endregion
+
+ #region 模态增加
+
+ public string RadiopharmaceuticalInformationSequence { get; set; }
+
+ public string AcquisitionDate { get; set; }
+
+ #endregion
}
diff --git a/IRaCIS.Core.Domain/Image/DicomStudy.cs b/IRaCIS.Core.Domain/Image/DicomStudy.cs
index 07dd5c7cc..e625c6e1f 100644
--- a/IRaCIS.Core.Domain/Image/DicomStudy.cs
+++ b/IRaCIS.Core.Domain/Image/DicomStudy.cs
@@ -54,7 +54,7 @@ public class DicomStudy : BaseFullDeleteAuditEntity, IEntitySeqId
public int InstanceCount { get; set; }
-
+
public string InstitutionName { get; set; } = null!;
public bool IsDoubleReview { get; set; }
@@ -80,7 +80,7 @@ public class DicomStudy : BaseFullDeleteAuditEntity, IEntitySeqId
public int SeriesCount { get; set; }
-
+
public string StudyCode { get; set; } = null!;
[Comment("DicomTag.StudyID")]
@@ -114,4 +114,19 @@ public class DicomStudy : BaseFullDeleteAuditEntity, IEntitySeqId
public string StudyDIRPath { get; set; }
#endregion
+
+ #region 模态支持增加字段
+
+ public string Manufacturer { get; set; }
+
+ public string ManufacturerModelName { get; set; }
+
+ public string DeviceSerialNumber { get; set; }
+ public string DeviceUID { get; set; }
+
+ public string SoftwareVersions { get; set; }
+
+ public string PatientWeight { get; set; }
+
+ #endregion
}
diff --git a/IRaCIS.Core.Domain/Image/SCPInstance.cs b/IRaCIS.Core.Domain/Image/SCPInstance.cs
index 33b4e8888..6b57eab47 100644
--- a/IRaCIS.Core.Domain/Image/SCPInstance.cs
+++ b/IRaCIS.Core.Domain/Image/SCPInstance.cs
@@ -55,5 +55,36 @@ public class SCPInstance : BaseFullAuditEntity, IEntitySeqId
public bool IsEncapsulated { get; set; }
+ #endregion
+
+ #region 模态支持增加字段
+
+ public string PhotometricInterpretation { get; set; }
+
+ public int BitsAllocated { get; set; }
+
+ public string PixelRepresentation { get; set; }
+
+ public string RescaleIntercept { get; set; }
+
+ public string RescaleSlope { get; set; }
+
+ public string ImagePositionPatient { get; set; }
+ public string ImageOrientationPatient { get; set; }
+
+ //可能大
+ public string SequenceOfUltrasoundRegions { get; set; }
+
+ public string FrameTime { get; set; }
+
+ public string CorrectedImage { get; set; }
+
+ public string Units { get; set; }
+ public string DecayCorrection { get; set; }
+
+ public string EncapsulatedDocument { get; set; }
+
+
+
#endregion
}
diff --git a/IRaCIS.Core.Domain/Image/SCPSeries.cs b/IRaCIS.Core.Domain/Image/SCPSeries.cs
index 5c217c4c4..40f9f742e 100644
--- a/IRaCIS.Core.Domain/Image/SCPSeries.cs
+++ b/IRaCIS.Core.Domain/Image/SCPSeries.cs
@@ -46,4 +46,12 @@ public class SCPSeries : BaseFullDeleteAuditEntity, IEntitySeqId
public string DicomSeriesTime { get; set; }
#endregion
+ #region 模态增加
+
+ public string RadiopharmaceuticalInformationSequence { get; set; }
+
+ public string AcquisitionDate { get; set; } = null!;
+
+ #endregion
+
}
diff --git a/IRaCIS.Core.Domain/Image/SCPStudy.cs b/IRaCIS.Core.Domain/Image/SCPStudy.cs
index b458d7182..e1bd92c25 100644
--- a/IRaCIS.Core.Domain/Image/SCPStudy.cs
+++ b/IRaCIS.Core.Domain/Image/SCPStudy.cs
@@ -78,4 +78,19 @@ public class SCPStudy : BaseFullDeleteAuditEntity, IEntitySeqId
public string StudyDIRPath { get; set; }
#endregion
+
+ #region 模态支持增加字段
+
+ public string Manufacturer { get; set; }
+
+ public string ManufacturerModelName { get; set; }
+
+ public string DeviceSerialNumber { get; set; }
+ public string DeviceUID { get; set; }
+
+ public string SoftwareVersions { get; set; }
+
+ public string PatientWeight { get; set; }
+
+ #endregion
}
diff --git a/IRaCIS.Core.Domain/Image/TaskInstance.cs b/IRaCIS.Core.Domain/Image/TaskInstance.cs
index 30ea8c974..484d1b1a8 100644
--- a/IRaCIS.Core.Domain/Image/TaskInstance.cs
+++ b/IRaCIS.Core.Domain/Image/TaskInstance.cs
@@ -59,6 +59,37 @@ public class TaskInstance : BaseFullAuditEntity, IEntitySeqId
public bool IsEncapsulated { get; set; }
+ #endregion
+
+ #region 模态支持增加字段
+
+ public string PhotometricInterpretation { get; set; }
+
+ public int BitsAllocated { get; set; }
+
+ public string PixelRepresentation { get; set; }
+
+ public string RescaleIntercept { get; set; }
+
+ public string RescaleSlope { get; set; }
+
+ public string ImagePositionPatient { get; set; }
+ public string ImageOrientationPatient { get; set; }
+
+ //可能大
+ public string SequenceOfUltrasoundRegions { get; set; }
+
+ public string FrameTime { get; set; }
+
+ public string CorrectedImage { get; set; }
+
+ public string Units { get; set; }
+ public string DecayCorrection { get; set; }
+
+ public string EncapsulatedDocument { get; set; }
+
+
+
#endregion
}
diff --git a/IRaCIS.Core.Domain/Image/TaskSeries.cs b/IRaCIS.Core.Domain/Image/TaskSeries.cs
index e9bba7bb5..4d94ce344 100644
--- a/IRaCIS.Core.Domain/Image/TaskSeries.cs
+++ b/IRaCIS.Core.Domain/Image/TaskSeries.cs
@@ -49,4 +49,12 @@ public class TaskSeries : BaseFullDeleteAuditEntity, IEntitySeqId
public string DicomSeriesTime { get; set; }
#endregion
+ #region 模态增加
+
+ public string RadiopharmaceuticalInformationSequence { get; set; }
+
+ public string AcquisitionDate { get; set; } = null!;
+
+ #endregion
+
}
diff --git a/IRaCIS.Core.Domain/Image/TaskStudy.cs b/IRaCIS.Core.Domain/Image/TaskStudy.cs
index 2ec72d69a..a0dd637ee 100644
--- a/IRaCIS.Core.Domain/Image/TaskStudy.cs
+++ b/IRaCIS.Core.Domain/Image/TaskStudy.cs
@@ -58,6 +58,7 @@ public class TaskStudy : BaseFullDeleteAuditEntity, IEntitySeqId
public string BodyPartForEditOther { get; set; }
+
#region DIR 增加字段
public string DicomStudyDate { get; set; }
@@ -67,4 +68,19 @@ public class TaskStudy : BaseFullDeleteAuditEntity, IEntitySeqId
public string StudyDIRPath { get; set; }
#endregion
+
+ #region 模态支持增加字段
+
+ public string Manufacturer { get; set; }
+
+ public string ManufacturerModelName { get; set; }
+
+ public string DeviceSerialNumber { get; set; }
+ public string DeviceUID { get; set; }
+
+ public string SoftwareVersions { get; set; }
+
+ public string PatientWeight { get; set; }
+
+ #endregion
}
diff --git a/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs b/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs
index c8fc9b76c..ddb8f3052 100644
--- a/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs
+++ b/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs
@@ -21,7 +21,7 @@ public class InspectionFile : BaseAddAuditEntity
public EDCCheckState? CheckState { get; set; }
public string ResultPath { get; set; }
-
+
#endregion
}
diff --git a/IRaCIS.Core.Infra.EFCore/Migrations/20251022022235_studyAddField.Designer.cs b/IRaCIS.Core.Infra.EFCore/Migrations/20251022022235_studyAddField.Designer.cs
new file mode 100644
index 000000000..598a1c53f
--- /dev/null
+++ b/IRaCIS.Core.Infra.EFCore/Migrations/20251022022235_studyAddField.Designer.cs
@@ -0,0 +1,20730 @@
+//
+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("20251022022235_studyAddField")]
+ partial class studyAddField
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.19")
+ .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("IsAuthorizedView")
+ .HasColumnType("bit");
+
+ 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("TrialId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("文件类型名");
+
+ b.Property("UpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("UpdateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("DoctorId");
+
+ b.ToTable("Attachment", t =>
+ {
+ t.HasComment("医生 - 简历|证书 文档表");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocument", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AuditDocumentTypeEnum")
+ .HasColumnType("int");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("FileFormat")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("FilePath")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("FileSize")
+ .HasPrecision(18, 2)
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("IsAuthorization")
+ .HasColumnType("bit");
+
+ b.Property("MainFileId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ParentId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("UpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("UpdateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("MainFileId");
+
+ b.ToTable("AuditDocument", t =>
+ {
+ t.HasComment("稽查文档管理");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocumentClosure", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AncestorId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("祖先");
+
+ b.Property("Depth")
+ .HasColumnType("int");
+
+ b.Property("DescendantId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("后代");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AncestorId");
+
+ b.HasIndex("DescendantId");
+
+ b.ToTable("AuditDocumentClosure");
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AuditContent")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("AuditState")
+ .HasColumnType("int")
+ .HasComment("稽查状态");
+
+ b.Property("AuditTime")
+ .HasColumnType("date")
+ .HasComment("稽查日期");
+
+ b.Property("AuditType")
+ .HasColumnType("int")
+ .HasComment("稽查形式");
+
+ b.Property("BeginTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CompanyName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime2");
+
+ b.Property("IsViewTrainingRecord")
+ .HasColumnType("bit");
+
+ b.Property("UpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("UpdateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("AuditRecord");
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecordIdentityUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AuditRecordId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("IdentityUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuditRecordId");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("IdentityUserId");
+
+ b.ToTable("AuditRecordIdentityUser");
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditRecordPermission", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AuditDocumentId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AuditRecordId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuditDocumentId");
+
+ b.HasIndex("AuditRecordId");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("AuditRecordPermission");
+ });
+
+ 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("EnFileName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("EnPath")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ 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("EnFileName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("EnPath")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ 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("ReadingId");
+
+ 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("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CriterionId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("LesionType")
+ .HasColumnType("int");
+
+ b.Property("OrganType")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.ToTable("CriterionNidusTrial", t =>
+ {
+ t.HasComment("项目标准 - 病灶器官表");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.DataInspection", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BatchId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("批次Id");
+
+ b.Property("ChildrenTypeId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("子类");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreateUserName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("创建人姓名");
+
+ b.Property("CreateUserRealName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("DoctorUserId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("阅片医生");
+
+ b.Property("EntityName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("被稽查实体名");
+
+ b.Property("GeneralId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("要稽查对象Id");
+
+ b.Property("IP")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("Identification")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("标识");
+
+ b.Property("IsFrontAdd")
+ .HasColumnType("bit")
+ .HasComment("是否是前端添加");
+
+ b.Property("IsSign")
+ .HasColumnType("bit");
+
+ b.Property("JsonDetail")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastJsonDetail")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("上一条json");
+
+ b.Property("ModuleTypeId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ObjectRelationParentId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("被稽查对象外键1");
+
+ b.Property("ObjectRelationParentId2")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ObjectRelationParentId3")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ObjectTypeId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("OptTypeId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ParentId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("父ID");
+
+ b.Property("Reason")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("RoleName")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)")
+ .HasComment("角色名称");
+
+ b.Property("SignId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("SubjectId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("SubjectVisitId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("TrialId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("TrialReadingCriterionId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("TrialSiteId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("VisitStageId")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("访视计划ID");
+
+ b.Property("VisitTaskId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreateUserId");
+
+ b.HasIndex("TrialReadingCriterionId");
+
+ b.HasIndex("VisitTaskId");
+
+ b.ToTable("DataInspection", t =>
+ {
+ t.HasComment("稽查 - 记录表");
+ });
+ });
+
+ modelBuilder.Entity("IRaCIS.Core.Domain.Models.DicomInstance", b =>
+ {
+ b.Property("SeqId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("Anonymize")
+ .HasColumnType("bit");
+
+ b.Property("BitsAllocated")
+ .HasColumnType("int");
+
+ b.Property("CPIStatus")
+ .HasColumnType("bit");
+
+ b.Property("CorrectedImage")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("CreateUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("DecayCorrection")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("DeleteUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("DeletedTime")
+ .HasColumnType("datetime2");
+
+ b.Property("EncapsulatedDocument")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("FileSize")
+ .HasColumnType("bigint");
+
+ b.Property("FrameOfReferenceUID")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("FrameTime")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("HtmlPath")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ImageColumns")
+ .HasColumnType("int");
+
+ b.Property("ImageOrientationPatient")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ImagePositionPatient")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("ImageRows")
+ .HasColumnType("int");
+
+ b.Property("ImagerPixelSpacing")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("InstanceNumber")
+ .HasColumnType("int");
+
+ b.Property("InstanceTime")
+ .HasColumnType("datetime2");
+
+ b.Property("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property("IsEncapsulated")
+ .HasColumnType("bit");
+
+ b.Property("IsReading")
+ .HasColumnType("bit");
+
+ b.Property("MediaStorageSOPClassUID")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("MediaStorageSOPInstanceUID")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("NumberOfFrames")
+ .HasColumnType("int");
+
+ b.Property("Path")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("nvarchar(1000)");
+
+ b.Property("PhotometricInterpretation")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("PixelRepresentation")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("PixelSpacing")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("RescaleIntercept")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("RescaleSlope")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("SOPClassUID")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("SequenceOfUltrasoundRegions")
+ .IsRequired()
+ .HasMaxLength(400)
+ .HasColumnType("nvarchar(400)");
+
+ b.Property("SeriesId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property