Leitos psiquiátricos em hospitais gerais por mil habitantes: mudanças entre as edições

De Wiki
Ir para navegação Ir para pesquisar
Linha 216: Linha 216:
== Método de processamento analítico ==
== Método de processamento analítico ==


 
Código [https://pt.wikipedia.org/wiki/PostgreSQL posgreSQL] de criação da tabela mv_e_3_cartesiano:<syntaxhighlight lang="sql">
CREATE MATERIALIZED VIEW pri.mv_leitos_psiquiatricos_mun
AS SELECT CURRENT_DATE AS dt_atualizacao,
    to_date(s.competen::text, 'YYYYMM'::text) AS dt_competen,
    s.codufmun AS co_municipio_ibge,
    s.tp_unid,
    sum(l.qt_sus) AS qt_leitos,
    true AS st_sus
  FROM cnes.st s
    JOIN cnes.lt l ON s.competen = l.competen AND s.cnes = l.cnes
  WHERE s.competen > 201412
    AND l.codleito = 47
    AND (s.tp_unid = ANY (ARRAY[5, 7]))
  GROUP BY (CURRENT_DATE),
          (to_date(s.competen::text, 'YYYYMM'::text)), s.codufmun, s.tp_unid
UNION
SELECT CURRENT_DATE AS dt_atualizacao,
    to_date(s.competen::text, 'YYYYMM'::text) AS dt_competen,
    s.codufmun AS co_municipio_ibge,
    s.tp_unid,
    sum(l.qt_nsus) AS qt_leitos,
    false AS st_sus
  FROM cnes.st s
    JOIN cnes.lt l ON s.competen = l.competen AND s.cnes = l.cnes
  WHERE s.competen > 201412
    AND l.codleito = 47
    AND (s.tp_unid = ANY (ARRAY[5, 7]))
  GROUP BY (CURRENT_DATE),
          (to_date(s.competen::text, 'YYYYMM'::text)),
          s.codufmun,
          s.tp_unid;
</syntaxhighlight>
Código [https://pt.wikipedia.org/wiki/PostgreSQL posgreSQL] de criação da tabela mv_e_3_cartesiano:<syntaxhighlight lang="sql">
Código [https://pt.wikipedia.org/wiki/PostgreSQL posgreSQL] de criação da tabela mv_e_3_cartesiano:<syntaxhighlight lang="sql">
CREATE MATERIALIZED VIEW pri.mv_leitos_psiquiatricos_mun_cartesiano
CREATE MATERIALIZED VIEW pri.mv_leitos_psiquiatricos_mun_cartesiano

Edição das 17h07min de 13 de janeiro de 2023

Introdução

A nota técnica de indicador descreve o trabalho de processamento e apresentação de dados de Leitos psiquiátricos e/ou saúde mental em hospitais gerais (transtornos, transtorno e dependência química e dependência química, adultos e adolescentes) e decorrente estratificação. A metodologia aplicada pelo Centro de Informações Estratégicas para a Gestão do SUS (Cieges) constitui adaptação de fichas da Rede Interagencial de Informações para a Saúde (RIPSA) e de ensejos anteriores da gestão estadual do SUS.

Endereço eletrônico

Essa nota técnica é acessível pelo endereço https://wiki.conass.org.br/index.php?title=Leitos_psiqui%C3%A1tricos_e/ou_sa%C3%BAde_mental_em_hospitais_gerais_(transtornos,_transtorno_e_depend%C3%AAncia_qu%C3%ADmica_e_depend%C3%AAncia_qu%C3%ADmica,_adultos_e_adolescentes).

Objetivo

Apresentar parâmetros de interpretação, granularidade e reprodutibilidade do indicador.

Ficha do indicador para o sanitarista

Conceituação

Número de leitos hospitalares existentes, por mil habitantes residentes, em determinado espaço geográfico, no ano considerado.

Interpretação

  • Mede a relação entre a oferta de leitos hospitalares conveniados ou contratados pelo SUS e a população residente na mesma área geográfica. Não inclui os leitos privados sem vínculo com o SUS.
  • É influenciado por fatores socioeconômicos, epidemiológicos e demográficos, tais como nível de renda, composição etária, desenvolvimento tecnológico, oferta de profissionais de saúde, políticas públicas assistenciais e preventivas, a exemplo das de incentivo a cirurgias ambulatoriais, desospitalização na saúde mental e programas de internação domiciliar. Em geral, a concentração de leitos está associada ao maior poder aquisitivo da população e à demanda por serviços especializados, condições que atraem investimentos do setor privado de saúde.

Usos

  • Analisar variações geográficas e temporais da oferta de leitos hospitalares pelo SUS, segundo a esfera administrativa, identificando situações de desigualdade e tendências que demandem ações e estudos específicos.
  • Subsidiar processos de planejamento, gestão e avaliação de políticas públicas voltadas para a assistência médico-hospitalar de responsabilidade do SUS.

Limitações

  • Exclui os leitos existentes em hospitais privados sem vínculo com o SUS, embora o indicador se refira à população total.
  • Inclui a demanda hospitalar por parte de pessoas não residentes, alterando a relação de proporcionalidade dos leitos disponíveis para a população residente.
  • Inexistem padrões nacionais ou internacionais validados para análises comparativas, pois o indicador expressa uma combinação de fatores inerentes a realidades regionais ou locais distintas.
  • Até 2003, o indicador tinha como fonte os hospitais participantes do Sistema de Informações Hospitalares do SUS (SIH/SUS); a partir de 2005, passa a ser utilizado o Cadastro Nacional de Estabelecimentos de Saúde (CNES). Esta mudança de fonte pode ter introduzido descontinuidades nos valores dos indicadores.
  • Critérios administrativos, como a manutenção efetuada em 2002, eliminando do cadastro hospitais que não mais apresentavam Autorizações de Internações Hospitalares (AIH), podem provocar quebras na série histórica do indicador.
  • Até 2003, os hospitais com atividades de ensino e pesquisa eram classificados como “universitários”, independentemente de sua vinculação ou não a universidades, não discriminando se públicos ou privados. Com a implantação do CNES, esta categoria foi extinta, sendo os hospitais universitários reclassificados como públicos ou privados, também gerando descontinuidade no indicador.

Fontes

Ministério da Saúde. Secretaria de Atenção à Saúde (SAS): Sistema de Informações Hospitalares do SUS – SIH/SUS (até 2003), Cadastro Nacional de Estabelecimentos de Saúde – CNES (a partir de 2005) e base demográfica do IBGE.

Métodos de Cálculo

[Média anual do número mensal de leitos hospitalares existentes]÷[População total residente]×1000

Categorias Sugeridas para Análise

Unidade geográfica: Brasil, grandes regiões, estados, Distrito Federal, regiões metropolitanas e municípios das capitais. Tipo de leito: existentes SUS, existentes não-SUS, total. Esfera administrativa: federal, estadual, municipal e privado. Tipo de prestador: público, privado e filantrópico.

Dados Estatísticos e Comentários

Número médio de leitos hospitalares por região do Brasil
nu_ano 1 N 2 NE 3 SE 4 S 5 CO Brasil
2.015 10.963 35.183,8 37.208 16.522,3 8.738,3 108.615,4
2.016 10.942,6 34.816,1 36.414,6 16.032,4 8.604,7 106.810,3
2.017 10.854,5 34.471,9 35.714,3 15.596,5 8.550 105.187,3
2.018 10.836,1 33.708,1 34.775,7 15.119,7 9.126,5 103.566
2.019 10.666,8 32.876,8 34.136,2 14.776,8 8.953 101.409,4
2.020 10.364,3 32.454,4 33.536,3 14.114,2 8.819,3 99.288,4
2.021 10.287,6 32.211,4 32.846,9 13.418,4 8.694,8 97.459,2

A média do número absoluto de leitos hospitalares apresenta tendência de queda em todas as regiões do Brasil.

Leitos por mil habitantes por região do Brasil
nu_ano 1 N 2 NE 3 SE 4 S 5 CO Brasil
2.015 0,63 0,63 0,43 0,57 0,57 0,53
2.016 0,62 0,62 0,42 0,55 0,55 0,52
2.017 0,61 0,61 0,41 0,53 0,54 0,51
2.018 0,6 0,59 0,4 0,51 0,57 0,5
2.019 0,58 0,58 0,39 0,49 0,55 0,48
2.020 0,56 0,57 0,38 0,47 0,53 0,47
2.021 0,54 0,56 0,37 0,44 0,52 0,46

O número de leitos por habitantes é inferior à média nacional da região Sudeste ao logo da série histórica observada.

Literatura relacionada

A busca "Beds"[Mesh] no sítio PubMed resultou, em 12/1/2022, em 4.588 resultados.

Ficha do indicador para o cientista de dados

Método de processamento de dados

Código posgreSQL de criação da tabela mv_codufmun_competen_tp_leito:

CREATE MATERIALIZED VIEW cartesiano.mv_codufmun_competen_tp_leito
AS SELECT vcc.co_municipio_ibge,
    vcc.competen,
    tctl.co_tpleito
   FROM territoriais.vw_codufmun_competen vcc
     CROSS JOIN cnv.td_cnes_tp_leito tctl;

-- View indexes:
CREATE INDEX mv_codufmun_competen_tp_leito_co_municipio_ibge_idx 
    ON cartesiano.mv_codufmun_competen_tp_leito USING btree 
    (co_municipio_ibge, competen);

Método de processamento analítico

Código posgreSQL de criação da tabela mv_e_3_cartesiano:

CREATE MATERIALIZED VIEW pri.mv_leitos_psiquiatricos_mun
AS SELECT CURRENT_DATE AS dt_atualizacao,
    to_date(s.competen::text, 'YYYYMM'::text) AS dt_competen,
    s.codufmun AS co_municipio_ibge,
    s.tp_unid,
    sum(l.qt_sus) AS qt_leitos,
    true AS st_sus
   FROM cnes.st s
     JOIN cnes.lt l ON s.competen = l.competen AND s.cnes = l.cnes
  WHERE s.competen > 201412 
    AND l.codleito = 47 
    AND (s.tp_unid = ANY (ARRAY[5, 7]))
  GROUP BY (CURRENT_DATE), 
           (to_date(s.competen::text, 'YYYYMM'::text)), s.codufmun, s.tp_unid
UNION
 SELECT CURRENT_DATE AS dt_atualizacao,
    to_date(s.competen::text, 'YYYYMM'::text) AS dt_competen,
    s.codufmun AS co_municipio_ibge,
    s.tp_unid,
    sum(l.qt_nsus) AS qt_leitos,
    false AS st_sus
   FROM cnes.st s
     JOIN cnes.lt l ON s.competen = l.competen AND s.cnes = l.cnes
  WHERE s.competen > 201412 
    AND l.codleito = 47 
    AND (s.tp_unid = ANY (ARRAY[5, 7]))
  GROUP BY (CURRENT_DATE), 
           (to_date(s.competen::text, 'YYYYMM'::text)), 
           s.codufmun, 
           s.tp_unid;

Código posgreSQL de criação da tabela mv_e_3_cartesiano:

CREATE MATERIALIZED VIEW pri.mv_leitos_psiquiatricos_mun_cartesiano
AS SELECT
        CASE
            WHEN cctu.co_tpunid = 5 THEN 6
            ELSE 7
        END AS indicador_id,
    cctu.co_municipio_ibge,
    cctu.competen,
    cctu.co_tpunid,
    COALESCE(lpm.qt_leitos, 0::bigint) AS qt_leitos,
    lpm.st_sus
   FROM cartesiano.mv_codufmun_competen_tp_unid cctu
     LEFT JOIN pri.mv_leitos_psiquiatricos_mun lpm 
       ON cctu.co_municipio_ibge = lpm.co_municipio_ibge 
      AND cctu.competen = lpm.dt_competen 
      AND cctu.co_tpunid = lpm.tp_unid
  WHERE cctu.co_tpunid = ANY (ARRAY[5, 7])
  ORDER BY cctu.co_municipio_ibge, cctu.competen;


CREATE INDEX mv_leitos_psiquiatricos_mun_cartesiano_co_municipio_ibge_idx 
    ON pri.mv_leitos_psiquiatricos_mun_cartesiano USING btree 
       (co_municipio_ibge, competen);
Amostra da tabela mv_leitos_psiquiatricos_mun_cartesiano.
indicador_id co_municipio_ibge competen co_tpunid qt_leitos st_sus
6 432160 2022-01-01 5 1 true
6 420890 2018-10-01 5 1 true
6 431680 2020-11-01 5 2 false
6 211110 2020-06-01 5 4 true
6 430370 2021-03-01 5 10 true
7 355280 2020-07-01 7 108 false
6 431610 2020-05-01 5 32 true
6 521020 2017-11-01 5 4 true
6 510785 2018-02-01 5 4 true
6 150304 2020-01-01 5 1 true
7 250400 2021-09-01 7 143 true
6 420350 2018-11-01 5 1 false
6 432240 2020-02-01 5 10 true
6 230590 2018-07-01 5 1 true
7 352530 2020-07-01 7 20 false

Método de apresentação de dados

O indicador constitui painel analítico na plataforma do CIEGES, empregando-se a ferramenta Tableau.

Método de análise matemática e estatística

As consultas postgreSQL abaixo ilustra como foi realizada a extração das tabelas apresentadas na seção Dados Estatísticos e Comentários.

Média de leitos em doze meses:

 select 
       extract(year from competen) nu_ano,
       round(sum(case when left(co_municipio_ibge::text,1)::int=1 
                      THEN qt_leitos ELSE 0 END)::numeric/12
      ,1) "1 N",
       round(sum(case when left(co_municipio_ibge::text,1)::int=2
                      THEN qt_leitos ELSE 0 END)::numeric/12
      ,1) "2 NE",
       round(sum(case when left(co_municipio_ibge::text,1)::int=3
                      THEN qt_leitos ELSE 0 END)::numeric/12
      ,1) "3 SE",
       round(sum(case when left(co_municipio_ibge::text,1)::int=4
                      THEN qt_leitos ELSE 0 END)::numeric/12
      ,1) "4 S",
       round(sum(case when left(co_municipio_ibge::text,1)::int=5 
                      THEN qt_leitos ELSE 0 END)::numeric/12
      ,1) "5 CO",
      ROUND(SUM(qt_leitos)::numeric/12,1) "Brasil"
  from pri.mv_leitos_tipo_mun_cartesiano
 where extract(year from competen) between 2015 and 2021
   and co_tpleito in (3, 4, 5, 7)
 group by 1
 order by 1

Leitos por habitante:

select nu_ano,
       max(case when regiao = 1 then leitos_hab end) "1 N",
       max(case when regiao = 2 then leitos_hab end) "2 NE",
       max(case when regiao = 3 then leitos_hab end) "3 SE",
       max(case when regiao = 4 then leitos_hab end) "4 S",
       max(case when regiao = 5 then leitos_hab end) "5 CO",
       max(case when regiao = 0 then leitos_hab end) "Brasil"
from (       
select A.nu_ano,
       A.regiao,
       round((A.qt_leitos::numeric/12)) qt_leitos,
       B.qt_populacao,
       round((A.qt_leitos::numeric/12)/B.qt_populacao*1000,2) leitos_hab
from (
select extract(year from competen) nu_ano,
       left(A.co_municipio_ibge::text,1)::int regiao,
       sum(qt_leitos) qt_leitos
  from pri.mv_leitos_tipo_mun_cartesiano A
 where extract(year from competen) between 2015 and 2021
   and co_tpleito in (3, 4, 5, 7)
   group by 1,2
union
select extract(year from competen) nu_ano,
       0 regiao,
       round(sum(qt_leitos)::numeric) qt_leitos
  from pri.mv_leitos_tipo_mun_cartesiano A
 where extract(year from competen) between 2015 and 2021
   and co_tpleito in (3, 4, 5, 7)
   group by 1,2
) A
  left join 
  (select nu_ano,
          left(co_municipio_ibge::text,1)::int regiao,
          sum(qt_populacao) qt_populacao
     from bd_geral.tf_populacao_municipio_idade_sexo
     group by 1,2
    union
   select nu_ano,
          0 regiao,
          sum(qt_populacao) qt_populacao
     from bd_geral.tf_populacao_municipio_idade_sexo
     group by 1,2 
   ) B
    on A.regiao = B.regiao 
    and A.nu_ano = B.nu_ano 
   order by 1,2
) x
group by 1
order by 1

Método de descoberta de conhecimento em bancos de dados (KDD)

Não foram aplicados modelos de mineração de dados no presente indicador.

Base de dados

O acesso aos dados processados está em desenvolvimento.

Apêndice

Ver também

Ligações externas

Rastreabilidade

atributo valor
Identificador 6
Código RIPSA E.3.1
Nome RIPSA Nº de leitos psiquiátricos em hospitais gerais
URL RIPSA
tabela CIEGES bd_pri.mv_leitos_psiquiatricos_mun_cartesiano