Há um termo popular – Business Intelligence (BI) – que trata do compartilhamento de informações nas organizações, visando a tomada de decisões com base nos seus dados. Neste estudo, exercito a programação com a linguagem SQL (Structured Query Language) para aprender como transformar os dados em informações para o Controle Social – “Citizen Intelligence”.
Vamos aos exercícios da nossa série de estudos sobre SQL para análise dos cuidados de saúde (1, 2, 3).
No banco de dados “healthcare”, qual o perfil dos(as) pacientes quanto à raça/cor?
USE healthcare;
SELECT
RACE AS ‘quesito cor’
, count(race) as ‘N’
FROM patients
GROUP BY race
ORDER BY ‘N’ desc;
quesito cor | N |
white | 965 |
native | 13 |
asian | 90 |
black | 101 |
other | 2 |
Se o banco de dados fosse a partir do Cadastro Individual SUS, o script da consulta pode ser assim
SELECT
racaCorCidadao AS ‘quesito cor’
, count( racaCorCidadao ) as ‘N’
FROM identificacao_do usuario_cidadao
GROUP BY racaCorCidadao — em “Citizen Intelligence”, ‘group by’ propicia a análise desagregada dos dados de interesse
ORDER BY ‘N’ desc;
No banco de dados “healthcare”, qual o perfil dos(as) pacientes quanto ao sexo?
SELECT
GENDER AS ‘sexo’
, count(gender) as ‘N’
FROM patients
GROUP BY gender
ORDER BY ‘N’ desc;
sexo | N |
M | 562 |
F | 609 |
Se o banco de dados fosse a partir do Cadastro Individual SUS, o script da consulta pode ser assim
SELECT
sexoCidadao AS ‘sexo’
, count( sexoCidadao ) as ‘N’
FROM identificacao_do usuario_cidadao
GROUP BY sexoCidadao
ORDER BY ‘N’ desc;
No que se refere à orientação sexual, o script seria assim:
SELECT
orientacaoSexualCidadao AS ‘Orientação Sexual’
, count( orientacaoSexualCidadao ) as ‘N’
FROM informacoes_sociodemograficas
GROUP BY orientacaoSexualCidadao
ORDER BY ‘N’ desc;
No banco de dados “healthcare”, qual grupo populacional apresentou maiores valores da pressão arterial (PA), antes de 2022?
SELECT PAT.RACE AS ‘Quesito Cor‘
, COUNT(DISTINCT PAT.ID) AS ‘Pacientes (N)’ — função ‘distinct’ evita repetições
FROM HEALTHCARE.OBSERVATIONS AS BP
JOIN HEALTHCARE.PATIENTS PAT ON BP.PATIENT=PAT.ID — foi necessário colher dados em 2 tabelas
WHERE
(
(DESCRIPTION = ‘Diastolic Blood Pressure’ AND VALUE>85) — parênteses para organizar a consulta
OR (DESCRIPTION = ‘Systolic Blood Pressure’ AND VALUE>135)
)
AND DATE <‘2022-01-01’
GROUP BY PAT.RACE;
Quesito Cor | Paciente (N) |
white | 253 |
black | 18 |
asian | 23 |
No banco de dados “healthcare”, quantos procedimentos ou cuidados de saúde foram realizados no período com curso superior a US$ 100? SELECT COUNT(*) AS Registros
FROM
procedures
WHERE BASE_COST > 100;
34639 |
No banco de dados “healthcare”, há quantos pacientes únicos na tabela ‘patients’?
SELECT
count(distinct LAST) AS ‘Paciente Único’
FROM patients;
490 |
No banco de dados “healthcare”, há quantos “códigos” na tabela “procedimentos” clínicos agrupados por “razão de código”?
SELECT
REASONCODE
, COUNT(DISTINCT CODE) ‘N CÓDIGO’
FROM procedures
GROUP BY REASONCODE
ORDER BY CODE DESC LIMIT 5;
Reason Code – Procedures | Código (N) |
67811000119102 | 2 |
94260004 | 2 |
424132000 | 2 |
363406005 | 2 |
444470001 | 1 |
No banco de dados “healthcare”, há quantos(as) profissionais de saúde especializados em clínica geral e agrupados por gênero?
SELECT
count(DISTINCT NAME)
, gender
FROM providers
WHERE SPECIALITY = ‘General Practice’
GROUP BY gender;
Profissionais (N) | Sexo |
536 | F |
516 | M |
Para o momento é só. Julgo que com estes exercícios é possível entender as oportunidades, assim como os desafios da saúde digital com o uso de dados do mundo real, isto é, do prontuário eletrônico da pessoa (PEP), por exemplo, para o nosso julgamento clínico e consequente tomada de decisões, preferencialmente junto com o(a) paciente.
Como citar:
Cruz, ICF da Structured Query Language (SQL): exercitando “Citizen Intelligence”. NEPAE/UFF. Niterói, julho, 2022 Disponível em https://nepae.uff.br/?p=2485