drguilhermeapolinario commited on
Commit
be7891e
·
verified ·
1 Parent(s): a0ea05a

Update views/cad_cid.py

Browse files
Files changed (1) hide show
  1. views/cad_cid.py +23 -38
views/cad_cid.py CHANGED
@@ -11,26 +11,22 @@ st.title("Atualização de cadastro - UBS Flamengo")
11
  add_vertical_space(10)
12
 
13
 
14
- uploaded_file = st.sidebar.file_uploader("Adicione o arquivo Excel", type= ".xlsx")
15
  if uploaded_file is not None:
16
- df=[]
17
-
18
- # Load the Excel file
19
  @st.cache_data
20
- def load_data():
21
- file_path = uploaded_file
22
- df = pd.read_excel(file_path, sheet_name="ANALISE", engine='openpyxl')
23
  df["ATUALIZADO"] = pd.to_datetime(df["ATUALIZADO"], errors="coerce", dayfirst=True)
24
  df["Trimestre"] = df["ATUALIZADO"].dt.to_period("Q")
25
  df["Mês"] = df["ATUALIZADO"].dt.to_period("M")
26
  df["Semestre"] = df["ATUALIZADO"].dt.to_period("6M")
27
-
28
- # Convert RUA column to string to ensure consistent sorting
29
  df["RUA"] = df["RUA"].astype(str)
30
-
31
  return df
32
 
