Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions src/impulsoetl/siasus/bpa_i.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from prefect import flow, task
from sqlalchemy.orm import Session
from uuid6 import uuid7
import re

from impulsoetl import __VERSION__
from impulsoetl.comum.datas import (
Expand Down Expand Up @@ -156,13 +157,25 @@ def extrair_bpa_i(
[`datetime.date`]: https://docs.python.org/3/library/datetime.html#date-objects
"""

# yield from extrair_dbc_lotes(
# ftp="ftp.datasus.gov.br",
# caminho_diretorio="/dissemin/publicos/SIASUS/200801_/Dados",
# arquivo_nome="BI{uf_sigla}{periodo_data_inicio:%y%m}.dbc".format(
# uf_sigla=uf_sigla,
# periodo_data_inicio=periodo_data_inicio,
# ),
# passo=passo,
# )

arquivo_padrao = "BI{uf_sigla}{periodo_data_inicio:%y%m}(?:_\d+)?.dbc".format(
uf_sigla=uf_sigla,
periodo_data_inicio=periodo_data_inicio,
)

yield from extrair_dbc_lotes(
ftp="ftp.datasus.gov.br",
caminho_diretorio="/dissemin/publicos/SIASUS/200801_/Dados",
arquivo_nome="BI{uf_sigla}{periodo_data_inicio:%y%m}.dbc".format(
uf_sigla=uf_sigla,
periodo_data_inicio=periodo_data_inicio,
),
arquivo_nome=re.compile(arquivo_padrao, re.IGNORECASE),
passo=passo,
)

Expand Down
15 changes: 13 additions & 2 deletions src/impulsoetl/utilitarios/datasus_ftp.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,21 @@ def _listar_arquivos(
if arquivo == arquivo_nome_ou_padrao
]

# Checar por arquivos particionados e não particionados em BPA
unpartitioned_files = [
arquivo for arquivo in arquivos_compativeis if not re.search(r"_\d+\.dbc$", arquivo)
]
partitioned_files = [
arquivo for arquivo in arquivos_compativeis if re.search(r"_\d+\.dbc$", arquivo)
]
if unpartitioned_files and partitioned_files:
# Ignorar arquivos não particionados se existirem
arquivos_compativeis = partitioned_files

arquivos_compativeis_num = len(arquivos_compativeis)
if arquivos_compativeis_num > 0:
logger.info(
"Encontrados {numero_arquivos} arquivos.",
numero_arquivos=arquivos_compativeis_num,
f"Encontrados {arquivos_compativeis_num} arquivos."
)
return arquivos_compativeis
else:
Expand All @@ -130,6 +140,7 @@ def _listar_arquivos(
raise error_perm



def extrair_dbc_lotes(
ftp: str,
caminho_diretorio: str,
Expand Down