コード例 #1
0
        /// <summary>
        /// Метод удаляет объект обследования
        /// http://www.devexpress.com/Support/Center/Question/Details/Q224542
        /// </summary>
        /// <param name="examination">Удаляемое обследование</param>
        public bool TryToDeleteExamination(IExamination examination)
        {
            bool result = false;

            CriteriaOperator criteria = ObjectSpace.ParseCriteria(string.Format("[OwnerId] = '{0}'",
                    (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid));

            if (FileObjectReadyToDelete(examination, criteria) == true && examination.IsBusy==false) // Проверяем возможность удаления обследования
            {
                try
                {
                    ObjectSpace.Delete(examination); // Удаляем обследование
                    ObjectSpace.CommitChanges();

                    result = true;
                }
                catch (Exception)
                {
                    ObjectSpace.Rollback();
                    return false;
                }

                try
                {
                    // По возможности находим и пытаемся удалить файлы обследования
                    ObjectSpace.Delete(ObjectSpace.GetObjects<FileSystemStoreObject>(criteria));
                    ObjectSpace.CommitChanges();
                } catch (Exception) {}

            }

            return result;
        }
コード例 #2
0
 public ExaminationController(IExamination examinationBL, IUser userBL, IExampaper exampaperBL,
                              IDepartment department, IQuestion questionBL, IExamTest examTestBL)
 {
     _examinationBL = examinationBL;
     _userBL        = userBL;
     _exampaperBL   = exampaperBL;
     _departmentBL  = department;
     _questionBL    = questionBL;
     _examTestBL    = examTestBL;
 }
コード例 #3
0
 public ExamTestController(IExamTest examTestBL, IExamination examinationBL, IExampaper exampaperBL, ICo_CoursePaper _ICoCoursePaperBL, ICo_Course _ICourseBl, ICourseOrder _CourseOrderBL, ICl_CpaLearnStatus _ICpaLearnStatusBL, ICl_LearnVideoInfor _IClLearnVideoInforBL, AttendceBL _IAttendceBL)
 {
     ExamTestBL           = examTestBL;
     ExaminationBL        = examinationBL;
     ExampaperBL          = exampaperBL;
     ICoCoursePaperBL     = _ICoCoursePaperBL;
     ICourseBl            = _ICourseBl;
     CourseOrderBL        = _CourseOrderBL;
     ICpaLearnStatusBL    = _ICpaLearnStatusBL;
     IClLearnVideoInforBL = _IClLearnVideoInforBL;
     IAttendceBL          = _IAttendceBL;
 }
コード例 #4
0
 public TeacherCourseController(ICourseOrder _CourseOrderBL, ICo_Course _CoCourseBL, ICl_Attendce _ClAttendceBL, ICl_CourseAdvice _ClCourseAdviceBL, ISurveyQuestion _ISurveyQuestionBL, ISurveyQuestionAnswer _ISurveyQuestionAnswerBL, ISurveyReplyAnswer _ISurveyReplyAnswerBL, ICo_CourseResource _ICoCourseResourceBL, IUser _IuserBL, IExamination _IExaminationBL)
 {
     CourseOrderBL           = _CourseOrderBL;
     CoCourseBL              = _CoCourseBL;
     ClAttendceBL            = _ClAttendceBL;
     ClCourseAdviceBL        = _ClCourseAdviceBL;
     ISurveyQuestionBL       = _ISurveyQuestionBL;
     ISurveyQuestionAnswerBL = _ISurveyQuestionAnswerBL;
     ISurveyReplyAnswerBL    = _ISurveyReplyAnswerBL;
     ICoCourseResourceBL     = _ICoCourseResourceBL;
     IuserBL        = _IuserBL;
     IExaminationBL = _IExaminationBL;
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: SmartLinli/LearningCSharp
        static void Main()
        {
            WrittenExaminationBuilder englishExamBuilder = new WrittenExaminationBuilder();             //定义建造者;
            IExamination englishExam = englishExamBuilder.Build();                                      //建造产品;

            englishExam.ShowResult();

            HonestyExaminationDirector militaryExamDirector = new HonestyExaminationDirector();         //定义指挥者;
            IExamination militaryExam = militaryExamDirector.Construct();                               //构建产品;

            militaryExam.ShowResult();

            Console.ReadLine();
        }
コード例 #6
0
        //
        public void ExaminationViewChanged(IExamination examination)
        {
            foreach (var action in Actions)
            {
                if (action.Enabled.Contains("AllowDelete") == true)
                {
                    if (examination != null)
                        action.Enabled.SetItemValue("AllowDelete", false);
                    else
                        action.Enabled.SetItemValue("AllowDelete", true);

                }
            }
        }
コード例 #7
0
        public void FillExaminationConclusion(IExamination examination)
        {
            try
            {
                string conclutionFileName = examination.ConclusionFile.RealFileName;
                IOrganization organization = View.ObjectSpace.FindObject<IOrganization>(null);
                // получаем данные из БД
                Dictionary<string, string> dictionary = GetExaminationData(examination, organization);
                //заполняем Бланк заключения данными из БД
                //FillRtfTemplate(conclutionFileName, dictionary);
                DocumentServer.DocumentMailMerge(dictionary, conclutionFileName, examination.Patient.FullName);
                examination.IsPopulatedConclusion = true;

            }
            catch (Exception)
            {
                string message = CaptionHelper.GetLocalizedText("Exceptions\\FileProcessing", "FillExaminationConclusion");

                XtraMessageBox.Show(message, Application.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
        }
コード例 #8
0
        /// <summary>
        /// Заполняем Action для открытия/дозаписи
        /// </summary>
        public void ControlActionByByCurrentExaminationsoftType(IExamination examination)
        {
            if (examination == null) return;

            //получаме модуль для выбраного обследования
            IDynamicModule module = WindowsFormsModule.DynamicModuleManager.
                           GetModuleByAssociationAttributeID("ExaminationType", examination.ExaminationSoftType.ExaminationSoftTypeId);

            if (module != null)
            {
                SingleChoiceAction action = this.Actions.FirstOrDefault(a => a.Id == "ResumeOpenExamination") as SingleChoiceAction;
                if (action != null)
                {
                    action.Enabled.SetItemValue("IsBusy", examination.IsBusy == false);
                    action.Items.Clear();
                    // забираем у модуля список настроек SingleChoiceAction-а
                    IEnumerable<ModuleActionInformation> informations = ModuleGetModeInformationDoVerb(module);
                    if (informations != null)
                    {
                        foreach (var info in informations)
                        {
                            string caption = CaptionHelper.GetLocalizedText("Plugins", info.Caption);
                            ChoiceActionItem item = new ChoiceActionItem
                            {
                                Id = info.Id,
                                Caption = String.IsNullOrEmpty(caption) == false ? caption : info.Caption,
                                Data = info.Data,
                                ImageName = info.ImageName
                            };

                            action.Items.Add(item);
                        }
                    }
                }
            }
        }
コード例 #9
0
        /// <summary>
        /// Проверяем статус файлов обследования 
        /// </summary>
        private bool FileObjectReadyToDelete(IExamination examination, CriteriaOperator criteria)
        {
            bool readyToDelete = true;

            foreach (FileSystemStoreObject file in ObjectSpace.GetObjects<FileSystemStoreObject>(criteria))
            {
                //if (CommonData.FileWatcher.GetFileStatus(file.RealFileName) == true)
                if(FileWatcher.GetFileState(file.RealFileName)==FileState.Open)
                {
                    // Если один из файлов обследования открыт во внешней программе
                    // то считаем что все обследование не доступно для удаления
                    readyToDelete = false;
                    break;
                }
            }
            return readyToDelete;
        }
コード例 #10
0
ファイル: IExamination.cs プロジェクト: Rukhlov/DataStudio
        public static void AfterConstruction(IExamination examination, IObjectSpace os)
        {
            examination.Examiner = os.GetObjectByKey<Employee>(SecuritySystem.CurrentUserId);

            examination.Anamnesis = String.Empty;
            examination.Description = String.Empty;
            examination.Drugs = String.Empty;

            examination.IsPopulatedConclusion = false;

            if (examination.ConclusionFile == null)
            {
                //examination.ConclusionFile = os.CreateObject<FileSystemStoreObject>();
                examination.ConclusionFile = os.CreateObject<ConclusionFile>();
                var conclusion = examination.ConclusionFile;
                conclusion.FileName = "Conclusion.rtf";
                conclusion.OwnerId = (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid;

                var organization = os.FindObject<IOrganization>(null);
                if (organization != null)
                {
                    var template = organization.ConclusionTemplate;
                    if (template != null)
                    {
                        CreateFromTemplate(template, conclusion);
                    }
                }

                examination.ExaminationNotes = os.CreateObject<IExaminationNotes>();
            }
        }
コード例 #11
0
        /// <summary>
        /// Метод пытается удалить файлы обследования
        /// http://www.devexpress.com/Support/Center/Question/Details/Q224542
        /// http://www.devexpress.com/Support/Center/Question/Details/B39797
        /// </summary>
        /// <param name="examination">Обследование</param>
        private bool TryToDeleteExaminationFiles(IExamination examination)
        {
            bool result = false;
            try
            {
                CriteriaOperator criteria = ObjectSpace.ParseCriteria(string.Format("[OwnerId] = '{0}'",
                    (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid));

                // Находим и пытаемся удалить все файлы для данного обследования
                ObjectSpace.Delete(ObjectSpace.GetObjects<FileSystemStoreObject>(criteria));

                // Делаем коммиты в базу
                ((XPObjectSpace)ObjectSpace).Session.CommitTransaction();
                ((XPObjectSpace)ObjectSpace).Session.FlushChanges(); // <-- х.з почему работает только так

                ObjectSpace.CommitChanges();
                result = true;
            }
            catch (Exception) { ObjectSpace.Rollback(); result = false; }
            return result;
        }
コード例 #12
0
ファイル: IExamination.cs プロジェクト: Rukhlov/DataStudio
        public static IList<FileSystemStoreObject> Get_Attachments(IExamination examination, IObjectSpace objectSpace)
        {
            IList<FileSystemStoreObject> collection = null;

            var accept = CriteriaOperator.Parse("OwnerId = ?", objectSpace.GetKeyValue(examination));

            if ((SecuritySystem.CurrentUser as Employee).PermitToConclusion == true)
            {
                collection = objectSpace.GetObjects<FileSystemStoreObject>(accept);
            }
            else
            {// скрываем файл заключения если у пользователя нет прав
                var conclusion = examination.ConclusionFile;
                var except = CriteriaOperator.Parse("Oid != ?", objectSpace.GetKeyValue(conclusion));
                collection = objectSpace.GetObjects<FileSystemStoreObject>(CriteriaOperator.And(accept, except));
            }

            return collection;
        }
コード例 #13
0
        private void RestoreConclusionFromTemplate(IExamination examination, IOrganization organization, bool PopulateRequired = true)
        {
            FileSystemStoreObject template = organization.ConclusionTemplate;
            if (template != null)
            {
                try
                {
                    ////CopyToStoreObject(template.RealFileName, examination.ConclusionFile);
                    //CopyToFile(template.RealFileName, examination.ConclusionFile.RealFileName);

                    if (PopulateRequired == true)
                    {// если требуется заполнить восстановленый шаблон
                        Dictionary<string, string> dictionary = GetExaminationData(examination, organization);
                        DocumentServer.RestoreFromTemplate(template.RealFileName, examination.ConclusionFile.RealFileName, dictionary, examination.Patient.FullName);
                        examination.IsPopulatedConclusion = true;
                    }
                    else
                    {
                        DocumentServer.RestoreFromTemplate(template.RealFileName, examination.ConclusionFile.RealFileName, examination.Patient.FullName);

                        examination.IsPopulatedConclusion = false;
                    }
                    //View.ObjectSpace.CommitChanges();
                }
                catch (IOException)
                {
                    string message = CaptionHelper.GetLocalizedText("Exceptions\\FileProcessing", "FileOpenInExternalProgram");

                    XtraMessageBox.Show(message, Application.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception)
                {
                    string message = CaptionHelper.GetLocalizedText("Exceptions\\FileProcessing", "UnknownFileProcessingError");
                    XtraMessageBox.Show(message, Application.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
            }
        }
コード例 #14
0
        private bool CheckExaminationFilesStatus(IExamination examination)
        {
            bool readyToDelete = true;
            CriteriaOperator criteria = ObjectSpace.ParseCriteria(string.Format("[OwnerId] = '{0}'",
                (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid));

            foreach (FileSystemStoreObject file in ObjectSpace.GetObjects<FileSystemStoreObject>(criteria))
            {
                //if (CommonData.FileWatcher.GetFileStatus(file.RealFileName) == true)
                if (FileWatcher.GetFileState(file.RealFileName) == FileState.Open)
                {
                    readyToDelete = false;
                    break;
                }
            }
            return readyToDelete;
        }
コード例 #15
0
 /// <summary>
 /// Метод обновляет представление содержащее IExamination examination 
 /// </summary>
 private bool TryToGetRefreshedView(IExamination examination, out ListView list)
 {
     bool result = false;
     list = GetListViewFromControllerByType(this, typeof(IExamination));
     if (list != null)
     {
         result = TryToRefreshView(examination, list);
     }
     return result;
 }
コード例 #16
0
        private void NewPatientImportExamination()
        {
            importExamination = Application.MainWindow.View.ObjectSpace.CreateObject<IExamination>();
            importExamination.Status = ExaminationStatus.Registered;

            //DateTime examDateTime = ConcatenateDateAndTime(GetValueByID(importFileHeader, "ExamDate"), GetValueByID(importFileHeader, "ExamTime"));

            importExamination.TimeStart = importData.StartExaminationDateTime;
            importExamination.TimeStop = importData.EndExaminationDateTime;

            Guid examinationSoftTypeId = GetAssociationAttributeIdFromModuleByFileExtension(dynamicModule, Path.GetExtension(importFileFullName).ToLower());
            importExamination.ExaminationSoftType = Application.MainWindow.View.ObjectSpace.FindObject<ExaminationSoftType>
                (CriteriaOperator.Parse("ExaminationSoftTypeId = ?", examinationSoftTypeId));

            Application.MainWindow.View.ObjectSpace.CommitChanges();

            //importExamination.ExaminationFile = Application.MainWindow.View.ObjectSpace.CreateObject<FileSystemStoreObject>();
            importExamination.ExaminationFile = Application.MainWindow.View.ObjectSpace.CreateObject<ExaminationFile>();
            importExamination.ExaminationFile.FileName = importExamination.ObjectCode.Replace('/', '.') +
                importExamination.ExaminationSoftType.ExaminationFileExtension;
            importExamination.ExaminationFile.OwnerId = (importExamination as DevExpress.ExpressApp.DC.DCBaseObject).Oid;

            Application.MainWindow.View.ObjectSpace.CommitChanges();

            //TransferExaminationFile(fileFullName, importExamination.ExaminationFile);

            UploadExaminationFile();
        }
コード例 #17
0
 private void SetCurrentExamination(IExamination exam, DevExpress.ExpressApp.ListView list)
 {
     if (exam != null)
     {
         list.CurrentObject = list.ObjectSpace.FindObject<IExamination>(CriteriaOperator.Parse(string.Format("[ObjectCode] = '{0}'", exam.ObjectCode)));
     }
 }
コード例 #18
0
        /// <summary>
        /// Получаем данные из БД для записи в шаблон
        /// </summary>
        public Dictionary<string, string> GetExaminationData(IExamination examination, IOrganization organization)
        {
            Dictionary<string, string> dictionary = new Dictionary<string, string>();

            AddText("DEVICE", "", dictionary);//DEVICE

            ExaminationSoftType softType = examination.ExaminationSoftType;
            if (softType != null)
            {
                AddText("EXAMINATION_SOFT_TYPE", softType.Name, dictionary);//ExaminationSoftType
            }

            FileSystemStoreObject examilationFile = examination.ExaminationFile;
            if (examilationFile != null)
            {
                AddText("FILE_NAME", examilationFile.FileName, dictionary);//FILE_NAME
            }

            IPatient patient = examination.Patient;
            if (patient != null)
            {
                //AddText("пациент_полное_имя", CommonData.RTFData.GetRTFString(patient.FullName), dictionary);//PATIENT_FULLNAME
                AddText("PATIENT_CODE", RTFData.GetRTFString(patient.RegCode), dictionary);//PATIENT_CODE
                AddText("PATIENT_FULLNAME", RTFData.GetRTFString(patient.FullName), dictionary);//PATIENT_FULLNAME
                AddText("DOB", RTFData.GetRTFString(patient.Birthday.ToString("dd/MM/yyyy")), dictionary);//DOB

                EnumDescriptor descriptor = new EnumDescriptor(typeof(DomainComponents.Common.Gender));
                string gender = descriptor.GetCaption(patient.Gender);
                AddText("GENDER", RTFData.GetRTFString(gender), dictionary);//GENDER

                AddText("ADDRESS", RTFData.GetRTFString(patient.RegistrationAddress.Address), dictionary);//ADDRESS

                AddText("PHONE", RTFData.GetRTFString(patient.MainPhone), dictionary);//PHONE
                AddText("JOB", RTFData.GetRTFString(patient.JobTitle), dictionary);//JOB

                AddText("DOCUMENT", RTFData.GetRTFString(patient.IdentifyCardInfo), dictionary);//DOCUMENT
                AddText("HISTORY", RTFData.GetRTFString(patient.DiseaseHistory), dictionary);//HISTORY

                AddText("AGE", RTFData.GetRTFString(patient.Age), dictionary);//AGE

                AddPicture("PHOTO_PICTURE", patient.Photo, dictionary); // PHOTO
            }

            AddText("REG_DATE", RTFData.GetRTFString(examination.RegDate.ToString("dd.MM.yyyy")), dictionary);//DATE
            AddText("REG_TIME", RTFData.GetRTFString(examination.RegDate.ToString("HH:mm")), dictionary);//TIME
            AddText("DIAGNOSIS", RTFData.GetRTFString(examination.Diagnosis), dictionary);//DIAGNOSIS
            AddText("EXAMINER_FULLNAME", RTFData.GetRTFString(examination.Examiner.UserName), dictionary);//EXAMINER

            if (organization != null)
            {
                AddPicture("LOGO_PICTURE", organization.Logo, dictionary); //LOGO
                AddText("ORGANIZATION_NAME", organization.OrganizationName, dictionary);//ORGANIZATION_NAME
            }

            Employee currentUser = SecuritySystem.CurrentUser as Employee;
            if (currentUser != null)
            {
                AddText("CURRENT_USER", RTFData.GetRTFString(currentUser.UserName), dictionary);// CURRENT_USER
            }

            AddText("DATETIME_NOW", RTFData.GetRTFString(DateTime.Now.ToString("dd.MM.yyyy HH:mm")), dictionary); //DATETIME_NOW

            return dictionary;
        }
コード例 #19
0
        private void ExecuteModule(IDynamicModule module, ExecuteCommand command, IObjectSpace os, IExamination examination)
        {
            // Определяем идентификатор приложения которое будет открывать файл обследования
            // Для модулей которые могут работать с несколькими приложениями
            Guid soft = examination.ExaminationSoftType.ExaminationSoftTypeId;

            // Получаем имя РЕАЛЬНОГО файла обследования из базы !!!
            string file = examination.ExaminationFile.RealFileName;
            Guid context = (examination as DevExpress.ExpressApp.DC.DCBaseObject).Oid;

            if (System.IO.File.Exists(file) == true)
            {// если файл удалось найти в том месте, где он должен быть
                if (FileWatcher.GetFileState(file) == FileState.Close)
                {// если файл никем не используется т.е закрыт
                    if (new FileInfo(file).Length == 0)
                    {// если файл обследования по какой то причине пустой, то открываем его как новый
                        // Проверяем готовность модуля
                        if (ModuleIsReady(module, soft, command) == false) return;

                        PatientData data = GetFromExamination(examination);

                        if (TryToExecuteModule(module, ExecuteCommand.New, file, context, data) == false)
                        {// если при запуске приложения возникла ошибка

                            // удаляем обследование если его можно удалять
                            if (examination.AllowEmptyOrNotExistsFile == false)
                                os.Delete(examination);
                            string message = CaptionHelper.GetLocalizedText("Exceptions", "TheExecutableFileOfRequestedApplicationWasNotFound");
                            string title = CaptionHelper.GetLocalizedText("Captions", "ApplicationLaunchError");

                            XtraMessageBox.Show(message, title,
                                         System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                        }

                        if (os.IsModified == true)
                            os.CommitChanges();
                    }
                    else
                    {// Если файл не пустой
                        // Проверяем готовность модуля
                        if (ModuleIsReady(module, soft, command) == false) return;

                        if (TryToExecuteModule(module, command, file, context) == false)
                        {
                            string message = CaptionHelper.GetLocalizedText("Exceptions", "TheExecutableFileOfRequestedApplicationWasNotFound");
                            string title = CaptionHelper.GetLocalizedText("Captions", "ApplicationLaunchError");

                            XtraMessageBox.Show(message, title,
                                         System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                        }

                        if (os.IsModified == true)
                            os.CommitChanges();
                    }
                }
                else
                {// если файл в момент записи открыт где то еще
                    string message = "Ошибка доступа к файлу обследования!\nВозможно файл открыт внешним приложением или нет прав доступа"; //CaptionHelper.GetLocalizedText("Warnings", "RequiredExaminationIsAlreadyLaunched");

                    XtraMessageBox.Show(message, "",
                        System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
                    return;
                }
            }
            else // АХТУНГ !!! НАДО УДАЛЯТЬ ОБСЛЕДОВАНИЯ СОДЕРЖАШИЕ УДАЛЕННЫЕ ФАЙЛЫ ИЛИ НЕ НАДО ?!!?!?!?
            {// если реального файла нет - создаем новый пустой файл
                using (Stream stream = File.Create(file)) { };

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

                PatientData data = GetFromExamination(examination);
                TryToExecuteModule(module, ExecuteCommand.New, file, context, data);
            }
            os.Refresh();
        }
コード例 #20
0
ファイル: ModuleExchange.cs プロジェクト: Rukhlov/DataStudio
        private void ExecuteCommand(String command, UnitOfWork uow, IExamination examination, object[] param = null)
        {
            switch (command)
            {
                case "FileOpened": // передается при открытии файла
                    {
                        examination.Status = ExaminationStatus.InProgress;

                        uow.CommitChanges();

                        break;
                    }

                case "FileClosed": // при закрытии файла
                    {
                        string file = examination.ExaminationFile.RealFileName;
                        if (String.IsNullOrEmpty(file) == false)
                        {
                            FileInfo info = new FileInfo(file);

                            if ((info.Exists == true && info.Length > 0) || examination.AllowEmptyOrNotExistsFile == true)
                            {
                                examination.TimeStop = DateTime.Now;
                                examination.Status = ExaminationStatus.Completed;
                                examination.IsBusy = false;
                                uow.CommitChanges();
                                break;
                            }
                        }
                        uow.Delete(examination);
                        uow.CommitChanges();

                    }
                    break;
                case "FileOpenError":// Ошибка открытия файла
                    {
                        examination.IsBusy = false;
                        uow.CommitChanges();
                    }
                    break;
                case "FileIsBackToWork":// если файл открыт в приаттаченом процессе
                    {
                        if (examination.Status == ExaminationStatus.Registered)
                        {
                            examination.Status = ExaminationStatus.InProgress;
                            uow.CommitChanges();
                        }
                    }
                    break;

                case "ProcessStarted":// Процесс запущен
                    {
                        examination.IsBusy = true;
                        //Thread.Sleep(10000);
                        uow.CommitChanges();
                    }
                    break;

                case "ProcessExited": // завершился процесс запущенный через плагин
                    {
                        if (examination.IsBusy == true)
                        { // если при завершении процесса обследование осталось не закрытым
                            string file = examination.ExaminationFile.RealFileName;
                            if (String.IsNullOrEmpty(file) == false)
                            {// проверяем файл
                                FileInfo info = new FileInfo(file);

                                if ((info.Exists == true && info.Length > 0) || examination.AllowEmptyOrNotExistsFile == true)
                                {// если существует не пустой файл  или для данного обследования разрешены пустые файлы
                                    examination.TimeStop = DateTime.Now;
                                    examination.Status = ExaminationStatus.Dropped;
                                    examination.IsBusy = false;
                                    uow.CommitChanges();
                                    // помечаем как остановленное и выходим
                                    break;
                                }
                            }
                            // удаляем все что не попало под вышестоящие критерии
                            uow.Delete(examination);
                            uow.CommitChanges();
                        }
                    }
                    break;

                case "Terminate": // процесс был остановлен пользователем через ProcessKill
                    { //обследование прервано если процесс был убит
                        examination.TimeStop = DateTime.Now;
                        examination.Status = ExaminationStatus.Dropped;
                        uow.CommitChanges();

                        break;
                    }
                case "OpenConclusionFile": // Открыть заключение из EEGStudio
                    {
                        try
                        {
                            if (((SecuritySystem.CurrentUser as MitsarDataStudio.Module.BusinessObjects.Employee).PermitToConclusion) == true)
                            {// у пользователя есть права для работы с заключениями
                                string title = examination.Patient.FullName;
                                string file = examination.ConclusionFile.RealFileName;

                                if (examination.IsPopulatedConclusion == true)
                                {
                                    DocumentServer.OpenFile(file, title);
                                }
                                else
                                {
                                    IOrganization organization = uow.FindObject<IOrganization>(null);

                                    ConclusionViewController controller = this.Application.CreateController<ConclusionViewController>();
                                    if (controller != null)
                                    {
                                        var mergeSource = controller.GetExaminationData(examination, organization);
                                        DocumentServer.OpenFile(file, mergeSource, title);

                                        examination.IsPopulatedConclusion = true;
                                        uow.CommitChanges();
                                    }
                                }
                            }
                            else
                                ErrorManager.RaiseException(ErrorCode.DocumentServer_CurrentUserCanNotWorkWithConclusion);

                        }
                        catch (Exception exception)
                        {
                            string reason = string.Format("{0}_ExecuteCommand_Error", command);
                            throw new FaultException<uint>(ErrorManager.GetExceptionCode(exception), reason);
                        }

                        break;
                    }
                case "InsertIntoConclusionFile":// Добавление в существующий файл заключения из EEGStudio
                    {
                        if (param != null)
                        {
                            string inserted = param[0].ToString();

                            try
                            {
                                if (((DevExpress.ExpressApp.SecuritySystem.CurrentUser as MitsarDataStudio.Module.BusinessObjects.Employee).PermitToConclusion) == true)
                                {// у пользователя есть права для работы с заключениями
                                    string target = examination.ConclusionFile.RealFileName;
                                    string title = examination.Patient.FullName;
                                    //DocumentServer.DocumentMerge(target, inserted, title);

                                    if (examination.IsPopulatedConclusion == true)
                                    {
                                        DocumentServer.DocumentMerge(target, inserted, title);
                                    }
                                    else
                                    {
                                        IOrganization organization = uow.FindObject<IOrganization>(null);
                                        ConclusionViewController controller = this.Application.CreateController<ConclusionViewController>();
                                        if (controller != null)
                                        {
                                            var mergeSource = controller.GetExaminationData(examination, organization);
                                            DocumentServer.DocumentMerge(target, inserted, mergeSource, title);

                                            examination.IsPopulatedConclusion = true;
                                            uow.CommitChanges();
                                        }
                                    }

                                }
                                else
                                    ErrorManager.RaiseException(ErrorCode.DocumentServer_CurrentUserCanNotWorkWithConclusion);

                            }
                            catch (Exception exception)
                            {
                                string reason = string.Format("{0}_ExecuteCommand_Error", command);
                                throw new FaultException<uint>(ErrorManager.GetExceptionCode(exception), reason);
                            }
                        }
                        break;
                    }
                default:
                    {
                        DevExpress.Persistent.Base.Tracing.Tracer.LogError("Unknown command \"{0}\"", command);
                        break;
                    }
            }
        }
コード例 #21
0
 public void OpenConclusion(IExamination examination, bool PopulateRequire = false)
 {
     if (PopulateRequire == true)
     {
         if (examination.IsPopulatedConclusion == true)
         {// если уже заполнено
             //ExecuteInDefaultApplication(examination.ConclusionFile.RealFileName);
             this.OpenConclusionFile(examination.ConclusionFile.RealFileName, examination.Patient.FullName);
         }
         else
         {// если надо заполнить
             FillExaminationConclusion(examination);
         }
     }
     else
         this.OpenConclusionFile(examination.ConclusionFile.RealFileName, examination.Patient.FullName);
 }
コード例 #22
0
        /// <summary>
        /// Импортируем обследование в выбранного пациента
        /// </summary>
        private void ExistPatientImportExamination(IPatient patient)
        {
            importExamination = Application.MainWindow.View.ObjectSpace.CreateObject<IExamination>();
            importExamination.Patient = patient;//Application.MainWindow.View.ObjectSpace.GetObject<IPatient>(patient);
            importExamination.Status = ExaminationStatus.Registered;

            //DateTime examDateTime = ConcatenateDateAndTime(GetValueByID(importFileHeader, "ExamDate"), GetValueByID(importFileHeader, "ExamTime"));

            importExamination.TimeStart = importData.StartExaminationDateTime;
            importExamination.TimeStop = importData.EndExaminationDateTime;

            Guid examinationSoftTypeId = (from ModuleAssociationAttribute attribute in dynamicModule.GetType().Assembly.GetCustomAttributes(typeof(ModuleAssociationAttribute), true)
                                          where (attribute as ModuleAssociationAttribute).FileExtension == System.IO.Path.GetExtension(importFileFullName).ToLower()
                                          select attribute.OID).FirstOrDefault();

            importExamination.ExaminationSoftType = Application.MainWindow.View.ObjectSpace.FindObject<ExaminationSoftType>(CriteriaOperator.Parse("ExaminationSoftTypeId = ?", examinationSoftTypeId));

            var items = (Application.MainWindow.View as DashboardView).Items;
            patientListView = (from DashboardViewItem edt in items
                               where edt.InnerView.ObjectTypeInfo.Type == typeof(IPatient)
                               select edt.InnerView).FirstOrDefault() as DevExpress.ExpressApp.ListView;

            examinationsListView = (from DashboardViewItem edt in items
                                    where edt.InnerView.ObjectTypeInfo.Type == typeof(IExamination)
                                    select edt.InnerView).FirstOrDefault() as DevExpress.ExpressApp.ListView;

            //objectspaceCommitted += (object send, EventArgs args) =>
            //{
            //    Application.MainWindow.View.ObjectSpace.Committed -= objectspaceCommitted;
            //    GridListEditor editor = patientListView.Editor as GridListEditor;
            //    editor.Grid.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate() { SetCurrentPatient(patient, patientListView); }));

            //    GridListEditor examEditor = examinationsListView.Editor as GridListEditor;
            //    examEditor.Grid.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate() { SetCurrentExamination(importExamination, examinationsListView); }));
            //};

            //Application.MainWindow.View.ObjectSpace.Committed += objectspaceCommitted;

            if(Application.MainWindow.View.ObjectSpace.IsModified==true)
                Application.MainWindow.View.ObjectSpace.CommitChanges();

            //importExamination.ExaminationFile = Application.MainWindow.View.ObjectSpace.CreateObject<FileSystemStoreObject>();
            importExamination.ExaminationFile = Application.MainWindow.View.ObjectSpace.CreateObject<ExaminationFile>();
            importExamination.ExaminationFile.FileName = importExamination.ObjectCode.Replace('/', '.') + importExamination.ExaminationSoftType.ExaminationFileExtension;
            importExamination.ExaminationFile.OwnerId = ((DevExpress.ExpressApp.DC.DCBaseObject)importExamination).Oid;

            Application.MainWindow.View.ObjectSpace.CommitChanges();

            //TransferExaminationFile(fileFullName, examination.ExaminationFile);

            UploadExaminationFile();
        }
コード例 #23
0
 private bool TryToRefreshView(IExamination examination, ListView list)
 {
     bool result = false;
     try
     {
         list.ObjectSpace.Refresh();
         list.CurrentObject = list.ObjectSpace.GetObject(examination);
         result = true;
     }
     catch (Exception) { result = false; }
     return result;
 }
コード例 #24
0
        /// <summary>
        /// !!! ВСЕ ЭТО НАДО ПЕРЕДЕЛАТЬ КАК ЗДЕСЬ --> http://www.devexpress.com/Support/Center/Example/Details/E1487
        /// </summary>
        private void ImportExamination_Execute(object sender, EventArgs e)
        {
            importPatient = null;
            importExamination = null;
            isImportCompleted = false;
            importWizard = null;
            showWelcomePage = true;

               OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                CheckFileExists = true,
                Multiselect = true, //false,
                CheckPathExists = true,
                Filter = GetDialogFilter(), //CaptionHelper.GetLocalizedText("CustomFomrsMessages", "importFileDialogFileter"),
                Title = CaptionHelper.GetLocalizedText("CustomFomrsMessages", "importFiledialogTitle")
            };

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                //importFileFullName = openFileDialog.FileName;

                var importFiles= openFileDialog.FileNames;

                int totalFiles = importFiles.Count();
                int currentNumber = 0;

                foreach (string file in importFiles)
                {
                    if (importWizard != null)
                    {
                        if (importWizard.Canceled == true)  return;
                    }
                    currentNumber++;
                    importFileFullName = file;
                    // находим модуль по расширению файла
                    string extension = Path.GetExtension(importFileFullName);
                    dynamicModule = GetModuleByAssociationAttributeFileExtension(extension);

                    if (dynamicModule == null)
                    {
                        string error = String.Format(CaptionHelper.GetLocalizedText("CustomFomrsMessages", "FileImportError"), importFileFullName);
                        string desctiption = CaptionHelper.GetLocalizedText("CustomFomrsMessages", "ImportModuleError");

                        XtraMessageBox.Show(String.Format("{0}\n{1}",error, desctiption),"",MessageBoxButtons.OK, MessageBoxIcon.Error);
                        continue;
                        //return;
                    }

                    XElement header = null;
                    // получаем данные пациента из файла
                    try { header = dynamicModule.DoVerb(VerboseCommand.ExtractData, importFileFullName) as XElement; }
                    catch (Exception ex)
                    {
                        if (ex.Message == "ExaminationImportNoPatientDataFound")
                        {
                            header = null;
                            //XtraMessageBox.Show(CaptionHelper.GetLocalizedText("Exceptions", "ExaminationImportNoPatientDataFound"));
                        }
                        else
                        {
                            string error = String.Format(CaptionHelper.GetLocalizedText("CustomFomrsMessages", "FileImportError"), importFileFullName);
                            string desctiption = CaptionHelper.GetLocalizedText("Exceptions", "ExaminationImportWrongFileType");

                            XtraMessageBox.Show(String.Format("{0}\n{1}", error, desctiption),"",MessageBoxButtons.OK, MessageBoxIcon.Error);

                            isImportCompleted = false;
                            continue;
                            //return;
                        }
                    }

                    importData = CreateImportData(header);

                    //проверяем дату
                    if (importData.StartExaminationDateTime == DateTime.MinValue)
                    {// если дату из файла извлеч не удалось то ставим дату создания файла
                        FileInfo info = new FileInfo(importFileFullName);
                        importData.StartExaminationDateTime = info.CreationTime;
                    }

                    // Запускаем мастер импорта обследования в БД
                    importWizard = new ImportWizardForm();
                    string fullName = String.Format("{0} {1} {2}", importData.LastName, importData.FirstName, importData.MiddleName);

                    string title = String.Format("{0} ({1}/{2})", importFileFullName, currentNumber, totalFiles);

                    importWizard.SetTitle(title);

                    importWizard.SetMessage(string.Format(CaptionHelper.GetLocalizedText("CustomFomrsMessages", "ImportPatientCaptionSearch"), fullName), 1);
                    importWizard.SetMessage(CaptionHelper.GetLocalizedText("CustomFomrsMessages", "ImportPatientClosiestMatch"), 2);
                    importWizard.isLocalized = true;

                    // Коллекция пациентов для мастера импорта
                    XPCollection patientsCollection = (XPCollection)Application.MainWindow.View.ObjectSpace.CreateCollection(typeof(IPatient));

                    importWizard.WelcomePage.Visible = (showWelcomePage == true);// скрываем страницу приветствия если она уже показывалась

                    importWizard.DisplayPatientCollection(patientsCollection, fullName);
                    importWizard.WizardControl.NextClick += new WizardCommandButtonClickEventHandler(importWizardControl_NextClick);
                    importWizard.WizardControl.SelectedPageChanging += new WizardPageChangingEventHandler(importWizardControl_SelectedPageChanging);

                    importWizard.WizardControl.CustomizeCommandButtons += (o,a) =>
                    {
                        if (currentNumber != totalFiles)
                        {// если файл не последний
                            CompletionWizardPage page = a.Page as CompletionWizardPage;
                            if (page != null)
                            {// см. Предложение #4587
                                page.AllowCancel = true;
                                page.ProceedText = CaptionHelper.GetLocalizedText("CustomFomrsMessages", "DataImportMasterProceed");
                                a.FinishButton.Text = a.NextButton.Text; //"Далее >";
                            }
                        }
                    };

                    importWizard.WizardControl.CancelClick += (o, a) =>
                    {

                    };
                    importWizard.WizardCompleted += (args) =>
                    {
                        isImportCompleted = args;
                    };
                    importWizard.ShowDialog();
                }
            }
        }
コード例 #25
0
ファイル: IExamination.cs プロジェクト: Rukhlov/DataStudio
 public static string Get_PatientAge(IExamination examination)
 {
     return (examination.Patient != null ? examination.Patient.Age : string.Empty);
 }
コード例 #26
0
 // ЗАПОЛНЯТЬ ЗАКЛЮЧЕНИЕ ПРИ СОЗДАНИИ НЕ НАДО !!!
 private void PopulateConclusionFile(IExamination examination)
 {
     //ConclusionViewController conclusionController = Frame.GetController<ConclusionViewController>();
     //if (conclusionController != null)
     //{
     //    conclusionController.PopulateConclusionFile(examination);
     //}
 }
コード例 #27
0
        public void PopulateConclusionFile(IExamination examination)
        {
            //Dictionary<string, string> dictionary = GetExaminationData(examination);
            //IOrganization organization = ObjectSpace.FindObject<IOrganization>(null);

            IOrganization organization = View.ObjectSpace.FindObject<IOrganization>(null);
            // получаем данные из БД
            Dictionary<string, string> dictionary = GetExaminationData(examination, organization);
            if (organization != null)
            {
                StreamReader reader = null;
                StreamWriter writer = null;
                try
                {
                    reader = new StreamReader(File.Open(organization.ConclusionTemplate.RealFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
                    writer = new StreamWriter(File.Open(examination.ConclusionFile.RealFileName, FileMode.OpenOrCreate));

                    while (reader.EndOfStream == false)
                    {
                        StringBuilder line = new StringBuilder(reader.ReadLine());
                        if (Contains(line, '%') == true)
                        {
                            foreach (string code in dictionary.Keys)
                                line.Replace(code, dictionary[code]);
                        }

                        writer.WriteLine(line);
                    }
                }
                catch (Exception) { }
                finally
                {
                    if (reader != null)
                        reader.Close();

                    if (writer != null)
                        writer.Close();
                }
            }
        }
コード例 #28
0
        private void UpdateMasterObject(object masterObject)
        {
            //CurrentFilesOwner = masterObject != null ? View.ObjectSpace.GetKeyValue(masterObject) : null;
            if (masterObject != null)
            {
                CurrentFilesOwner = View.ObjectSpace.GetKeyValue(masterObject);
                CurrentExamination = masterObject as IExamination;
            }
            else
            {
                CurrentFilesOwner = null;
                CurrentExamination = null;
            }

            // вкл/выкл. кнопку загрузки файлов если есть обследование
            DownloadFiles.Enabled.SetItemValue("HasMaster", CurrentFilesOwner != null);
        }
コード例 #29
0
        /// <summary>
        /// Метод получает необходимые данные пациента из БД
        /// </summary>
        private PatientData GetFromExamination(IExamination examination)
        {
            string examinationCode = examination.ObjectCode.TrimStart(new char[] { '0' });
            string patientCode = examination.Patient.ObjectCode.TrimStart(new char[] { '0' });
            string patientFullName = examination.Patient.FullName;

            string patientTitleName = String.Format("[{0} {1}] {2}", examinationCode, patientCode, patientFullName);

            EnumDescriptor descriptor = new EnumDescriptor(typeof(DomainComponents.Common.Gender));
            string gender = descriptor.GetCaption(examination.Patient.Gender);
            DateTime timeStart = examination.TimeStart;

            return new PatientData()
            {

                FullName = patientTitleName,//examination.Patient.FullName,
                Birthday = examination.Patient.Birthday,
                Gender = gender,//Enum.GetName(typeof(DomainComponents.Common.Gender), examination.Patient.Gender), //String.Format(@"Enums\DomainComponents.Common.Gender", examination.Patient.Gender),
                Address = examination.Patient.RegistrationAddress != null ?
                    examination.Patient.RegistrationAddress.Address : String.Empty,
                //Phone = examination.Patient.MainPhoneNumber,
                Document = String.Format("{0} {1}", examination.Patient.IdentityCardType != null ?
                        examination.Patient.IdentityCardType.DocumentName : String.Empty, examination.Patient.IdentifyCardInfo).Replace(Environment.NewLine, " "),
                //Document = String.Format("{0}" + "%" + "{1}", examination.Patient.Passport.IdentityCardType != null ?
                //    examination.Patient.Passport.IdentityCardType.DocumentName : String.Empty, examination.Patient.Passport.IdentifyCardInfo), // х.з зачем было через "%"

                TimeStart = examination.TimeStart
            };
        }