清理后端下载
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
97b28fd920
commit
b90f5f2d85
|
@ -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>
|
||||
受试者级别所有的影像
|
||||
|
|
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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 });
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{
|
||||
public string YearMonth { get; set; } = string.Empty;
|
||||
|
||||
[Column(TypeName = "decimal(18,2)")]
|
||||
[DecimalPrecision(18, 2)]
|
||||
public decimal Rate { get; set; }
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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; }
|
||||
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue