refactor(principal): remove legenda global do AppShell

This commit is contained in:
EdilbertoC
2026-04-28 14:00:14 -03:00
parent 000abb39ac
commit 77079e173c
7 changed files with 770 additions and 915 deletions

View File

@@ -2,72 +2,60 @@ 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),
id: String(apiData.id || ''),
orderNumber: apiData.order_number || '',
patientId: apiData.patient_id || '',
status: normalizeStatus(apiData.status),
exam: apiData.exam || '',
requestedBy: apiData.requested_by || '',
cidCode: apiData.cid_code || '',
diagnosis: apiData.diagnosis || '',
conclusion: apiData.conclusion || '',
contentHtml: apiData.content_html || '',
contentJson: apiData.content_json ?? null,
hideDate: Boolean(apiData.hide_date),
hideSignature: Boolean(apiData.hide_signature),
dueAt: apiData.due_at || '',
createdBy: apiData.created_by || '',
updatedBy: apiData.updated_by || '',
createdAt: apiData.created_at || '',
updatedAt: apiData.updated_at || '',
}
},
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 {
toApi(uiData) {
return cleanPayload({
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,
}
status: normalizeApiStatus(uiData.status),
exam: emptyToUndefined(uiData.exam),
requested_by: emptyToUndefined(uiData.requestedBy),
cid_code: emptyToUndefined(uiData.cidCode),
diagnosis: emptyToUndefined(uiData.diagnosis),
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),
})
},
}
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'
return status === 'draft' ? 'draft' : 'draft'
}
function normalizeVersions(versions) {
if (Array.isArray(versions) && versions.length) return versions
return [
{
version: 1,
action: 'Criado',
user: 'Sistema',
summary: 'Registro importado da API',
},
]
function normalizeApiStatus(status) {
return status === 'draft' ? 'draft' : 'draft'
}
function emptyToUndefined(value) {
return value === '' || value === null ? undefined : value
}
function cleanPayload(payload) {
return Object.fromEntries(
Object.entries(payload).filter(([, value]) => value !== undefined),
)
}