new file: public/favicon.svg

deleted:    src/assets/hero.png
modified:   src/components/AppShell.jsx
modified:   src/components/calendar/AgendaDailyView.jsx
modified:   src/components/calendar/AgendaMonthlyView.jsx
modified:   src/components/calendar/AgendaWeeklyView.jsx
modified:   src/hooks/useAgenda.js
modified:   src/index.css
modified:   src/mappers/appointmentMapper.js
modified:   src/mappers/reportMapper.js
modified:   src/pages/AgendaPage.jsx
modified:   src/pages/AuthPages.jsx
modified:   src/pages/HomePage.jsx
modified:   src/pages/MessagesPage.jsx
modified:   src/pages/PatientsPage.jsx
modified:   src/pages/ProfilePage.jsx
modified:   src/pages/ReportsPage.jsx
modified:   src/pages/SettingsPage.jsx
modified:   src/repositories/appointmentRepository.js
modified:   src/repositories/settingsRepository.js
This commit is contained in:
2026-05-08 01:32:46 -03:00
parent bc900fbdd4
commit 94dab58d85
20 changed files with 1206 additions and 447 deletions

View File

@@ -32,7 +32,7 @@ export const appointmentMapper = {
cancelled: 'Cancelada',
}
const rawStatus = (apiData.status || '').toLowerCase()
const rawStatus = String(apiData.status || '').toLowerCase()
const mappedStatus = statusMap[rawStatus] || apiData.situacao || 'Aguardando'
// Modalidade
@@ -66,6 +66,7 @@ export const appointmentMapper = {
type: apiData.type || apiData.tipo || apiData.tipo_consulta || 'Consulta',
mode: mode,
status: mappedStatus,
notes: apiData.notes || apiData.observations || apiData.observacoes || apiData.observacao || apiData.description || '',
room: apiData.room || apiData.sala || apiData.local || 'Consultório 1',
}
},
@@ -80,7 +81,9 @@ export const appointmentMapper = {
doctor_id: uiData.professionalId || null,
scheduled_at: scheduledAt,
appointment_type: uiData.mode === 'Teleconsulta' ? 'telemedicina' : 'presencial',
status: uiData.status === 'Confirmada' ? 'confirmed' : 'requested',
status: toApiStatus(uiData.status),
notes: emptyToUndefined(uiData.notes),
observations: emptyToUndefined(uiData.notes),
duration_minutes: 30, // Padrao
}
}
@@ -94,6 +97,37 @@ export const appointmentMapper = {
mode: uiData.mode,
status: uiData.status || 'Confirmada',
room: uiData.room,
notes: uiData.notes,
}
},
}
function emptyToUndefined(value) {
return value === '' || value === null ? undefined : value
}
function toApiStatus(status) {
const normalized = String(status || '')
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.trim()
.toLowerCase()
const statusMap = {
confirmada: 'confirmed',
confirmado: 'confirmed',
em_triagem: 'checked_in',
triagem: 'checked_in',
aguardando: 'requested',
solicitada: 'requested',
solicitacao: 'requested',
cancelada: 'cancelled',
cancelado: 'cancelled',
concluida: 'completed',
concluido: 'completed',
finalizada: 'completed',
finalizado: 'completed',
}
return statusMap[normalized.replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '')] || 'requested'
}

View File

@@ -36,8 +36,6 @@ export const reportMapper = {
conclusion: emptyToUndefined(uiData.conclusion),
content_html: emptyToUndefined(uiData.contentHtml),
content_json: uiData.contentJson === undefined ? undefined : uiData.contentJson,
hide_date: Boolean(uiData.hideDate),
hide_signature: Boolean(uiData.hideSignature),
due_at: emptyToUndefined(uiData.dueAt),
created_by: emptyToUndefined(uiData.createdBy),
updated_by: emptyToUndefined(uiData.updatedBy),