using Microsoft.EntityFrameworkCore;
using Shentun.Peis.CollectItemTypes;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Entities.Auditing;
namespace Shentun.Peis.Models
{
    /// 
    /// 组合项目
    /// 
    [Table("asbitem")]
    [Index(nameof(DisplayName), Name = "ix_asbitem", IsUnique = true)]
    public class Asbitem : AuditedEntity, IDisplayName, IDisplayOrder, IHasConcurrencyStamp
    {
        public Asbitem(Guid id):base(id) { }
        public Asbitem()
        {
            AsbitemDetails = new HashSet();
            ChargeAsbitems = new HashSet();
            CustomerOrgGroupDetails = new HashSet();
            MedicalPackageDetails = new HashSet();
            RegisterCheckAsbitems = new HashSet();
            Rooms = new HashSet();
        }
        /// 
        /// 名称
        /// 
        [Column("display_name")]
        [StringLength(30)]
        public string DisplayName { get; set; } 
        /// 
        /// 简称
        /// 
        [Column("short_name")]
        [StringLength(20)]
        public string ShortName { get; set; }
        /// 
        /// 适用性别,M-男,F-女,A-全部
        /// 
        [Column("for_sex_id")]
        [MaxLength(1)]
        public char ForSexId { get; set; }
        /// 
        /// 婚姻状况
        /// 
        [Column("marital_status_id")]
        [MaxLength(1)]
        public char MaritalStatusId { get; set; }
        /// 
        /// 项目类别
        /// 
        [Column("item_type_id")]
        public Guid ItemTypeId { get; set; }
        /// 
        /// 价格
        /// 
        [Column("price")]
        [Precision(8, 2)]
        public decimal Price { get; set; }
        /// 
        /// 仪器类别
        /// 
        [Column("device_type_id")]
        public Guid? DeviceTypeId { get; set; }
        /// 
        ///// 发票类别
        ///// 
        //[Column("invoice_item_type_id")]
        //public Guid InvoiceItemTypeId { get; set; }
        /// 
        /// 汇总项目类别ID
        /// 
        [Column("collect_item_type_id")]
        public Guid CollectItemTypeId { get; set; }
        /// 
        /// 项目结果合并
        /// 
        [Column("is_item_result_merger")]
        [MaxLength(1)]
        public char IsItemResultMerger { get; set; }
        /// 
        /// 餐前项目
        /// 
        [Column("is_before_eat")]
        [MaxLength(1)]
        public char IsBeforeEat { get; set; }
        /// 
        /// 临床意义
        /// 
        [Column("clinical_meaning")]
        [StringLength(100)]
        public string ClinicalMeaning { get; set; }
        /// 
        /// 默认结果
        /// 
        [Column("default_result")]
        [StringLength(100)]
        public string DefaultResult { get; set; }
        /// 
        /// 候诊时间
        /// 
        [Column("queue_time")]
        [Precision(3, 1)]
        public decimal QueueTime { get; set; }
        /// 
        /// 启用诊断函数
        /// 
        [Column("is_diagnosis_function")]
        [MaxLength(1)]
        public char IsDiagnosisFunction { get; set; }
        /// 
        /// 诊断函数
        /// 
        [Column("diagnosis_function")]
        [MaxLength(4000)]
        public string DiagnosisFunction { get; set; }
        /// 
        /// 诊断函数处理完毕后继续处理
        /// 
        [Column("is_continue_process")]
        [MaxLength(1)]
        public char IsContinueProcess { get; set; }
        /// 
        /// 体检报告图片旋转90°
        /// 
        [Column("is_picture_rotate")]
        [MaxLength(1)]
        public char IsPictureRotate { get; set; }
        /// 
        /// 是否为检查项目
        /// 
        [Column("is_check")]
        [MaxLength(1)]
        public char IsCheck { get; set; }
        /// 
        /// 是否启用
        /// 
        [Column("is_active")]
        [MaxLength(1)]
        public char IsActive { get; set; }
        [Column("simple_code")]
        [StringLength(30)]
        public string SimpleCode { get; set; } = null!;
        [Column("display_order")]
        public int DisplayOrder { get; set; }
        /// 
        /// 条码模式  0-使用项目类别设置,1-打印人员登记号,2-不打印,默认值是0
        /// 
        [Column("barcode_mode")] 
        [MaxLength(1)]
        public char BarcodeMode { get; set; }
        /// 
        /// 是否支持网上预约
        /// 
        [Column("is_web_appoint")]
        [MaxLength(1)]
        public char IsWebAppoint { get; set; }
        /// 
        /// 疾病筛查类别
        /// 
        [Column("disease_screening_type_id")]
       
