O “Hospital Filantrópico Ilha de Maré” é um hospital fictício criado por estudantes do curso técnico analista de dados, da Toti, em parceria com o Hospital Albert
Einstein; com a finalidade de fazer um estudo final e colocar em prática os conhecimentos adquiridos em gestão de projeto, modelagem de dados e análises
de dados.
Analisis de Dados caso Hospital, projeto final feito em Power Bi
1. Análises de dados
Cletche Na Fantchamna | Eric Gutiérrez Ângulo | Nadiveth Duno Escalona
Projeto Final | Analista de Dados | Toti – Inclusão e diversidade | junho 2022
2. Projeto orientado a migrantes residentes
no Brasil para mais informação visitar
www. totidiversidade.com.br
Autores:
Cletche Na Fantchamna | Guiné Bissau
Eric Gutiérrez Ângulo | Venezuela
Nadiveth Duno | Venezuela
Professora: Hilary Santos | Brasil
Tutor Acadêmico: Pedro da Costa | Portugal
3. 1
1.- Caso de estudo: “Hospital Filantrópico Ilha de Maré”
O “Hospital Filantrópico Ilha de Maré” é um hospital fictício criado por estudantes
do curso técnico analista de dados, da Toti, em parceria com o Hospital Albert
Einstein; com a finalidade de fazer um estudo final e colocar em prática os
conhecimentos adquiridos em gestão de projeto, modelagem de dados e análises
de dados.
Embora, o “Hospital Filantrópico Ilha de Maré” seja uma instituição fictícia, está
inspirada em uma comunidade quilombola real, comunidade Ilha de Maré,
localizada em Salvador, Bahia, no Brasil.
A Ilha de Maré é daqueles lugares que o tempo parece não passar. Sua população
vive da pesca, da pequena agricultura familiar e do artesanato. É uma comunidade
carente dos serviços básicos, não conta com uma rede de esgoto, nem de
padaria, supermercado, farmácia e muito menos de um hospital, é por isso que
neste projeto idealizamos um hospital para tão desprovida comunidade.
Este hospital fictício conta com 7 andares, 16 especialidades e atende uma
comunidade fictícia de 1.406 pacientes.
Para dar vida a este projeto, criou-se uma identidade visual para o hospital.
4. 2
2.- Gestão do projeto
Utilizamos metodologia SCRUM, por oferecer o poder da metodologia ágil e assim
conseguir uma gestão dinâmica do nosso projeto. Esta metodologia, permite controlar
de forma eficaz e eficiente o trabalho, potencializando assim o nosso time para um
trabalho em prol de nosso objetivo.
Para isso utilizamos a ferramenta trello, definiendo os seguintes tarefas: a fazer, em
andamento, revisão e concluido.
A medida que as tarefas, estavam completando-se mudavam de estadio.
5. 3
3.- Banco de dados
Como ponto de partida usamos um banco de dados operacional, providenciado
pela facilitadora do curso.
3.1.- Banco operacional
O banco de dados operacional responde aos planeamentos inicias do
exemplo disponível em:
https://en.wikibooks.org/wiki/SQL_Exercises/The_Hospital#Sample_dataset
6. 4
Sem embargo, foram realizadas algumas transformações:
Tradução do banco para o português.
Eliminação dos campos que não são implementados no sistema de saúde
brasileiro como: SSN e PCP.
Inclusão de novos campos e dados, os quais são demandados pelo maior
ente de saúde do Brasil, o SUS (Sistema Único de Saúde), por exemplo:
Número de cartão SUS e CBO dos médicos.
Incorporação da tabela de seguros médicos, como inspiração para este
quesito, usamos os mesmos seguros médicos aceitos pelo Hospital Albert
Einstein.
Seguros médicos que são costeados pela instituição fictícia “Hospital
Filantrópico Ilha de Maré”, mediante a contribuição feita por benfeitores e
doações, ratificando a ordem filantrópica do hospital.
7. 5
3.2.- Modelo relacional
O banco de dados, é um banco de dado relacional, que modela os dados do
hospital com tabelas formalmente relacionais.
O qual benéfica a normalização dos dados e a não redundância dos mesmos,
já que se encontram organizados e relacionados entre se.
O banco relaciona as tabelas primarias com uma grande tabela atendimento
que chamaremos de tabela mãe, está tabela mãe se nutrira dos dados das
outras tabelas e gerar informações útil para a toma de decisões na instituição.
A continuação o modelo relacional do banco de dado “Hospital Filantrópico
Ilha de Maré”:
8. 6
4.- Modelagem dos dados
Para modelar os dados se utilizou SQL e se implemento o seguinte dicionário:
Tabela Campos Tipo de
dado
Q. de
registros
Observação
Sexo ID_sex,
Sexo
Inteiro
Texto
4 Tem a liberdade das opções
“Outro” e “Não dizer”,
aceitando a diversidade de
género.
Seguro ID_seg
Seguro
Inteiro
Texto
29 Os seguros médicos do
exemplo foram usados e se
anexou os seguros médicos
aceitos pelo Hospital Albert
Einstein.
CBO ID_cbo,
CBO,Cargo
Inteiro
Texto
156 CBO válidos pelo SUS (ver
referência bibliográfica).
Médico ID_med,
Medico,
Posicao,
ID_cbo,
ID_sex
Inteiro
Texto
Texto
Inteiro
Inteiro
73 Os médicos do exemplo
foram usados e se anexou
novos médicos para atender
a demanda do hospital
idealizado.
Especialidade ID_esp,
Especialidade,
ID_med,
ID_cbo
Inteiro
Texto
Inteiro
Inteiro
16 Especialidades ou
departamentos do hospital.
Patologia ID_pat,
Patologia,
ID_esp
Inteiro
Texto
Inteiro
126 As patologias atendem as
especialidades.
Afiliação ID_afil,
ID_med,
ID_esp,
Prim_afil
Inteiro
Texto
Inteiro
Texto
74 Guarda a afiliação dos
médicos aos departamentos
ou especialidades.
Procedimento ID_pro,
Procedimento,
Costo,
Inteiro
Texto
Texto
119 Procedimentos válidos pelo
SUS (ver referência
bibliográfica).
Paciente ID_pac,
Paciente,
CPF,
SUS,
Endereco,
Telefone,
ID_seg,
ID_sex
Inteiro
Texto
Texto
Texto
Texto
Texto
Texto
Inteiro
Inteiro
1.406 Usaremos uma BD previa
para pegar os nomes e usar
como os nomes dos
pacientes.
O CPF corresponde a um
número único, consecutivo,
de 11 dígitos, criado com o
formato 000.000.000-01.
O Número SUS corresponde
a um número único,
9. 7
Tabela Campos Tipo de
dado
Q. de
registros
Observação
consecutivo, de 15 dígitos,
criado com o formato
123-4567-0001-0004.
E o endereço corresponde a
um CEP válido para a
comunidade Ilha de Maré.
Bloco ID_blo
Bloco
Consultorio
ID_esp
Inteiro
Texto
Texto
Inteiro
125 O hospital se distribuo em
blocos, andares e
consultórios.
Atendimento ID_ate (PF)
ID_pac (FK)
ID_blo (FK)
ID_med (FK)
ID_pro (FK)
Data_Chegada
Data_Saida
Alta
Dias_Inter
Cirugia
Inteiro
Inteiro
Inteiro
Inteiro
Inteiro
Texto
Texto
Texto
Texto
Texto
Texto
6.346 Os 6.346 registros
(simulados em python).
A tabela atendimento é a
tabela mãe que se alimenta
das tabelas primarias e
forma a macro consulta.
(PK) Primary Key é a chave primária da tabela
(FK) Foreign Key é a chave secundaria da tabela
O dicionário é o pilar para construção do código em SQL respeitando a estrutura
da linguagem.
10. 8
4.1- DDL (Data Definition Language)
CREATE TABLE IF NOT EXISTS sexo(
ID_sex INTEGER PRIMARY KEY,
Sexo TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS seguro(
ID_seg INTEGER PRIMARY KEY,
Seguro TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS CBO(
ID_cbo INTEGER PRIMARY KEY,
CBO TEXT NOT NULL,
Cargo TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS medico(
ID_med INTEGER PRIMARY KEY,
Medico TEXT NOT NULL,
Posicao TEXT NOT NULL,
ID_cbo INTEGER REFERENCES CBO(ID_cbo),
ID_sex INTEGER REFERENCES sexo(ID_sex)
);
CREATE TABLE IF NOT EXISTS departamento_especialidade(
ID_esp INTEGER PRIMARY KEY,
Especialidade TEXT NOT NULL,
ID_med INTEGER REFERENCES medico(ID_med),
ID_cbo INTEGER REFERENCES CBO(ID_cbo)
11. 9
);
CREATE TABLE IF NOT EXISTS patologia(
ID_pat INTEGER PRIMARY KEY,
Patologia TEXT NOT NULL,
ID_esp INTEGER REFERENCES especialidade(id_esp)
);
CREATE TABLE IF NOT EXISTS afiliacao(
ID_afil INTEGER PRIMARY KEY,
ID_med INTEGER REFERENCES medico(ID_med),
ID_esp INTEGER REFERENCES especialidade(ID_esp),
Prim_afil TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS procedimento(
ID_pro INTEGER PRIMARY KEY,
Procedimento TEXT NOT NULL,
Costo TEXT NOT NULL,
ID_esp INTEGER REFERENCES especialidade(ID_esp)
);
CREATE TABLE IF NOT EXISTS paciente(
ID_pac INTEGER PRIMARY KEY,
Paciente TEXT NOT NULL,
CPF TEXT NOT NULL,
SUS TEXT NOT NULL,
Endereco TEXT NOT NULL,
Telefone TEXT NOT NULL,
ID_seg TEXT NOT NULL,
ID_sex INTEGER REFERENCES sexo(ID_sex)
12. 10
);
CREATE TABLE IF NOT EXISTS bloco(
ID_blo INTEGER PRIMARY KEY,
Andar TEXT NOT NULL,
Bloco TEXT NOT NULL,
Consultorio TEXT NOT NULL,
ID_esp INTEGER REFERENCES especialidade(ID_esp)
);
CREATE TABLE IF NOT EXISTS atendimento(
ID_ate INTEGER PRIMARY KEY,
ID_pac INTEGER REFERENCES paciente(ID_pac),
ID_blo INTEGER REFERENCES bloco(ID_blo),
ID_med INTEGER REFERENCES medico(ID_med),
ID_pro INTEGER REFERENCES procedimento(ID_pro),
Data_Chegada TEXT NOT NULL,
Data_Saida TEXT NOT NULL,
Alta TEXT NOT NULL,
Dias_Inter TEXT NOT NULL,
Cirugia TEXT NOT NULL
);
4.2- DML (Data Manipulation Language)
INSERT INTO sexo(
ID_sex,
Sexo
18. 16
VALUES
('1','Rinopodoplastia reversa','1500','1'),
('2','Obtusa pyloric recombobulation','3750','1'),
('3','Demiofetalmectomia dobrada','4500','1'),
...
('10','Consulta em cirugia geral ','350','2'),
('11','Consulta em Pediática','230','6'),
('12','Consulta em oftamologia','150','8'),
('13','Consultta em ortopedia','250','5'),
('14','Consulta em psiquiatria','200','3'),
...
('117','Tratamento Cirurgico De Artrite Infecciosa Das Pequenas Articulacoes','600','12'),
('118','Deteccao De Rna Do Hiv-1 (Qualitativo)','180','12'),
('119','Hemodiálise Ii Em Portador De Hiv (Máximo 3 Sessões Por Semana)','120','12');
INSERT INTO paciente(
ID_pac,
Paciente,
CPF,
SUS,
Endereco,
Telefone,
ID_seg,
ID_sex
)
VALUES
21. 19
4.3- DQL (Data Query Language)
SELECT *
FROM sexo;
SELECT *
FROM seguro;
SELECT *
FROM CBO;
SELECT
m.ID_med AS "ID",
m.Medico,
m.Posicao AS "Cargo",
c.CBO,
c.Cargo AS "Desc. CBO",
s.Sexo
FROM medico AS m
JOIN CBO AS c
ON m.ID_cbo=c.ID_cbo
JOIN sexo AS s
ON m.ID_sex=s.ID_sex;
SELECT
ds.ID_esp AS "ID",
ds.Especialidade AS "Depart/Especialidade",
m.Medico AS "Jefe de Departamento"
22. 20
FROM departamento_especialidade AS ds
JOIN medico AS m
ON ds.ID_med=m.ID_med;
SELECT
p.ID_pat AS "ID",
p.Patologia,
ds.Especialidade,
m.Medico,
m.Posicao AS "Posicao"
FROM patologia AS p
JOIN departamento_especialidade AS ds
ON p.ID_esp=ds.ID_esp
JOIN medico AS m
ON ds.ID_med=m.ID_med;
SELECT
a.ID_afil AS "ID",
m.Medico,
ds.Especialidade AS "Departamento Afiliado",
a.Prim_afil AS "Activo"
FROM afiliacao AS a
JOIN medico AS m
ON a.id_med=m.id_med
JOIN departamento_especialidade AS ds
ON a.id_esp=ds.id_esp;
23. 21
SELECT
p.ID_pro AS "ID",
p.Procedimento,
p.Costo,
ds.Especialidade AS "Departamento"
FROM procedimento AS p
JOIN departamento_especialidade AS ds
ON p.id_esp=ds.id_esp;
SELECT
pa.ID_pac AS "ID",
pa.Paciente,s.
Sexo,pa.CPF,
pa.SUS AS "N# SUS",
pa.Endereco,
pa.Telefone
sg.Seguro
FROM paciente AS pa
JOIN sexo AS s
ON pa.ID_sex=s.ID_sex
JOIN seguro AS sg
ON pa.ID_seg=sg.ID_seg;
SELECT
b.ID_blo AS "ID",
b.Andar,b.Bloco,
24. 22
b.Consultorio,
ds.Especialidade AS "Departamento"
FROM bloco AS b
JOIN departamento_especialidade AS ds
ON b.ID_esp=ds.ID_esp;
SELECT
at.ID_ate AS "ID",
pa.Paciente,s.Sexo,
pa.CPF,
pa.SUS,
pa.Endereco,
pa.Telefone,
sg.Seguro,
b.Andar,
b.Consultorio,
m.Medico,
c.Cargo AS "Especialista",
pr.Procedimento,pr.Costo,
at.Data_Chegada,
at.Data_Saida,
at.Alta,at.Cirugia,
at.Dias_Inter
FROM atendimento AS at
JOIN paciente AS pa
ON at.ID_pac=pa.ID_pac
JOIN sexo AS s
25. 23
ON pa.ID_sex=s.ID_sex
JOIN seguro AS sg
ON pa.ID_seg=sg.ID_seg
JOIN bloco AS b
ON at.ID_blo=b.ID_blo
JOIN medico AS m
ON at.id_med=m.id_med
JOIN CBO AS c
ON m.ID_cbo=c.ID_cbo
JOIN procedimento AS pr
ON at.ID_pro=pr.ID_pro;
4.4- Tabelas geradas
Tabela Sexo – 4 registros
31. 29
5.- Simulação dos dados
Para simular os dados do “Hospital Filantrópico Ilha de Maré” utilizamos a consulta
feita em SQL, gerarmos um arquivo em CSV e importamos para python no
aplicativo web de distribuição livre colab.
Para isso realizamos os seguintes passos:
Passo 1: Carregar o arquivo csv.
Passo 2: Importar a livrarias a implementar no código, panda e numpy.
Passo 3: Importar o arquivo.
Passo 4: Carregar os dados em um dataframe.
Passo 5: Usar o mês de maio, que é o mês recém finalizado.
Passo 6: Criar um código em python para gerar dados aleatórios para a tabela
atendimento. Automaticamente e de forma aleatória criamos os dados da tabela
principal.
Passo 7: Exportar os dados gerados em um arquivo csv.
Passos 8: Insertar os dados mediante um INSERT em SQL e conseguimos ter
uma tabela mãe com 6.346 registros.
Para conhecer e familiarizarmos com os dados desta tabela
mãe, utilizamos novamente python.
Para obter os dados relacionais das tabelas primarias dos 6.436 registros: como
nome do paciente, seguro médico, procedimento, custo, médico etc. Gerarmos
um novo arquivo em CSV com todos os dados e importamos para colab, para
estudar os dados.
32. 30
Realizamos os seguintes passos:
Passo 1: Carregar o arquivo csv.
Passo 2: Importar o arquivo.
Passo 3: Carregar os dados em um dataframe.
Passo 4: Criar um código em python para conhecer os dados.
Passo 5: Criar outros códigos para ter ideias de quais serão nossos possíveis
gráficos em power bi.
33. 31
6.- Data warehouse
Os bancos de dados são hoje um pilar indispensável para gerenciar todas as
informações tratadas por uma organização que quer ser competitiva. No entanto,
em um certo ponto, é muito útil em termos de agilidade para a tomada de decisão
para implementar um data warehouse. Quando é o momento certo para dar o
passo de um sistema de armazenamento de dados para outro? À medida que
uma empresa começa a acumular volumes de dados de múltiplas fontes e o
crescimento força múltiplas tarefas e análises com essas as informações, ter
diferentes bancos de dados espalhados pode se tornar um grande problema. Ter
que consultar cada banco de dados de forma independente, sem ser capaz de
cruzar suavemente, é ineficiente, inseguro, demorado e caro.. O que é um data
warehouse? Um data warehouse é um banco de dados projetado para armazenar,
filtrar, extrair e analisar grandes coleções de dados transacionais com a
particularidade de gerar um mapeamento cruzado de processos que permite
visualizar e analisar as informações simultaneamente, sem ter que misturar e
consolidar resultados de diferentes fontes de dados. Um data warehouse foi
projetado para separar os processos de análise e consulta facilitando o
armazenamento contínuo, visualização e tomada de decisões a partir de
diferentes perspectivas dos
dados
Seguendo as etapas:
Levantar os requerimentos.
Mapear informações.
Modelagem físico.
Importar os dados.
Limpear os dados.
Implementar o modelo físico.
35. 33
8.- Analises dos dados
Algumas conclusões interessantes, as mulheres são comparativamente o major
segmento de nosso atendimento. Outra coisa ressaltante é que a pandemia de
Covid – 19 foi a responsável pelo incremento notável d atendimentos respiratórios
36. 34
e das internações, nos fazendo pensar na necessidade de considerar a
possibilidade real de futuras pandemias nos planes de desenvolvimento do
hospital.
O maior número de os atendimentos se dão no nicio de mês em especial os finais
de semana, fator que indica que devemos recomendar a incrementação de
plantoes médicos nesta data, para poder fazer uso adecuado de noso recurso
humano mais válioso, nosos médicos.
37. 35
Referências bibliográficas
Ilha de maré. Disponível em: https://pt.wikipedia.org/wiki/Ilha_de_Mar%C3%A9
Acesso em 7 de junho de 2022
Classificação brasileira de ocupações - CBO. Disponível em:
http://lattes.cnpq.br/documents/11871/24930/CBO-Classificacao-Brasileira-de-
Ocupacoes.pdf Acesso em 7 de junho de 2022
SQL exercise, the hospital. Disponível em:
https://en.wikibooks.org/wiki/SQL_Exercises/The_Hospital#Sample_dataset
Acesso em 7 de junho de 2022
Tabela de procedimentos. Tabela SUS nacional. Disponível em:
http://arquivos.camacari.ba.gov.br/compras/2710170310484477698.pdf Acesso
em 8 de junho de 2022