Пример #1
0
 public static UserDatasetDTO WriteDTO(UserDataset dataset)
 {
     return(new UserDatasetDTO()
     {
         Id = dataset.Id.ToString(),
         Description = dataset.Description,
         LastModified = dataset.LastModified,
         Name = dataset.Name,
         OwnerId = dataset.OwnerId,
         ProjectId = dataset.ProjectId,
         Type = dataset.Type,
         SubjectCount = dataset.SubjectCount,
         SampleCount = dataset.SampleCount,
         FileStatus = dataset.FileStatus,
         Filters = dataset.Filters.Select(f => new DataFilterDTO()
         {
         }).ToList(),
         //Fields = dataset.Fields.Select(f => new DataFieldDTO()
         //{
         //    Entity = f.Entity,
         //    EntityId = f.EntityId,
         //    Property = f.Property,
         //    PropertyId = f.PropertyId,
         //    DataType = f.DataType,
         //    IsFiltered = f.IsFiltered,
         //    FieldName = f.FieldName
         //}).ToList()
     });
 }
Пример #2
0
        private UserDataset CreateOrFindAssayPanelDataset(AssayPanelQuery assayPanelQuery, Guid combinedQueryId, string userId, int projectId)
        {
            var assayPanelDataset = _userDatasetRepository.FindSingle(
                d => d.ProjectId == projectId &&
                d.QueryId == combinedQueryId &&
                d.Type == "ASSAY" &&
                d.OwnerId == userId);

            //TODO:should add AssayId???

            if (assayPanelDataset != null)
            {
                return(assayPanelDataset);
            }

            assayPanelDataset = new UserDataset
            {
                Id         = Guid.NewGuid(),
                OwnerId    = userId,
                ProjectId  = projectId,
                Type       = "ASSAY",
                Name       = assayPanelQuery.AssayName + " Data Matrix",
                QueryId    = combinedQueryId,
                FileStatus = 0
            };

            var exportData = _queryService.GetQueryResult(combinedQueryId);

            assayPanelDataset.SubjectCount = exportData.Subjects.Count;
            assayPanelDataset.SampleCount  = exportData.Samples.Count;

            _userDatasetRepository.Insert(assayPanelDataset);
            _dataContext.Save();
            return(assayPanelDataset);
        }
Пример #3
0
        private UserDataset CreateOrFindAssaySampleDataset(AssayPanelQuery assayPanelQuery, Guid combinedQueryId, string userId, int projectId)
        {
            var assaySampleDataset = _userDatasetRepository.FindSingle(
                d => d.ProjectId == projectId &&
                d.QueryId == combinedQueryId &&
                d.Type == "BIOSAMPLES" &&
                d.OwnerId == userId);

            //TODO:should add AssayId???

            if (assaySampleDataset != null)
            {
                return(assaySampleDataset);
            }

            // This is for the subject to sample mapping
            assaySampleDataset = new UserDataset
            {
                Id        = Guid.NewGuid(),
                OwnerId   = userId,
                ProjectId = projectId,
                Type      = "BIOSAMPLES",
                Name      = assayPanelQuery.AssayName + " Samples",
                QueryId   = combinedQueryId,

                FileStatus = 0
            };
            //CREATE DATAFIELDS

            // 1. ADD SubjectId Field
            assaySampleDataset.Fields.Add(CreateSubjectIdField());
            // 2.ADD sample Id Field
            assaySampleDataset.Fields.Add(CreateSampleIdField());
            // 3. ADD Study Id
            assaySampleDataset.Fields.Add(CreateStudyIdField());

            // 4. ADD  Sample characteristics
            assaySampleDataset.Fields.AddRange(assayPanelQuery.SampleQueries.Select(qObj => new DatasetField()
            {
                QueryObjectType = nameof(SampleCharacteristic),
                QueryObject     = qObj,
                ColumnHeader    = qObj.QueryObjectName
            }));

            var exportData = _queryService.GetQueryResult(combinedQueryId);

            assaySampleDataset.SubjectCount = exportData.Subjects.Count;
            assaySampleDataset.SampleCount  = exportData.Samples.Count;

            _userDatasetRepository.Insert(assaySampleDataset);
            _dataContext.Save();
            return(assaySampleDataset);
        }
Пример #4
0
        public void UpdateUserDataset(UserDataset dataset, string userId)
        {
            //check that the owner of this dataset is the caller
            //var dataset = ReadDTO(dto);
            var datasetToUpdate = _userDatasetRepository.FindSingle(d => d.Id == dataset.Id);

            //datasetToUpdate = ReadDTO(dto, datasetToUpdate);
            datasetToUpdate.IsSaved      = true;
            datasetToUpdate.LastModified = DateTime.Today.ToString("f");
            datasetToUpdate.Description  = dataset.Description;
            datasetToUpdate.Name         = dataset.Name;
            _userDatasetRepository.Update(datasetToUpdate);
        }
Пример #5
0
        public IActionResult UpdateUserDataset(Guid datasetId, [FromBody] UserDataset dataset)
        {
            try
            {
                if (!User.Identity.IsAuthenticated)
                {
                    return(null);
                }

                var userId = User.FindFirst(ClaimTypes.UserData).Value;
                _userDataService.UpdateUserDataset(dataset, userId);
                return(new AcceptedResult());
            }
            catch (Exception e)
            {
                return(new BadRequestObjectResult(e.Message));
            }
        }
