Skip to content

Auditoria

O que é o Audit Log?

O módulo de Auditoria registra de forma imutável todas as ações críticas realizadas no sistema. Cada entrada no audit log é um registro permanente que não pode ser editado ou excluído.

Ações Registradas

CategoriaAções auditadas
AutenticaçãoLogin, logout, falha de login, reset de senha, revogação de token
UsuáriosCriação, alteração de papel, inativação, convite enviado
PacientesCriação, edição de dados sensíveis, inativação, exportação LGPD
AgendamentosCriação, cancelamento, mudança de status
ProntuárioCriação de registro, assinatura, acesso a prontuário
FinanceiroCriação de fatura, registro de pagamento, desconto aplicado
ConfiguraçõesAlteração de configurações da organização
ArquivosUpload e download de documentos clínicos

Estrutura de um Registro de Auditoria

Cada entry do audit log contém:

CampoTipoDescrição
idUUIDIdentificador único do registro
organization_idUUIDTenant ao qual pertence
user_idUUIDUsuário que realizou a ação
actionStringCódigo da ação (ex: patient.created)
entity_typeStringTipo da entidade afetada (ex: Patient)
entity_idUUIDID da entidade afetada
old_valuesJSONEstado anterior dos dados (antes da mudança)
new_valuesJSONEstado novo dos dados (após a mudança)
ip_addressIPEndereço IP do solicitante
user_agentStringNavegador/cliente utilizado
created_atTimestampData e hora da ação

Visualizar o Audit Log

Em Auditoria (/app/audit):

  1. Selecione o período de interesse
  2. Filtre por tipo de ação, entidade ou usuário
  3. Clique em um registro para ver os detalhes completos (old_values vs new_values)

Componente AuditTimeline

Para entidades específicas (paciente, agendamento, fatura), o histórico de auditoria é exibido como uma linha do tempo na própria página de detalhes, mostrando quem fez o quê e quando.

Retenção de Dados

  • Registros de auditoria são retidos por 5 anos (mínimo regulatório para dados clínicos)
  • Particionamento anual automático da tabela para manter performance em alto volume
  • Nunca são excluídos ou sobrescritos

Implementação Técnica

O audit log é populado automaticamente pelo AuditLogInterceptor no EF Core, que intercepta SaveChangesAsync e registra mudanças nas entidades marcadas para auditoria.

csharp
// Entidades marcadas com [Auditable]
[Auditable]
public class Patient : BaseEntity { ... }

// O interceptor captura automaticamente old_values e new_values
public class AuditLogInterceptor : SaveChangesInterceptor
{
    public override async Task<InterceptionResult<int>> SavingChangesAsync(...)
    {
        // Captura mudanças e persiste em audit_logs
    }
}

Permissões

AçãoOWNERADMINRECEPTIONISTPROFESSIONALVIEWER
Ver audit log
Exportar audit log

Acesso

  • URL: /app/audit
  • Guard: Requer autenticação + papel Admin ou superior

Desenvolvido com ❤️ pela equipe FastGivr.