using System;
using System.Collections.Generic;
using System.Text;

namespace Hims.Shared.EntityModels
{
    public class ListViewModel
    {
        /// <summary>
        /// Gets or sets the admission id.
        /// </summary>
        public int AdmissionId { get; set; }

        /// <summary>
        /// Gets or sets the encrypted admission id.
        /// </summary>
        public string EncryptedAdmissionId { get; set; }
        /// <summary>
        /// Gets or sets the wardid.
        /// </summary>
        public int? FloorId { get; set; }
        /// <summary>
        /// Gets or sets the discharge id.
        /// </summary>
        public int? DischargeId { get; set; }
        /// <summary>
        /// Gets or sets the patient mobile
        /// </summary>
        public string? FloorName { get; set; }
        /// <summary>
        /// Gets or sets the admission no.
        /// </summary>
        public string AdmissionNo { get; set; } = string.Empty;

        /// <summary>
        /// Gets or sets the admission date.
        /// </summary>
        public DateTime AdmissionDate { get; set; }

        /// <summary>
        /// Gets or sets the admission time.
        /// </summary>
        public TimeSpan? AdmissionTime { get; set; }

        /// <summary>
        /// Gets or sets the admission time string.
        /// </summary>
        public string AdmissionTimeString { get; set; }

        /// <summary>
        /// Gets or sets the provider id.
        /// </summary>
        public int ProviderId { get; set; }

        /// <summary>
        /// Gets or sets the provider name.
        /// </summary>
        public string ProviderName { get; set; }

        /// <summary>
        /// Gets or sets the provider gender.
        /// </summary>
        public string ProviderGender { get; set; }

        /// <summary>
        /// Gets or sets the provider age.
        /// </summary>
        public int ProviderAge { get; set; }

        /// <summary>
        /// Gets or sets the provider thumbnail url.
        /// </summary>
        public string? ProviderThumbnailUrl { get; set; }

        /// <summary>
        /// Gets or sets the department id.
        /// </summary>
        public int DepartmentId { get; set; }

        /// <summary>
        /// Gets or sets the department name.
        /// </summary>
        public string DepartmentName { get; set; }

        /// <summary>
        /// Gets or sets the patient id.
        /// </summary>
        public int PatientId { get; set; }

        /// <summary>
        /// Gets or sets the encrypted patient id.
        /// </summary>
        public string EncryptedPatientId { get; set; }
        /// <summary>
        /// Gets or sets the patient family member name.
        /// </summary>
        public string? FamilyMemberName { get; set; }

        /// <summary>
        /// Gets or sets the patient relation with family member.
        /// </summary>
        public string? Relation { get; set; }

        /// <summary>
        /// Gets or sets the patient name.
        /// </summary>
        public string PatientName { get; set; }

        /// <summary>
        /// Gets or sets the patient gender.
        /// </summary>
        public string PatientGender { get; set; }

        /// <summary>
        /// Gets or sets the patient mobile.
        /// </summary>
        public string PatientMobile { get; set; }

        /// <summary>
        /// Gets or sets the patient age.
        /// </summary>
        public int PatientAge { get; set; }

        /// <summary>
        /// Gets or sets the patient thumbnail url.
        /// </summary>
        public string? PatientThumbnailUrl { get; set; }

        /// <summary>
        /// Gets or sets the patient type.
        /// </summary>
        public char? PatientType { get; set; }

        /// <summary>
        /// Gets or sets the ward id.
        /// </summary>
        public int? WardId { get; set; }

        /// <summary>
        /// Gets or sets the room id.
        /// </summary>
        public int? RoomId { get; set; }

        /// <summary>
        /// Gets or sets the bed id.
        /// </summary>
        public int? BedId { get; set; }

        /// <summary>
        /// Gets or sets the ward name.
        /// </summary>
        public string WardName { get; set; }

        /// <summary>
        /// Gets or sets the room name.
        /// </summary>
        public string RoomName { get; set; }

        /// <summary>
        /// Gets or sets the bed number.
        /// </summary>
        public string BedNumber { get; set; }

        /// <summary>
        /// Gets or sets the patient family id.
        /// </summary>
        public int? PatientFamilyId { get; set; }

