/// <summary>
        /// Метод создает в БД новое обследование
        /// </summary>
        private IExamination CreateNewExamination(IObjectSpace os, IPatient patient, Guid id, ExaminationType type = null, bool allowEmptyFile = false)
        {
            IExamination examination = os.CreateObject<IExamination>();
            examination.ExaminationSoftType = os.FindObject<ExaminationSoftType>(CriteriaOperator.Parse("ExaminationSoftTypeId = ?", id));
            examination.Patient = os.GetObject<IPatient>(patient);

            examination.AllowEmptyOrNotExistsFile = allowEmptyFile;
            examination.TimeStart = DateTime.Now;
            // Создается новое обследование поэтому файла еще нет
            if (examination.ExaminationFile == null)
            {
                // заводим в базе файл
                //examination.ExaminationFile = os.CreateObject<FileSystemStoreObject>();
                examination.ExaminationFile = os.CreateObject<ExaminationFile>();
                examination.ExaminationFile.OwnerId = (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid;
                if (type != null)
                {
                    examination.ExaminationType = os.GetObjectByKey<ExaminationType>(type.Oid); //FindObject<ExaminationType>(CriteriaOperator.Parse("ExaminationTypeId = ?", type.));
                }

                // Применяем изменения
                os.CommitChanges();

                if (String.IsNullOrEmpty(examination.ObjectCode) == false)
                {
                    string fileName = examination.ObjectCode;
                    string fileExtension = examination.ExaminationSoftType.ExaminationFileExtension;

                    examination.ExaminationFile.FileName = Converters.GetFileNameWithoutInvalidChars(fileName, fileExtension);
                }
                else
                    throw new Exception("Examination invalid params");
            }

            os.CommitChanges(); // здесь создается пустой файл обследования

            while (os.IsCommitting) { Thread.Sleep(1000); } // ждем пока применятся изменения, не знаю зачем...

            //// Заполняем созданный файл заключения
            //// !!! ЗАПОЛНЯТЬ ЗАКЛЮЧЕНИЕ ПРИ СОЗДАНИИ НЕ НАДО !!!
            //ConclusionViewController conclusionController = Frame.GetController<ConclusionViewController>();
            //if (conclusionController != null)
            //{
            //    conclusionController.PopulateConclusionFile(examination);
            //}

            return examination;
        }
        /// <summary>
        /// Метод запускает новое обследование 
        /// </summary>
        /// <param name="module"></param>
        /// <param name="examination"></param>
        /// <param name="patient"></param>
        protected void NewExaminationExecute(IDynamicModule module, Guid id, IPatient patient, ExaminationType type = null, bool block = false)
        {
            ExecuteCommand command = ExecuteCommand.New;

            // Проверяем готовность модуля
            if (ModuleIsReady(module, id, command) == false) return;

            // Получаем представление содержащие объекты IExamination
            ListView list = GetListViewFromControllerByType(this, typeof(IExamination));

            // Получаем объектное пространство для данного представления
            IObjectSpace os = list.ObjectSpace;

            bool allowEmpty = (bool)module.DoVerb(VerboseCommand.AllowEmptyFile);

            // Создаем новое обследование
            IExamination examination = CreateNewExamination(list.ObjectSpace, patient, id, type, allowEmpty);

            ExecuteModule(module, command, os, examination);

            // переводим фокус на новый объект
            int count = list.CollectionSource.List.Count - 1;
            if (count > 0) list.CurrentObject = list.CollectionSource.List[count];

            //list.ObjectSpace.Refresh();

            // Блокируем доступ в БД если надо
            if (block == true)
            {
                WindowsFormsModule owner = Application.Modules.FirstOrDefault(form => form is WindowsFormsModule)
                    as WindowsFormsModule;

                //owner.BlockingAccessToDatabase(module, context);
            }
        }