示例#1
0
文件: DDIUtils.cs 项目: ssjda-ddi/EDO
        public static List <string> CollectIds(StudyUnit studyUnit)
        {
            List <string> ids = new List <string>();

            //0. StudyUnit itself
            CollectIds(studyUnit, ids);
            //1. Event
            CollectIds(studyUnit.Events, ids);
            //2. Member
            CollectIds(studyUnit.Members, ids);
            //3. Organization
            CollectIds(studyUnit.Organizations, ids);
            //4. Abstract
            CollectIds(studyUnit.Abstract, ids);
            //5. Coverage
            CollectIds(studyUnit.Coverage, ids);
            //6. Funding Agency
            CollectIds(studyUnit.FundingInfos, ids);
            //6-1. Organization including
            CollectIds(FundingInfo.GetOrganizations(studyUnit.FundingInfos), ids);
            //7.Universe
            CollectIds(Sampling.GetUniverses(studyUnit.Samplings), ids);
            //8.Sampling
            CollectIds(studyUnit.Samplings, ids);
            //9. Concept Scheme
            CollectIds(studyUnit.ConceptSchemes, ids);
            //9-1. Concept
            CollectIds(ConceptScheme.GetConcepts(studyUnit.ConceptSchemes), ids);
            //10. Question
            CollectIds(studyUnit.Questions, ids);
            //10-1. Answer
            CollectIds(Question.GetResponses(studyUnit.Questions), ids);
            //11. Category Scheme
            CollectIds(studyUnit.CategorySchemes, ids);
            //11-1. Category
            CollectIds(CategoryScheme.GetCategories(studyUnit.CategorySchemes), ids);
            //12. Code Scheme
            CollectIds(studyUnit.CodeSchemes, ids);
            //12-1. Code
            CollectIds(CodeScheme.GetCodes(studyUnit.CodeSchemes), ids);
            //13. Variable Scheme
            CollectIds(studyUnit.VariableScheme, ids);
            //14. Variable
            CollectIds(studyUnit.Variables, ids);
            //14-1. Answer
            CollectIds(Variable.GetResponses(studyUnit.Variables), ids);
            //15. Dataset
            CollectIds(studyUnit.DataSets, ids);
            //16. Data File
            CollectIds(studyUnit.DataFiles, ids);
            //17. Order of Question
            CollectIds(studyUnit.ControlConstructSchemes, ids);
            //17-1.Sequence
            CollectIds(ControlConstructScheme.GetSequences(studyUnit.ControlConstructSchemes), ids);
            //17-2.Constructs
            CollectIds(ControlConstructScheme.GetConstructs(studyUnit.ControlConstructSchemes), ids);

            return(ids);
        }
示例#2
0
 public CodeSchemeVM(CodeScheme codeScheme, ObservableCollection <CodeVM> codes)
 {
     this.codeScheme = codeScheme;
     this.codes      = codes;
     foreach (CodeVM code in codes)
     {
         code.Parent = this;
     }
     modelSyncher = new ModelSyncher <CodeVM, Code>(this, codes, codeScheme.Codes);
     modelSyncher.AddActionHandler = (param) => {
         param.CodeSchemeId = codeScheme.Id;
     };
 }
示例#3
0
        static bool ExistValue(CodeScheme codeScheme, string missingValue)
        {
            //Currently compare as double text context(must have compared by ε)
            string missingValueStr = missingValue.ToString();

            foreach (Code existCode in codeScheme.Codes)
            {
                if (existCode.Value == missingValueStr)
                {
                    return(true);
                }
            }
            return(false);
        }
示例#4
0
        private CodeSchemeVM CreateCodeScheme(CodeScheme codeSchemeModel)
        {
            ObservableCollection <CodeVM> codes = new ObservableCollection <CodeVM>();

            foreach (Code codeModel in codeSchemeModel.Codes)
            {
                CategoryVM category = StudyUnit.FindCategory(codeModel.CategoryId);
                CodeVM     code     = new CodeVM(codeModel, category);
                codes.Add(code);
            }
            CodeSchemeVM codeScheme = new CodeSchemeVM(codeSchemeModel, codes)
            {
                Parent = this
            };

            return(codeScheme);
        }
