Modernização da Engenharia de Dados de um Hospital

Modernização da Engenharia de Dados de um Hospital

Setor
Saúde
Ferramentas
Pentaho, Python, SQL, Git
Entregas
  • Inventário e linhagem das cargas
  • Alerta de perda silenciosa
  • Cargas reescritas com reconciliação a cada execução
  • Runbooks e catálogo das cargas

Desafio

Um hospital de grande porte alimentava o data warehouse e centenas de painéis de Power BI com cargas noturnas no Pentaho, que liam do banco do sistema de gestão hospitalar. A equipe de dados era pequena e havia pouca documentação. Cargas que deveriam terminar de madrugada às vezes iam até o meio da manhã, e algumas terminavam com status de sucesso depois de ler só uma parte dos dados.

Solução

O trabalho começou medindo o ambiente, antes de discutir troca de plataforma:

  • Inventário automático de mais de 200 transformações e dezenas de jobs, com a linhagem de origem e destino e o padrão de carga de cada uma. Quase metade das transformações não era chamada por nenhum job, e só uma fração mínima fazia carga incremental de fato.
  • Duração individual de cada transformação, tirada do log do Pentaho, para separar o que era lento por volume do que era lento por consulta.
  • Detecção de perda silenciosa: uma view compara o volume lido em cada execução com a mediana das semanas anteriores e marca as cargas que leram bem menos que o normal. Testada contra mais de um ano de histórico, ela reproduziu os episódios que já se conheciam.

Com o diagnóstico em mãos, cada correção seguiu o mesmo ciclo. Primeiro, achar a causa raiz e conferir o contrato real da origem. Depois, reescrever a carga para que uma falha apareça como falha, aplicar em produção com um caminho de volta e reconciliar origem e destino a cada execução.

  • A integração com uma API de classificação de internações foi reescrita em Python, sem a recursão que fazia a mesma transformação rodar centenas de vezes por noite.
  • A carga das APIs de engenharia clínica saiu do Pentaho e foi para um script Python que valida o retorno antes de apagar qualquer dado e registra a reconciliação de cada tabela.
  • Uma carga de indicadores cirúrgicos passou a gravar numa tabela de preparação. O destino só é trocado depois da conferência de volume, numa única transação.
  • As conexões ganharam uma versão parametrizada, sem senha nos arquivos, pronta para entrar no controle de versão. Um hook de pre-commit passou a barrar qualquer credencial no repositório.

Resultado

  • Integração de internações: tempo de execução mais de 60 vezes menor, com o período coberto ampliado e a recuperação de registros que faltavam sem ninguém saber.
  • Indicadores cirúrgicos: carga cerca de 8 vezes mais rápida, sem perda de linhas. Quando algo falha, o job agora termina com erro e o destino fica intacto.
  • Engenharia clínica: execuções diárias reduzidas a uma fração do que eram, cada uma com reconciliação registrada.
  • Monitoramento: alerta de perda silenciosa ativo sobre as cargas principais.
  • Conhecimento: runbooks e um catálogo das cargas, para que a operação não dependa de uma única pessoa.

O nome do cliente e alguns detalhes foram alterados para preservar a confidencialidade. Projeto conduzido pelo fundador da Dome Analytics.

Projetos relacionados

« Voltar aos projetos