清理后端下载
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-09-20 11:47:02 +08:00
parent 97b28fd920
commit b90f5f2d85
15 changed files with 255 additions and 360 deletions

View File

@ -1492,16 +1492,6 @@
<param name="inQuery"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.DownloadAndUploadService.RequestPackageAndAnonymizImage(System.Guid,System.Guid,System.Boolean,System.Boolean)">
<summary>
打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包
</summary>
<param name="trialId"></param>
<param name="subjectVisitId"></param>
<param name="isDicom"></param>
<param name="isAnonymize"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ImageAndDoc.DownloadAndUploadService.GetSubejectOrVisitZipInfo(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Application.Contracts.SubejctZipInfoQuery)">
<summary>
受试者级别所有的影像

View File

@ -18,7 +18,6 @@
public string CriterionModalitys { get; set; }
public Guid? SourceSubjectVisitId { get; set; }
public PackState PackState { get; set; }
public List<StudyBasicInfo> OrginalStudyList { get; set; }

View File

@ -131,7 +131,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TaskName = u.TaskName,
SourceSubjectVisitId = u.SourceSubjectVisitId,
PackState = u.SourceSubjectVisit.PackState,
OrginalStudyList = u.SourceSubjectVisit.StudyList
.Where(t => u.TrialReadingCriterion.IsImageFilter ? ("|" + u.TrialReadingCriterion.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true)
@ -1011,59 +1010,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
#region 之前后端下载废弃
/// <summary>
/// 打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包
/// </summary>
/// <param name="trialId"></param>
/// <param name="subjectVisitId"></param>
/// <param name="isDicom"></param>
/// <param name="isAnonymize"></param>
/// <returns></returns>
[Obsolete]
public async Task<IResponseOutput> RequestPackageAndAnonymizImage(Guid trialId, Guid subjectVisitId, bool isDicom, bool isAnonymize = true)
{
var extralConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialExtraConfigJsonStr).FirstOrDefault() ?? string.Empty;
var config = JsonConvert.DeserializeObject<TrialExtraConfig>(extralConfig) ?? new TrialExtraConfig();
if (config.IsSupportQCDownloadImage == false)
{
throw new BusinessValidationFailedException("该项目不支持QC下载影像");
}
var subjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId);
var sujectCode = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.Subject.Code).FirstOrDefaultAsync();
var packState = isDicom ? subjectVisit.PackState : subjectVisit.NoDicomPackState;
if (packState == PackState.WaitPack)
{
if (isDicom)
{
subjectVisit.PackState = PackState.Packing;
HangfireJobHelper.NotImmediatelyOnceOnlyJob<IDownloadAndUploadService>(t => t.PackageAndAnonymizImage(trialId, subjectVisitId, true, isAnonymize), TimeSpan.FromSeconds(1));
}
else
{
subjectVisit.NoDicomPackState = PackState.Packing;
HangfireJobHelper.NotImmediatelyOnceOnlyJob<IDownloadAndUploadService>(t => t.PackageAndAnonymizImage(trialId, subjectVisitId, false, isAnonymize), TimeSpan.FromSeconds(1));
}
await _subjectVisitRepository.SaveChangesAsync();
}
return ResponseOutput.Ok(isDicom ? subjectVisit.VisitImageZipPath : subjectVisit.VisitNoDicomImageZipPath,
new { FileName = $"{sujectCode}_{subjectVisit.VisitName}_ImageStudy_{(isDicom ? "Dicom" : "NoneDicom")}.zip" });
}
@ -1371,7 +1318,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//上传到Oss
var relativeDicomPath = await _oSSService.UploadToOSSAsync(zipDicomPath, $"download_zip", false);
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitImageZipPath = relativeDicomPath });
//await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitImageZipPath = relativeDicomPath });
File.Delete(zipDicomPath);
@ -1410,7 +1357,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
File.Delete(zipNoneDicomPath);
}
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitNoDicomImageZipPath = relativeNoneDicomPath });
//await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitNoDicomImageZipPath = relativeNoneDicomPath });
}
@ -1422,7 +1369,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}
catch (Exception ex)
{
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.WaitPack });
//await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.WaitPack });
}