        public Guid? DiseaseScreeningTypeId { get; set; }
        /// 
        /// 警告事项
        /// 
        [MaxLength(100)]
        [Column("warn")]
        public string Warn { get; set; }
        /// 
        /// 备孕期间禁止检查
        /// 
        [MaxLength(1)]
        [Column("pregnant_flag")]
        public char PregnantFlag { get; set; }
        ///// 
        ///// 备孕期间禁止检查
        ///// 
        //[MaxLength(1)]
        //[Column("is_disable_prepare_pregnancy")]
        //public char IsDisablePreparePregnancy { get; set; }
        ///// 
        ///// 怀孕期间禁止检查
        ///// 
        //[MaxLength(1)]
        //[Column("is_disable_pregnancy")]
        //public char IsDisablePregnancy { get; set; }
        [Column("concurrency_stamp")]
        public string ConcurrencyStamp { get; set; }
        //[ForeignKey(nameof(InvoiceItemTypeId))]
        //[InverseProperty("Asbitems")]
        //public virtual InvoiceItemType InvoiceItemType { get; set; }
        [ForeignKey(nameof(CollectItemTypeId))]
        [InverseProperty("Asbitems")]
        public virtual CollectItemType CollectItemType { get; set; }
        [ForeignKey(nameof(ItemTypeId))]
        [InverseProperty("Asbitems")]
        public virtual ItemType ItemType { get; set; } = null!;
        [InverseProperty("Asbitem")]
        public virtual SampleGroupDetail SampleGroupDetail { get; set; } = null!;
        [InverseProperty(nameof(AsbitemDetail.Asbitem))]
        public virtual ICollection AsbitemDetails { get; set; }
        [InverseProperty(nameof(ChargeAsbitem.Asbitem))]
        public virtual ICollection ChargeAsbitems { get; set; }
        [InverseProperty(nameof(ChargeRequestAsbitem.Asbitem))]
        public virtual ICollection ChargeRequestAsbitems { get; set; }
        [InverseProperty(nameof(CustomerOrgGroupDetail.Asbitem))]
        public virtual ICollection CustomerOrgGroupDetails { get; set; }
        [InverseProperty(nameof(MedicalPackageDetail.Asbitem))]
        public virtual ICollection MedicalPackageDetails { get; set; }
        [InverseProperty(nameof(RegisterCheckAsbitem.Asbitem))]
        public virtual ICollection RegisterCheckAsbitems { get; set; }
        [ForeignKey("AsbitemId")]
        [InverseProperty(nameof(Room.Asbitems))]
        public virtual ICollection Rooms { get; set; }
 
        #region 审计属性
        //public DateTime CreationTime { get; set; }
        //public Guid? CreatorId { get; set; }
        //public Guid? LastModifierId { get; set; }
        //public DateTime? LastModificationTime { get; set; }
        //public Guid? DeleterId { get; set; }
        //public DateTime? DeletionTime { get; set; }
        //public bool IsDeleted { get; set; }
        //public override object[] GetKeys()
        //{
        //    return new object[] { AsbitemId };
        //}
        #endregion
    }
}