using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lkfxdok.LKF
{
    public class Diagnose : AufenthaltChildData
    {

        public enum DiagPos : int { DIAG = 5, DIAGTYP = 6, DIAGART = 7, DIAGSTAT = 8, AUFNRFUCO = 9 };

        public Diagnose(Aufenthalt aufenthalt) : base (aufenthalt, "X03")
        {
            aufenthalt._AddDiagnose(this);
        }

        internal Diagnose(Aufenthalt aufenthalt, string line, uint pos) : base (aufenthalt, line)
        {
            _lastSyncIndex = (int)pos;
        }

        public Diagnose(Aufenthalt aufenthalt, string line) : base(aufenthalt, line, "X03")
        {
            aufenthalt._AddDiagnose(this);
        }

        public Diagnose(string diag, bool hauptdiagnose) : base (null, "X03")
        {
            DIAG = diag;
            DIAGTYP = hauptdiagnose ? "H" : "Z";
            DIAGART = "D";
        }

        public string DIAG
        {
            get
            {
                return _line[(int)DiagPos.DIAG];
            }
            set
            {
                _line[(int)DiagPos.DIAG] = value;
            }
        }

        public string DIAGTYP
        {
            get
            {
                return _line[(int)DiagPos.DIAGTYP];
            }
            set
            {
                _line[(int)DiagPos.DIAGTYP] = value;
            }
        }

        public string DIAGART
        {
            get
            {
                return _line[(int)DiagPos.DIAGART];
            }
            set
            {
                _line[(int)DiagPos.DIAGART] = value;
            }
        }

        public string DIAGSTAT
        {
            get
            {
                return _line[(int)DiagPos.DIAGSTAT];
            }
            set
            {
                _line[(int)DiagPos.DIAGSTAT] = value;
            }
        }

        public string AUFNRFUCO
        {
            get
            {
                return _line[(int)DiagPos.AUFNRFUCO];
            }
            set
            {
                _line[(int)DiagPos.AUFNRFUCO] = value;
            }
        }

        public string DIAGPOS
        {
            get
            {
                return GetAdditionalField(0);
            }
        }

        protected override int OfficialFieldCount
        {
            get
            {
                return 10;
            }
        }
    }
}
