Files
riseup_squad_03/src/mappers/appointmentMapper.js

62 lines
2.2 KiB
JavaScript

export const appointmentMapper = {
toUi(apiData) {
if (!apiData) return null
const patient = apiData.patient || apiData.paciente || apiData.patients || {}
const professional = apiData.doctor || apiData.medico || apiData.professional || apiData.doctors || {}
return {
id: apiData.id || apiData.agendamento_id,
patientId: apiData.patientId || apiData.patient_id || apiData.paciente_id || patient.id,
patient: apiData.patientName || apiData.patient_name || patient.full_name || patient.nome || patient.name || 'Paciente',
professional:
apiData.professional ||
apiData.professionalName ||
apiData.doctor_name ||
apiData.medico_nome ||
professional.name ||
professional.nome ||
'Medico(a)',
date: apiData.date || apiData.data || apiData.appointment_date || apiData.data_agendamento || '',
time: apiData.time || apiData.hora || apiData.appointment_time || apiData.horario || '',
type: apiData.type || apiData.tipo || apiData.tipo_consulta || 'Consulta',
mode: apiData.mode || apiData.modalidade || apiData.formato || 'Presencial',
status: apiData.status || apiData.situacao || 'Aguardando',
room: apiData.room || apiData.sala || apiData.local || 'Consultorio 1',
}
},
toApi(uiData, dialect = 'api') {
if (dialect === 'supabase') {
return {
patient_id: uiData.patientId,
doctor_id: uiData.professionalId || null,
appointment_date: uiData.date,
appointment_time: uiData.time,
type: uiData.type,
mode: uiData.mode,
status: uiData.status || 'Confirmada',
room: uiData.room,
}
}
return {
patient_id: uiData.patientId,
paciente_id: uiData.patientId,
doctor_id: uiData.professionalId || null,
medico_id: uiData.professionalId || null,
appointment_date: uiData.date,
data: uiData.date,
appointment_time: uiData.time,
hora: uiData.time,
type: uiData.type,
tipo: uiData.type,
mode: uiData.mode,
modalidade: uiData.mode,
status: uiData.status || 'Confirmada',
room: uiData.room,
sala: uiData.room,
}
},
}