Exemplo n.º 1
0
        /// <summary>
        /// Retrieves datasetDTO for selected activity including a union of VarDefs and TemplateVariables from the relevant Domain
        /// //TODO: This method should change once users are allowed to add their own Variables
        /// In this case VarDEFs should take precedence and the issue of adding CVterms to VarDEFs shuold be settled
        /// </summary>
        /// <param name="datasetId"></param>
        /// <returns></returns>
        public DatasetDTO GetActivityDatasetDTO(int datasetId)
        {
            DatasetDTO dto = new DatasetDTO();
            Dataset    ds  = _datasetRepository.FindSingle(
                d => d.Id.Equals(datasetId),
                new List <string>()
            {
                "Variables.VariableDefinition",
                "Template.Fields.ControlledVocabulary.Xref.DB",
                "Activity"
            });

            dto.Id          = ds.Id; //Set DatasetDTO id to Dataset.Id (int)
            dto.Class       = ds.Template.Class;
            dto.Description = ds.Template.Description;
            dto.Name        = ds.Template.Domain;
            dto.DomainId    = ds.Template.Id;
            dto.Structure   = ds.Template.Structure;
            dto.Code        = ds.Template.Code;
            dto.ProjectId   = ds.Activity.ProjectId;


            //ds.Domain.Variables.Where(v=> !v.IsGeneric).
            foreach (DatasetTemplateField vt in ds.Template.Fields.OrderBy(v => v.Order))
            //foreach (var vt in ds.Variables)
            {
                DatasetVariableDTO dv = new DatasetVariableDTO();
                dv.Name        = vt.Name;
                dv.Description = vt.Description;
                dv.Label       = vt.Label;
                dv.Accession   = vt.Id;
                dv.DataType    = vt.DataType;
                dv.IsCurated   = true;
                dv.RoleId      = vt.RoleId;

                if (vt.ControlledVocabulary != null)
                {
                    dv.DictionaryName       = vt.ControlledVocabulary.Name;
                    dv.DictionaryDefinition = vt.ControlledVocabulary.Definition;
                    dv.DictionaryXrefURL    = vt.ControlledVocabulary.Xref.DB.UrlPrefix +
                                              vt.ControlledVocabulary.Xref.Accession;
                }

                var vr = ds.Variables.SingleOrDefault(v => v.VariableDefinition.Name.Equals(vt.Name));
                if (vr != null)
                {
                    dv.IsRequired  = vr.IsRequired;
                    dv.KeySequence = vr.KeySequence;
                    dv.OrderNumber = vr.OrderNumber;
                    dv.Id          = vr.VariableDefinitionId;
                    dv.isSelected  = true;
                }
                dto.Variables.Add(dv);
            }


            foreach (VariableReference vr in ds.Variables)
            {
                if (!dto.Variables.Exists(v => v.Accession.Equals(vr.VariableDefinition.Accession)))
                {
                    DatasetVariableDTO dv = new DatasetVariableDTO();
                    dv.Name        = vr.VariableDefinition.Name;
                    dv.Description = vr.VariableDefinition.Description;
                    dv.Label       = vr.VariableDefinition.Label;
                    dv.Accession   = vr.VariableDefinition.Accession;
                    dv.DataType    = vr.VariableDefinition.DataType;
                    dv.IsCurated   = vr.VariableDefinition.IsCurated;
                    dv.IsComputed  = vr.VariableDefinition.IsComputed ?? false;
                    dv.RoleId      = vr.VariableDefinition.RoleId;

                    dv.IsRequired  = vr.IsRequired;
                    dv.KeySequence = vr.KeySequence;
                    dv.OrderNumber = vr.OrderNumber;
                    dv.Id          = vr.VariableDefinitionId;
                    dv.isSelected  = true;

                    dto.Variables.Add(dv);
                }
            }

            return(dto);
        }
Exemplo n.º 2
0
        private DatasetDTO GetDatasetDTO(DatasetTemplate datasetTemplate)
        {
            var dto = new DatasetDTO
            {
                Class       = datasetTemplate.Class,
                Description = datasetTemplate.Description,
                Name        = datasetTemplate.Domain,
                DomainId    = datasetTemplate.Id,
                Structure   = datasetTemplate.Structure,
                Code        = datasetTemplate.Code,
                HasHeader   = datasetTemplate.Fields.Any(f => f.Section == "HEADER")
            };

            foreach (var vt in datasetTemplate.Fields.OrderBy(c => c.Order))
            {
                var dv = new DatasetVariableDTO
                {
                    Name              = vt.Name,
                    Description       = vt.Description,
                    Label             = vt.Label,
                    Accession         = vt.Id,
                    RoleId            = vt.RoleId,
                    DataType          = vt.DataType,
                    UsageId           = vt.UsageId,
                    IsRequired        = false,
                    KeySequence       = null,
                    OrderNumber       = null,
                    IsCurated         = true,
                    IsComputed        = false,
                    varType           = "STANDARD",
                    IsGeneric         = vt.IsGeneric,
                    AllowedQualifiers = vt.QualifiersDictionary?.Terms?.Select(t => t.Name).ToList(),
                    DictionaryName    = vt.ControlledVocabulary?.Name,
                    DictionaryXrefURL = vt.ControlledVocabulary?.Xref.DB.UrlPrefix + vt.ControlledVocabulary?.Xref.Accession
                };


                if (dv.UsageId.Equals("CL-Compliance-T-1") || dv.UsageId.Equals("CL-Compliance-T-2"))
                {
                    dv.isSelected = true;
                    if (dv.UsageId.Equals("CL-Compliance-T-1"))
                    {
                        dv.IsRequired = true;
                    }
                }

                if (vt.Section == "HEADER")
                {
                    dto.HeaderFields.Add(dv);
                }
                if (vt.IsGeneric)
                {
                    dto.GenericFields.Add(dv);
                }
                else if (vt.Section == "COLUMN")
                {
                    dto.Variables.Add(dv);
                }
            }
            return(dto);
        }