fix(principal): integra auth, agenda e laudos com a api

This commit is contained in:
EdilbertoC
2026-04-28 10:22:54 -03:00
parent d576fb9784
commit 7199c107f2
20 changed files with 1121 additions and 331 deletions

View 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',
},
]
}