Exemplo n.º 1
0
        private string buildSQLFiltros(ParamsQueryIndicador2 modelQuery)
        {
            string sqlFiltros   = string.Empty;
            string quadrimestre = modelQuery.quadrimestre != null?modelQuery.quadrimestre.ToString() : "NULL";

            if (modelQuery.ano == null)
            {
                modelQuery.ano = DateTime.Now.Year;
            }

            if (modelQuery.flg_pn_particular == false)
            {
                sqlFiltros += $@" COALESCE(GI.PRE_NATAL_PARTICULAR, 'F') = 'F'";
            }


            if (modelQuery.flg_em_andamento == true)
            {
                if (modelQuery.idade_gestacional_minima == null)
                {
                    modelQuery.idade_gestacional_minima = 0;
                }

                if (modelQuery.idade_gestacional_maxima == null)
                {
                    modelQuery.idade_gestacional_maxima = 42;
                }

                sqlFiltros += ((sqlFiltros != "") ? " AND " : "") + $@" (((GI.FLG_DESFECHO = 2)
                        AND (GI.DATA_NASCIMENTO BETWEEN (SELECT DATA FROM INICIO_QUADRIMESTRE({quadrimestre},{modelQuery.ano}))
                        AND (SELECT DATA FROM FECHAMENTO_QUADRIMESTRE({quadrimestre},{modelQuery.ano}))))
                        OR (GI.FLG_DESFECHO = 0 AND ((CURRENT_DATE - CAST(GI.DUM AS DATE)) / 7)
                        BETWEEN {modelQuery.idade_gestacional_minima} AND {modelQuery.idade_gestacional_maxima})) ";
            }
            else
            {
                sqlFiltros += ((sqlFiltros != "") ? " AND " : "") + $@" ((GI.FLG_DESFECHO = 2)
                        AND (GI.DATA_NASCIMENTO BETWEEN (SELECT DATA FROM INICIO_QUADRIMESTRE({quadrimestre},{modelQuery.ano}))
                        AND (SELECT DATA FROM FECHAMENTO_QUADRIMESTRE({quadrimestre},{modelQuery.ano})))) ";
            }

            if (!string.IsNullOrEmpty(modelQuery.equipes))
            {
                sqlFiltros += $@" AND EQ.ID IN({modelQuery.equipes}) ";
            }

            if (modelQuery.agente_saude != null)
            {
                sqlFiltros += $@" AND ME.CSI_CODMED = {modelQuery.agente_saude} ";
            }

            return(sqlFiltros);
        }
