using IRaCIS.Core.Domain.Share; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IRaCIS.Core.Application.Service.Reading.Dto { #region 获取计算问题 public class GetTrialClinicalQuestionCalculateRelationInDto { /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } } public class GetTrialClinicalQuestionCalculateRelationOutDto { public Guid QuestionId { get; set; } /// <summary> /// 问题名称 /// </summary> public string QuestionName { get; set; } /// <summary> /// 自定义计算标记 /// </summary> public ClinicalCalculateMark? CustomCalculateMark { get; set; } /// <summary> /// 数值类型 /// </summary> public ValueOfType? ValueType { get; set; } /// <summary> /// 单位 /// </summary> public ValueUnit? Unit { get; set; } /// <summary> /// 自定义单位 /// </summary> public string CustomUnit { get; set; } = string.Empty; public List<CalculateInfo> CalculateQuestionList { get; set; } } public class GetClinicalCalculateQuestionsOutDto { public Guid QuestionId { get; set; } public string QuestionName { get; set; } public List<CalculateQuestion> TableQuestions { get; set; } } public class GetClinicalCalculateQuestionsInDto { /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } /// <summary> /// 临床问题类型(分组,单选。) /// </summary> public string ClinicalQuestionType { get; set; } = string.Empty; } #endregion #region 预览 public class GetSystemClinicalQuestionPreviewDto { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } } public class GetTrialClinicalQuestionPreviewDto { /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } } /// <summary> /// 项目预览问题Dto /// </summary> public class ClinicalQuestionPreviewDto : TrialClinicalQuestionDto { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } public string Answer { get; set; } = string.Empty; public DateTime? CreateTime { get; set; } /// <summary> /// 子问题 /// </summary> public List<ClinicalQuestionPreviewDto> Childrens { get; set; } = new List<ClinicalQuestionPreviewDto>(); /// <summary> /// 关联问题 /// </summary> public List<ClinicalQuestionPreviewDto> RelationQuestions { get; set; } = new List<ClinicalQuestionPreviewDto>(); /// <summary> /// 表格问题 /// </summary> public List<ClinicalTablePreviewDto> TableQuestions { get; set; } = new List<ClinicalTablePreviewDto>(); public List<Dictionary<Guid,string>> TableAnswer { get; set; } } /// <summary> /// 项目临床数据问题 /// </summary> public class ClinicalTablePreviewDto : TrialClinicalTableQuestionDto { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } } #endregion #region 外层问题 /// <summary> /// 临床问题基本信息 /// </summary> public class ClinicalQuestionBase { /// <summary> /// Id /// </summary> public Guid? Id { get; set; } public bool IsVerify { get; set; } = false; /// <summary> /// 问题名称 /// </summary> public string QuestionName { get; set; } = string.Empty; /// <summary> /// 问题英文名称 /// </summary> public string QuestionEnName { get; set; } = string.Empty; /// <summary> /// 分组名称 /// </summary> public string? GroupName { get; set; } = string.Empty; /// <summary> /// 分组英文名称 /// </summary> public string? GroupEnName { get; set; } = string.Empty; /// <summary> /// 临床问题类型(分组,单选。) /// </summary> public string ClinicalQuestionType { get; set; } /// <summary> /// 问题标识 /// </summary> public ClinicalQuestionMark? ClinicalQuestionMarkEnum { get; set; } /// <summary> /// 最大长度 /// </summary> public int? MaxAnswerLength { get; set; } /// <summary> /// 最大行数 /// </summary> public int? MaxQuestionCount { get; set; } /// <summary> /// 临床数据选项类型(无,自定义) /// </summary> public ClinicalOptionType ClinicalOptionTypeEnum { get; set; } /// <summary> /// 分组Id /// </summary> public Guid? GroupId { get; set; } /// <summary> /// 自定义选项 /// </summary> public string TypeValue { get; set; } = string.Empty; /// <summary> /// 字典Code /// </summary> public string DictionaryCode { get; set; } = string.Empty; /// <summary> /// 排序 /// </summary> public int ShowOrder { get; set; } = 0; /// <summary> /// 是否必填 /// </summary> public IsRequired IsRequired { get; set; } /// <summary> /// 关联Value /// </summary> public string RelevanceValue { get; set; } = string.Empty; /// <summary> /// 关联ID /// </summary> public Guid? RelevanceId { get; set; } /// <summary> /// 父问题Id /// </summary> public Guid? ParentId { get; set; } /// <summary> /// 父问题触发值 /// </summary> public string ParentTriggerValue { get; set; } = string.Empty; /// <summary> /// 显示类型 /// </summary> public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; /// <summary> /// 是否是检查日期 /// </summary> public bool IsCheckDate { get; set; } /// <summary> /// 小数点位数 /// </summary> public int? DigitPlaces { get; set; } /// <summary> /// 单位 /// </summary> public string Unit { get; set; } = string.Empty; /// <summary> /// 自定义计算标记 /// </summary> public ClinicalCalculateMark? CustomCalculateMark { get; set; } /// <summary> /// 自定义计算问题 /// </summary> public string CalculateQuestions { get; set; } = "[]"; [NotMapped] public List<CalculateInfo> CalculateQuestionList { get { try { var result = JsonConvert.DeserializeObject<List<CalculateInfo>>(this.CalculateQuestions); return result == null ? new List<CalculateInfo>() : result; } catch (Exception) { return new List<CalculateInfo>(); } } } } /// <summary> /// 查询临床数据基类 /// </summary> public class ClinicalQuestionQueryBase : PageInput { /// <summary> /// 问题名称 /// </summary> public string QuestionName { get; set; } = string.Empty; } /// <summary> /// 获取项目临床数据 /// </summary> public class TrialClinicalQuestionQuery : ClinicalQuestionQueryBase { public Guid TrialClinicalId { get; set; } } /// <summary> /// 获取项目分组 /// </summary> public class GetTrialGroupDto { public Guid TrialClinicalId { get; set; } } /// <summary> /// 项目临床数据问题 /// </summary> public class TrialClinicalQuestionDto : ClinicalQuestionBase { /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } } /// <summary> /// 获取系统临床数据 /// </summary> public class SystemClinicalQuestionQuery : ClinicalQuestionQueryBase { public Guid SystemClinicalId { get; set; } } /// <summary> /// 系统临床数据问题 /// </summary> public class SystemClinicalQuestionDto : ClinicalQuestionBase { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } } /// <summary> /// 获取系统分组 /// </summary> public class GetSystemGroupDto { public Guid SystemClinicalId { get; set; } } public class GetClinicalOtherTableQuestionListInDto { public Guid QuestionId { get; set; } public Guid TableQuestionId { get; set; } } #endregion #region 表格问题 public class ClinicalTableQuestionBase { public Guid? Id { get; set; } public bool IsVerify { get; set; } = false; /// <summary> /// 问题名称 /// </summary> public string QuestionName { get; set; } = string.Empty; /// <summary> /// 问题英文名称 /// </summary> public string QuestionEnName { get; set; } = string.Empty; /// <summary> /// 临床问题类型(分组,单选。) /// </summary> public string ClinicalTableQuestionType { get; set; } /// <summary> /// 问题标识 /// </summary> public ClinicalTableQuestionMark? ClinicalTableQuestionMarkEnum { get; set; } /// <summary> /// 最大长度 /// </summary> public int? MaxAnswerLength { get; set; } /// <summary> /// 临床数据选项类型(无,自定义) /// </summary> public ClinicalOptionType ClinicalOptionTypeEnum { get; set; } /// <summary> /// 自定义选项 /// </summary> public string TypeValue { get; set; } /// <summary> /// 字典Code /// </summary> public string DictionaryCode { get; set; } = string.Empty; /// <summary> /// 排序 /// </summary> public int ShowOrder { get; set; } /// <summary> /// 是否必填 /// </summary> public IsRequired IsRequired { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime CreateTime { get; set; } /// <summary> /// 创建人 /// </summary> public Guid CreateUserId { get; set; } /// <summary> /// 外层问题Id /// </summary> public Guid QuestionId { get; set; } /// <summary> /// 小数点位数 /// </summary> public int? DigitPlaces { get; set; } /// <summary> /// 单位 /// </summary> public string Unit { get; set; } = string.Empty; /// <summary> /// 关联ID /// </summary> public Guid? RelevanceId { get; set; } /// <summary> /// 关联Value /// </summary> public string RelevanceValue { get { return string.Join(',', this.RelevanceValueList); } } public List<string> RelevanceValueList { get; set; } = new List<string>(); } /// <summary> /// 项目临床数据问题 /// </summary> public class TrialClinicalTableQuestionDto : ClinicalTableQuestionBase { /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } /// <summary> /// 自定义计算标记 /// </summary> public ClinicalCalculateMark? ClinicalCalculateMarkEnum { get; set; } /// <summary> /// 自定义计算问题 /// </summary> public string CalculateQuestions { get; set; } = "[]"; } /// <summary> /// 系统临床数据问题 /// </summary> public class SystemClinicalTableQuestionDto : ClinicalTableQuestionBase { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } } /// <summary> /// 查询临床数据基类 /// </summary> public class ClinicalTableQuestionQueryBase : PageInput { /// <summary> /// 问题名称 /// </summary> public string QuestionName { get; set; } = string.Empty; /// <summary> /// 外层问题Id /// </summary> public Guid QuestionId { get; set; } } /// <summary> /// 获取项目临床数据 /// </summary> public class TrialClinicalTableQuestionQuery : ClinicalTableQuestionQueryBase { } /// <summary> /// 获取系统临床数据 /// </summary> public class SystemClinicalTableQuestionQuery : ClinicalTableQuestionQueryBase { } #endregion #region 同步临床数据 public class TrialClinicalTableQuestionSynchronize : TrialClinicalTableQuestion { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } } public class TrialClinicalQuestionSynchronize : TrialClinicalQuestion { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } } public class SynchronizationQuestionDto { /// <summary> /// 系统临床数据Id /// </summary> public Guid SystemClinicalId { get; set; } /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } } public class QuestionDic { public Guid SystemQuestionId { get; set; } public Guid TrialQuestionId { get; set; } /// <summary> /// 项目临床数据Id /// </summary> public Guid TrialClinicalId { get; set; } } #endregion }