23 lines
1.0 KiB
Python
23 lines
1.0 KiB
Python
"""Orquestração: lê os dois arquivos exportados do Sigsistem e devolve as
|
|
ocorrências já com as ações e o histórico completo de acompanhamentos
|
|
aninhados. Não toca no banco — o upsert acontece na view
|
|
(`NaoConformidadeImportacaoViewSet.create`, em `portal_api/views.py`), mesma
|
|
separação de responsabilidade de `portal_api.planos_saude`/
|
|
`portal_api.indicadores`."""
|
|
from __future__ import annotations
|
|
|
|
from . import leiaute_acoes, leiaute_ocorrencias
|
|
from .modelos import ResultadoProcessamento
|
|
|
|
|
|
def processa_importacao(caminho_ocorrencias: str, caminho_acoes: str) -> ResultadoProcessamento:
|
|
ocorrencias, avisos = leiaute_ocorrencias.parse_ocorrencias(caminho_ocorrencias)
|
|
acompanhamentos_por_chave = leiaute_acoes.parse_acompanhamentos(caminho_acoes)
|
|
|
|
for ocorrencia in ocorrencias:
|
|
for acao in ocorrencia.acoes:
|
|
chave = (str(ocorrencia.codigo), str(acao.codigo))
|
|
acao.acompanhamentos = acompanhamentos_por_chave.get(chave, [])
|
|
|
|
return ResultadoProcessamento(ocorrencias=ocorrencias, avisos=avisos)
|