示例#5
0
        public List <CodeScheme> findCodeScheme()
        {
            List <CodeScheme> list = new List <CodeScheme>();
            CodeScheme        code = new CodeScheme();

            code.id     = 1;
            code.name   = "通用编码";
            code.remark = "这是通用编码方案";
            code.status = "0";

            CodeScheme code1 = new CodeScheme();

            code1.id     = 2;
            code1.name   = "文档编码";
            code1.remark = "这是文档编码方案";
            code1.status = "0";

            list.Add(code);
            list.Add(code1);

            return(list);
        }
示例#6
0
        public void AddCodeScheme()
        {
            InputDialog dlg = new InputDialog();

            dlg.Title = Resources.InputCodeSchemeName; // Input the name of Code Scheme
            dlg.Info  = Resources.CodeFormHelpMessage; //**After creating the code group, please assign the code by clicking "Add From Category Scheme" or "Add From Category"
            dlg.Owner = Application.Current.MainWindow;
            dlg.ShowDialog();
            if (dlg.DialogResult == true)
            {
                CodeScheme codeSchemeModel = new CodeScheme()
                {
                    Title = dlg.textBox.Text
                };
                CodeSchemeVM newCodeScheme = new CodeSchemeVM(codeSchemeModel);
                codeSchemes.Add(newCodeScheme);
                if (SelectedCodeScheme == null)
                {
                    SelectedCodeScheme = newCodeScheme;
                }
                Memorize();
            }
        }
示例#7
0
        void InitializeDdiElements()
        {
            resourcePackage = new ResourcePackage();
            resourcePackage.DublinCoreMetadata.Title["en"] = "ISCO Classification";
            resourcePackage.Abstract.Strings["en"] = "Not specified";
            resourcePackage.Purpose.Strings["en"] = "Not specified";

            categoryScheme = new CategoryScheme();
            categoryScheme.Label["en"] = "ISCO Categories";

            codeScheme = new CodeScheme();
            codeScheme.Label["en"] = "ISCO Codes";

            resourcePackage.CategorySchemes.Add(categoryScheme);
            resourcePackage.CodeSchemes.Add(codeScheme);

            instance = new DdiInstance();
            instance.ResourcePackages.Add(resourcePackage);
        }