33
- # Custom CSS for dark theme
 
 
34
  st.markdown(
35
  """
36
  <style>
@@ -55,6 +51,7 @@ if uploaded_file is not None:
55
  unsafe_allow_html=True,
56
  )
57
 
 
58
  col1, col2, col3, col4 = st.columns([1, 1, 1, 3])
59
  with col1:
60
  rua_selecionada = st.selectbox("Selecione a Rua", sorted(df["RUA"].unique()))
@@ -67,8 +64,9 @@ if uploaded_file is not None:
67
  "Selecione a Granularidade", ["Mensal", "Trimestral", "Semestral"]
68
  )
69
  with col4:
70
- st.write('')
71
- # Filter data
 
72
  if ano_selecionado == "Total":
73
  dados_filtrados = df[df["RUA"] == rua_selecionada]
74
  else:
@@ -76,7 +74,7 @@ if uploaded_file is not None:
76
  (df["RUA"] == rua_selecionada) & (df["ATUALIZADO"].dt.year == ano_selecionado)
77
  ]
78
 
79
- # Add period column based on granularity
80
  if granularidade == "Mensal":
81
  dados_filtrados["Período"] = dados_filtrados["ATUALIZADO"].dt.strftime("%m-%Y")
82
  elif granularidade == "Trimestral":
@@ -88,7 +86,7 @@ if uploaded_file is not None:
88
  dados_filtrados["ATUALIZADO"].dt.to_period("6M").astype(str)
89
  )
90
 
91
- # Function to create scatter plot
92
  def create_scatter_plot(data, title):
93
  fig = px.scatter(
94
  data,
@@ -111,12 +109,12 @@ if uploaded_file is not None:
111
  fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='#31333F')
112
  return fig
113
 
114
- # Main scatter plot
115
  st.subheader(
116
  f"Última Atualização na Rua {rua_selecionada} ({granularidade} - {ano_selecionado})"
117
  )
118
 
119
- c1, c2= st.columns([0.8, 0.2])
120
 
121
  with c1:
122
  fig = create_scatter_plot(dados_filtrados, f"Pacientes Pendentes de Atualização - {rua_selecionada}")
@@ -124,7 +122,6 @@ if uploaded_file is not None:
124
 
125
  with c2:
126
  total_usuarios = len(dados_filtrados)
127
-
128
  st.dataframe(dados_filtrados[["NOME", "IDADE", "RUA", "NUM", "Período"]].sort_values(by="Período", ascending=True), hide_index=True)
129
 
130
  st.write(f"Total de usuários: {total_usuarios}")
@@ -139,15 +136,13 @@ if uploaded_file is not None:
139
  with c3:
140
  st.markdown('')
141
 
142
-
143
  with c4:
144
  st.subheader("Análise por Faixa Etária")
145
 
146
  with c5:
147
  st.markdown('')
148
 
149
-
150
- co1, co2, co3 = st.columns([2, 2, 2],)
151
  with co1:
152
  with stylable_container(
153
  key="pueri",
@@ -202,7 +197,6 @@ if uploaded_file is not None:
202
  ):
203
  st.image("mamo.jpg")
204
 
205
-
206
  # Preventivo (25-64 anos)
207
  preventivo = dados_filtrados[
208
  (dados_filtrados["IDADE"].between(25, 64)) & (dados_filtrados["SEXO"] == "F")
@@ -211,7 +205,6 @@ if uploaded_file is not None:
211
  fig_preventivo = create_scatter_plot(preventivo, f"Preventivo - {rua_selecionada}")
212
  st.plotly_chart(fig_preventivo, use_container_width=True)
213
 
214
-
215
  col1, col2 = st.columns([0.4, 0.6])
216
  with col1:
217
  st.dataframe(
@@ -223,13 +216,8 @@ if uploaded_file is not None:
223
  with col2:
224
  st.markdown(f"#### Total de usuários: {len(preventivo)}")
225
 
226
-
227
-
228
  add_vertical_space()
229
 
230
- st.write('-----')
231
-
232
- add_vertical_space()
233
 
234
 
235
  # Mamografia (50-69 anos)
@@ -240,7 +228,6 @@ if uploaded_file is not None:
240
  fig_mamografia = create_scatter_plot(mamografia, f"Mamografia - {rua_selecionada}")
241
  st.plotly_chart(fig_mamografia, use_container_width=True)
242
 
243
-
244
  col1, col2 = st.columns([0.4, 0.6])
245
  with col1:
246
  st.dataframe(
@@ -252,20 +239,16 @@ if uploaded_file is not None:
252
  with col2:
253
  st.markdown(f"#### Total de usuários: {len(mamografia)}")
254
 
255
-
256
-
257
- add_vertical_space()
258
 
259
  st.write('-----')
260
 
261
  add_vertical_space()
262
 
263
-
264
  st.markdown("### Crianças 0 - 2 anos e 0 - 4 anos.")
265
 
266
  # Crianças até 4 anos
267
  criancasdois = dados_filtrados[dados_filtrados["IDADE"] <= 2]
268
- # Crianças até 4 anos
269
  criancasquatro = dados_filtrados[dados_filtrados["IDADE"] <= 4]
270
 
271
  on = st.toggle("Alterne para ver as crianças até dois anos ou até 4 anos.")
@@ -281,12 +264,12 @@ if uploaded_file is not None:
281
  by="ATUALIZADO", ascending=False
282
  ),
283
  hide_index=True,
284
- )
285
  with col2:
286
  st.markdown(f"#### Total de usuários: {len(criancasdois)}")
287
  else:
288
  st.markdown("### Crianças até 4 anos")
289
- fig_criancasquatro = create_scatter_plot(criancasquatro, f"Crianças até 2 anos - {rua_selecionada}")
290
  st.plotly_chart(fig_criancasquatro, use_container_width=True)
291
 
292
  col1, col2 = st.columns([0.4, 0.6])
@@ -296,11 +279,13 @@ if uploaded_file is not None:
296
  by="ATUALIZADO", ascending=False
297
  ),
298
  hide_index=True,
299
- )
300
  with col2:
301
  st.markdown(f"#### Total de usuários: {len(criancasquatro)}")
302
 
 
303
  st.write('-----------')
 
304
  # Percentage of updates by period
305
  st.subheader(
306
  f"Porcentagem de Atualizações por {granularidade} na Rua {rua_selecionada}"
@@ -345,4 +330,4 @@ if uploaded_file is not None:
345
 
346
  st.plotly_chart(fig_period, use_container_width=True)
347
  else:
348
- st.markdown('# Insira o arquivo com os dados')
 
11
  add_vertical_space(10)
12
 
13
 
14
+ uploaded_file = st.sidebar.file_uploader("Adicione o arquivo Excel", type=".xlsx")
15
  if uploaded_file is not None:
16
+ # Função para carregar e processar os dados
 
 
17
  @st.cache_data
18
+ def load_data(file):
19
+ df = pd.read_excel(file, sheet_name="ANALISE", engine='openpyxl')
 
20
  df["ATUALIZADO"] = pd.to_datetime(df["ATUALIZADO"], errors="coerce", dayfirst=True)
21
  df["Trimestre"] = df["ATUALIZADO"].dt.to_period("Q")
22
  df["Mês"] = df["ATUALIZADO"].dt.to_period("M")
23
  df["Semestre"] = df["ATUALIZADO"].dt.to_period("6M")
 
 
24
  df["RUA"] = df["RUA"].astype(str)
 
25
  return df
26
 
27
+ df = load_data(uploaded_file)
28
+
29
+ # CSS customizado para o tema escuro
30
  st.markdown(
31
  """
32
  <style>
 
51
  unsafe_allow_html=True,
52
  )
53
 
54
+ # Seleção de Rua, Ano e Granularidade
55
  col1, col2, col3, col4 = st.columns([1, 1, 1, 3])
56
  with col1:
57
  rua_selecionada = st.selectbox("Selecione a Rua", sorted(df["RUA"].unique()))
 
64
  "Selecione a Granularidade", ["Mensal", "Trimestral", "Semestral"]
65
  )
66
  with col4:
67
+ st.write('')
68
+
69
+ # Filtragem de dados
70
  if ano_selecionado == "Total":
71
  dados_filtrados = df[df["RUA"] == rua_selecionada]
72
  else:
 