Пример #6
0
        private UserDataset ReadDTO(UserDatasetDTO dto, UserDataset copyInto = null)
        {
            UserDataset ds;

            ds = copyInto ?? new UserDataset();

            ds.Name        = dto.Name;
            ds.Description = dto.Description;
            ds.Tags        = dto.Tags;
            //ds.OwnerId = dto.OwnerId;
            //ds.ProjectId = dto.ProjectId;
            ds.Type         = dto.Type;
            ds.LastModified = DateTime.Now.ToString("d");// ToShortDateString();

            ds.Filters = new List <DataFilter>();
            //ds.Fields = new List<DataField>();
            foreach (var filterDto in dto.Filters)
            {
                if (filterDto.IsNumeric)
                {
                    var filter = new DataFilterRange();
                    filter.DataField  = getDataField(filterDto.Field);
                    filter.Lowerbound = filterDto.From;
                    filter.Upperbound = filterDto.To;
                    ds.Filters.Add(filter);
                }
                else
                {
                    var filter = new DataFilterExact();
                    filter.DataField = getDataField(filterDto.Field);
                    filter.Values    = filterDto.FilterValues;
                    ds.Filters.Add(filter);
                }
            }

            foreach (var fieldDto in dto.Fields)
            {
                // ds.Fields.Add(getDataField(fieldDto));
            }
            return(ds);
        }
Пример #7
0
        public SecurityToken CreateToken(UserDataset user)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.UserId.ToString()),
                new Claim(JwtRegisteredClaimNames.Email, user.Email),
                new Claim(ClaimTypes.Role, "user"),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
            };
            var key           = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_appSettings.JwtSecret));
            var jwtDescriptor = new SecurityTokenDescriptor()
            {
                Subject            = new ClaimsIdentity(claims),
                SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature),
                Audience           = _appSettings.Audience,
                Issuer             = _appSettings.Issuer,
                Expires            = DateTime.Now.AddDays(1),
            };
            var toke = new JwtSecurityTokenHandler().CreateToken(jwtDescriptor);

            Console.WriteLine(toke);

            return(toke);
        }
Пример #8
0
        private UserDataset CreateOrFindSubjectClinicalDataset(CombinedQuery query, string userId)
        {
            var phenoDataset = _userDatasetRepository.FindSingle(
                d => d.ProjectId == query.ProjectId &&
                d.QueryId == query.Id &&
                d.Type == "PHENO" &&
                d.OwnerId == userId);

            if (phenoDataset != null)
            {
                return(phenoDataset);
            }

            phenoDataset = new UserDataset
            {
                Id         = Guid.NewGuid(),
                OwnerId    = userId,
                ProjectId  = query.ProjectId,
                Type       = "PHENO",
                Name       = "Subjects",
                QueryId    = query.Id,
                FileStatus = 0,
            };

            //ADD SUBJECTID &  STUDYID DATAFIELD
            phenoDataset.Fields.Add(CreateSubjectIdField());
            phenoDataset.Fields.Add(CreateStudyIdField());

            //ADD DESIGN ELEMENT FIELDS (STUDY, VISIT, ARM...etc)
            phenoDataset.Fields.AddRange(query.DesignElements.Select(qObj => new DatasetField()
            {
                QueryObject     = qObj,
                QueryObjectType = qObj.QueryFor,
                ColumnHeader    = qObj.QueryObjectName
            }));

            //ADD SUBJECT CHARACTERISTICS (AGE, RACE, SEX ...etc)
            phenoDataset.Fields.AddRange(query.SubjectCharacteristics.Select(qObj => new DatasetField()
            {
                QueryObject     = qObj,
                QueryObjectType = nameof(SubjectCharacteristic),
                ColumnHeader    = qObj.QueryObjectName//.ObservationName
            }));

            //ADD CLINICAL OBSERVATIONS
            foreach (var co in query.ClinicalObservations)
            {
                phenoDataset.Fields.Add(new DatasetField()
                {
                    QueryObject     = co,
                    QueryObjectType = nameof(SdtmRow),
                    ColumnHeader    = co.ObservationName
                });

                if (co.HasLongitudinalData)
                {
                    phenoDataset.Fields.Add(new DatasetField()
                    {
                        QueryObject = new Query()
                        {
                            QueryFor = nameof(Visit), QueryFrom = nameof(SdtmRow), QuerySelectProperty = "Name"
                        },
                        QueryObjectType = nameof(Visit),
                        ColumnHeader    = "visit"
                    });
                }

                if (co.HasTPT)
                {
                    phenoDataset.Fields.Add(new DatasetField()
                    {
                        QueryObject = new Query()
                        {
                            QueryFor = nameof(SdtmRow.CollectionStudyTimePoint), QueryFrom = nameof(SdtmRow), QuerySelectProperty = "Name"
                        },
                        QueryObjectType = nameof(RelativeTimePoint),
                        ColumnHeader    = "timepoint"
                    });
                }
            }


            //phenoDataset.Fields.AddRange(query.ClinicalObservations.Select(qObj => new DatasetField()
            //{
            //    QueryObject = qObj,
            //    QueryObjectType = nameof(SdtmRow),
            //    ColumnHeader = qObj.ObservationName
            //}));



            //ADD GROUPED CLINICAL OBSERVATIONS
            phenoDataset.Fields.AddRange(query.GroupedObservations.Select(gObs => new DatasetField()
            {
                QueryObject     = gObs,
                QueryObjectType = nameof(SdtmRow),
                ColumnHeader    = gObs.ObservationName
            }));

            var exportData = _queryService.GetQueryResult(query.Id);

            phenoDataset.SubjectCount = exportData.Subjects.Count;


            _userDatasetRepository.Insert(phenoDataset);
            _dataContext.Save();
            return(phenoDataset);
        }