//-------------------------------------------------------------------- // 此代码由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; } /// /// 是否是一致性分析产生 /// public bool IsAnalysisCreate { get; set; } /// /// 加急类型 /// 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; } #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; /// /// 阅片工具 /// public ReadingTool? ReadingTool { get; set; } /// /// 任务展示访视 读片任务显示是否顺序 /// public ReadingOrder IsReadingTaskViewInOrder { get; set; } /// /// 阅片是否显示受试者信息 /// public bool IsReadingShowSubjectInfo { get; set; } = false; /// /// IR阅片页面是否可以查看既往任务结果 /// public bool IsReadingShowPreviousResults { get; set; } = false; public int? DigitPlaces { get; set; } = 2; public bool IseCRFShowInDicomReading { get; set; } = false; public CriterionType CriterionType { get; set; } ///// ///// 仲裁对象 ///// //public ArbitrationRule ArbitrationRule { get; set; } = ArbitrationRule.Reading; ///// ///// 阅片模式 ///// //public ReadingMethod ReadingType { get; set; } = ReadingMethod.Double; ///// ///// 全局阅片 ///// //public bool IsGlobalReading { get; set; } = true; ///// ///// 仲裁阅片 ///// //public bool IsArbitrationReading { get; set; } = true; ///// ///// 肿瘤学阅片 原字段 IsClinicalReading ///// //public bool IsOncologyReading { get; set; } #endregion } /// VisitTaskView 列表视图模型 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 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; } /// /// 是否手动生成 /// 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 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; } /// /// 是否是一致性分析产生 /// 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; } /// /// 是否存在未处理的反馈 /// public bool IsExistUnprocessedFeedback { get { return UnReadCanReadTaskList.Any(t => t.IsExistUnprocessedFeedback); } } public List UnReadCanReadTaskList { get; set; } = new List(); public List UnReadTaskList { get; set; } = new List(); } public class IRUnreadTaskView { public Guid Id { get; set; } public ReadingCategory ReadingCategory { get; set; } /// /// 是否是一致性分析产生 /// public bool IsAnalysisCreate { get; set; } /// /// 是否存在未处理的反馈 /// 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 { /// /// 未完成阅片量 /// public int UnReadTaskCount { get; set; } /// /// 完成阅片量 /// public int FinishTaskCount { get; set; } /// /// 未完成裁判任务数量 /// public int UnReadJudgeTaskCount { get; set; } /// /// 完成裁判任务数量 /// public int FinishJudgeTaskCount { get; set; } /// /// 建议完成时间 /// 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 ArmList { get; set; } = new List() { }; [NotDefault] public Guid TrialReadingCriterionId { get; set; } } public class BatchAssignDoctorToSubjectCommand { [NotDefault] public Guid TrialId { get; set; } [NotDefault] public Guid TrialReadingCriterionId { get; set; } public List SubjectIdList { get; set; } public List 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 DoctorUserList { get; set; } public List PreviousDoctorUserList => DoctorUserList.Where(t => t.ReplacedSubjectUserId != null).ToList(); public List 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 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 DoctorUserIdList => DoctorUserList.Select(t => t.DoctorUserId).ToList(); //.ForEach(t => t.HistoryDoctorList = TotalDoctorUserList.Where(c => (Guid?)t.Id == c.OrignalSubjectUserId).ToList()) public List DoctorUserList => TotalDoctorUserList.Where(t => t.OrignalSubjectUserId == null).ToList() ; [JsonIgnore] public List TotalDoctorUserList { get; set; } = new List(); } 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 HistoryDoctorList { get; set; } } public class AssginSubjectDoctorCommand { public Guid TrialId { get; set; } public bool IsReAssign { get; set; } public List SubjectIdList { get; set; } public bool IsJudgeDoctor { get; set; } public List DoctorUserIdArmList { get; set; } = new List(); } 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 SubjectIdList { get; set; } } public class AutoAssignResultDTO { public Guid DoctorUserId { get; set; } public int PlanReadingRatio { get; set; } public List SubjectArmList { get; set; } = new List(); 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 SubjectIdList { get; set; } = new List(); } public class AssignConfirmCommand { public Guid TrialId { get; set; } public bool IsJudgeDoctor { get; set; } public List SubjectDoctorUserList { get; set; } = new List(); } public class SubjectDoctorCommand { public Guid SubjectId { get; set; } public List DoctorUserIdArmList { get; set; } = new List(); } 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 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 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 SetList { get; set; } } public class VisitTaskOrderCommand { public Guid Id { get; set; } public int? RandomOrder { get; set; } } }