using System;
using System.ComponentModel;
using System.Runtime.Serialization;

namespace BS.Shared.DataContracts
{
	[DataContract]
	public class MedikamentenverordnungDC : IDataContract, INotifyPropertyChanged
	{
		private long? _MedikamentenverordnungOid;
		private long? _MedikamentenverordnungVersion;
		private MedArtDC _MedArt;
		private DarreichungsformDC _darreichungsform;
		private double _Morgens;
		private double _Mittags;
		private double _Abends;
		private double _Nachts;
		private int _DepotMenge;
		private DepotRhythmusDC _DepotRhythmus;
		private DateTime? _DepotErsterTag;
		private DateTime? _DepotNaechsterTag;
		private string _MedBemerkung;
		private string _MedName;
		private string _MedVerordnet;
		private DateTime? _Verordnungsdatum;

		[DataMember]
		public long? MedikamentenverordnungOid 
		{ 
			get { return _MedikamentenverordnungOid; }
			set
			{
				_MedikamentenverordnungOid = value;
				OnPropertyChanged("MedikamentenverordnungOid");
			}
		}
		[DataMember]
		public long? MedikamentenverordnungVersion 
		{
			get { return _MedikamentenverordnungVersion; }
			set
			{
				_MedikamentenverordnungVersion = value;
				OnPropertyChanged("MedikamentenverordnungVersion");
			} 
		}
		[DataMember]
		public MedArtDC MedArt
		{
			get { return _MedArt; }
			set
			{
				_MedArt = value;
				OnPropertyChanged("MedArt");
			}
		}
		[DataMember]
		public DarreichungsformDC Darreichungsform
		{
			get { return _darreichungsform; }
			set
			{
				_darreichungsform = value;
				OnPropertyChanged("Darreichungsform");
			}
		}
		[DataMember]
		public double Morgens
		{
			get { return _Morgens; }
			set
			{
				_Morgens = value;
				OnPropertyChanged("Morgens");
			}
		}
		[DataMember]
		public double Mittags
		{
			get { return _Mittags; }
			set
			{
				_Mittags = value;
				OnPropertyChanged("Mittags");
			}
		}
		[DataMember]
		public double Abends
		{
			get { return _Abends; }
			set
			{
				_Abends = value;
				OnPropertyChanged("Abends");
			}
		}
		[DataMember]
		public double Nachts
		{
			get { return _Nachts; }
			set
			{
				_Nachts = value;
				OnPropertyChanged("Nachts");
			}
		}
		[DataMember]
		public int DepotMenge
		{
			get { return _DepotMenge; }
			set
			{
				_DepotMenge = value;
				OnPropertyChanged("DepotMenge");
			}
		}
		[DataMember]
		public DepotRhythmusDC DepotRhythmus
		{
			get { return _DepotRhythmus; }
			set
			{
				_DepotRhythmus = value;
				OnPropertyChanged("DepotRhythmus");
			}
		}
		[DataMember]
		public DateTime? DepotErsterTag
		{
			get { return _DepotErsterTag; }
			set
			{
				_DepotErsterTag = value;
				OnPropertyChanged("DepotErsterTag");
			}
		}
		[DataMember]
		public DateTime? DepotNaechsterTag
		{
			get { return _DepotNaechsterTag; }
			set
			{
				_DepotNaechsterTag = value;
				OnPropertyChanged("DepotNaechsterTag");
			}
		}
		[DataMember]
		public string MedBemerkung
		{
			get { return _MedBemerkung; }
			set
			{
				_MedBemerkung = value;
				OnPropertyChanged("MedBemerkung");
			}
		}
		[DataMember]
		public string MedName
		{
			get { return _MedName; }
			set
			{
				_MedName = value;
				OnPropertyChanged("MedName");
			}
		}
		[DataMember]
		public string MedVerordnet
		{
			get { return _MedVerordnet; }
			set
			{
				_MedVerordnet = value;
				OnPropertyChanged("MedVerordnet");
			}
		}
		[DataMember]
		public DateTime? Verordnungsdatum
		{
			get { return _Verordnungsdatum; }
			set
			{
				_Verordnungsdatum = value;
				OnPropertyChanged("Verordnungsdatum");
			}
		}

		public event PropertyChangedEventHandler PropertyChanged;
		private void OnPropertyChanged(string propertyName)
		{
			var handler = PropertyChanged;
			if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
		}
	}
}
