示例#1
0
        public IActionResult SaveQuery(int projectId, [FromBody] CombinedQueryDTO cdto)
        {
            var userId     = User.FindFirst(ClaimTypes.UserData).Value;
            var savedQuery = _queryService.SaveQuery(cdto, userId, projectId);

            if (savedQuery != null)
            {
                return(new CreatedAtRouteResult("GetSavedQuery", new { projectId = projectId, queryId = savedQuery.Id.ToString() }, savedQuery));
            }

            return(new StatusCodeResult(StatusCodes.Status409Conflict));
        }
示例#2
0
        private CombinedQueryDTO _getNewCqueryForProject(int projectId)
        {
            var dto    = new CombinedQueryDTO();
            var assays = _assayRepository.FindAll(a => a.ProjectId == projectId).ToList();

            dto.IsSavedByUser = false;

            //if (assays.Count == 0)
            //    return null;
            foreach (var assay in assays)
            {
                var apanel = new AssayPanelDTO
                {
                    AssayId   = assay.Id,
                    AssayName = assay.Name
                };
                dto.AssayPanelRequests.Add(apanel.AssayId, apanel);
            }
            return(dto);
        }
示例#3
0
        public static CombinedQueryDTO GetcQueryDTO(CombinedQuery cQuery)
        {
            var dto = new CombinedQueryDTO();

            dto.Id          = cQuery.Id.ToString();
            dto.Name        = cQuery.Name;
            dto.UserId      = cQuery.UserId.ToString();
            dto.ObsRequests = new List <ObservationRequestDTO>();
            foreach (var oq in cQuery.ClinicalObservations.Union(cQuery.GroupedObservations))
            {
                dto.ObsRequests.Add(GetDTOforQuery(oq));
            }
            foreach (var oq in cQuery.SubjectCharacteristics.Union(cQuery.DesignElements))
            {
                dto.SubjCharRequests.Add(GetDTOforQuery(oq));
            }
            foreach (var apq in cQuery.AssayPanels)
            {
                dto.AssayPanelRequests.Add(apq.AssayId, GetDTOforAssayPanelQuery(apq));
            }

            return(dto);
        }
示例#4
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));
        }