irc-netcore-api/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs

914 lines
23 KiB
C#

//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-06-07 14:10:54
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations.Schema;
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; }
/// <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 SiteId { get; set; }
public String TrialSiteCode { get; set; } = String.Empty;
public string SubjectCode { 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;
/// <summary>
/// 阅片工具
/// </summary>
public ReadingTool? ReadingTool { get; set; }
/// <summary>
/// 任务展示访视 读片任务显示是否顺序
/// </summary>
public bool IsReadingTaskViewInOrder { get; set; } = true;
/// <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; }
#endregion
public PIAuditState PIAuditState { get; set; }
public string NotAgreeReason { get; set; }
public string PIAuditNote { get; set; } = string.Empty;
public bool? IsEnrollment { get; set; }
public bool? IsPDConfirm { get; set; }
public List<string> PIAuditImagePathList { get; set; }
}
/// <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 bool? IsBaseline { get; set; }
public bool? IsEnrollmentConfirm { get; set; }
public PDStateEnum? PDState { get; set; }
}
public class UserSimpleInfo
{
public Guid UserId { get; set; }
public string UserCode { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public UserTypeEnum UserTypeEnum { get; set; }
//public string UserTypeShortName { get; set; }
}
public class JudgeVisitTaskView : VisitTaskView
{
public List<HistoryReadingDoctorUser> HistoryReadingDoctorUserList { get; set; }
}
public class PIReaingTaskView : ReadingTaskView
{
public Guid? FirstAuditUserId { get; set; }
public string FirstAuditUserName { get; set; }
public DateTime? FirstAuditTime { get; set; }
public Guid? LatestReplyUserId { get; set; }
public string LatestReplyUserName { get; set; }
public DateTime? LatestReplyTime { 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 class AnalysisTaskView : ReadingTaskView
{
public bool? IsSelfAnalysis { get; set; }
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 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 Guid? ClaimUserId { get; set; }
public string? ClaimUserName { get; set; }
public bool IsUrgent => UnReadTaskList.Any(t => t.IsUrgent);
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 List<IRUnreadTaskView> UnReadCanReadTaskList => UnReadTaskList.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)).ToList();
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; }
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 GetOrderReadingIQueryableInDto
{
public Guid TrialId { get; set; }
public Guid TrialReadingCriterionId { get; set; }
public string? SubjectCode { get; set; } = null;
public PageInput? Page { get; set; } = null;
}
public class VisitTaskQuery : PageInput
{
[NotDefault]
public Guid TrialId { get; set; }
public Guid? SiteId { 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 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 PIAuditState? PIAuditState { get; set; }
public string? FirstAuditUserName { get; set; }
public bool? IsWaitPIAudit { get; set; }
public string? LatestReplyUserName { get; set; }
public DateTime? FirstAuditTimeBegin { get; set; }
public DateTime? FirstAuditTimeEnd { get; set; }
public DateTime? LatestReplyTimeBegin { get; set; }
public DateTime? LatestReplyTimeEnd { get; set; }
}
public class PIAuditTaskEnrollOrPdCommand
{
[NotDefault]
public Guid VisitTaskId { get; set; }
public bool? IsEnrollment { get; set; }
public bool? IsPDConfirm { get; set; }
}
public class PIAuditTaskCommand
{
[NotDefault]
public Guid VisitTaskId { get; set; }
public string NotAgreeReason { get; set; }
public string PIAuditNote { get; set; } = string.Empty;
public List<string> PIAuditImagePathList { get; set; }
public PIAuditState PIAuditState { get; set; }
}
public class PIAuditTaskReplyCommand
{
[NotDefault]
public Guid VisitTaskId { get; set; }
public string ReplyContent { get; set; } = string.Empty;
}
public class PIAuditDialogQuery
{
[NotDefault]
public Guid VisitTaskId { get; set; }
}
public class ClinicalDataDialog
{
public Guid Id { get; set; }
public DateTime CreateTime { get; set; }
public string Content { get; set; }
}
public class PIAuditDialogListView : PIAuditTaskCommand
{
public string ReplyContent { get; set; } = string.Empty;
public bool? IsEnrollment { get; set; }
public bool? IsPDConfirm { get; set; }
public bool IsCurrentUser { get; set; }
public Guid CreateUserId { get; set; }
public string CreateUserName { get; set; }
public DateTime CreateTime { get; set; }
public UserTypeEnum UserTypeEnum { get; set; }
}
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? SiteId { 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? SiteId { get; set; }
public Guid? SubjectId { get; set; }
public Guid? DoctorUserId { get; set; }
public string SubjectCode { get; set; } = String.Empty;
[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 SiteId { 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.OrignalSubjectUserId != null).ToList();
public List<SubjectUserView> NowDoctorUserList => DoctorUserList.Where(t => t.OrignalSubjectUserId == 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? OrignalSubjectUserId { 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 SiteId { 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 ClaimSubjectDto
{
public bool IsInOrder { get; set; }
public Guid? VisitTaskId { get; set; }
public Guid TrialReadingCriterionId { get; set; }
public Guid SubejctId { get; set; }
public bool IsClaim { get; set; }
}
}