SQL para o cuidado de saúde

SQL - análise de alguns determinantes sociais da saúde

Isabel Cruz

O primeiro estudo sobre SL tratou de consultas para obter informações sobre o volume de determinados dados do banco consultado. Neste estudo, abordaremos alguns determinantes sociais de interesse para o monitoramento da equidade nos resultados de saúde por meio de consulta estruturada (structured query) que pode servir de subsídio para análises correlatas.

Este estudo tem como referencial a estratégia de saúde digital  (Cruz, 2020), segundo a qual, cabe a enfermeiras(os) e obstetrizes usar dados de uma ampla gama de fontes para criar informações para a enfermagem, seus pacientes/clientes e demais profissionais de saúde e usuários para apoiar o cuidado. Igualmente, com o prontuário eletrônico da pessoa (PEP), ressalta-se a relevância dos dados para a gestão do cuidado de saúde em tempo real. 

Este estudo, de uma série, visa incentivar a aquisição de habilidades no sentido de recuperar informações de um banco de dados. A “SQL”( Structured Query Language) é utilizada neste estudo para extrair informações de um banco de dados relacional fictício e, assim, demonstrar sua aplicabilidade para obtenção de informações e respectivas análises sobre pacientes e resultados de saúde.

Os exercícios aqui apresentados foram elaborados por Connoly(2020).

Isto posto, seguem os exercícios.

Observe a cena: 
"Haverá uma reunião do Conselho de Equidade em Saúde das Populações Vulneráveis e lhe pediram para apresentar uma sinopse dos atendimentos com dados desagregados por alguns atributos relacionados a determinantes sociais da saúde, tais como racismo, sexismo. Você acessa o banco de dados 'HEALTHCARE' para extrair os dados de interesse, iniciando as consultas para obtenção das informações sobre a população atendida na instituição."

-- Qual é o perfil de pacientes por gênero, raça e etnia, na nossa instituição? 
SELECT 
GENDER
,COUNT(*)
FROM HEALTHCARE.PATIENTS
GROUP BY GENDER;
-- função para ordenar pela(s) coluna(s) selecionada(s)



 

 

 

 

 

 

No que se refere às políticas de equidade social e ao enfrentamento dos determinantes sociais da saúde (DSS) como o sexismo, nota-se a necessidade de se discutir a modelagem dos dados previamente de modo que as informações obtidas sejam isentas de vieses opressivos.

Ozar (2022) apresenta uma sugestão de script, considerando que como a sociedade em sua maioria só reconhece 2 gêneros, este dado pode ser binário: 0 = feminino (!?) e 1 = masculino. Ele sugere (e eu adaptei)  este script para modelar/povoar o banco de dados:

CREATE TABLE dbo.Paciente(
PacienteId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
PacienteName NVARCHAR(50),
IsFemale BIT
);
INSERT INTO dbo.Paciente(PacienteName)
VALUES(N'Brent Ozar', 0);

Brincadeiras à parte, Ozar apresenta o script (adaptado por mim) que modela/povoa o dado no Banco de Dados referente à orientação sexual:

CREATE TABLE dbo.SexualOrientation (
SexualOrientationId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
SexualOrientationName NVARCHAR(50)
);
INSERT INTO dbo.SexualOrientation(SexualOrientationName)
VALUES (N'Heterosexual'),
(N'Homosexual'),
(N'Bisexual'),
(N'Asexual'); 

Nenhum destes scripts abarca toda a gama de dados relacionados à sexualidade humana, mas este é um tópico que não pode ser mais desconsiderado na modelagem dos bancos de dados e tampouco na análise destes mesmos bancos.

Uma vez que esta tarefa visa subsidiar entidades de controle social, cabe aqui divulgar um script, preparado por caruso (2021) para extração de informações em bases de dados públicas (Grupo Gay da Bahia) sobre a mortalidade na população LGBT+:

#Uma série por ano de todo o Brasil
SELECT * FROM `basedosdados.br_ggb_relatorio_lgbtqi.brasil`

#Por raça/cor
SELECT * FROM `basedosdados.br_ggb_relatorio_lgbtqi.raca_cor`

#Por grupo LGBTQIA+
SELECT * FROM `basedosdados.br_ggb_relatorio_lgbtqi.grupo_lgbtqia`

#Por causa do óbito
SELECT * FROM `basedosdados.br_ggb_relatorio_lgbtqi.brasil`

#Por local do assassinato
SELECT * FROM `basedosdados.br_ggb_relatorio_lgbtqi.local`

 Fonte: https://basedosdados.org/

Dando continuidade ao nosso exercício, agora a consulta é por raça.

SELECT 
RACE
,COUNT(*) 
FROM HEALTHCARE.PATIENTS
GROUP BY RACE;


 

 

 

 

 

 

 

 

Em um banco de dados com mais de 1000 registros, a categorização destes dados durou apenas 0.015 segundos.

Neste estudo estamos usando um banco de dados com pacientes fictícios americanos. No Brasil, conforme a Política nacional de Saúde Integral da População Negra - PNSIPN - o dado é "cor" (branco, preto, pardo, amarelo e indígena), devendo ser coletado por auto-declaração. Vamos então adaptar esta consulta, conforme a PNSIPN:

