Componentes Principais da Aplicação
Considera-se componentes principais da aplicação o conjunto de componentes que viabilizam o uso do e-SUS AF para os fins aos quais foi projetado. Ou sejam, ofertam para o usuário final da aplicação a experiência de realizar operações administrativas (entradas, saídas, emissão de relatórios básicos e outros) e clínica (dispensação ou fornecimento de medicamentos).
Neste contexto, temos os seguintes componentes principais:
- Aplicação WEB (Frontend)
- API (Back-end)
- Banco de Dados
- Serviço de cache
Aplicação WEB (Frontend)
A interface Web é um dos corações da aplicação e é responsável por viabilizar a interação do usuário da aplicação com o sistema. Este componente foi desenvolvido em React.js.
De forma geral, poucas configurações são necessárias e apenas algumas variáveis de ambiente devem ser configuradas para o correto funcionamento deste componente.
# Exemplo de configuração de variáveis de ambiente para o frontend
# Define a URL base do componente de API do e-SUS AF.
VAR__API_URL=https://example.com/api
# Define a URL de logout conforme documentação GOV.BR
VAR__GOV_BR_LOGOUT_URL=https://sso.acesso.gov.br/logout
# Define a URL de callback do e-SUS AF, corresponde a rota de frontend /auth/callback/govbrlogout.
VAR__GOV_BR_LOGOUT_CALLBACK_ROUTE=/auth/callback/govbrlogout
Note
Durante o processo de build, as variáveis de ambiente são substituídas. Isso permite criar uma imagem Docker flexível e reutilizável para diferentes ambientes. Em código, as variáveis possuem o prefixo VITE_APP_ substituido em tempo de build pelo prefixo VAR__.
API (Back-end)
O Back-end do e-SUS AF carrega toda a lógica de negócio e é responsável por interagir com a camada de persistência. Contruído em Node.JS usando o framework Nest.JS, trata-se de um componente extremamente flexível e poderoso.
Para configurá-lo corretamente, deverão ser aplicadas variáveis de ambiente. Há uma grande gama de configurações que devem ser realizadas conforme o ambiente e características específicas a serem gerenciadas. Abaixo, uma descrição detalhada de cada uma delas.
# Exemplo de configuração de variáveis de ambiente para o backend
#CONFIGURAÇÕES GERAIS DA API
# Porta onde a API é exposta
PORT=5000
# Modo da API (development ou production)
NODE_ENV=production
# Tempo para expiração do token de acesso JWT
JWT_EXPIRES_IN=15m
# Tempo para expiração do Refresh Token
JWT_REFRESH_EXPIRES_IN=1h
# Material usado para criptografia de senhas, chaves e outros recursos da aplicação
SECRET_KEY=vOVH6sdmpNWjRRIqCc7rdxs01lwHzfr3
# Define a localização do conjunto de chaves pública e privada usadas para criptografia do token JWT
# Caso nenhum PATH seja informado, a aplicação criará as chaves e adicionará em um diretório defaul
KEY_PATH=
# Define o idioma default e de fallback da aplicação
DEFAULT_LANGUAGE=pt-br
I18N_FALLBACK_LANGUAGE=pt-br
# URL onde a API é exposta
API_URL=http://localhost:5000/api
# URL de login da aplicação no frontend
CLIENT_LOGIN_ROUTE=http://localhost:3000
# CONFIGURAÇÃO DE CLIENTE SMTP PARA ENVIO DE EMAILS
MAIL_HOST=
MAIL_PORT=
MAIL_USER=
MAIL_PASS=
MAIL_FROM=
# CONFIGURAÇÃO DE ACESSO AO BANCO DE DADOS
DB_DIALECT=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE=dbesusaf
DB_SCHEMA=esusaf
# CONFIGURAÇÃO DE ACESSO AO SERVIDOR DE CACHE
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# CONFIGURAÇÕES DE TELEMETRIA
# URL para coletor de traces
TELEMETRY_COLLECTOR_URL=http://localhost:4318/v1/traces
# URL para coletor de telemetria
OTLP_ENDPOINT=http://localhost:4318
# Porta onde fica exposta a API de métricas
METRICS_EXPORTER_PORT=8081
# Se adicionado um valor para a Variável LOG_DIR, a aplicação passará a escrever logs em um arquivo
LOG_DIR=/tmp
# Níveis de log conforme RFC 5424 (error, warn, info, http, verbose, debug, silly)
LOG_LEVEL=silly
# Habilita o uso do logger JSON
USE_JSON_LOGGER="true"
# VARIÁVEIS DE AMBIENTE PARA INTEGRAÇÕES
BIAF_URL=BIAF_URL
BIAF_CLIENT_ID=BIAF_CLIENT_ID
BIAF_APIKEY=BIAF_APIKEY
BIAF_STATUS=BIAF_STATUS
# CONFIGURAÇÕES PARA O GOV.BR
GOV_BR_PROVIDER=https://sso.staging.acesso.gov.br
GOV_BR_SERVICE=https://api.staging.acesso.gov.br
GOVBR_AUTH_URL=https://sso.acesso.gov.br/authorize
GOVBR_TOKEN_URL=https://sso.acesso.gov.br/token
GOV_BR_SCOPE=openid+email+profile+govbr_confiabilidades
GOV_BR_CODE_CHALLENGE_METHOD=S256
# Secret ID informado durante o processo de adesão ao GOV.BR
GOV_BR_CLIENT_ID=
# Client Secret informado durante o processo de adesão ao GOV.BR
GOV_BR_CLIENT_SECRET=
# URL de callback informado durante o processo de adesão ao GOV.BR
GOV_BR_CALLBACK_URL={{https://sua_url}}/api/auth/govbr/callback
# URL de login da aplicação no frontend, recebe o token e access token
GOV_BR_LOGIN_ROUTE={{https://sua_url}}/authCallback
# URL de logout da aplicação no frontend
GOV_BR_SSO_LOGOUT_URL={{https://sua_url}}/auth/callback/govbrlogout