        /// <summary>
        /// Gets or sets the is discharged.
        /// </summary>
        public bool? IsDischarged { get; set; }

        /// <summary>
        /// Gets or sets the is maternity.
        /// </summary>
        public bool? IsMaternity { get; set; }

        /// <summary>
        /// Gets or sets the babys birth date.
        /// </summary>
        public DateTime? BabysBirthDate { get; set; }

        /// <summary>
        /// Gets or sets the babys birth time.
        /// </summary>
        public TimeSpan? BabysBirthTime { get; set; }

        /// <summary>
        /// Gets or sets the babys surgery type.
        /// </summary>
        public int? BabysSurgeryType { get; set; }

        /// <summary>
        /// Gets or sets the babys gender.
        /// </summary>
        public char? BabysGender { get; set; }

        /// <summary>
        /// Gets or sets the babys fathers name.
        /// </summary>
        public string BabysFathersName { get; set; } = string.Empty;

        /// <summary>
        /// Gets or sets the babys fathers name.
        /// </summary>
        public string BabysMothersAdmissionNo { get; set; } = string.Empty;

        /// <summary>
        /// Gets or sets the encounter id.
        /// </summary>
        public int? EncounterId { get; set; }

        /// <summary>
        /// Gets or sets the encounter type.
        /// </summary>
        public string? EncounterType { get; set; }

        /// <summary>
        /// Gets or sets the ready for discharge.
        /// </summary>
        public bool? ReadyforDischarge { get; set; }

