forked from RiseUP/riseup_squad_03
fix(principal): integra auth, agenda e laudos com a api
This commit is contained in:
61
src/mappers/appointmentMapper.js
Normal file
61
src/mappers/appointmentMapper.js
Normal file
@@ -0,0 +1,61 @@
|
||||
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,
|
||||
}
|
||||
},
|
||||
}
|
||||
73
src/mappers/reportMapper.js
Normal file
73
src/mappers/reportMapper.js
Normal file
@@ -0,0 +1,73 @@
|
||||
export const reportMapper = {
|
||||
toUi(apiData) {
|
||||
if (!apiData) return null
|
||||
|
||||
const patient = apiData.patient || apiData.paciente || apiData.patients || {}
|
||||
const doctor = apiData.doctor || apiData.medico || apiData.professional || apiData.doctors || {}
|
||||
const createdAt = apiData.created_at || apiData.createdAt || apiData.data_criacao || apiData.date
|
||||
const status = normalizeStatus(apiData.status || apiData.situacao)
|
||||
|
||||
return {
|
||||
id: String(apiData.id || apiData.report_id || apiData.laudo_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',
|
||||
date: createdAt ? new Date(createdAt).toLocaleDateString('pt-BR') : 'Sem data',
|
||||
doctor: apiData.doctorName || apiData.doctor_name || apiData.medico_nome || doctor.name || doctor.nome || 'Medico(a)',
|
||||
author: apiData.author || apiData.autor || doctor.name || doctor.nome || 'Medico(a)',
|
||||
type: apiData.type || apiData.report_type || apiData.tipo || apiData.tipo_laudo || 'Laudo medico',
|
||||
status,
|
||||
content: apiData.content || apiData.conteudo || apiData.text || '',
|
||||
cid: apiData.cid || '',
|
||||
tags: apiData.tags || [],
|
||||
verified: apiData.verified ?? apiData.verificado ?? status !== 'rascunho',
|
||||
showDate: apiData.showDate ?? apiData.exibir_data ?? true,
|
||||
signDigital: apiData.signDigital ?? apiData.assinatura_digital ?? true,
|
||||
versions: normalizeVersions(apiData.versions || apiData.versoes),
|
||||
}
|
||||
},
|
||||
|
||||
toApi(uiData, dialect = 'api') {
|
||||
if (dialect === 'supabase') {
|
||||
return {
|
||||
patient_id: uiData.patientId,
|
||||
report_type: uiData.type,
|
||||
content: uiData.content,
|
||||
status: uiData.status,
|
||||
cid: uiData.cid || null,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
patient_id: uiData.patientId,
|
||||
paciente_id: uiData.patientId,
|
||||
report_type: uiData.type,
|
||||
tipo: uiData.type,
|
||||
content: uiData.content,
|
||||
conteudo: uiData.content,
|
||||
status: uiData.status,
|
||||
cid: uiData.cid || null,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
function normalizeStatus(status) {
|
||||
if (!status) return 'rascunho'
|
||||
|
||||
const normalized = String(status).toLowerCase()
|
||||
if (['finalizado', 'liberado', 'assinado'].includes(normalized)) return 'finalizado'
|
||||
if (['enviado', 'entregue'].includes(normalized)) return 'enviado'
|
||||
return 'rascunho'
|
||||
}
|
||||
|
||||
function normalizeVersions(versions) {
|
||||
if (Array.isArray(versions) && versions.length) return versions
|
||||
|
||||
return [
|
||||
{
|
||||
version: 1,
|
||||
action: 'Criado',
|
||||
user: 'Sistema',
|
||||
summary: 'Registro importado da API',
|
||||
},
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user