Skip to content

Campos de Especialidade no Cadastro(front e backend) #71

Description

@Austinmff

Contexto

Os cadastros de paciente e profissional usam listas de especialidades hardcoded: o paciente busca de `/mocks/specialties.json` (17 itens), o profissional usa um array estático no componente (16 itens), e os filtros de busca têm um terceiro array com 6 itens. Não há consistência entre elas. O backend vai expor `GET /specialties` como source of truth (conectaBemBack#63).

Decisão de design

Criar um hook `useSpecialties()` que busca do endpoint `GET /specialties` e é compartilhado entre todos os pontos que usam lista de especialidades. Cachear com staleTime alto (especialidades mudam raramente). Regenerar tipos Kubb após o endpoint ser criado.

O que fazer

  • Criar hook `useSpecialties()` que busca de `GET /specialties`
  • Substituir `useGetSpecialty()` (que busca do mock) pelo novo hook no cadastro de paciente
  • Substituir `specialtiesMock` no `SpecialtyStep.tsx` do profissional pelo novo hook
  • Substituir `specializationOptions` em `MedicalSpecialization/options.ts` pelo novo hook (afeta Home e Search)
  • Remover mock: `src/features/auth/mocks/specialties.json`
  • Remover `specializationOptions` hardcoded
  • Regenerar tipos Kubb (`npm run generate`)

Fora de escopo

  • Criar o endpoint no backend (conectaBemBack#63 — pré-requisito)
  • CRUD de especialidades
  • Categorização de especialidades

Comportamento esperado

  1. Cadastro de paciente exibe especialidades vindas da API
  2. Cadastro de profissional exibe especialidades vindas da API
  3. Filtros de busca (Home e Search) usam a mesma lista da API
  4. Lista é cacheada no React Query

Critérios de aceite

  • Hook `useSpecialties()` criado e reutilizável
  • Cadastro de paciente usa especialidades da API
  • Cadastro de profissional usa especialidades da API
  • Filtros de busca usam especialidades da API
  • Mocks e arrays hardcoded removidos
  • Tipos Kubb regenerados

Stack / Restrições técnicas

React Query com staleTime alto (5min+). Endpoint público, não precisa de token.

Arquivos relevantes

  • `src/features/auth/hooks/useGetSpecialty.ts`
  • `src/features/auth/components/ProfissionalRegister/SpecialtyStep.tsx`
  • `src/features/auth/components/PatientRegister/SpecialityStep/SpecialitiesSelection.tsx`
  • `src/components/MedicalSpecialization/options.ts`

Dependências

  • Pré-requisito: conectaBemBack#63 (endpoint GET /specialties)

📎Link da Task (Figma)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions