Esempio n. 1
0
        public ActionResult PublicoAlvo([FromHeader] string ibge, [FromRoute] ParamsRouteIndicador1 model, [FromQuery] ParamsQueryIndicador1 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);

                foreach (var item in itens)
                {
                    if (item.data_primeiro_atendimento != null && item.dum != null)
                    {
                        item.qtde_dias_primeiro_atendimento = Convert.ToInt32(
                            item.data_primeiro_atendimento?.Subtract(Convert.ToDateTime(item.dum)).TotalDays
                            );
                    }
                    else
                    {
                        item.qtde_dias_primeiro_atendimento = 0;
                    }
                }

                return(Ok(itens));
            }
            catch (Exception ex)
            {
                var response = TrataErro.GetResponse(ex.Message, true);
                return(StatusCode((int)HttpStatusCode.InternalServerError, response));
            }
        }
Esempio n. 2
0
        public ActionResult Indicador1([FromHeader] string ibge, [FromRoute] ParamsRouteIndicador1 model, [FromQuery] ParamsQueryIndicador1 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.Indicador1(ibge, sqlSelectTipo, sqlFiltros, sqlAgrupamento);

                if (model.desdobramento == "total")
                {
                    var total = new Indicador1TotalViewModel()
                    {
                        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 <Indicador1UnidadeSaudeViewModel>();
                    foreach (var item in registros)
                    {
                        var unidade = new Indicador1UnidadeSaudeViewModel()
                        {
                            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 <Indicador1EquipeViewModel>();
                    foreach (var item in registros)
                    {
                        var equipe = new Indicador1EquipeViewModel()
                        {
                            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 <Indicador1AgenteSaudeViewModel>();
                    foreach (var item in registros)
                    {
                        var agente = new Indicador1AgenteSaudeViewModel()
                        {
                            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));
            }
        }