SELECT 
COR
,COUNT(*)
FROM SUS.PACIENTE --
o nome do banco de dados é SUS
GROUP BY COR; --
vale observar que "ignorado" não faz parte do "dataset", sendo uma violação da integridade

No que se refere a povos tradicionais, ciganos e indígenas, entre outros, esta "query" pode ser de interesse para o estabelecimento do perfil da população atendida quanto ao volume de casos:

SELECT 
ETNIA
,COUNT(*)
FROM SUS.PACIENTE
--o nome do banco de dados é SUS
GROUP BY ETNIA;

De uma mesma tabela podemos extrair vários dados para compor uma informação. Por exemplo: raça/etnia.

SELECT 
RACE
,ETHNICITY
,COUNT(*)
-- o total de pessoas por grupo populacional
FROM HEALTHCARE.PATIENTS
GROUP BY RACE, ETHNICITY;
-- ordenado pelas colunas 

 É possível ampliar a análise dos dados, como nesta consulta que relaciona gênero, raça e etnia, mostrando o número total de pessoas por grupo:

SELECT 
GENDER
,RACE
,ETHNICITY
,COUNT(*)
FROM HEALTHCARE.PATIENTS
GROUP BY GENDER, RACE, ETHNICITY;

E agora uma consulta a este banco de dados sobre a idade dos(as) pacientes.

SELECT 
ID
-- a identidade anonimizada
,BIRTHDATE -- neste banco não há idade, apenas data de nascimento. Então vamos precisar fazer uns cálculos...
,FLOOR(DATEDIFF(curdate(),BIRTHDATE)/365.25) AS AGE_IN_YEARS -- a função datediff calcula a diferença em dias da data atual da consulta. Este resultado em dias será dividido por 365.25 e a função floor mantém apenas o número inteiro
FROM HEALTHCARE.PATIENTS;

 Consultando sobre os CEPs de origem dos(as) pacientes

SELECT DISTINCT ZIP
,COUNT(*)
FROM HEALTHCARE.PATIENTS
GROUP BY ZIP;
-- uma função de agregação


 

 

 

 

 

 

 

Observe na figura que há um grupo com 543 registros (pacientes) sem o dado referente ao CEP. Isto tem implicações quanto aos resultados das consultas e às informações sobre a população em estudo. Este tipo de problema não é objeto deste estudo, apenas destacamos para mostrar como a consulta estruturada permite evidenciar os erros também rapidamente.

Por fim, vamos levantar o perfil de pacientes para pacientes que foram internados em 2019:

SELECT 
GENDER
,RACE
,ETHNICITY
,COUNT(*) AS N
--
a coluna que receberá estes dados foi nomeada de "N" (quantidade)
FROM HEALTHCARE.ENCOUNTERS ENC
-
- "ENC" é o novo nome dado à coluna 
JOIN HEALTHCARE.patients PAT ON ENC.PATIENT=PAT.ID
-
- "JOIN" é uma cláusula que combina 2 tabelas
WHERE START>='2019-01-01'
AND START<'2020-01-01'
AND ENCOUNTERCLASS='inpatient'
-- "AND" operador que retorna resultados se as condições forem verdadeiras
GROUP BY GENDER, RACE, ETHNICITY

Cabe observar que a mesma consulta pode se repetir diversas vezes para fins de monitoramento ou relatório, por exemplo. Há no SQL um recurso para fazer isso criando "VIEWS".

Considerações finais

Este estudo é uma abordagem preliminar e superficial da linguagem SQL. O objetivo é compartilhar estruturas básicas de consultas para a gestão do cuidado de saúde e, especialmente, para o monitoramento da equidade nos resultados. Seguramente a aplicação do SQL pode ser uma ferramenta no cotidiano do trabalho na área da saúde.

Bibliografia

CRUZ, Isabel CF da. The Priority 4 at Brazilian Digital Health Strategy 2020-2028: analysis from the nurse's perspective. Journal of Specialized Nursing Care, [S.l.], v. 12, n. 1, dec. 2020. ISSN ISSN 1983-4152. Available at: <http://www.jsncare.uff.br/index.php/jsncare/article/view/3387/842>. Date accessed: 08 june 2022.

Caruso, G Queremos saber #OndeEstãoDadosLGBTQIA. 2021. Disponível em https://dev.to/basedosdados/queremos-saber-ondeestaodadoslgbtqia-2mmp 

Connolly, M -SQL for Healthcare.2020. Available at https://www.themillennialanalyst.com/

Ozar, B - Designing a Data Model for Gender and Sexuality (Oh And Also, I’m Pansexual). 2022. Disponível em https://www.brentozar.com/archive/2022/05/designing-a-data-model-for-gender-and-sexuality-oh-and-also-im-pansexual/

Apontamentos

  • Não há apontamentos.


BNN - ISSN 1676-4893 

Boletim do Núcleo de Estudos e Pesquisas sobre as Atividades de Enfermagem (NEPAE)e do Núcleo de Estudos sobre Saúde e Etnia Negra (NESEN).