forked from RiseUP/riseup_squad_03
fix(principal): integra auth, agenda e laudos com a api
This commit is contained in:
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