Skip to content

Instalação do e-SUS em ambiente docker linux com arquivo jar

Notifications You must be signed in to change notification settings

noharm-ai/e-SUS-PEC

 
 

Repository files navigation

eSUS PEC

Compatível e testado com
version version version version

É um sistema bastante utilizado por profissionais de saúde da Atenção Básica para registros de pacientes e dados de saúde. Esse repositório se propõe a criar uma estrutura docker com linux para viabilizar o deploy do sistema em qualquer ambiente que tenha docker e facilitar a instalação e atualização do sistema e-SUS PEC

Instalação TD;LR

Baixe o jar da aplicação e execute o script de instalação para um banco de dados novo, use o argumento -t se quiser que a versão instalada seja de treinamento:

wget https://https://arquivos.esusab.ufsc.br/PEC/c0d1d77e70c98177/5.2.38/eSUS-AB-PEC-5.2.38-Linux64.jar
sh build.sh -f eSUS-AB-PEC-5.2.38-Linux64.jar

Para execução com banco de dados externo:

  1. Configure as variáveis de ambiente disponíveis em .env.external-db.example colando em .env.external-db
sh build.sh -e

Acesse Live/Demo Dúvidas? Colaboração? Ideias? Entre em contato pelo WhatsApp

Sumário

  1. Alinhando conhecimentos
  2. Preparando pacotes
  3. Instalação do PEC
  4. Versão de Treinamento
  5. Migração de Versão PEC
  6. Outras informações relevantes

Ajude esse e outros projetos OpenSource para saúde: Patrocínio

Alinhando conhecimentos

Para poder rodar esse sistema é necessário ter conhecimentos básicos dos seguintes programas e ambientes:

  • Linux: É o sistema opercional (OS) amplamente utilizado em servidores devido a sua segurança, leveza e versatilidade. Em servidores não temos uma identificação visual de pastas e arquivos, portanto toda a navegação e ações do usuário são por linhas de código
  • Docker: É um programa que você deve pensar como um container com todos os arquivos dentro para rodar o sistema que você quer rodar ao final, ao colocar o container no seu servidor e rodar ele, deve então funcionar em qualquer ambiente da mesma forma. Isso dispensa o ter que configurar todo o ambiente para receber o programa, pois quem fez o container já fez isso para você.

Preparando pacotes

Tenha o docker e docker-compose instalado na máquina

Em uma VPS Ubuntu ou Debian, vamos instalar o docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Para controle dos containers pode ser útil utilizar o Portainer, assim ficará mais fácil verificar os erros e entrar nas aplicações:

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Instalação do PEC

Para instalação foi criado um script que posse ser executado copiando o bloco abaixo, se você estiver migrando de versão leia o parágrafo abaixo

1. Baixe o pacote do programa PEC na versão que deseja instalar/atualizar. Você pode também baixar no site oficial do PEC APS

wget https://arquivos.esusab.ufsc.br/PEC/mtRazOmMxfBpkEMK/5.2.28/eSUS-AB-PEC-5.2.28-Linux64.jar

Gostaria de migrar de outro banco de dados? Acesse a seção de migração

2. Rode o script para instalar o pacote baixado e criar o container

sh build.sh -f eSUS-AB-PEC-5.2.28-Linux64.jar

Para instalar a versão de treinamento use o argumento -t

sh build.sh -f eSUS-AB-PEC-5.2.28-Linux64.jar -t

Patrocínio

Agradecimentos à equipe NoHarm que investiu nesse projeto para facilitar a instalação dessa aplicação tão amplamente utilizada no SUS/Brasil.

Apoie também esse e outros projetos.

Stripe Badge Buy Me a Coffe Badge WhatsApp Badge

Versão de Treinamento

O pacote java disponibilizado pelo Ministério da Saúde/Secretaria de Atenção Primária à Saúde. Laboratório Bridge/Universidade Federal de Santa Catarina. Página de Suporte

Documentação do pacote java

O pacote nos concede algumas opções além da de treinamento que vale à pena dar uma olhada, é utilizado no nosso script de criação da aplicação:

# java -jar {pacote} -help
Usage: <main class> [[-url=<url>] [-username=<username>]
                    [-password=<password>]] [[-restore=<dumpFilePath>]]
                    [[-backup]] [-console] [-continue] [-help] [-treinamento]