示例#8
0
        public bool ImportVariables(string path, StudyUnitVM studyUnit)
        {
            Debug.Assert(!string.IsNullOrEmpty(path));
            StudyUnit       studyUnitModel = studyUnit.StudyUnitModel;
            FileStream      stream         = File.OpenRead(path);
            SavFileParser   parser         = new SavFileParser(stream);
            List <Variable> variables      = new List <Variable>();

            foreach (SpssLib.SpssDataset.Variable v in parser.Variables)
            {
                Variable variable = new Variable();
                variable.Title = v.Name;
                variable.Label = v.Label;
                variables.Add(variable);
                if (v.Type == SpssLib.SpssDataset.DataType.Text)
                {
                    variable.Response.TypeCode = Options.RESPONSE_TYPE_FREE_CODE;
                }
                else
                {
                    if (v.ValueLabels.Count > 0)
                    {
                        CategoryScheme categoryScheme = new CategoryScheme();
                        categoryScheme.Title = v.Label;
                        studyUnitModel.CategorySchemes.Add(categoryScheme);
                        CodeScheme codeScheme = new CodeScheme();
                        codeScheme.Title = v.Label;;
                        studyUnitModel.CodeSchemes.Add(codeScheme);

                        variable.Response.TypeCode     = Options.RESPONSE_TYPE_CHOICES_CODE;
                        variable.Response.CodeSchemeId = codeScheme.Id;
                        // Create Category
                        foreach (KeyValuePair <double, string> pair in v.ValueLabels)
                        {
                            Category category = new Category();
                            categoryScheme.Categories.Add(category);
                            category.Title            = pair.Value;
                            category.CategorySchemeId = categoryScheme.Id;

                            Code code = new Code();
                            codeScheme.Codes.Add(code);
                            code.CategoryId   = category.Id;
                            code.CodeSchemeId = codeScheme.Id;
                            code.Value        = pair.Key.ToString();
                        }
                        // Add Missing value
                        if (v.MissingValues.Count > 0)
                        {
                            foreach (double missingValue in v.MissingValues)
                            {
                                string missingValueStr = missingValue.ToString();
                                if (ExistValue(codeScheme, missingValueStr))
                                {
                                    continue;
                                }
                                Category category = new Category();
                                categoryScheme.Categories.Add(category);
                                category.Title            = Resources.MissingValue; //Missing value
                                category.IsMissingValue   = true;
                                category.CategorySchemeId = categoryScheme.Id;

                                Code code = new Code();
                                codeScheme.Codes.Add(code);
                                code.CategoryId   = category.Id;
                                code.CodeSchemeId = codeScheme.Id;
                                code.Value        = missingValueStr;
                            }
                        }
                    }
                    else
                    {
                        variable.Response.TypeCode = Options.RESPONSE_TYPE_NUMBER_CODE;
                    }
                }
            }

            if (variables.Count > 0)
            {
                ConceptScheme conceptScheme = new ConceptScheme();
                conceptScheme.Title = EDOUtils.UniqueLabel(ConceptScheme.GetTitles(studyUnitModel.ConceptSchemes), Resources.ImportVariable);                        //Imported Variable
                string name = Path.GetFileName(path);
                conceptScheme.Memo = EDOUtils.UniqueLabel(ConceptScheme.GetMemos(studyUnitModel.ConceptSchemes), string.Format(Resources.ImportVariableFrom, name)); //Imported variable from {0}

                Concept concept = new Concept();
                concept.Title   = EDOUtils.UniqueLabel(ConceptScheme.GetConceptTitles(studyUnitModel.ConceptSchemes), Resources.ImportVariable);                            //Imported Variable
                concept.Content = EDOUtils.UniqueLabel(ConceptScheme.GetConceptContents(studyUnitModel.ConceptSchemes), string.Format(Resources.ImportVariableFrom, name)); //Imported variable from {0}
                conceptScheme.Concepts.Add(concept);
                studyUnitModel.ConceptSchemes.Add(conceptScheme);

                foreach (Variable variable in variables)
                {
                    Question question = new Question();
                    question.Title                  = variable.Label;
                    question.ConceptId              = concept.Id;
                    question.Response.TypeCode      = variable.Response.TypeCode;
                    question.Response.CodeSchemeId  = variable.Response.CodeSchemeId;
                    question.VariableGenerationInfo = question.CreateVariableGenerationInfo();
                    studyUnitModel.Questions.Add(question);
                    variable.ConceptId  = concept.Id;
                    variable.QuestionId = question.Id;
                    studyUnitModel.Variables.Add(variable);
                }
            }
            return(true);
        }
示例#9
0
 public CodeSchemeVM(CodeScheme codeScheme) : this(codeScheme, new ObservableCollection <CodeVM>())
 {
 }