View File

@ -5,7 +5,7 @@
{
public string YearMonth { get; set; } = string.Empty;
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Rate { get; set; }
}

View File

@ -9,20 +9,20 @@ namespace IRaCIS.Core.Domain.Models
public bool IsLock { get; set; }
public DateTime YearMonthDate { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal PaymentUSD { get; set; }
[Column(TypeName = "decimal(18,4)")]
[DecimalPrecision(18, 4)]
public decimal PaymentCNY { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal ExchangeRate { get; set; }
[Column(TypeName = "decimal(18,4)")]
[DecimalPrecision(18, 4)]
public decimal AdjustmentCNY { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjustmentUSD { get; set; }
public DateTime CalculateTime { get; set; } = DateTime.Now;

View File

@ -8,16 +8,16 @@ namespace IRaCIS.Core.Domain.Models
public DateTime YearMonthDate { get; set; }
public string YearMonth { get; set; } = string.Empty;
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjustmentUSD { get; set; }
[Column(TypeName = "decimal(18,4)")]
[DecimalPrecision(18, 4)]
public decimal AdjustmentCNY { get; set; }
public Guid TrialId { get; set; } = Guid.Empty;
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal ExchangeRate { get; set; }
public bool IsLock { get; set; } = false;
public string Note { get; set; } = string.Empty;

View File

@ -15,22 +15,22 @@ namespace IRaCIS.Core.Domain.Models
public string PaymentType { get; set; } = string.Empty;
public int Count { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal BasePrice { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal PersonalAdditional { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal TrialAdditional { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal ExchangeRate { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal PaymentUSD { get; set; }
[Column(TypeName = "decimal(18,4)")]
[DecimalPrecision(18, 4)]
public decimal PaymentCNY { get; set; }
public int ShowTypeOrder { get; set; }

View File

@ -6,34 +6,34 @@ namespace IRaCIS.Core.Domain.Models
[StringLength(200)]
public string RankName { get; set; } = string.Empty;
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Timepoint { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal TimepointIn24H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal TimepointIn48H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Adjudication { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjudicationIn24H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjudicationIn48H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Global { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Training { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Downtime { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal RefresherTraining { get; set; }
public int ShowOrder { get; set; }
}

View File

@ -7,13 +7,13 @@ namespace IRaCIS.Core.Domain.Models
public Trial Trial { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal TrialAdditional { get; set; } = 0;
public string SowName { get; set; } = string.Empty;
public string SowPath { get; set; } = string.Empty;
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjustmentMultiple { get; set; } = 1;
/// <summary>

View File

@ -5,34 +5,34 @@
{
public Guid TrialId { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Timepoint { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal TimepointIn24H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal TimepointIn48H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Adjudication { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjudicationIn24H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal AdjudicationIn48H { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Global { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Training { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Downtime { get; set; }
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal RefresherTraining { get; set; }
}

View File

@ -3,7 +3,7 @@ namespace IRaCIS.Core.Domain.Models
[Table("VolumeReward")]
public partial class VolumeReward : BaseFullAuditEntity
{
[Column(TypeName = "decimal(18,2)")]
[DecimalPrecision(18, 2)]
public decimal Price { get; set; }
public int Min { get; set; }
public int Max { get; set; }

View File

@ -1,95 +1,91 @@
using EntityFrameworkCore.Projectables;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Domain.Models
namespace IRaCIS.Core.Domain.Models;
[Comment("后台 - 系统账户")]
[Table("User")]
public class User : BaseFullAuditEntity
{
[Table("User")]
public partial class User : BaseFullAuditEntity
{
#region 导航属性
[ForeignKey("UserTypeId")]
public UserType UserTypeRole { get; set; }
#region 导航属性
[JsonIgnore]
public List<SystemDocConfirmedUser> SystemDocConfirmedList { get; set; }
[ForeignKey("UserTypeId")]
public UserType UserTypeRole { get; set; }
[JsonIgnore]
public List<TrialUser> UserTrials { get; set; } = new List<TrialUser>();
[JsonIgnore]
public List<SystemDocConfirmedUser> SystemDocConfirmedList { get; set; }
[JsonIgnore]
public List<VisitTask> VisitTaskList { get; set; }
[JsonIgnore]
public List<TrialUser> UserTrials { get; set; } = new List<TrialUser>();
#endregion
[JsonIgnore]
public List<VisitTask> VisitTaskList { get; set; }
[Projectable]
public string FullName => LastName + " / " + FirstName;
#endregion
[StringLength(255)]
public string UserName { get; set; } = String.Empty;
[Comment(" 自动切换下一个任务")]
public bool AutoCutNextTask { get; set; }
[StringLength(255)]
public string Password { get; set; } = String.Empty;
[StringLength(255)]
public int Code { get; set; }
public string LastName { get; set; } = String.Empty;
public string FirstName { get; set; } = String.Empty;
[StringLength(400)]
public string DepartmentName { get; set; } = null!;
public string Phone { get; set; } = string.Empty;
public string EMail { get; set; } = string.Empty;
public int? Sex { get; set; }
public UserStateEnum Status { get; set; } = UserStateEnum.Enable;
[Comment(" 医生生成账号后,会有值")]
public Guid? DoctorId { get; set; }
public DateTime? LastLoginTime { get; set; }
public string EMail { get; set; } = null!;
public Guid UserTypeId { get; set; } = Guid.Empty;
[StringLength(1020)]
public string EmailToken { get; set; } = null!;
public string FirstName { get; set; } = null!;
// 内部用户 外部用户
public bool IsZhiZhun { get; set; }
[Comment(" 首次登录需要修改密码")]
public bool IsFirstAdd { get; set; }
public UserTypeEnum UserTypeEnum { get; set; }
public bool IsTestUser { get; set; }
public string OrganizationName { get; set; } = String.Empty;
[Comment(" 内部用户 外部用户")]
public bool IsZhiZhun { get; set; }
public bool PasswordChanged { get; set; }
[Comment(" 上一次修改密码的时间")]
public DateTime? LastChangePassWordTime { get; set; }
public string LastLoginIP { get; set; } = null!;
public string UserCode { get; set; } = string.Empty;
public DateTime? LastLoginTime { get; set; }
public int Code { get; set; }
[StringLength(510)]
public string LastName { get; set; } = null!;
public string OrganizationName { get; set; } = null!;
public string DepartmentName { get; set; } = String.Empty;
public string Password { get; set; } = null!;
public string PositionName { get; set; } = String.Empty;
public bool PasswordChanged { get; set; }
[StringLength(400)]
public string Phone { get; set; } = null!;
public bool IsFirstAdd { get; set; } = true;
[StringLength(400)]
public string PositionName { get; set; } = null!;
public string EmailToken { get; set; } = string.Empty;
public int? Sex { get; set; }
/// <summary>
/// 上一次修改密码的时间
/// </summary>
public DateTime? LastChangePassWordTime { get; set; }
public UserStateEnum Status { get; set; } = UserStateEnum.Enable;
/// <summary>
/// LastLoginIP
/// </summary>
public string LastLoginIP { get; set; } = string.Empty;
public bool SuperAdmin { get; set; }
//医生生成账号后,会有值
public Guid? DoctorId { get; set; }
[StringLength(400)]
public string UserCode { get; set; } = null!;
public bool IsTestUser { get; set; }
public string UserName { get; set; } = null!;
/// <summary>
/// 自动切换下一个任务
/// </summary>
public bool AutoCutNextTask { get; set; } = false;
public UserTypeEnum UserTypeEnum { get; set; }
[Projectable]
public string FullName => LastName + " / " + FirstName;
//[Projectable] public string FullName => $"{LastName} / {FirstName}";
}
public Guid UserTypeId { get; set; }
}

View File

@ -2,9 +2,7 @@
namespace IRaCIS.Core.Domain.Models;
/// <summary>
/// 受试者
/// </summary>
[Comment("项目 - 受试者")]
[Table("Subject")]
public class Subject : BaseFullDeleteAuditEntity
{
@ -60,9 +58,8 @@ public class Subject : BaseFullDeleteAuditEntity
public List<ClinicalForm> ClinicalFormList { get; set; }
#endregion
public Guid? FinalSubjectVisitId { get; set; }
public Guid TrialId { get; set; }
public Guid TrialSiteId { get; set; }
public string Code { get; set; } = string.Empty;
@ -71,25 +68,20 @@ public class Subject : BaseFullDeleteAuditEntity
public int? Age { get; set; }
public string Sex { get; set; } = string.Empty;
public Guid? LatestSubjectVisitId { get; set; }
public Guid? FinalSubjectVisitId { get; set; }
public Guid TrialId { get; set; } = Guid.Empty;
public string MedicalNo { get; set; } = string.Empty;
public SubjectStatus Status { get; set; } = SubjectStatus.OnVisit;//1 访视中2 出组 3 访视结束
public string Reason { get; set; } = string.Empty;
public bool IsEnrollment { get; set; }
public DateTime? OutEnrollmentTime { get; set; }
public DateTime? VisitOverTime { get; set; }
public string ShortName { get; set; } = String.Empty;
public string Height { get; set; } = String.Empty;
@ -97,15 +89,15 @@ public class Subject : BaseFullDeleteAuditEntity
public string Weight { get; set; } = String.Empty;
public DateTime? BirthDate { get; set; }
[Comment("知情同意书签署日期")]
public DateTime? SignDate { get; set; }
public DateTime? FirstGiveMedicineTime { get; set; }
public bool IsUrgent { get; set; }
[Comment("重阅或者退回影响一致性分析")]
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }

View File

@ -1,250 +1,221 @@
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Domain.Models
namespace IRaCIS.Core.Domain.Models;
[Comment("受试者访视")]
[Table("SubjectVisit")]
public class SubjectVisit : BaseFullDeleteAuditEntity
{
[Table("SubjectVisit")]
public class SubjectVisit : BaseFullDeleteAuditEntity
{
#region 导航属性
[JsonIgnore]
public TrialSite TrialSite { get; set; }
#region 导航属性
[JsonIgnore]
[ForeignKey("OutPlanPreviousVisitId")]
public SubjectVisit OutPlanPreviousVisit { get; set; }
[JsonIgnore]
public TrialSite TrialSite { get; set; }
[JsonIgnore]
[ForeignKey("OutPlanPreviousVisitId")]
public SubjectVisit OutPlanPreviousVisit { get; set; }
[ForeignKey("ForwardUserId")]
public User ForwardUser { get; set; }
[ForeignKey("ForwardUserId")]
public User ForwardUser { get; set; }
[JsonIgnore]
[ForeignKey("PreliminaryAuditUserId")]
public User PreliminaryAuditUser { get; set; }
[JsonIgnore]
[ForeignKey("ReviewAuditUserId")]
public User ReviewAuditUser { get; set; }
[JsonIgnore]
[ForeignKey("PreliminaryAuditUserId")]
public User PreliminaryAuditUser { get; set; }
[JsonIgnore]
[ForeignKey("CurrentActionUserId")]
public User CurrentActionUser { get; set; }
[JsonIgnore]
[ForeignKey("SubmitUserId")]
public User SubmitUser { get; set; }
[JsonIgnore]
[ForeignKey("ReviewAuditUserId")]
public User ReviewAuditUser { get; set; }
//导航属性
[JsonIgnore]
[ForeignKey("TrialId")]
public Trial Trial { get; set; }
[JsonIgnore]
[ForeignKey("CurrentActionUserId")]
public User CurrentActionUser { get; set; }
[JsonIgnore]
[ForeignKey("SubmitUserId")]
public User SubmitUser { get; set; }
//导航属性
[JsonIgnore]
[ForeignKey("TrialId")]
public Trial Trial { get; set; }
[JsonIgnore]
public List<ReadModule> ReadModuleList { get; set; }
[JsonIgnore]
public List<ReadModule> ReadModuleList { get; set; }
[JsonIgnore]
[ForeignKey("SubjectId")]
public Subject Subject { get; set; }
[JsonIgnore]
[ForeignKey("SubjectId")]
public Subject Subject { get; set; }
[JsonIgnore]
public List<PreviousHistory> PreviousHistoryList { get; set; }
[JsonIgnore]
public List<PreviousOther> PreviousOtherList { get; set; }
[JsonIgnore]
public List<PreviousSurgery> PreviousSurgeryList { get; set; }
[JsonIgnore]
public List<PreviousPDF> PreviousPDFList { get; set; }
[JsonIgnore]
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
[JsonIgnore]
public List<CheckChallengeDialog> CheckChallengeDialogList { get; set; } = new List<CheckChallengeDialog>();
[JsonIgnore]
public List<DicomStudy> StudyList { get; set; } = new List<DicomStudy>();
[JsonIgnore]
public List<NoneDicomStudy> NoneDicomStudyList { get; set; } = new List<NoneDicomStudy>();
[JsonIgnore]
public List<QCChallenge> QCChallengeList { get; set; } = new List<QCChallenge>();
[JsonIgnore]
public List<QCChallengeDialog> QCChallengeDialogList { get; set; } = new List<QCChallengeDialog>();
[JsonIgnore]
public List<VisitTask> VisitTaskList { get; set; } = new List<VisitTask>();
[JsonIgnore]
public List<PreviousHistory> PreviousHistoryList { get; set; }
[JsonIgnore]
public List<PreviousOther> PreviousOtherList { get; set; }
[JsonIgnore]
public List<PreviousSurgery> PreviousSurgeryList { get; set; }
[JsonIgnore]
public List<PreviousPDF> PreviousPDFList { get; set; }
[JsonIgnore]
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
[JsonIgnore]
public List<CheckChallengeDialog> CheckChallengeDialogList { get; set; } = new List<CheckChallengeDialog>();
[JsonIgnore]
public List<DicomStudy> StudyList { get; set; } = new List<DicomStudy>();
[JsonIgnore]
public List<NoneDicomStudy> NoneDicomStudyList { get; set; } = new List<NoneDicomStudy>();
[JsonIgnore]
public List<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilterList { get; set; }
#endregion
[JsonIgnore]
public List<QCChallenge> QCChallengeList { get; set; } = new List<QCChallenge>();
[JsonIgnore]
public List<QCChallengeDialog> QCChallengeDialogList { get; set; } = new List<QCChallengeDialog>();
[JsonIgnore]
public List<VisitTask> VisitTaskList { get; set; } = new List<VisitTask>();
public Guid TrialSiteId { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
[JsonIgnore]
public List<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilterList { get; set; }
#endregion
[Comment("访视计划Id计划外没有")]
public Guid? VisitStageId { get; set; }
public int VisitDay { get; set; }
public string VisitName { get; set; } = string.Empty;
public int VisitWindowLeft { get; set; }
public int VisitWindowRight { get; set; }
[DecimalPrecision(18, 1)]
public decimal VisitNum { get; set; }
public string BlindName { get; set; } = string.Empty;
public string SVUPDES { get; set; } = string.Empty;
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
public bool InPlan { get; set; } = true;
public bool IsBaseLine { get; set; } = false;
public Guid TrialSiteId { get; set; }
[Comment("0 未执行 1 执行了 2 不可用")]
public VisitExecutedEnum VisitExecuted { get; set; } = VisitExecutedEnum.UnExecuted;
//一个访视 对应有对应Site的 TrialSiteCode
public DateTime? EarliestScanDate { get; set; }
public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
[Comment("最晚拍片日期")]
public DateTime? LatestScanDate { get; set; }
public Guid? VisitStageId { get; set; }
public int VisitDay { get; set; }
public string VisitName { get; set; } = string.Empty;
public int VisitWindowLeft { get; set; }
public int VisitWindowRight { get; set; }
public Guid? Auditor { get; set; }
[Column(TypeName = "decimal(18,1)")]
public decimal VisitNum { get; set; }
public string BlindName { get; set; } = string.Empty;
[Comment("核查状态")]
public CheckStateEnum CheckState { get; set; }
public string SVUPDES { get; set; } = string.Empty;
public DateTime? SVSTDTC { get; set; }
public DateTime? SVENDTC { get; set; }
public bool InPlan { get; set; } = true;
public bool IsBaseLine { get; set; } = false;
[Comment("提交状态")]
public SubmitStateEnum SubmitState { get; set; }
[Comment("审核状态")]
public AuditStateEnum AuditState { get; set; }
public ForwardStateEnum ForwardState { get; set; }
//0 未执行 1 执行了 2 不可用
public VisitExecutedEnum VisitExecuted { get; set; } = VisitExecutedEnum.UnExecuted;
public DateTime? EarliestScanDate { get; set; }
[Comment("单审通过人")]
public Guid? PreliminaryAuditUserId { get; set; }
/// <summary>
/// 最晚拍片日期
/// </summary>
public DateTime? LatestScanDate { get; set; }
[Comment("双审通过人")]
public Guid? ReviewAuditUserId { get; set; }
public Guid? Auditor { get; set; }
[Comment("一致性核查人Id")]
public Guid? CheckUserId { get; set; }
public DateTime? ReviewAuditTime { get; set; }
public DateTime? PreliminaryAuditTime { get; set; }
public Guid? ForwardUserId { get; set; }
public DateTime? ForwardTime { get; set; }
//核查状态
public CheckStateEnum CheckState { get; set; }
[Comment("当前质控领取人")]
public Guid? CurrentActionUserId { get; set; }
public DateTime? CurrentActionUserExpireTime { get; set; }
//提交状态
public SubmitStateEnum SubmitState { get; set; }
//审核状态
public AuditStateEnum AuditState { get; set; }
public ForwardStateEnum ForwardState { get; set; }
public DateTime? SubmitTime { get; set; }
public DateTime? CheckTime { get; set; }
/// <summary>
/// 单审通过人
/// </summary>
public Guid? PreliminaryAuditUserId { get; set; }
[Comment("通过原因")]
public string ManualPassReason { get; set; } = string.Empty;
/// <summary>
/// 双审通过人
/// </summary>
public Guid? ReviewAuditUserId { get; set; }
public bool IsUrgent { get; set; }
/// <summary>
/// 一致性核查人Id
/// </summary>
public Guid? CheckUserId { get; set; }
public bool IsTake { get; set; }
public DateTime? ReviewAuditTime { get; set; }
public DateTime? PreliminaryAuditTime { get; set; }
public Guid? ForwardUserId { get; set; }
public DateTime? ForwardTime { get; set; }
public bool IsFinalVisit { get; set; }
/// <summary>
/// 当前质控领取人
/// </summary>
public Guid? CurrentActionUserId { get; set; }
public DateTime? CurrentActionUserExpireTime { get; set; }
public ChallengeStateEnum ChallengeState { get; set; }
public DateTime? SubmitTime { get; set; }
public DateTime? CheckTime { get; set; }
public string CheckResult { get; set; } = String.Empty;
/// <summary>
/// 通过原因
/// </summary>
public string ManualPassReason { get; set; } = string.Empty;
[Comment("是否一致性核查回退")]
public bool? IsCheckBack { get; set; }
public bool IsUrgent { get; set; }
public DateTime? CheckBackTime { get; set; }
public bool IsTake { get; set; }
public CheckChanllengeTypeEnum CheckChallengeState { get; set; }
public PDStateEnum PDState { get; set; } = PDStateEnum.None;
public bool IsFinalVisit { get; set; }
public ChallengeStateEnum ChallengeState { get; set; }
public DateTime? CheckPassedTime { get; set; }
public string CheckResult { get; set; } = String.Empty;
//是否一致性核查回退
public bool? IsCheckBack { get; set; }
[Comment("计划外上一访视")]
public Guid? OutPlanPreviousVisitId { get; set; }
public DateTime? CheckBackTime { get; set; }
public CheckChanllengeTypeEnum CheckChallengeState { get; set; }
public PDStateEnum PDState { get; set; } = PDStateEnum.None;
public RequestBackStateEnum RequestBackState { get; set; }
public DateTime? CheckPassedTime { get; set; }
public bool IsQCConfirmedReupload { get; set; }
/// <summary>
/// 上一访视
/// </summary>
public Guid? OutPlanPreviousVisitId { get; set; }
public bool IsLostVisit { get; set; }
[Comment("是否确认了、签名了 临床数据完整性")]
public bool? IsConfirmedClinicalData { get; set; }
public RequestBackStateEnum RequestBackState { get; set; }
public bool IsEnrollmentConfirm { get; set; }
public bool IsVisitTaskGenerated { get; set; }
public bool IsQCConfirmedReupload { get; set; }
public bool IsPMBackOrReReading { get; set; }
public bool IsLostVisit { get; set; }
[Comment("关闭一致性质疑原因")]
public string CloseTheReason { get; set; } = string.Empty;
public Guid? SubmitUserId { get; set; }
//是否确认了、签名了 临床数据完整性
public bool? IsConfirmedClinicalData { get; set; }
public ReadingStatusEnum ReadingStatus { get; set; }
public bool IsEnrollmentConfirm { get; set; }
public bool IsVisitTaskGenerated { get; set; }
public bool IsPMBackOrReReading { get; set; }
/// <summary>
/// 关闭一致性质疑原因
/// </summary>
public string CloseTheReason { get; set; } = string.Empty;
public Guid? SubmitUserId { get; set; }
public ReadingStatusEnum ReadingStatus { get; set; }
public string VisitImageZipPath { get; set; } = string.Empty;
public PackState PackState { get; set; }
public PackState NoDicomPackState { get; set; }
public string VisitNoDicomImageZipPath { get; set; } = string.Empty;
}
/// <summary>
/// 影像下载打包状态
/// </summary>
public enum PackState
{
/// <summary>
/// 待打包
/// </summary>
WaitPack = 0,
/// <summary>
/// 打包中
/// </summary>
Packing = 1,
/// <summary>
/// 打包完成
/// </summary>
Packed = 2
}
}
/// <summary>
/// 影像下载打包状态
/// </summary>
public enum PackState
{
/// <summary>
/// 待打包
/// </summary>
WaitPack = 0,
/// <summary>
/// 打包中
/// </summary>
Packing = 1,
/// <summary>
/// 打包完成
/// </summary>
Packed = 2
}

View File

@ -12,7 +12,7 @@
public string BlindName { get; set; } = string.Empty;
[Column(TypeName = "decimal(18,1)")]
[DecimalPrecision(18, 1)]
public decimal VisitNum { get; set; }
public string VisitName { get; set; } = string.Empty;
public int VisitDay { get; set; }