Parâmetro Descrição
-console Inicializa o assistente em modo linha de comandos. Se omitido esse parâmetro, o assistente inicializa em modo interface gráfica.
-treinamento Indica que a Nova Instalação será de Treinamento. Se omitido esse parâmetro, a Nova Instalação será de Produção.
-help Mostra estas informações sobre a utilização dos parâmetros do assistente.
-continue Modo não interativo. Continua com a execução das tarefas necessárias sem a necessidade de confirmação do usuário.
-url=<url> URL de conexão para acesso ao Banco de Dados
-username=<username> Nome de usuário para acesso ao Banco de Dados
-password=<password> Senha para acesso ao Banco de Dados
-restore=<dumpFilePath> Caminho do arquivo de backup do Banco de Dados do PEC
-backup Cria um backup do Banco de Dados antes de atualizar. Se omitido esse parâmetro, não será realizado um backup.

Backup e Restauração de Banco de Dados

Fazendo backup

docker compose exec -it psql bash -c 'pg_dump --host localhost --port 5432 -U "postgres" --format custom --blobs --encoding UTF8 --no-privileges --no-tablespaces --no-unlogged-table-data --file "/home/$(date +"%Y_%m_%d__%H_%M_%S").backup" "esus"'

Restaurando backup

pg_restore -U "postgres" -d "esus" -1 "/home/seu_arquivo.backup"
psql -U postgres esus < backupfile.sql

Migração de Versão PEC

⚠️ Disclaimer: É importante notar, segundo nota da própria equipe que mantém o PEC, que a migração do banco de dados em sistema linux não tem tantas verificações quanto o Windows, podendo, talvez, existir alguma versão de banco sem a migração adequada. Testado e funcionou após migrar a versão de 4.2.6 para 4.5.5 .

  1. Crie um backup do banco de dados e retire da pasta data
docker exec -it esus_psql bash -c 'pg_dump --host localhost --port 5432 -U "postgres" --format custom --blobs --encoding UTF8 --no-privileges --no-tablespaces --no-unlogged-table-data --file "/home/$(date +"%Y_%m_%d__%H_%M_%S").backup" "esus"'
sudo cp data/backups/nome_do_arquivo.backup .

Ou pode-se optar por fazer o backup pela própria ferramenta do PEC, use:

java jar esus-pec.jar -help

Para mais informações.

  1. Exclua todo o banco de dados e dados relacionados em volume
docker-compose down --remove-orphans --volumes
sudo rm -rf data
  1. Crie o banco de dados
docker-compose up -d psql
  1. Copie o arquivo de backup
sudo cp nome_do_arquivo.backup data/backups/
  1. Crie o banco de dados com base no backup
docker exec -it esus_psql bash
pg_restore --verbose -U "postgres" -d "esus" -1 /home/seu_arquivo.backup
  1. Instale o programa

Fora do container, na pasta raiz do projeto execute, substituindo o nome do pacote eSUS-AB-PEC-5.0.8-Linux64.jar para a versão que você vai instalar em sua máquina.

sh build.sh -f eSUS-AB-PEC-5.0.14-Linux64.jar

Comandos interessantes

Caso o container tenha sido interrompido sem querer, o comando abaixo pode ser útil

# Em linux
make run
# Depois de rodar novamente os containers
docker-compose up -d
# Caso nenhum dos anteriores funcione execute diretamente o executável do sistema pec
docker-compose up -d esus_app /opt/e-SUS/webserver/standalone.sh

Bugs Conhecidos (Known Issues)

  • Testes realizados com versão 4.2.7 e 4.2.8 não foram bem sucedidos
  • A versão 4.2.8 está com erro no formulário de cadastro, nas requisições ao banco de dados, pelo endpoint graphql, retorna "Não autorizado"
  • Verificar sempre a memória caso queira fazer depois em servidor. Senão ele trará no console um Killed inesperado https://stackoverflow.com/questions/37071106/spring-boot-application-quits-unexpectedly-with-killed
  • Não instale a versão 5.0.8, do de cabeça, não carrega alguns exames e atendimentos de forma aparentemente aleatória, corrigido após instalar versão 5.0.14

Lista de Versões para Download

version version

About

Instalação do e-SUS em ambiente docker linux com arquivo jar

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 42.7%
  • Python 32.2%
  • Dockerfile 19.0%
  • Makefile 6.1%