74
  (df["RUA"] == rua_selecionada) & (df["ATUALIZADO"].dt.year == ano_selecionado)
75
  ]
76
 
77
+ # Adicionar coluna de período baseado na granularidade
78
  if granularidade == "Mensal":
79
  dados_filtrados["Período"] = dados_filtrados["ATUALIZADO"].dt.strftime("%m-%Y")
80
  elif granularidade == "Trimestral":
 
86
  dados_filtrados["ATUALIZADO"].dt.to_period("6M").astype(str)
87
  )
88
 
89
+ # Função para criar scatter plot
90
  def create_scatter_plot(data, title):
91
  fig = px.scatter(
92
  data,
 
109
  fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='#31333F')
110
  return fig
111
 
112
+ # Scatter plot principal
113
  st.subheader(
114
  f"Última Atualização na Rua {rua_selecionada} ({granularidade} - {ano_selecionado})"
115
  )
116
 
117
+ c1, c2 = st.columns([0.8, 0.2])
118
 
119
  with c1:
120
  fig = create_scatter_plot(dados_filtrados, f"Pacientes Pendentes de Atualização - {rua_selecionada}")
 
122
 
123
  with c2:
124
  total_usuarios = len(dados_filtrados)
 
125
  st.dataframe(dados_filtrados[["NOME", "IDADE", "RUA", "NUM", "Período"]].sort_values(by="Período", ascending=True), hide_index=True)
126
 
127
  st.write(f"Total de usuários: {total_usuarios}")
 
136
  with c3:
137
  st.markdown('')
138
 
 
139
  with c4:
140
  st.subheader("Análise por Faixa Etária")
141
 
142
  with c5:
143
  st.markdown('')
144
 
145
+ co1, co2, co3 = st.columns([2, 2, 2])
 
146
  with co1:
147
  with stylable_container(
148
  key="pueri",
 
197
  ):
198
  st.image("mamo.jpg")
199
 
 
200
  # Preventivo (25-64 anos)
201
  preventivo = dados_filtrados[
202
  (dados_filtrados["IDADE"].between(25, 64)) & (dados_filtrados["SEXO"] == "F")
 
205
  fig_preventivo = create_scatter_plot(preventivo, f"Preventivo - {rua_selecionada}")
206
  st.plotly_chart(fig_preventivo, use_container_width=True)
207
 
 
208
  col1, col2 = st.columns([0.4, 0.6])
209
  with col1:
210
  st.dataframe(
 
216
  with col2:
217
  st.markdown(f"#### Total de usuários: {len(preventivo)}")
218
 
 
 
219
  add_vertical_space()
220
 
 
 
 
221
 
222
 
223
  # Mamografia (50-69 anos)
 
228
  fig_mamografia = create_scatter_plot(mamografia, f"Mamografia - {rua_selecionada}")
229
  st.plotly_chart(fig_mamografia, use_container_width=True)
230
 
 
231
  col1, col2 = st.columns([0.4, 0.6])
232
  with col1:
233
  st.dataframe(
 
239
  with col2:
240
  st.markdown(f"#### Total de usuários: {len(mamografia)}")
241
 
242
+ add_vertical_space()
 
 
243
 
244
  st.write('-----')
245
 
246
  add_vertical_space()
247
 
 
248
  st.markdown("### Crianças 0 - 2 anos e 0 - 4 anos.")
249
 
250
  # Crianças até 4 anos
251
  criancasdois = dados_filtrados[dados_filtrados["IDADE"] <= 2]
 
252
  criancasquatro = dados_filtrados[dados_filtrados["IDADE"] <= 4]
253
 
254
  on = st.toggle("Alterne para ver as crianças até dois anos ou até 4 anos.")
 
264
  by="ATUALIZADO", ascending=False
265
  ),
266
  hide_index=True,
267
+ )
268
  with col2:
269
  st.markdown(f"#### Total de usuários: {len(criancasdois)}")
270
  else:
271
  st.markdown("### Crianças até 4 anos")
272
+ fig_criancasquatro = create_scatter_plot(criancasquatro, f"Crianças até 4 anos - {rua_selecionada}")
273
  st.plotly_chart(fig_criancasquatro, use_container_width=True)
274
 
275
  col1, col2 = st.columns([0.4, 0.6])
 
279
  by="ATUALIZADO", ascending=False
280
  ),
281
  hide_index=True,
282
+ )
283
  with col2:
284
  st.markdown(f"#### Total de usuários: {len(criancasquatro)}")
285
 
286
+
287
  st.write('-----------')
288
+ st.write('-----------')
289
  # Percentage of updates by period
290
  st.subheader(
291
  f"Porcentagem de Atualizações por {granularidade} na Rua {rua_selecionada}"
 
330
 
331
  st.plotly_chart(fig_period, use_container_width=True)
332
  else:
333
+ st.markdown('# Insira o arquivo com os dados')