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