MelissaPaciente Fase 1: foundation (5 composables + skeleton 7 tabs + slug paciente)
Inicio do port do PatientProntuario.vue (3593L Dialog) pra Melissa nativo. Plano em 8 fases — esta entrega cobre apenas a Fase 1 (foundation). PatientProntuario continua intocado nos 4 callsites (TherapistDashboard, MelissaAgenda, MelissaPacientes, PatientsListPage); migration acontece nas fases 2-8. 5 COMPOSABLES NOVOS em src/features/patients/composables/ - usePatientDetail.js (108L): patients + groups + tags - usePatientSessions.js (83L): agenda_eventos + computeds proxima/ultima/totais - usePatientFinancial.js (82L): financial_records + computeds totalRecebido/Aberto/Atrasado - usePatientMessages.js (64L): conversation_messages + computeds recentes/totalIn/Out - usePatientDocuments.js (70L): documents + computeds total/Bytes/tiposCount Cada composable encapsula a query original do PatientProntuario.vue + adiciona computeds derivados. Reutilizaveis em outros lugares no futuro (dashboards, relatorios, etc). MELISSAPACIENTE.VUE NOVO (1190L) em src/layout/melissa/ - Prefixo CSS .mpa-*. Chrome glass + drawer mobile + right: max(...) >=1024px (mesmo padrao MelissaAgendador/Negocio). - Header: avatar + nome + ageLabel + pronomes + Tag status/convenio + risco-elevado pill + actions (Conversar / Editar / Close). - Subheader condicional: banner risco elevado. - Body 2-col: sidebar 320px (esquerda, drawer no mobile) + main flex 1. - Sidebar com 4 cards: Acoes Rapidas / Navegacao 7 tabs / Sub-nav Perfil / Vinculos (chips grupos+tags). - Main: 7 tabs (Visao Geral / Perfil / Prontuario / Agenda / Financeiro / Documentos / Conversas). Visao Geral ja mostra 4 KPIs reais via composables. Outras 6 abas com placeholders "Em desenvolvimento — Fase X". MELISSALAYOUT.VUE - Import MelissaPaciente. - SECOES.paciente entry novo. - 'paciente' adicionado ao MELISSA_NON_CONFIG_SLUGS. - Render condicional com :patient-id="String(route.query.id || '')" — navegacao via /melissa/paciente?id=xxx. ESLint: 0 errors da mudanca. 2 errors pre-existentes em MelissaLayout (duplicate key 'financeiro' L242, empty block L1130) — nao toquei essas linhas. PatientProntuario tem outros pre-existentes nao tocados. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,7 @@ import MelissaTags from './MelissaTags.vue';
|
||||
import MelissaGrupos from './MelissaGrupos.vue';
|
||||
import MelissaConfiguracoes from './MelissaConfiguracoes.vue';
|
||||
import MelissaPerfil from './MelissaPerfil.vue';
|
||||
import MelissaPaciente from './MelissaPaciente.vue';
|
||||
import MelissaPlano from './MelissaPlano.vue';
|
||||
import MelissaNegocio from './MelissaNegocio.vue';
|
||||
import MelissaAlterarPlano from './MelissaAlterarPlano.vue';
|
||||
@@ -199,6 +200,11 @@ const SECOES = {
|
||||
grupos: { label: 'Grupos de pacientes', icon: 'pi pi-th-large', descricao: 'Categorize pacientes por grupos.' },
|
||||
tags: { label: 'Tags', icon: 'pi pi-tag', descricao: 'Etiquetas livres pra organizar pacientes.' },
|
||||
medicos: { label: 'Médicos e referências', icon: 'pi pi-user-edit', descricao: 'Profissionais que encaminham ou recebem pacientes.' },
|
||||
// Pagina nativa do prontuario do paciente (MelissaPaciente) — Fase 1 foundation.
|
||||
// ID do paciente vem via route.query.id (?id=xxx). Substitui gradualmente o
|
||||
// PatientProntuario.vue legado (3593L Dialog) que continua nos 4 callsites
|
||||
// ate Fase 8 (wire-up final).
|
||||
paciente: { label: 'Paciente', icon: 'pi pi-user', descricao: 'Prontuario completo: visao geral, perfil, sessoes, financeiro, documentos, conversas.' },
|
||||
// Pagina unificada do Layout Melissa (Aparencia + Fundo + Relogio + Cronometro)
|
||||
aparencia: { label: 'Layout Melissa', icon: 'pi pi-palette', descricao: 'Aparência, plano de fundo, relógio e cronômetro do resumo.' },
|
||||
// Pagina nativa do perfil (MelissaPerfil) — saiu do MelissaConfiguracoes
|
||||
@@ -258,7 +264,7 @@ const MELISSA_EMBED_KEYS = [];
|
||||
// conversas etc. + as MELISSA_EMBED_KEYS. Usado no isConfigRoute pra
|
||||
// evitar colisão (ex: /melissa/agenda → MelissaAgenda, não config).
|
||||
const MELISSA_NON_CONFIG_SLUGS = new Set([
|
||||
'agenda', 'pacientes', 'compromissos', 'recorrencias', 'conversas',
|
||||
'agenda', 'pacientes', 'paciente', 'compromissos', 'recorrencias', 'conversas',
|
||||
'tags', 'grupos', 'cadastros-recebidos', 'medicos', 'agendamentos-recebidos',
|
||||
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
|
||||
'documentos', 'documentos-templates', 'relatorios',
|
||||
@@ -1859,6 +1865,17 @@ function onKeydown(e) {
|
||||
@close="fecharSecao"
|
||||
/>
|
||||
|
||||
<!-- Pagina nativa do prontuario do paciente (Fase 1 foundation).
|
||||
ID vem via route.query.id (?id=xxx). Quando ID muda, MelissaPaciente
|
||||
refetcha tudo via composables (usePatientDetail/Sessions/etc). -->
|
||||
<MelissaPaciente
|
||||
v-if="layoutReady && secaoAberta === 'paciente'"
|
||||
:patient-id="String(route.query.id || '')"
|
||||
@close="fecharSecao"
|
||||
@edit="(id) => fecharSecao()"
|
||||
@open-whatsapp="(id) => fecharSecao()"
|
||||
/>
|
||||
|
||||
<MelissaPlano
|
||||
v-if="layoutReady && secaoAberta === 'plano'"
|
||||
@close="fecharSecao"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user