using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;

namespace Strata.Code.DataAccess.Models;

[PrimaryKey("BudgetConfigId", "DepartmentId", "ServiceLineId", "ChargeCodeId", "PatientClassId", "AgeCohortId", "MedicalSurgicalId")]
[Table("ChargeVolumeSpreads", Schema = "fp")]
public partial class ChargeVolumeSpread
{
    [Key]
    [Column("BudgetConfigID")]
    public int BudgetConfigId { get; set; }

    [Key]
    [Column("DepartmentID")]
    public int DepartmentId { get; set; }

    [Key]
    [Column("ServiceLineID")]
    public int ServiceLineId { get; set; }

    [Key]
    [Column("ChargeCodeID")]
    public int ChargeCodeId { get; set; }

    [Key]
    [Column("PatientClassID")]
    public int PatientClassId { get; set; }

    [Key]
    [Column("AgeCohortID")]
    public int AgeCohortId { get; set; }

    [Key]
    [Column("MedicalSurgicalID")]
    public int MedicalSurgicalId { get; set; }

    public bool IsInactive { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage01 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage02 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage03 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage04 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage05 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage06 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage07 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage08 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage09 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage10 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage11 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? SpreadPercentage12 { get; set; }

    [Column(TypeName = "decimal(18, 0)")]
    public decimal? TotalImportedValue { get; set; }

    [Column("SpreadHistoryGUID")]
    public Guid SpreadHistoryGuid { get; set; }

    [Column("GlobalSpreadID")]
    public int GlobalSpreadId { get; set; }

    [Column("ChargeEntityID")]
    public int ChargeEntityId { get; set; }

    [Column("MSDRGID")]
    public int Msdrgid { get; set; }

    [Column("UBRevCodeID")]
    public int UbrevCodeId { get; set; }

    [Column("CPTID")]
    public int Cptid { get; set; }

    [Column("ServiceProviderID")]
    public int ServiceProviderId { get; set; }

    [Column("ServiceProviderSpecialtyID")]
    public int ServiceProviderSpecialtyId { get; set; }

    [Column("BillingProviderID")]
    public int BillingProviderId { get; set; }

    [Column("BillingProviderSpecialtyID")]
    public int BillingProviderSpecialtyId { get; set; }

    [ForeignKey("DepartmentId")]
    [InverseProperty("ChargeVolumeSpreads")]
    public virtual DimDepartment Department { get; set; } = null!;

    [ForeignKey("SpreadHistoryGuid")]
    [InverseProperty("ChargeVolumeSpreads")]
    public virtual SpreadHistory SpreadHistory { get; set; } = null!;
}
