public void SetUp()
        {
            var container = new WindsorContainer().Install(new CommonInstaller());
            mStudyInfoProvider = container.Resolve<IStudyInfoProvider>();
            var patientInfoProvider = container.Resolve<IPatientInfoProvider>();

            mPatient = patientInfoProvider.GetPatientByBirthNumberAsync("151018/0012").Result;
        }
        /// <summary>
        /// Instantiates new instance of <see cref="StudyTypeHandler"/>.
        /// </summary>
        /// <param name="studyInfoProvider">Provides methods for retrieving the studies</param>
        /// <param name="patientInfoProvider">Provides methods for retrieving the patients</param>
        /// <exception cref="ArgumentNullException"><paramref name="studyInfoProvider"/> is <see langword="null"/> -or- <paramref name="patientInfoProvider"/> is <see langword="null"/></exception>
        public StudyTypeHandler(IStudyInfoProvider studyInfoProvider, IPatientInfoProvider patientInfoProvider)
        {
            if (studyInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(studyInfoProvider));
            }
            if (patientInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(patientInfoProvider));
            }

            mStudyInfoProvider = studyInfoProvider;
            mPatientInfoProvider = patientInfoProvider;
        }
        /// <summary>
        /// Instantiates new instance of <see cref="SeriesTypeHandler" />.
        /// </summary>
        /// <param name="seriesInfoProvider">Provides methods for retrieving the studies</param>
        /// <param name="studyInfoProvider">Provides methods for retrieving the studies</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="seriesInfoProvider" /> is <see langword="null" /> -or-
        /// <paramref name="studyInfoProvider" /> is <see langword="null" />
        /// </exception>
        public SeriesTypeHandler(ISeriesInfoProvider seriesInfoProvider, IStudyInfoProvider studyInfoProvider)
        {
            if (seriesInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(seriesInfoProvider));
            }
            if (studyInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(studyInfoProvider));
            }

            mSeriesInfoProvider = seriesInfoProvider;
            mStudyInfoProvider = studyInfoProvider;
        }
        /// <summary>
        /// Instantiates new instance of <see cref="TypeHandlerSelector"/>.
        /// </summary>
        /// <param name="patientInfoProvider">Provides methods for retrieving the patients</param>
        /// <param name="studyInfoProvider">Provides methods for retrieving the studies</param>
        /// <param name="seriesInfoProvider">Provides methods for retrieving the series</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="patientInfoProvider"/> is <see langword="null"/> -or- 
        /// <paramref name="studyInfoProvider"/> is <see langword="null"/> -or- 
        /// <paramref name="seriesInfoProvider"/> is <see langword="null"/>
        /// </exception>
        public TypeHandlerSelector(IPatientInfoProvider patientInfoProvider, IStudyInfoProvider studyInfoProvider, ISeriesInfoProvider seriesInfoProvider)
        {
            if (patientInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(patientInfoProvider));
            }
            if (studyInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(studyInfoProvider));
            }
            if (seriesInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(seriesInfoProvider));
            }

            mPatientInfoProvider = patientInfoProvider;
            mStudyInfoProvider = studyInfoProvider;
            mSeriesInfoProvider = seriesInfoProvider;
        }
        /// <summary>
        /// Initializes new instance of <see cref="PatientInfoProvider"/>.
        /// </summary>
        /// <param name="dicomQueryProvider">Provides method for creating new instance of <see cref="DicomQuery{PatientInfo}" /></param>
        /// <param name="studyInfoProvider">Provides ability to download images from the server</param>
        /// <param name="birthNumberParser">Service for parsing czech birth numbers</param>
        /// <exception cref="ArgumentNullException"><paramref name="dicomQueryProvider"/> is <see langword="null"/> -or- <paramref name="studyInfoProvider"/> is <see langword="null"/>-or- <paramref name="birthNumberParser"/> is <see langword="null"/></exception>
        public PatientInfoProvider([NotNull] IDicomQueryProvider<PatientInfo> dicomQueryProvider, [NotNull] IStudyInfoProvider studyInfoProvider, [NotNull] IBirthNumberParser birthNumberParser)
        {
            if (dicomQueryProvider == null)
            {
                throw new ArgumentNullException(nameof(dicomQueryProvider));
            }
            if (studyInfoProvider == null)
            {
                throw new ArgumentNullException(nameof(studyInfoProvider));
            }
            if (birthNumberParser == null)
            {
                throw new ArgumentNullException(nameof(birthNumberParser));
            }

            mDicomQueryProvider = dicomQueryProvider;
            mStudyInfoProvider = studyInfoProvider;
            mBirthNumberParser = birthNumberParser;
        }