private void ImportDocument(Patient patient, MailAttachmentPatientDocumentDto dto)
        {
            var message = _imapMessageFetcher.FetchMessage(dto.MailFolderName, dto.MailId);

            if (message == null || message.Attachments.Count == 0)
            {
                throw new ApplicationException("Couldn't find the attachment.");
            }

            //TODO: Right now, only get the first attachment
            dto.Document = message.Attachments[0].ContentBytes;
            dto.FileName = message.Attachments[0].FileName;

            var patientDocumentType = _mappingHelper.MapLookupField <PatientDocumentType> (dto.PatientDocumentType);
            var patientDocument     = _patientDocumentFactory.CreatePatientDocument(patient, patientDocumentType, dto.Document, dto.FileName);

            var clinicalDateRange = new DateRange(dto.ClinicalStartDate, dto.ClinicalEndDate);

            patientDocument.ReviseClinicalDateRange(clinicalDateRange);
            patientDocument.ReviseDescription(dto.Description);
            patientDocument.ReviseDocumentProviderName(dto.DocumentProviderName);
            patientDocument.ReviseOtherDocumentTypeName(dto.OtherDocumentTypeName);

            _patientDocumentRepository.MakePersistent(patientDocument);
        }
        /// <summary>
        /// Creates the new.
        /// </summary>
        /// <param name="dto">The data transfer object.</param>
        /// <returns>A <see cref="Rem.Domain.Clinical.PatientModule.PatientDocument"/></returns>
        protected override PatientDocument CreateNew(MailAttachmentPatientDocumentDto dto)
        {
            var message = _imapMessageFetcher.FetchMessage(dto.MailFolderName, dto.MailId);

            if (message == null || message.Attachments.Count == 0)
            {
                throw new ApplicationException("Couldn't find the attachment.");
            }

            //TODO: Right now, only get the first attachment
            dto.Document = message.Attachments[0].ContentBytes;
            dto.FileName = message.Attachments[0].FileName;

            var patient             = _patientRepository.GetByKey(dto.PatientKey);
            var patientDocumentType = _mappingHelper.MapLookupField <PatientDocumentType> (dto.PatientDocumentType);
            var entity = _patientDocumentFactory.CreatePatientDocument(patient, patientDocumentType, dto.Document, dto.FileName);

            return(entity);
        }