946 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			946 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			C#
		
	
	
| //--------------------------------------------------------------------
 | |
| //     此代码由T4模板自动生成  byzhouhang 20210918
 | |
| //	   生成时间 2022-06-07 14:10:54 
 | |
| //     对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
 | |
| //--------------------------------------------------------------------
 | |
| using IRaCIS.Core.Domain.Share;
 | |
| using Newtonsoft.Json;
 | |
| using System.ComponentModel.DataAnnotations;
 | |
| 
 | |
| namespace IRaCIS.Core.Application.ViewModel
 | |
| {
 | |
| 
 | |
|     public class VisitTaskViewBasic
 | |
|     {
 | |
|         public Guid Id { get; set; }
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public string TaskCode { get; set; }
 | |
| 
 | |
|         public string TaskName { get; set; }
 | |
|         public string TaskBlindName { get; set; }
 | |
| 
 | |
|         public decimal VisitTaskNum { get; set; }
 | |
| 
 | |
|         public bool IsUrgent { get; set; }
 | |
| 
 | |
|         public bool? IsSelfAnalysis { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 是否是一致性分析产生
 | |
|         /// </summary>
 | |
|         public bool IsAnalysisCreate { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 加急类型
 | |
|         /// </summary>
 | |
|         public TaskUrgentType? TaskUrgentType { get; set; }
 | |
| 
 | |
| 
 | |
|         public string TaskUrgentRemake { get; set; } = string.Empty;
 | |
| 
 | |
|         public ReadingCategory ReadingCategory { get; set; }
 | |
| 
 | |
|         public TaskAllocationState TaskAllocationState { get; set; }
 | |
|         public TaskState TaskState { get; set; }
 | |
| 
 | |
|         public DateTime? SignTime { get; set; }
 | |
| 
 | |
|         public DateTime? AllocateTime { get; set; }
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public Arm ArmEnum { get; set; }
 | |
|         public Guid? DoctorUserId { get; set; }
 | |
| 
 | |
| 
 | |
|         public Guid CreateUserId { get; set; }
 | |
|         public DateTime CreateTime { get; set; }
 | |
|         public DateTime UpdateTime { get; set; }
 | |
|         public Guid UpdateUserId { get; set; }
 | |
| 
 | |
| 
 | |
|         public Guid TrialSiteId { get; set; }
 | |
| 
 | |
|         public string BlindTrialSiteCode { get; set; }
 | |
|         public String TrialSiteCode { get; set; } = String.Empty;
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public string MedicalNo { get; set; } = string.Empty;
 | |
| 
 | |
|         public string BlindSubjectCode { get; set; } = string.Empty;
 | |
| 
 | |
|         public bool IsPMSetBack { get; set; }
 | |
| 
 | |
|         public bool IsSubjectQuit { get; set; }
 | |
| 
 | |
|         #region 标准配置
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public string TrialReadingCriterionName { get; set; }
 | |
| 
 | |
|         public bool IsAutoCreate { get; set; }
 | |
| 
 | |
| 
 | |
|         public bool IsNeedClinicalDataSign { get; set; }
 | |
| 
 | |
|         public bool IsClinicalDataSign { get; set; }
 | |
| 
 | |
| 
 | |
|         public CompleteClinicalDataEnum CompleteClinicalDataEnum =>
 | |
|             (IsNeedClinicalDataSign && IsClinicalDataSign) ? CompleteClinicalDataEnum.Complete : (IsNeedClinicalDataSign && IsClinicalDataSign == false) ? CompleteClinicalDataEnum.NotComplete : CompleteClinicalDataEnum.NA;
 | |
| 
 | |
| 
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 阅片工具
 | |
|         /// </summary>
 | |
|         public ReadingTool? ReadingTool { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 任务展示访视 读片任务显示是否顺序
 | |
|         /// </summary>
 | |
|         public ReadingOrder IsReadingTaskViewInOrder { get; set; }
 | |
| 
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 阅片是否显示受试者信息
 | |
|         /// </summary>
 | |
|         public bool IsReadingShowSubjectInfo { get; set; } = false;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// IR阅片页面是否可以查看既往任务结果
 | |
|         /// </summary>
 | |
|         public bool IsReadingShowPreviousResults { get; set; } = false;
 | |
| 
 | |
|         public int? DigitPlaces { get; set; } = 2;
 | |
| 
 | |
|         public bool IseCRFShowInDicomReading { get; set; } = false;
 | |
| 
 | |
|         public CriterionType CriterionType { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
|         ///// <summary>
 | |
|         ///// 仲裁对象
 | |
|         ///// </summary>
 | |
|         //public ArbitrationRule ArbitrationRule { get; set; } = ArbitrationRule.Reading;
 | |
| 
 | |
| 
 | |
|         ///// <summary>
 | |
|         ///// 阅片模式
 | |
|         ///// </summary>
 | |
|         //public ReadingMethod ReadingType { get; set; } = ReadingMethod.Double;
 | |
| 
 | |
|         ///// <summary>
 | |
|         ///// 全局阅片
 | |
|         ///// </summary>
 | |
|         //public bool IsGlobalReading { get; set; } = true;
 | |
| 
 | |
|         ///// <summary>
 | |
|         ///// 仲裁阅片
 | |
|         ///// </summary>
 | |
|         //public bool IsArbitrationReading { get; set; } = true;
 | |
| 
 | |
| 
 | |
|         ///// <summary>
 | |
|         ///// 肿瘤学阅片  原字段 IsClinicalReading
 | |
|         ///// </summary>
 | |
|         //public bool IsOncologyReading { get; set; }
 | |
|         #endregion
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     /// <summary> VisitTaskView  列表视图模型 </summary>
 | |
|     public class VisitTaskView : VisitTaskViewBasic
 | |
|     {
 | |
| 
 | |
|         public string UserCode { get; set; }
 | |
|         public string UserName { get; set; }
 | |
|         public string FullName { get; set; }
 | |
| 
 | |
|         public string UserTypeShortName { get; set; }
 | |
| 
 | |
|         public bool IsCanEditUrgentState { get; set; }
 | |
| 
 | |
|         public DateTime? FirstReadingTime { get; set; }
 | |
| 
 | |
|         public string ReadingDuration
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (!SignTime.HasValue)
 | |
|                     return "";
 | |
|                 else return string.Format("{0}h:{1}m:{2}s", (SignTime - FirstReadingTime)?.Hours, (SignTime - FirstReadingTime)?.Minutes, (SignTime - FirstReadingTime)?.Seconds)
 | |
|                          /*string.Format("{0}分钟", (ReadingDurationTimeSpan)?.TotalMinutes)*/;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public class UserSimpleInfo
 | |
|     {
 | |
|         public Guid UserId { get; set; }
 | |
|         public string UserCode { get; set; }
 | |
|         public string UserName { get; set; }
 | |
|         public string FullName { get; set; }
 | |
| 
 | |
|         //public string UserTypeShortName { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class JudgeVisitTaskView : VisitTaskView
 | |
|     {
 | |
| 
 | |
|         public List<HistoryReadingDoctorUser> HistoryReadingDoctorUserList { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class ReadingTaskView : VisitTaskView
 | |
|     {
 | |
| 
 | |
|         public ReadingTaskState ReadingTaskState { get; set; }
 | |
| 
 | |
|         public ReReadingApplyState ReReadingApplyState { get; set; }
 | |
|         public DateTime? SuggesteFinishedTime { get; set; }
 | |
| 
 | |
|         //任务来源访视Id  方便回更访视读片状态
 | |
|         public Guid? SourceSubjectVisitId { get; set; }
 | |
|         public Guid? SouceReadModuleId { get; set; }
 | |
| 
 | |
| 
 | |
|         public bool IsHaveFeedBack { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 是否手动生成
 | |
|         /// </summary>
 | |
|         public bool IsManualGeneration { get; set; }
 | |
|         //public bool IsAfterConvertedTask { get; set; }
 | |
| 
 | |
|         public string PMBackReason { get; set; }
 | |
| 
 | |
|         public int? RandomOrder { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class AnalysisTaskView : ReadingTaskView
 | |
|     {
 | |
| 
 | |
|         public int ConsistentClinicalDataCount { get; set; } = 0;
 | |
| 
 | |
|         public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class ReReadingTaskView
 | |
|     {
 | |
| 
 | |
|         //重阅原始编号
 | |
|         //public string ReReadingOriginalTaskCode { get; set; }
 | |
| 
 | |
| 
 | |
|         public string ApplicantName { get; set; }
 | |
| 
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
|         public AnalysisTaskView OriginalReReadingTask { get; set; }
 | |
| 
 | |
|         public string? ReReadingNewTaskCode { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
|         public ReadingTaskState ReadingTaskState { get; set; }
 | |
| 
 | |
|         public RequestReReadingType RequestReReadingType { get; set; }
 | |
| 
 | |
|         public string RequestReReadingRejectReason { get; set; } = string.Empty;
 | |
| 
 | |
|         public DateTime? RequestReReadingTime { get; set; }
 | |
| 
 | |
|         public string RequestReReadingReason { get; set; } = string.Empty;
 | |
| 
 | |
|         public DateTime? SuggesteFinishedTime { get; set; }
 | |
| 
 | |
|         public RequestReReadingResult RequestReReadingResultEnum { get; set; }
 | |
| 
 | |
|         //重阅原始任务Id  重阅会产生新的任务 
 | |
|         public Guid OriginalReReadingTaskId { get; set; }
 | |
| 
 | |
|         //重阅申请 产生的新任务Id
 | |
|         public Guid? NewReReadingTaskId { get; set; }
 | |
| 
 | |
| 
 | |
|         //产生重阅的根任务Id
 | |
|         public Guid RootReReadingTaskId { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 是否是一致性分析产生
 | |
|         /// </summary>
 | |
|         public bool IsAnalysisCreate { get; set; }
 | |
| 
 | |
|         public bool? IsSelfAnalysis { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class IRHaveReadView : VisitTaskViewBasic
 | |
|     {
 | |
|         public ReadingTaskState ReadingTaskState { get; set; }
 | |
| 
 | |
|         public ReReadingApplyState ReReadingApplyState { get; set; }
 | |
|         public DateTime? SuggesteFinishedTime { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class IRUnReadSubjectView
 | |
|     {
 | |
|         public int Index { get; set; } = 0;
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public bool IsUrgent => UnReadCanReadTaskList.Any(t => t.IsUrgent);
 | |
| 
 | |
|         public bool IsSubjectJudge => UnReadCanReadTaskList.All(t => t.ReadingCategory == ReadingCategory.Judge);
 | |
| 
 | |
|         public int UnReadTaskCount { get; set; }
 | |
| 
 | |
|         public int UnReadCanReadTaskCount { get; set; }
 | |
| 
 | |
|         public int HaveReadTaskCount { get; set; }
 | |
| 
 | |
|         public int TotalTaskCount { get; set; }
 | |
| 
 | |
|         public bool ExistReadingApply { get; set; }
 | |
| 
 | |
|         public DateTime? SuggesteFinishedTime { get; set; }
 | |
| 
 | |
|         public int? UrgentColor
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 if (this.SuggesteFinishedTime != null)
 | |
|                 {
 | |
|                     var date = DateTime.Now;
 | |
|                     var timeSpan = SuggesteFinishedTime.Value - date;
 | |
|                     if (timeSpan.TotalDays <= 2)
 | |
|                     {
 | |
|                         return 1;
 | |
|                     }
 | |
|                     else if (timeSpan.TotalDays <= 5)
 | |
|                     {
 | |
|                         return 2;
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         return 3;
 | |
|                     }
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     return null;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public int UrgentCount { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 是否存在未处理的反馈
 | |
|         /// </summary>
 | |
|         public bool IsExistUnprocessedFeedback
 | |
|         {
 | |
|             get
 | |
|             {
 | |
|                 return UnReadCanReadTaskList.Any(t => t.IsExistUnprocessedFeedback);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public List<IRUnreadTaskView> UnReadCanReadTaskList { get; set; } = new List<IRUnreadTaskView>();
 | |
| 
 | |
|         public List<IRUnreadTaskView> UnReadTaskList { get; set; } = new List<IRUnreadTaskView>();
 | |
|     }
 | |
| 
 | |
|     public class IRUnreadTaskView
 | |
|     {
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
|         public ReadingCategory ReadingCategory { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 是否是一致性分析产生
 | |
|         /// </summary>
 | |
|         public bool IsAnalysisCreate { get; set; }
 | |
|    
 | |
|         /// <summary>
 | |
|         /// 是否存在未处理的反馈
 | |
|         /// </summary>
 | |
|         public bool IsExistUnprocessedFeedback { get; set; }
 | |
| 
 | |
|         public bool IsUrgent { get; set; }
 | |
| 
 | |
|         public decimal VisitNum { get; set; }
 | |
| 
 | |
|         public string TaskBlindName { get; set; }
 | |
| 
 | |
|         public Arm ArmEnum { get; set; }
 | |
| 
 | |
|         public Guid? VisistId { get; set; }
 | |
|         public DateTime? SuggesteFinishedTime { get; set; }
 | |
| 
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public bool IsNeedClinicalDataSign { get; set; }
 | |
| 
 | |
|         public bool IsClinicalDataSign { get; set; }
 | |
| 
 | |
|         public bool IsFrontTaskNeedSignButNotSign { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class HistoryReadingDoctorUser
 | |
|     {
 | |
| 
 | |
|         public string? JudgeTaskCode { get; set; }
 | |
|         public Guid DoctorUserId { get; set; }
 | |
| 
 | |
|         public string UserCode { get; set; }
 | |
|         public string UserName { get; set; }
 | |
|         public string FullName { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class GetReadingIQueryableInDto : PageInput
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public string? SubjectCode { get; set; } = null;
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class VisitTaskQuery : PageInput
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
| 
 | |
|         public Guid? TrialSiteId { get; set; }
 | |
| 
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public bool? IsUrgent { get; set; }
 | |
| 
 | |
|         public string TaskName { get; set; } = String.Empty;
 | |
| 
 | |
|         public Guid? DoctorUserId { get; set; }
 | |
| 
 | |
|         public ReadingCategory? ReadingCategory { get; set; }
 | |
| 
 | |
|         public ReadingTaskState? ReadingTaskState { get; set; }
 | |
|         public TaskAllocationState? TaskAllocationState { get; set; }
 | |
| 
 | |
|         public TaskState? TaskState { get; set; }
 | |
|         public DateTime? BeginAllocateDate { get; set; }
 | |
| 
 | |
|         public DateTime? EndAllocateDate { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
|         public DateTime? BeginSignTime { get; set; }
 | |
| 
 | |
|         public DateTime? EndSignTime { get; set; }
 | |
| 
 | |
|         public DateTime? BeginRequestReReadingTime { get; set; }
 | |
|         public DateTime? EndRequestReReadingTime { get; set; }
 | |
| 
 | |
|         public Guid? RootReReadingTaskId { get; set; }
 | |
| 
 | |
|         public string? TaskCode { get; set; }
 | |
| 
 | |
|         public String? TrialSiteCode { get; set; }
 | |
| 
 | |
|         public ReReadingApplyState? ReReadingApplyState { get; set; }
 | |
| 
 | |
|         public RequestReReadingType? RequestReReadingType { get; set; }
 | |
| 
 | |
| 
 | |
|         public bool? IsSelfAnalysis { get; set; }
 | |
| 
 | |
|         public Arm? ArmEnum { get; set; }
 | |
| 
 | |
|         public Guid? TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public CompleteClinicalDataEnum? CompleteClinicalDataEnum { get; set; }
 | |
| 
 | |
|         public RequestReReadingResult? RequestReReadingResultEnum { get; set; }
 | |
| 
 | |
| 
 | |
|         public bool? IsEffect { get; set; }
 | |
| 
 | |
|         public string? RequestReReadingReason { get; set; }
 | |
| 
 | |
|         public ExportResult? ReadingExportType { get; set; }
 | |
| 
 | |
|         public int? RandomOrder { get; set; }
 | |
|         public bool? IsRandomOrderList { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     public enum ReadingExportType
 | |
|     {
 | |
|         ReadingResult=0,
 | |
| 
 | |
|         ReadingDetailResult=1,
 | |
| 
 | |
|         JudgeReadingDetailResult=2,
 | |
| 
 | |
|         LessionDetail=3
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class IRUnReadSubjectQuery : PageInput
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public string SubjectCode { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class IRUnReadOutDto
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// 未完成阅片量
 | |
|         /// </summary>
 | |
|         public int UnReadTaskCount { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 完成阅片量
 | |
|         /// </summary>
 | |
|         public int FinishTaskCount { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 未完成裁判任务数量
 | |
|         /// </summary>
 | |
|         public int UnReadJudgeTaskCount { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 完成裁判任务数量
 | |
|         /// </summary>
 | |
|         public int FinishJudgeTaskCount { get; set; }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 建议完成时间
 | |
|         /// </summary>
 | |
|         public DateTime? SuggesteFinishedTime { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class SubjectAssignQuery : PageInput
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid? TrialSiteId { get; set; }
 | |
| 
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
| 
 | |
| 
 | |
|         public Guid? DoctorUserId { get; set; }
 | |
| 
 | |
|         public bool? IsHaveAssigned { get; set; }
 | |
| 
 | |
|         public bool? IsAssignConfirmed { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class SubjectAssignStatQuery : PageInput
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid? TrialSiteId { get; set; }
 | |
| 
 | |
|         public Guid? SubjectId { get; set; }
 | |
| 
 | |
|         public Guid? DoctorUserId { get; set; }
 | |
| 
 | |
| 
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public int? SubjectAllocateState { get; set; }
 | |
| 
 | |
|         public List<Arm> ArmList { get; set; } = new List<Arm>() { };
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class BatchAssignDoctorToSubjectCommand
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         public List<Guid> SubjectIdList { get; set; }
 | |
| 
 | |
|         public List<DoctorArm> DoctorArmList { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class SubjectAssignStat
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
|         public Guid TrialSiteId { get; set; }
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public String TrialSiteCode { get; set; } = String.Empty;
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
|         public int? VisitTaskTypeCount { get; set; }
 | |
|         public int? GlobalTaskTypeCount { get; set; }
 | |
|         public int? JudgeTaskTypeCount { get; set; }
 | |
| 
 | |
|         public int? OncologyTaskTypeCount { get; set; }
 | |
| 
 | |
|         [JsonIgnore]
 | |
|         public List<SubjectUserView> DoctorUserList { get; set; }
 | |
| 
 | |
|         public List<SubjectUserView> PreviousDoctorUserList => DoctorUserList.Where(t => t.ReplacedSubjectUserId != null).ToList();
 | |
| 
 | |
|         public List<SubjectUserView> NowDoctorUserList => DoctorUserList.Where(t => t.ReplacedSubjectUserId == null).ToList();
 | |
| 
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class SubjectUserView
 | |
|     {
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
|         public Guid Id { get; set; }
 | |
|         public DateTime? AssignTime { get; set; }
 | |
| 
 | |
|         public Guid DoctorUserId { get; set; }
 | |
|         public Arm ArmEnum { get; set; }
 | |
| 
 | |
|         public bool IsConfirmed { get; set; }
 | |
| 
 | |
|         //该属性有值 说明该医生被替换了 分配的时候 要过滤掉
 | |
|         public Guid? ReplacedSubjectUserId { get; set; }
 | |
| 
 | |
|         public UserSimpleInfo DoctorUser { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class SubjectUserDTO : SubjectUserView
 | |
|     {
 | |
|         public bool IsHaveReading { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class CancelSubjectAssignedDoctorCommand
 | |
|     {
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
|         public Guid DoctorUserId { get; set; }
 | |
|         public Arm ArmEnum { get; set; }
 | |
| 
 | |
| 
 | |
|         public bool IsCancelAssign { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class CancelSubjectDoctorCommand
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
|         public List<CancelSubjectAssignedDoctorCommand> CancelList { get; set; }
 | |
| 
 | |
|         public string Note { get; set; } = string.Empty;
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class SubjectAssignView
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
|         public Guid TrialSiteId { get; set; }
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public String TrialSiteCode { get; set; } = String.Empty;
 | |
|         public string SubjectCode { get; set; } = String.Empty;
 | |
| 
 | |
| 
 | |
|         public bool IsAssignedDoctorUser { get; set; }
 | |
| 
 | |
|         [JsonIgnore]
 | |
|         public bool IsJudge { get; set; }
 | |
| 
 | |
|         public bool IsConfirmed => DoctorUserList.Where(t => IsJudge ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).All(t => t.IsConfirmed)
 | |
|             && DoctorUserList.Where(t => IsJudge ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Count() > 0;
 | |
| 
 | |
|         public List<Guid> DoctorUserIdList => DoctorUserList.Select(t => t.DoctorUserId).ToList();
 | |
| 
 | |
|         //.ForEach(t => t.HistoryDoctorList = TotalDoctorUserList.Where(c => (Guid?)t.Id == c.OrignalSubjectUserId).ToList())
 | |
|         public List<AssignDoctorView> DoctorUserList => TotalDoctorUserList.Where(t => t.OrignalSubjectUserId == null).ToList()
 | |
|            ;
 | |
| 
 | |
|         [JsonIgnore]
 | |
|         public List<AssignDoctorView> TotalDoctorUserList { get; set; } = new List<AssignDoctorView>();
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class AssignDoctorView
 | |
|     {
 | |
|         public Guid Id { get; set; }
 | |
|         public Guid DoctorUserId { get; set; }
 | |
| 
 | |
|         public string UserCode { get; set; }
 | |
|         public string UserName { get; set; }
 | |
|         public string FullName { get; set; }
 | |
| 
 | |
|         public string UserTypeShortName { get; set; }
 | |
| 
 | |
|         public DateTime? AssignTime { get; set; }
 | |
| 
 | |
|         public Arm ArmEnum { get; set; }
 | |
| 
 | |
|         public bool IsConfirmed { get; set; }
 | |
| 
 | |
|         //该属性有值 说明该医生被替换了 分配的时候 要过滤掉
 | |
|         public Guid? OrignalSubjectUserId { get; set; }
 | |
| 
 | |
|         //public List<AssignDoctorView> HistoryDoctorList { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class AssginSubjectDoctorCommand
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public bool IsReAssign { get; set; }
 | |
| 
 | |
|         public List<Guid> SubjectIdList { get; set; }
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
| 
 | |
|         public List<DoctorArm> DoctorUserIdArmList { get; set; } = new List<DoctorArm>();
 | |
|     }
 | |
| 
 | |
|     public class DoctorArm
 | |
|     {
 | |
|         public Guid DoctorUserId { get; set; }
 | |
| 
 | |
|         public Arm ArmEnum { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class CancelSubjectAssignCommand
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
| 
 | |
|         public List<Guid> SubjectIdList { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class AutoAssignResultDTO
 | |
|     {
 | |
|         public Guid DoctorUserId { get; set; }
 | |
| 
 | |
|         public int PlanReadingRatio { get; set; }
 | |
| 
 | |
|         public List<SubjectArm> SubjectArmList { get; set; } = new List<SubjectArm>();
 | |
| 
 | |
|         public int SubjectCount { get; set; }
 | |
| 
 | |
|         public int Weight => (SubjectCount - SubjectArmList.Count) * PlanReadingRatio;
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public class SubjectArm
 | |
|     {
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public Arm ArmEnum { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class ApplySubjectCommand
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
| 
 | |
|         public List<Guid> SubjectIdList { get; set; } = new List<Guid>();
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class AssignConfirmCommand
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
| 
 | |
|         public List<SubjectDoctorCommand> SubjectDoctorUserList { get; set; } = new List<SubjectDoctorCommand>();
 | |
|     }
 | |
| 
 | |
|     public class SubjectDoctorCommand
 | |
|     {
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public List<DoctorArm> DoctorUserIdArmList { get; set; } = new List<DoctorArm>();
 | |
|     }
 | |
| 
 | |
|     public class AutoSubjectAssignCommand
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class AssignSubjectTaskToDoctorCommand
 | |
|     {
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public Guid SubjectId { get; set; }
 | |
| 
 | |
|         public bool IsJudgeDoctor { get; set; }
 | |
| 
 | |
|         public Guid? DoctorUserId { get; set; }
 | |
| 
 | |
|         public TaskOptType TaskOptType { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public class AIRReReadingCommand
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class ApplyReReadingCommand
 | |
|     {
 | |
| 
 | |
| 
 | |
|         public List<Guid> TaskIdList { get; set; }
 | |
| 
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public bool IsCopyOrigenalForms { get; set; }
 | |
|         public bool IsCopyFollowForms { get; set; }
 | |
| 
 | |
|         public RequestReReadingType RequestReReadingType { get; set; }
 | |
| 
 | |
|         public string RequestReReadingReason { get; set; } = string.Empty;
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class ConfirmReReadingCommand
 | |
|     {
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         public List<ConfirmReReadingDTO> ConfirmReReadingList { get; set; }
 | |
| 
 | |
|         public string RequestReReadingRejectReason { get; set; } = string.Empty;
 | |
|         public RequestReReadingResult RequestReReadingResultEnum { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class ConfirmReReadingDTO
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
|         //重阅原始任务Id  重阅会产生新的任务 
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid OriginalReReadingTaskId { get; set; }
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public enum TaskOptType
 | |
|     {
 | |
|         Assign = 1,
 | |
| 
 | |
|         ReAssign = 2,
 | |
| 
 | |
|         Confirm = 3,
 | |
| 
 | |
|         CancelAssign = 4,
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public class SetRandomTaskOrderCommand
 | |
|     {
 | |
|         [NotDefault]
 | |
|         public Guid TrialId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid TrialReadingCriterionId { get; set; }
 | |
| 
 | |
|         [NotDefault]
 | |
|         public Guid DoctorUserId { get; set; }
 | |
| 
 | |
|         public bool IsAutoSet { get; set; }
 | |
| 
 | |
|         public List<VisitTaskOrderCommand> SetList { get; set; }
 | |
|     }
 | |
| 
 | |
|     public class VisitTaskOrderCommand
 | |
|     {
 | |
|         public Guid Id { get; set; }
 | |
| 
 | |
|         public int? RandomOrder { get; set; }
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 |