Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        private ExportFileDefinition GetSampleFileDefinition(CombinedQuery query)
        {
            AssayPanelQuery assayPanelQuery = query.AssayPanels.Single();
            // This is for the subject to sample mapping
            var assaySampleDataset = new ExportFileDefinition
            {
                ProjectId   = query.ProjectId,
                ContentType = "BIOSAMPLES",
                Name        = assayPanelQuery.AssayName + " Samples",
                QueryId     = query.Id
            };

            //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
            }));

            return(assaySampleDataset);
        }
Exemplo n.º 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);
        }
Exemplo n.º 4
0
        private ExportFileDefinition GetAssayDataFileDefinition(CombinedQuery query)
        {
            AssayPanelQuery assayPanelQuery   = query.AssayPanels.Single();
            var             assayPanelDataset = new ExportFileDefinition
            {
                ProjectId   = query.ProjectId,
                ContentType = "ASSAY",
                Name        = assayPanelQuery.AssayName + " Data File",
                QueryId     = query.Id
            };

            return(assayPanelDataset);
        }
Exemplo n.º 5
0
        private static AssayPanelDTO GetDTOforAssayPanelQuery(AssayPanelQuery apQuery)
        {
            var apDTO = new AssayPanelDTO()
            {
                AssayId   = apQuery.AssayId,
                AssayName = apQuery.AssayName
            };

            foreach (var sampleQuery in apQuery.SampleQueries)
            {
                apDTO.SampleQuery.Add(GetDTOforQuery(sampleQuery));
            }
            return(apDTO);
        }
Exemplo n.º 6
0
        public CombinedQuery CreateSingleAssayCombinedQuery(CombinedQuery cQuery, AssayPanelQuery apQuery)
        {
            var singleAssayCombinedQuery = new CombinedQuery
            {
                ProjectId              = cQuery.ProjectId,
                ClinicalObservations   = cQuery.ClinicalObservations,
                DesignElements         = cQuery.DesignElements,
                GroupedObservations    = cQuery.GroupedObservations,
                SubjectCharacteristics = cQuery.SubjectCharacteristics,
                UserId = cQuery.UserId,
                Id     = Guid.NewGuid()
            };

            singleAssayCombinedQuery.AssayPanels.Add(apQuery);
            _combinedQueryRepository.Insert(singleAssayCombinedQuery);

            return(singleAssayCombinedQuery);
        }
Exemplo n.º 7
0
        public CombinedQuery SaveQuery(CombinedQueryDTO cdto, string userId, int projectId)
        {
            CombinedQuery cQuery = new CombinedQuery();

            cQuery.Name          = cdto.Name;
            cQuery.UserId        = Guid.Parse(userId);
            cQuery.ProjectId     = projectId;
            cQuery.Id            = Guid.NewGuid();
            cQuery.IsSavedByUser = cdto.IsSavedByUser;

            var requests = cdto.ObsRequests.Union(cdto.SubjCharRequests);

            foreach (var request in requests)
            {
                if (!request.IsMultipleObservations)
                {
                    var query = GetQueryFromQueryDTO(request);
                    if (request.IsSubjectCharacteristics)
                    {
                        cQuery.SubjectCharacteristics.Add(query);
                    }
                    if (request.IsClinicalObservations)
                    {
                        cQuery.ClinicalObservations.Add((ObservationQuery)query);
                    }
                    if (request.IsDesignElement)
                    {
                        cQuery.DesignElements.Add(query);
                    }
                }
                else
                {
                    var goq = new GroupedObservationsQuery()
                    {
                        //Name = request.Name,
                        GroupedObsName      = request.O3,
                        PropertyName        = request.QO2,
                        PropertyLabel       = request.QO2_label,
                        PropertyId          = request.QO2id,
                        Group               = request.Group,
                        GroupedObservations = new List <ObservationQuery>(),
                        DataType            = request.DataType,
                        FilterExactValues   = request.FilterExactValues,
                        FilterRangeFrom     = request.FilterRangeFrom,
                        FilterRangeTo       = request.FilterRangeTo,
                        IsFiltered          = request.IsFiltered,
                        ProjectId           = request.ProjectId
                    };
                    goq.GroupedObservations.AddRange(request.GroupedObservations.Select(obsReq => new ObservationQuery()
                    {
                        TermId          = obsReq.O3id,
                        TermName        = obsReq.O3,
                        PropertyId      = obsReq.QO2id,
                        PropertyName    = obsReq.QO2,
                        Group           = obsReq.Group,
                        IsOntologyEntry = obsReq.IsOntologyEntry,
                        TermCategory    = obsReq.OntologyEntryCategoryName,
                        DataType        = obsReq.DataType,
                        ProjectId       = obsReq.ProjectId
                    }));
                    cQuery.GroupedObservations.Add(goq);
                }
            }

            var assaypanels = cdto.AssayPanelRequests.Values.Where(ap => ap.IsRequested);

            foreach (var assayRequest in assaypanels)
            {
                var assayPanelQuery = new AssayPanelQuery();
                assayPanelQuery.AssayId   = assayRequest.AssayId;
                assayPanelQuery.AssayName = assayRequest.AssayName;

                foreach (var sampleQuery in assayRequest.SampleQuery)
                {
                    var query = GetQueryFromQueryDTO(sampleQuery);
                    assayPanelQuery.SampleQueries.Add(query);
                }
                cQuery.AssayPanels.Add(assayPanelQuery);
            }

            return(_combinedQueryRepository.Insert(cQuery));
        }