        /// <summary>
        /// Gets or sets the admission notes.
        /// </summary>
        public string? AdmissionNotes { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether active.
        /// </summary>
        public bool? Active { get; set; }

        /// <summary>
        /// Gets or sets the created by.
        /// </summary>
        public int CreatedBy { get; set; }

        /// <summary>
        /// Gets or sets the created by name.
        /// </summary>
        public string CreatedByName { get; set; }

        /// <summary>
        /// Gets or sets the created by role name.
        /// </summary>
        public string CreatedByRoleName { get; set; }

        /// <summary>
        /// Gets or sets the created date.
        /// </summary>
        public DateTime CreatedDate { get; set; }

        /// <summary>
        /// Gets or sets the modified by.
        /// </summary>
        public int? ModifiedBy { get; set; }

        /// <summary>
        /// Gets or sets the modified date.
        /// </summary>
        public DateTime? ModifiedDate { get; set; }

        /// <summary>
        /// Gets or sets the modified by name.
        /// </summary>
        public string ModifiedByName { get; set; }

        /// <summary>
        /// Gets or sets the modified by role name.
        /// </summary>
        public string ModifiedByRoleName { get; set; }

        /// <summary>
        /// Gets or sets the surgery type id.
        /// </summary>
        public int? SurgeryTypeId { get; set; }

        /// <summary>
        /// Gets or sets the surgery name.
        /// </summary>
        public string SurgeryName { get; set; }

        /// <summary>
        /// Gets or sets the attendant name
        /// </summary>
        public string? AttendantName { get; set; }

        /// <summary>
        /// Gets or sets the attendant contact no
        /// </summary>
        public string? AttendantContactNo { get; set; }

        /// <summary>
        /// Gets or sets the attendant relation with patient
        /// </summary>
        public string? AttendantRelationWithPatient { get; set; }

        /// <summary>
        /// Gets or sets the discharge date.
        /// </summary>
        public DateTime? DischargeDate { get; set; }

        /// <summary>
        /// Gets or sets the discharge time.
        /// </summary>
        public TimeSpan? DischargeTime { get; set; }

        /// <summary>
        /// Gets or sets the discharge time string.
        /// </summary>
        public string DischargeTimeString { get; set; }

        /// <summary>
        /// Gets or sets the discharge status.
        /// </summary>
        public string DischargeStatus { get; set; }

        /// <summary>
        /// Gets or sets the paid amount.
        /// </summary>
        public decimal? PaidAmount { get; set; }

        /// <summary>
        /// Gets or sets the final amount.
        /// </summary>
        public decimal? FinalAmount { get; set; }

        /// <summary>
        /// Gets or sets the payment status.
        /// </summary>
        public string? PaymentStatus { get; set; }

        /// <summary>
        /// Gets or sets the is final bill.
        /// </summary>
        public bool? IsFinalBill { get; set; }

        /// <summary>
        /// Gets or sets the Log From.
        /// </summary>
        public short LogFrom { get; set; }

        /// <summary>
        /// Gets or sets the total items.
        /// </summary>
        /// <value>
        /// The total items.
        /// </value>
        public short TotalItems { get; set; }

        /// <summary>
        /// Gets or sets the UMR number.
        /// </summary>
        public string? UMRNo { get; set; }

        /// <summary>
        /// Gets or sets the internal medicine identifier.
        /// </summary>
        /// <value>
        /// The internal medicine identifier.
        /// </value>
        public int? InternalMedicineId { get; set; }

        /// <summary>
        /// Gets or sets the follow up days for ip.
        /// </summary>
        public int? FollowUpDaysForIp { get; set; }

        /// <summary>
        /// Gets or sets the expected discharge date.
        /// </summary>
        /// <value>
        /// The expected discharge date.
        /// </value>
        public DateTime? ExpectedDischargeDate { get; set; }

        ///// <summary>
        ///// Gets or sets the pending medicines.
        ///// </summary>
        ///// <value>
        ///// The pending medicines.
        ///// </value>
        //public int? PendingMedicines { get; set; }

        ///// <summary>
        ///// Gets or sets the progress report identifier.
        ///// </summary>
        ///// <value>
        ///// The progress report identifier.
        ///// </value>
        //public int? ProgressReportId { get; set; }


        /// <summary>
        /// Gets or sets the DischargeBy (AccountId).
        /// </summary>
        public int? DischargedBy { get; set; }

        /// <summary>
        /// Gets or sets the DischargeByRole (RoleName).
        /// or if  is provider then (DepartmentName)
        /// </summary>
        public string? DischargedByRole { get; set; }

        /// <summary>
        /// Gets or sets the DischargedByName
        /// name of person who updated the discharged date 
        /// </summary>
        public string? DischargedByName { get; set; }

        /// <summary>
        /// Gets or sets the visit type id.
        /// </summary>
        public int? VisitTypeId { get; set; }

        /// <summary>
        /// Gets or sets the is converted from op to ip.
        /// </summary>
        public bool? IsConvertedFromOPtoIp { get; set; }

        /// <summary>
        /// Gets or sets the patient priority identifier.
        /// </summary>
        /// <value>
        /// The patient priority identifier.
        /// </value>
        public int? PatientPriorityId { get; set; }

        /// <summary>
        /// Gets or sets the breakfast.
        /// </summary>
        /// <value>
        /// The breakfast.
        /// </value>
        public TimeSpan? Breakfast { get; set; }

        /// <summary>
        /// Gets or sets the lunch.
        /// </summary>
        /// <value>
        /// The lunch.
        /// </value>
        public TimeSpan? Lunch { get; set; }

        /// <summary>
        /// Gets or sets the dinner.
        /// </summary>
        /// <value>
        /// The dinner.
        /// </value>
        public TimeSpan? Dinner { get; set; }

        /// <summary>
        /// Gets or sets the breakfast.
        /// </summary>
        /// <value>
        /// The breakfast.
        /// </value>
        public string BreakfastStr { get; set; }

        /// <summary>
        /// Gets or sets the lunch.
        /// </summary>
        /// <value>
        /// The lunch.
        /// </value>
        public string LunchStr { get; set; }

        /// <summary>
        /// Gets or sets the dinner.
        /// </summary>
        /// <value>
        /// The dinner.
        /// </value>
        public string DinnerStr { get; set; }

        /// <summary>
        /// Gets or sets the location identifier.
        /// </summary>
        /// <value>
        /// The location identifier.
        /// </value>
        public int LocationId { get; set; }

        /// <summary>
        /// Gets or sets the name of the location.
        /// </summary>
        /// <value>
        /// The name of the location.
        /// </value>
        public string? LocationName { get; set; }

        /// <summary>
        /// Gets or sets the name of the BedStatus.
        /// </summary>
        /// <value>
        /// The name of the Bed Status.
        /// </value>
        public string? BedStatusName { get; set; }

        /// <summary>
        /// Gets or sets the BedStatus id.
        /// </summary>
        public int? BedStatusID { get; set; }
    }
}
