Compatível e testado com
É 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
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:
.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
Ajude esse e outros projetos OpenSource para saúde: Patrocínio
Para poder rodar esse sistema é necessário ter conhecimentos básicos dos seguintes programas e ambientes:
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
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
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
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
Agradecimentos à equipe NoHarm que investiu nesse projeto para facilitar a instalação dessa aplicação tão amplamente utilizada no SUS/Brasil.
O certificado SSL é importante para podermos utilizar o HTTPS (Habilita video chamadas e prescrição eletrônica, além de ser pré-requisito para login GOV.br). Mais informações
# https://github.com/filiperochalopes/e-SUS-PEC/issues/14
make generate-ssl URL=https://meu-dominio.com EMAIL=meu-email@dominio.com
Vamos fazer manualmente o processo que se constitui em:
docker compose -f docker-compose.external-db.yml down pec
docker compose -f docker-compose.external-db.yml up -d pec
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name esuspec -CAfile chain.pem -caname root -password pass:mypass
keytool -importkeystore -deststorepass mypass -destkeypass mypass -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass mypass -alias esuspec
/opt/e-SUS/webserver/config/application.properties
spring.datasource.url=jdbc:postgresql://noharm-dev.cnonw4s4vx7j.sa-east-1.rds.amazonaws.com:5432/esus?ssl=true&sslmode=allow&sslfactory=org.postgresql.ssl.NonValidatingFactory
spring.datasource.password=esus_pass
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username=esus_user
server.port=443
# server.ssl.key-store-type=PKCS12
server.ssl.key-store=/opt/e-SUS/keystore.jks
server.ssl.key-store-password=esus_pass
server.ssl.key-alias=esuspec
security.require-ssl=true
Ainda analisando como seria isso, e para automatizar, já que o processo de retornar para porta 80, rodar novamente o certbot e voltar para 443 poderia ser doloroso.
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
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. |
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"'
pg_restore -U "postgres" -d "esus" -1 "/home/seu_arquivo.backup"
psql -U postgres esus < backupfile.sql
⚠️ 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
.
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.
docker-compose down --remove-orphans --volumes
sudo rm -rf data
docker-compose up -d psql
sudo cp nome_do_arquivo.backup data/backups/
docker exec -it esus_psql bash
pg_restore --verbose -U "postgres" -d "esus" -1 /home/seu_arquivo.backup
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
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
4.2.7
e 4.2.8
não foram bem sucedidosKilled
inesperado https://stackoverflow.com/questions/37071106/spring-boot-application-quits-unexpectedly-with-killed5.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