using System; using IRaCIS.Core.Domain.Share; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Collections.Generic; using System.Linq; using IRaCIS.Core.Domain.Share.Reading; namespace IRaCIS.Core.Domain.Models { ///<summary> /// 项目阅片问题 ///</summary> [Table("ReadingQuestionTrial")] public class ReadingQuestionTrial : Entity, IAuditAdd { public bool IsAdditional { get; set; } /// <summary> /// 项目标准Id /// </summary> public Guid ReadingQuestionCriterionTrialId { get; set; } /// <summary> /// 项目Id /// </summary> public Guid TrialId { get; set; } /// <summary> /// 类型 /// </summary> public string Type { get; set; } = string.Empty; /// <summary> /// 父问题触发 /// </summary> public string ParentTriggerValue { get; set; } = string.Empty; /// <summary> /// 问题名称 /// </summary> public string QuestionName { get; set; } = string.Empty; /// <summary> /// 是否是必须 /// </summary> public IsRequired IsRequired { get; set; } /// <summary> /// 排序 /// </summary> public int ShowOrder { get; set; } /// <summary> /// 父问题ID /// </summary> public Guid? ParentId { get; set; } /// <summary> /// 类型值 /// </summary> public string TypeValue { get; set; } = string.Empty; public bool IsEnable { get; set; } /// <summary> /// 是否是裁判问题 /// </summary> public bool IsJudgeQuestion { get; set; } /// <summary> /// 病灶类型 /// </summary> public LesionType? LesionType { get; set; } /// <summary> /// 问题类型 /// </summary> public QuestionType? QuestionType { get; set; } /// <summary> /// 全局阅片显示类型 /// </summary> public GlobalReadingShowType GlobalReadingShowType { get; set; } = GlobalReadingShowType.NotShow; /// <summary> /// 转化显示类型 /// </summary> public ConvertShowType ConvertShowType { get; set; } = ConvertShowType.All; /// <summary> /// 备注 /// </summary> public string Remark { get; set; } = string.Empty; /// <summary> /// 分组 /// </summary> public string GroupName { get; set; } = string.Empty; /// <summary> /// 创建时间 /// </summary> public DateTime CreateTime { get; set; } /// <summary> /// 系统问题ID /// </summary> public Guid? ReadingQuestionSystemId { get; set; } /// <summary> /// 系统标准的ParentId /// </summary> public Guid? SystemParentId { get; set; } /// <summary> /// 答案分组 /// </summary> public string AnswerGroup { get; set; } = string.Empty; /// <summary> /// 答案组合 /// </summary> public string AnswerCombination { get; set; } = string.Empty; /// <summary> /// 裁判类型 /// </summary> public JudgeTypeEnum JudgeType { get; set; } = JudgeTypeEnum.AnswerDisaffinity; /// <summary> /// 创建人 /// </summary> public Guid CreateUserId { get; set; } /// <summary> /// 标准分页Id /// </summary> public Guid? ReadingCriterionPageId { get; set; } /// <summary> /// 关联ID /// </summary> public Guid? RelevanceId { get; set; } /// <summary> /// 关联Value /// </summary> public string RelevanceValue { get; set; }=string.Empty; /// <summary> /// 图片数量 /// </summary> public int ImageCount { get; set; } = 1; /// <summary> /// 是否显示 /// </summary> public ShowQuestion ShowQuestion { get; set; } = ShowQuestion.Show; /// <summary> /// 默认值 /// </summary> public string DefaultValue { get; set; } =string.Empty; /// <summary> /// 最大问题数 /// </summary> public int? MaxQuestionCount { get; set; } /// <summary> /// 最大答案长度 /// </summary> public int? MaxAnswerLength { get; set; } /// <summary> /// 文件类型 /// </summary> public string? FileType { get; set; } /// <summary> /// 是否显示在Dicom阅片中 /// </summary> public bool IsShowInDicom { get; set; } = false; /// <summary> /// 序号标记 /// </summary> public string OrderMark { get; set; } = string.Empty; /// <summary> /// 字典code /// </summary> public string DictionaryCode { get; set; } = string.Empty; /// <summary> /// 问题类型 /// </summary> public TableQuestionType? QuestionGenre { 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; /// <summary> /// 自定义计算标记 /// </summary> public CustomCalculateMark? CustomCalculateMark { get; set; } /// <summary> /// 限制编辑 /// </summary> public LimitEdit LimitEdit { get; set; } = LimitEdit.None; /// <summary> /// 限制显示 /// </summary> public LimitShow LimitShow { get; set; } = LimitShow.AllShow; /// <summary> /// 自定义计算标记 /// </summary> public string CalculateQuestions { get; set; } = "[]"; /// <summary> /// 数据来源 /// </summary> public DataSources DataSource { get; set; } = DataSources.ManualEntry; /// <summary> /// 问题英文名称 /// </summary> public string QuestionEnName { get; set; } = string.Empty; /// <summary> /// 问题英文分组 /// </summary> public string GroupEnName { get; set; } = string.Empty; /// <summary> /// 分类算法 /// </summary> public string ClassifyAlgorithms { get; set; } = string.Empty; /// <summary> /// 分类问题Id /// </summary> public Guid? ClassifyQuestionId { get; set; } /// <summary> /// 是否复制病灶 /// </summary> public bool IsCopyLesions { get; set; } = false; /// <summary> /// 分组ID /// </summary> public Guid? GroupId { get; set; } /// <summary> /// 分组分类 /// </summary> public GroupClassify? GroupClassify { get; set; } /// <summary> /// 问题分类 /// </summary> public QuestionClassify? QuestionClassify { get; set; } [JsonIgnore] [ForeignKey("GroupId")] public ReadingQuestionTrial GroupInfo { get; set; } /// <summary> /// 分页标准 /// </summary> [ForeignKey("ReadingCriterionPageId")] [JsonIgnore] public ReadingCriterionPage ReadingCriterionPage { get; set; } [JsonIgnore] [ForeignKey("ParentId")] public ReadingQuestionTrial ParentReadingQuestionTrial { get; set; } [JsonIgnore] [ForeignKey("RelevanceId")] public ReadingQuestionTrial RelevanceReadingQuestionTrial { get; set; } [JsonIgnore] [ForeignKey("ReadingQuestionCriterionTrialId")] public ReadingQuestionCriterionTrial ReadingQuestionCriterionTrial { get; set; } [JsonIgnore] public List<ReadingTableQuestionTrial> ReadingTableQuestionTrialList { get; set; } [NotMapped] public List<string> ParentTriggerValueList { get { try { return this.ParentTriggerValue.Split(',').ToList(); } catch (Exception) { return new List<string>(); } } } [NotMapped] public List<string> RelevanceValueList { get { try { return this.RelevanceValue.Split(',').ToList(); } catch (Exception) { return new List<string>(); } } } [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>(); } } } } public class CalculateInfo { public bool IsTable { get; set; } public Guid? QuestionId { get; set; } public Guid? TableQuestionId { get; set; } } }