示例#10
0
文件: DDIUtils.cs 项目: ssjda-ddi/EDO
        public static void RenameIds(StudyUnit orgStudyUnit, StudyUnit newStudyUnit)
        {
            // renumber the ID of newStudyUnit to avoid duplication between ID of newStudyUnit ID and orgStudyUnit

            List <string> ids = CollectIds(orgStudyUnit);

            //0. StudyUnit itself
            RenameIds(newStudyUnit, ids);
            //1. Event
            RenameIds(newStudyUnit.Events, ids);
            //2. Member
            RenameIds(newStudyUnit.Members, ids, (result) =>
            {
                Sampling.ChangeMemberId(newStudyUnit.Samplings, result.OldId, result.NewId);
            });

            //3. Organization
            RenameIds(newStudyUnit.Organizations, ids, (result) =>
            {
                Member.ChangeOrganizationId(newStudyUnit.Members, result.OldId, result.NewId);
                Sampling.ChangeMemberId(newStudyUnit.Samplings, result.OldId, result.NewId);
            });
            //4. Abstract
            RenameIds(newStudyUnit.Abstract, ids);
            //5. Coverage
            RenameIds(newStudyUnit.Coverage, ids);
            //6. Funding Agency
            RenameIds(newStudyUnit.FundingInfos, ids);
            RenameIds(newStudyUnit.FundingInfoOrganizations, ids); //Organization of Funding Agency
            ////7.Universe
            RenameIds(newStudyUnit.AllUniverses, ids, (result) =>
            {
                Variable.ChangeUniverseId(newStudyUnit.Variables, result.OldId, result.NewId);
            });
            //8.Sampling
            RenameIds(newStudyUnit.Samplings, ids);
            //9. Concept Scheme
            RenameIds(newStudyUnit.ConceptSchemes, ids);
            //9-1. Concept
            RenameIds(ConceptScheme.GetConcepts(newStudyUnit.ConceptSchemes), ids, (result) =>
            {
                Question.ChangeConceptId(newStudyUnit.Questions, result.OldId, result.NewId);
                Variable.ChangeConceptId(newStudyUnit.Variables, result.OldId, result.NewId);
                Book.ChangeMetaDataId(newStudyUnit.Books, result.OldId, result.NewId);
            });
            //10. Question
            RenameIds(newStudyUnit.Questions, ids, (result) =>
            {
                ControlConstructScheme.ChangeQuestionId(newStudyUnit.ControlConstructSchemes, result.OldId, result.NewId);
                Variable.ChangeQuestionId(newStudyUnit.Variables, result.OldId, result.NewId);
                Book.ChangeMetaDataId(newStudyUnit.Books, result.OldId, result.NewId);
            });
            //11. Category Scheme
            RenameIds(newStudyUnit.CategorySchemes, ids, (result) =>
            {
                CategoryScheme.ChangeCategorySchemeId(newStudyUnit.CategorySchemes, result.OldId, result.NewId);
            });
            //11-1. Category
            RenameIds(CategoryScheme.GetCategories(newStudyUnit.CategorySchemes), ids, (result) =>
            {
                CodeScheme.ChangeCategoryId(newStudyUnit.CodeSchemes, result.OldId, result.NewId);
            });
            //12. Code Scheme
            RenameIds(newStudyUnit.CodeSchemes, ids, (result) =>
            {
                CodeScheme.ChangeCodeSchemeId(newStudyUnit.CodeSchemes, result.OldId, result.NewId);
            });
            //12-1. Code
            RenameIds(CodeScheme.GetCodes(newStudyUnit.CodeSchemes), ids);
            //13. Variable Scheme
            RenameIds(newStudyUnit.VariableScheme, ids);
            //14. Variable
            RenameIds(newStudyUnit.Variables, ids, (result) =>
            {
                DataSet.ChangeVariableId(newStudyUnit.DataSets, result.OldId, result.NewId);
                Book.ChangeMetaDataId(newStudyUnit.Books, result.OldId, result.NewId);
                StatisticsInfo.ChangeVariableId(newStudyUnit.StatisticsInfos, result.OldId, result.NewId);
            });
            //15. Dataset
            RenameIds(newStudyUnit.DataSets, ids, (result) =>
            {
                DataFile.ChangeDataSetId(newStudyUnit.DataFiles, result.OldId, result.NewId);
            });
            //16. Data File
            RenameIds(newStudyUnit.DataFiles, ids);
            //17. Order of Question
            RenameIds(newStudyUnit.ControlConstructSchemes, ids);
            //17-1.Sequence
            RenameIds(ControlConstructScheme.GetSequences(newStudyUnit.ControlConstructSchemes), ids);
            //17-2.Constructs
            RenameIds(ControlConstructScheme.GetConstructs(newStudyUnit.ControlConstructSchemes), ids, (result) =>
            {
                ControlConstructScheme.ChangeControlConstructId(newStudyUnit.ControlConstructSchemes, result.OldId, result.NewId);
            });

            //Related materials
            RenameIds(newStudyUnit.Books, ids);
        }