Exemplo n.º 2
0
        public ActionResult Indicador2([FromHeader] string ibge, [FromRoute] ParamsRouteIndicador2 model, [FromQuery] ParamsQueryIndicador2 modelquery)
        {
            try
            {
                ibge = _config.GetConnectionString(Connection.GetConnection(ibge));
                string sqlSelectTipo  = string.Empty;
                string sqlFiltros     = string.Empty;
                string sqlAgrupamento = string.Empty;

                // Campos do Select
                sqlSelectTipo = " SELECT ";
                if (model.desdobramento == "unidade_saude")
                {
                    sqlSelectTipo += $@" COALESCE(ES.ID,-1) CODIGO_UNIDADE, COALESCE(ES.NOME_FANTASIA,'SEM UNIDADE DE SAÚDE') UNIDADE_SAUDE, ";
                }
                else if (model.desdobramento == "equipe")
                {
                    sqlSelectTipo += $@" COALESCE(EQ.ID,-1) CODIGO_EQUIPE, COALESCE(EQ.DSC_AREA || ' - ' || EQ.COD_INE, 'SEM EQUIPE') EQUIPE, ";
                }
                else if (model.desdobramento == "agente_saude")
                {
                    sqlSelectTipo += $@" COALESCE(ME.CSI_CODMED,-1) CODIGO_AGENTE, COALESCE(ME.CSI_NOMMED,'SEM AGENTE DE SAÚDE') AGENTE, ";
                }

                // Filtros
                sqlFiltros = buildSQLFiltros(modelquery);

                // Agrupamentos
                if (model.desdobramento == "unidade_saude")
                {
                    sqlAgrupamento = $@" GROUP BY ES.ID, ES.NOME_FANTASIA ORDER BY ES.NOME_FANTASIA ";
                }
                else if (model.desdobramento == "equipe")
                {
                    sqlAgrupamento = $@" GROUP BY EQ.ID, EQ.NOME_REFERENCIA, EQ.DSC_AREA, EQ.COD_INE ORDER BY EQ.NOME_REFERENCIA ";
                }
                else if (model.desdobramento == "agente_saude")
                {
                    sqlAgrupamento = $@" GROUP BY ME.CSI_CODMED, ME.CSI_NOMMED ";
                }

                var registros = _repository.Indicador2(ibge, sqlSelectTipo, sqlFiltros, sqlAgrupamento);

                if (model.desdobramento == "total")
                {
                    var total = new Indicador2TotalViewModel()
                    {
                        porcentagem = Helper.CalculaPorcentagem(
                            registros.FirstOrDefault().qtde_gestantes,
                            registros.FirstOrDefault().qtde_metas
                            ),
                        porcentagem_valida = Helper.CalculaPorcentagem(
                            registros.FirstOrDefault().qtde_gestantes,
                            registros.FirstOrDefault().qtde_metas_validas
                            ),
                        qtde_gestantes     = registros.FirstOrDefault().qtde_gestantes,
                        qtde_metas         = registros.FirstOrDefault().qtde_metas,
                        qtde_metas_validas = registros.FirstOrDefault().qtde_metas_validas,
                    };
                    return(Ok(total));
                }
                else if (model.desdobramento == "unidade_saude")
                {
                    var unidades = new List <Indicador2UnidadeSaudeViewModel>();
                    foreach (var item in registros)
                    {
                        var unidade = new Indicador2UnidadeSaudeViewModel()
                        {
                            codigo_unidade     = item.codigo_unidade,
                            porcentagem        = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas),
                            porcentagem_valida = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas_validas),
                            qtde_gestantes     = item.qtde_gestantes,
                            qtde_metas         = item.qtde_metas,
                            qtde_metas_validas = item.qtde_metas_validas,
                            unidade            = item.unidade_saude
                        };
                        unidades.Add(unidade);
                    }

                    return(Ok(unidades));
                }
                else if (model.desdobramento == "equipe")
                {
                    var equipes = new List <Indicador2EquipeViewModel>();
                    foreach (var item in registros)
                    {
                        var equipe = new Indicador2EquipeViewModel()
                        {
                            codigo_equipe      = item.codigo_equipe,
                            equipe             = item.equipe,
                            porcentagem        = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas),
                            porcentagem_valida = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas_validas),
                            qtde_gestantes     = item.qtde_gestantes,
                            qtde_metas         = item.qtde_metas,
                            qtde_metas_validas = item.qtde_metas_validas
                        };
                        equipes.Add(equipe);
                    }
                    return(Ok(equipes));
                }
                else if (model.desdobramento == "agente_saude")
                {
                    var agentes = new List <Indicador2AgenteSaudeViewModel>();
                    foreach (var item in registros)
                    {
                        var agente = new Indicador2AgenteSaudeViewModel()
                        {
                            porcentagem        = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas),
                            porcentagem_valida = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas_validas),
                            agente             = item.agente,
                            codigo_agente      = item.codigo_agente,
                            qtde_gestantes     = item.qtde_gestantes,
                            qtde_metas         = item.qtde_metas,
                            qtde_metas_validas = item.qtde_metas_validas
                        };
                        agentes.Add(agente);
                    }
                    return(Ok(agentes));
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                var response = TrataErro.GetResponse(ex.Message, true);
                return(StatusCode((int)HttpStatusCode.InternalServerError, response));
            }
        }
Exemplo n.º 3
0
        public ActionResult PublicoAlvo([FromHeader] string ibge, [FromRoute] ParamsRouteIndicador2 model, [FromQuery] ParamsQueryIndicador2 modelquery)
        {
            try
            {
                ibge = _config.GetConnectionString(Connection.GetConnection(ibge));

                if (modelquery.pagesize == null)
                {
                    modelquery.pagesize = 20;
                }

                string sqlSelect  = string.Empty;
                string sqlFiltros = string.Empty;

                // Filtros
                sqlFiltros = buildSQLFiltros(modelquery);

                // Qtde. de registros
                var countRegistros = _repository.CountPublicoAlvo(ibge, sqlFiltros);
                Response.Headers.Add("X-Total-Count", countRegistros.ToString());

                // Select + paginação
                modelquery.page = modelquery.page * modelquery.pagesize;
                sqlSelect       = $@" SELECT FIRST {modelquery.pagesize} SKIP {modelquery.page} ";

                var itens = _repository.PublicoAlvo(ibge, sqlSelect, sqlFiltros);

                return(Ok(itens));
            }
            catch (Exception ex)
            {
                var response = TrataErro.GetResponse(ex.Message, true);
                return(StatusCode((int)HttpStatusCode.InternalServerError, response));
            }
        }