Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NotificaSUS v1.0.0 Next.js 16 TypeScript 5.x LGPD Compliant

NotificaSUS

Sistema de Notificação de Incidentes relacionados à Segurança do Paciente em Unidades de Saúde da APS — Prefeitura de Pinhais, PR.

Plataforma mobile-first para registro anônimo de incidentes em unidades de saúde via QR Code, com dashboard administrativo para gestão e relatórios. Totalmente aderente à LGPD.

Funcionalidades

  • Formulário público (/notificar) — Registro anônimo de incidentes em 3 passos com autopreenchimento via ?usf=slug
  • Categorias NotiVISA — Queda de paciente, erro de medicação, IRAS, falha de equipamento, violência/agressão, outros
  • Protocolo único — Formato NOT-YYYYMMDD-XXXX com hash curto e retry em colisão
  • LGPD First — Modo anônimo ativado por padrão, consentimento obrigatório, IP/headers identificáveis descartados
  • QR Code — Cadastro por unidade de saúde com autopreenchimento automático
  • Dashboard (em desenvolvimento) — Gestão de notificações, relatórios e administração

Stack

Camada Tecnologia
Framework Next.js 16 (App Router)
Linguagem TypeScript 5.x
Estilo Tailwind CSS 4.x
ORM Drizzle ORM 0.45.x
Banco Neon PostgreSQL
Autenticação NextAuth v5 (Google OAuth)
Testes Vitest 4.x

Começando

# Instalar dependências
npm install

# Configurar variáveis de ambiente
cp .env.example .env.local
# Edite .env.local com suas credenciais (DATABASE_URL, AUTH_SECRET, etc.)

# Executar migrações
npm run db:push

# Iniciar dev server
npm run dev

Scripts

Comando Descrição
npm run dev Servidor de desenvolvimento
npm run build Build de produção
npm run lint ESLint
npm run typecheck TypeScript check
npm test Vitest (testes unitários e de integração)

Estrutura

src/
├── app/
│   ├── api/
│   │   ├── auth/[...nextauth]/  # NextAuth route handler
│   │   ├── notificar/           # POST /api/notificar
│   │   └── usf/                 # GET /api/usf
│   ├── notificar/
│   │   ├── page.tsx             # Formulário público
│   │   └── confirmacao/         # Tela de protocolo
│   ├── gestao/                  # Dashboard (em desenvolvimento)
│   └── layout.tsx
├── components/
│   ├── formulario/              # Formulário 3 passos
│   └── ui/                      # Componentes compartilhados
├── lib/
│   ├── auth/                    # NextAuth config
│   ├── db/                      # Schema Drizzle + conexão
│   └── middleware/              # Anonimização LGPD
└── utils/                       # Gerador de protocolo

Subdomínio Gestão

Em produção, o dashboard gerencial opera em subdomínio separado (gestao.pinhais.pr.gov.br) para isolar a área administrativa do formulário público.

Configuração de DNS

  1. Adicione um registro CNAME em gestao.pinhais.pr.gov.br apontando para cname.vercel-dns.com
  2. No Vercel, adicione o domínio gestao.pinhais.pr.gov.br ao projeto
  3. Configure a variável de ambiente:
    • GESTAO_URL=https://gestao.pinhais.pr.gov.br
    • NEXT_PUBLIC_GESTAO_URL=https://gestao.pinhais.pr.gov.br

Comportamento em Desenvolvimento

Em dev local (localhost), /gestao/* funciona normalmente sem subdomínio. Os redirects condicionais e assetPrefix só são ativados em produção.

Cookies

O cookie de sessão NextAuth usa domain: .pinhais.pr.gov.br para funcionar entre o domínio principal e o subdomínio de gestão.

API

GET /api/usf

Retorna lista de Unidades de Saúde ativas.

POST /api/notificar

Cria uma notificação anônima.

{
  "usfId": "uuid",
  "tipoIncidente": "queda-paciente",
  "descricao": "Relato do incidente",
  "grauDano": "leve|moderado|grave|obito",
  "acoesTomadas": "(opcional)",
  "anonimo": true
}

Resposta:

{
  "protocolo": "NOT-20260728-A3F2",
  "success": true,
  "anonimo": true
}

Licença

MIT — Prefeitura Municipal de Pinhais, Paraná.

About

Plataforma mobile-first para registro anônimo de incidentes relacionados à Segurança do Paciente em Unidades de Saúde da APS, via QR Code, com dashboard administrativo para gestão e relatórios. Totalmente aderente à LGPD.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages