@@ -1882,721 +1684,1091 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
);
- const renderLaudosSection = () => {
- if (modoEdicao) {
- return renderEditorLaudo();
- }
-
+
+ const renderLaudosSection = () => (
+
+ {
+ setIsEditingLaudoForPatient(false);
+ setPatientForLaudo(null);
+ }}
+ />
+
+ );
+
+ // --- NOVO SISTEMA DE LAUDOS COMPLETO ---
+ function LaudoManager({ isEditingForPatient, selectedPatientForLaudo, onClosePatientEditor }: { isEditingForPatient?: boolean; selectedPatientForLaudo?: any; onClosePatientEditor?: () => void }) {
+ const [pacientesDisponiveis] = useState([
+ { id: "95170038", nome: "Ana Souza", cpf: "123.456.789-00", idade: 42, sexo: "Feminino" },
+ { id: "93203056", nome: "Bruno Lima", cpf: "987.654.321-00", idade: 33, sexo: "Masculino" },
+ { id: "92953542", nome: "Carla Menezes", cpf: "111.222.333-44", idade: 67, sexo: "Feminino" },
+ ]);
+
+ const [laudos] = useState([
+ {
+ id: "306494942",
+ data: "29/07/2025",
+ prazo: "29/07/2025",
+ paciente: { id: "95170038", nome: "Ana Souza", cpf: "123.456.789-00", idade: 42, sexo: "Feminino" },
+ executante: "Carlos Andrade",
+ exame: "Ecocardiograma",
+ status: "Entregue",
+ urgente: true,
+ especialidade: "Cardiologia",
+ conteudo: `**ECOCARDIOGRAMA TRANSTORÁCICO**
+
+**Dados do Paciente:**
+Nome: Ana Souza
+Idade: 42 anos
+Sexo: Feminino
+
+**Indicação Clínica:**
+Investigação de sopro cardíaco
+
+**Técnica:**
+Ecocardiograma transtorácico bidimensional com Doppler colorido e espectral.
+
+**Resultados:**
+- Átrio esquerdo: dimensões normais
+- Ventrículo esquerdo: função sistólica preservada, FEVE = 65%
+- Valvas cardíacas: sem alterações significativas
+- Pericárdio: sem derrame
+
+**Conclusão:**
+Exame ecocardiográfico dentro dos limites da normalidade.
+
+**CID:** I25.9`,
+ cid: "I25.9",
+ diagnostico: "Exame ecocardiográfico normal",
+ conclusao: "Função cardíaca preservada, sem alterações estruturais significativas."
+ },
+ {
+ id: "306463987",
+ data: "29/07/2025",
+ prazo: "29/07/2025",
+ paciente: { id: "93203056", nome: "Bruno Lima", cpf: "987.654.321-00", idade: 33, sexo: "Masculino" },
+ executante: "Carlos Andrade",
+ exame: "Eletrocardiograma",
+ status: "Entregue",
+ urgente: true,
+ especialidade: "Cardiologia",
+ conteudo: `**ELETROCARDIOGRAMA DE REPOUSO**
+
+**Dados do Paciente:**
+Nome: Bruno Lima
+Idade: 33 anos
+Sexo: Masculino
+
+**Indicação Clínica:**
+Dor precordial atípica
+
+**Técnica:**
+Eletrocardiograma de 12 derivações em repouso.
+
+**Resultados:**
+- Ritmo: sinusal regular
+- Frequência cardíaca: 72 bpm
+- Eixo elétrico: normal
+- Intervalos PR, QRS e QT: dentro dos limites normais
+- Ondas Q patológicas: ausentes
+- Alterações de ST-T: não observadas
+
+**Conclusão:**
+Eletrocardiograma normal.
+
+**CID:** Z01.8`,
+ cid: "Z01.8",
+ diagnostico: "ECG normal",
+ conclusao: "Traçado eletrocardiográfico dentro dos parâmetros de normalidade."
+ },
+ {
+ id: "306452545",
+ data: "29/07/2025",
+ prazo: "29/07/2025",
+ paciente: { id: "92953542", nome: "Carla Menezes", cpf: "111.222.333-44", idade: 67, sexo: "Feminino" },
+ executante: "Carlos Andrade",
+ exame: "Dermatoscopia",
+ status: "Entregue",
+ urgente: true,
+ especialidade: "Dermatologia",
+ conteudo: `**DERMATOSCOPIA DIGITAL**
+
+**Dados do Paciente:**
+Nome: Carla Menezes
+Idade: 67 anos
+Sexo: Feminino
+
+**Indicação Clínica:**
+Avaliação de lesão pigmentada em dorso
+
+**Técnica:**
+Dermatoscopia digital com magnificação de 10x e 20x.
+
+**Localização:**
+Região dorsal, região escapular direita
+
+**Achados Dermatoscópicos:**
+- Lesão melanocítica benigna
+- Padrão reticular típico
+- Bordas regulares e simétricas
+- Pigmentação homogênea
+- Ausência de estruturas atípicas
+
+**Conclusão:**
+Nevo melanocítico benigno. Seguimento clínico recomendado.
+
+**CID:** D22.5`,
+ cid: "D22.5",
+ diagnostico: "Nevo melanocítico benigno",
+ conclusao: "Lesão benigna, recomenda-se acompanhamento dermatológico de rotina."
+ },
+ ]);
+
+ const [activeTab, setActiveTab] = useState("entregue");
+ const [laudoSelecionado, setLaudoSelecionado] = useState
(null);
+ const [isViewing, setIsViewing] = useState(false);
+ const [isCreatingNew, setIsCreatingNew] = useState(false);
+
+
+
+
return (
- {/* Cabeçalho */}
-
-
-
Gerenciamento de Laudos
-
- Nesta seção você pode gerenciar todos os laudos gerados através da integração.
-
-
-
-
-
- {/* Filtros e Busca */}
-
-
-
-
- setBuscarTexto(e.target.value)}
- className="w-full"
- />
-
-
-
-
- setDataInicio(e.target.value)}
- />
-
-
-
-
- setDataFim(e.target.value)}
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Tabela de Laudos */}
-
-
-
-
- Pedido
- Data
- Preço
- Paciente
- Executante/Solicitante
- Exame/Classificação
- Ação
-
-
-
- {laudosData.map((laudo) => (
-
- {laudo.id}
- {laudo.data}
- {laudo.preco}
-
-
-
- {laudo.execSolicitante}
- {laudo.exameTipo}
-
-
-
-
-
-
-
-
- Editar laudo
-
-
-
-
-
-
-
-
-
-
- Visualizar laudo
-
-
-
-
-
-
-
-
-
-
- Download PDF
-
-
-
-
-
-
- ))}
-
-
-
-
- );
- };
-
- const renderEditorLaudo = () => {
- return (
-
- {/* Cabeçalho do Editor */}
-
-
-
+ {/* Header */}
+
+
-
- {modoEdicao === 'novo' ? 'Novo Laudo' : 'Editar Laudo'}
-
-
- Este editor permite escrever relatórios de forma livre, com formatação de texto rica.
-
+
Gerenciamento de Laudo
+
Nesta seção você pode gerenciar todos os laudos gerados através da integração.
-
-
-
-
-
- {/* Tabs do Editor */}
-
-
-
+ {/* Tabs */}
+
+
+
+
+
-
- {abaAtiva === 'editor' && renderAbaEditor()}
- {abaAtiva === 'imagens' && renderAbaImagens()}
- {abaAtiva === 'anexos' && renderAbaAnexos()}
- {abaAtiva === 'preview' && renderAbaPreview()}
-
-
-
- );
- };
-
- const renderAbaEditor = () => (
-
- {/* Seleção de Paciente */}
-
-
-
- {modoEdicao === 'editar' ? (
- // Modo edição: mostrar dados fixos do paciente
-
-
-
-
{editorLaudo.pacienteNome || laudoAtivo?.recipient}
-
{editorLaudo.pacienteCpf}
+ {/* Filtros */}
+
+
- ) : (
- // Modo novo: mostrar select de pacientes
-
- )}
-
-
-
-
- setEditorLaudo(prev => ({ ...prev, cid: e.target.value }))}
- />
-
-
-
- {/* Campos Principais do Laudo */}
-
-
-
-
-
-
-
-
-
-
- {/* Modelos e Frases */}
-
-
Modelos e Frases
-
- {Object.entries(modelosTexto).map(([nome, texto]) => (
-
- ))}
-
-
-
- {/* Editor de Texto Rico */}
-
-
- setEditorLaudo(prev => ({ ...prev, conteudo: content }))}
- />
-
-
-
-
- {/* Assinatura Digital */}
-
-
Assinatura Digital
-
-
{
- if (!sigCanvasLaudoRef.current?.isEmpty()) {
- setAssinaturaLaudo(sigCanvasLaudoRef.current?.toDataURL());
- }
- }}
- />
-
-
-
-
-
-
- {/* Opções Finais */}
-
-
- );
-
- const renderAbaImagens = () => (
-
-
-
Imagens do Laudo
-
-
-
-
-
-
Arraste imagens aqui ou clique para selecionar
-
Formatos aceitos: JPG, PNG, DICOM (máx. 10MB por arquivo)
-
{
- // Lógica para upload de imagens
- console.log("Imagens selecionadas:", e.target.files);
- }}
- />
-
-
- {editorLaudo.imagens.length > 0 && (
-
- {editorLaudo.imagens.map((img, index) => (
-
-

-
-
- ))}
-
- )}
-
- );
-
- const renderAbaAnexos = () => (
-
-
-
Anexos PDF
-
-
-
-
-
-
Arraste PDFs aqui ou clique para selecionar
-
Anexar resultados de exames externos (máx. 25MB por arquivo)
-
-
- {editorLaudo.pdfAnexos.length > 0 && (
-
- {editorLaudo.pdfAnexos.map((pdf, index) => (
-
-
-
-
-
Documento_{index + 1}.pdf
-
2.4 MB
+
+
+
+
+ 01/07/2025
+ -
+ 31/07/2025
+
-
-
+
+
+
+ Filtros
+
+
+
+
+ Pesquisar
+
+
+
+
+ Exportar
+
+
+
+
+ {/* Tabela */}
+
+
+
+
+ Pedido
+ Data
+ Prazo
+ Paciente
+ Executante/Solicitante
+ Exame/Classificação
+ Ação
+
+
+
+ {laudos.map((laudo) => (
+
+
+
+ {laudo.urgente && (
+
+ )}
+
{laudo.id}
+
+
+
+
+
+
+
+
{laudo.prazo}
+
11:48
+
+
+
+
+
+
+ {laudo.paciente.id}
+
+
{laudo.paciente.nome}
+
+
+ {laudo.executante}
+ {laudo.exame || "-"}
+
+
+ {
+ setLaudoSelecionado(laudo);
+ setIsViewing(true);
+ }}
+ className="flex items-center gap-1"
+ >
+
+ Ver Laudo
+
+ {
+ setPatientForLaudo(laudo);
+ setIsEditingLaudoForPatient(true);
+ }}
+ className="flex items-center gap-1 bg-green-600 hover:bg-green-700 text-white"
+ title="Editar laudo para este paciente"
+ >
+
+ Editar Laudo
+
+
+
+
+ ))}
+
+
+
+
+
+ {/* Visualizador de Laudo */}
+ {isViewing && laudoSelecionado && (
+
setIsViewing(false)} />
+ )}
+
+ {/* Editor para Novo Laudo */}
+ {isCreatingNew && (
+ setIsCreatingNew(false)}
+ isNewLaudo={true}
+ />
+ )}
+
+ {/* Editor para Paciente Específico */}
+ {isEditingForPatient && selectedPatientForLaudo && (
+ {})}
+ isNewLaudo={!selectedPatientForLaudo.conteudo}
+ preSelectedPatient={selectedPatientForLaudo.paciente || selectedPatientForLaudo}
+ />
+ )}
+
+ );
+ }
+
+ // Visualizador de Laudo (somente leitura)
+ function LaudoViewer({ laudo, onClose }: { laudo: any; onClose: () => void }) {
+ return (
+
+
+ {/* Header */}
+
+
+
Visualizar Laudo
+
+ Paciente: {laudo.paciente.nome} | Pedido: {laudo.id} | {laudo.especialidade}
+
+
+
+
+
+
+
+ {/* Content */}
+
+
+ {/* Header do Laudo */}
+
+
LAUDO MÉDICO - {laudo.especialidade.toUpperCase()}
+
+ Data: {laudo.data}
+
+
+
+ {/* Dados do Paciente */}
+
+
Dados do Paciente:
+
+
Nome: {laudo.paciente.nome}
+
ID: {laudo.paciente.id}
+
CPF: {laudo.paciente.cpf}
+
Idade: {laudo.paciente.idade} anos
+
Sexo: {laudo.paciente.sexo}
+
CID: {laudo.cid}
+
+
+
+ {/* Conteúdo do Laudo */}
+
+
')
}}
- className="cursor-pointer"
- >
-
-
+ />
+
+
+ {/* Diagnóstico e Conclusão */}
+ {laudo.diagnostico && (
+
+
Diagnóstico:
+
{laudo.diagnostico}
+
+ )}
+
+ {laudo.conclusao && (
+
+
Conclusão:
+
{laudo.conclusao}
+
+ )}
+
+ {/* Assinatura */}
+
+
+
Dr. Carlos Andrade
+
CRM 000000 - {laudo.especialidade}
+
Data: {laudo.data}
- ))}
-
- )}
-
- );
+
- const renderAbaPreview = () => {
- const pacienteSelecionado = pacientes.find(p => p.cpf === editorLaudo.pacienteId);
-
- return (
-
-
-
Pré-visualização do Laudo
-
-
- Gerar PDF
-
+ {/* Footer */}
+
+
+
+ Status: {laudo.status} | Executante: {laudo.executante}
+
+
+ Fechar
+
+
+
-
-
- {/* Cabeçalho do Laudo */}
-
-
LAUDO MÉDICO
- {editorLaudo.incluirData && (
-
Data: {new Date().toLocaleDateString('pt-BR')}
+
+ );
+ }
+
+ // Editor de Laudo Avançado (para novos laudos)
+ function LaudoEditor({ pacientes, laudo, onClose, isNewLaudo, preSelectedPatient }: { pacientes?: any[]; laudo?: any; onClose: () => void; isNewLaudo?: boolean; preSelectedPatient?: any }) {
+ const [activeTab, setActiveTab] = useState("editor");
+ const [content, setContent] = useState(laudo?.conteudo || "");
+ const [showPreview, setShowPreview] = useState(false);
+ const [pacienteSelecionado, setPacienteSelecionado] = useState
(preSelectedPatient || null);
+ const [campos, setCampos] = useState({
+ cid: laudo?.cid || "",
+ diagnostico: laudo?.diagnostico || "",
+ conclusao: laudo?.conclusao || "",
+ exame: laudo?.exame || "",
+ especialidade: laudo?.especialidade || "",
+ mostrarData: true,
+ mostrarAssinatura: true
+ });
+ const [imagens, setImagens] = useState([]);
+ const [templates] = useState([
+ "Exame normal, sem alterações significativas",
+ "Paciente em acompanhamento ambulatorial",
+ "Recomenda-se retorno em 30 dias",
+ "Alterações compatíveis com processo inflamatório",
+ "Resultado dentro dos parâmetros de normalidade",
+ "Recomendo seguimento com especialista"
+ ]);
+
+ const sigCanvasRef = useRef(null);
+
+ // Carregar dados do laudo existente quando disponível
+ useEffect(() => {
+ if (laudo && !isNewLaudo) {
+ setContent(laudo.conteudo || "");
+ setCampos({
+ cid: laudo.cid || "",
+ diagnostico: laudo.diagnostico || "",
+ conclusao: laudo.conclusao || "",
+ exame: laudo.exame || "",
+ especialidade: laudo.especialidade || "",
+ mostrarData: true,
+ mostrarAssinatura: true
+ });
+ setPacienteSelecionado(laudo.paciente);
+ }
+ }, [laudo, isNewLaudo]);
+
+ const formatText = (type: string) => {
+ const textarea = document.querySelector('textarea') as HTMLTextAreaElement;
+ if (!textarea) return;
+
+ const start = textarea.selectionStart;
+ const end = textarea.selectionEnd;
+ const selectedText = textarea.value.substring(start, end);
+
+ let formattedText = "";
+ switch(type) {
+ case "bold":
+ formattedText = selectedText ? `**${selectedText}**` : "**texto em negrito**";
+ break;
+ case "italic":
+ formattedText = selectedText ? `*${selectedText}*` : "*texto em itálico*";
+ break;
+ case "underline":
+ formattedText = selectedText ? `${selectedText}` : "texto sublinhado";
+ break;
+ case "list":
+ formattedText = selectedText ? `• ${selectedText}` : "• item da lista";
+ break;
+ }
+
+ const newText = textarea.value.substring(0, start) + formattedText + textarea.value.substring(end);
+ setContent(newText);
+ };
+
+ const insertTemplate = (template: string) => {
+ setContent((prev: string) => prev ? `${prev}\n\n${template}` : template);
+ };
+
+ const handleImageUpload = (e: React.ChangeEvent) => {
+ const files = Array.from(e.target.files || []);
+ files.forEach(file => {
+ const reader = new FileReader();
+ reader.onload = (e) => {
+ setImagens(prev => [...prev, {
+ id: Date.now() + Math.random(),
+ name: file.name,
+ url: e.target?.result,
+ type: file.type
+ }]);
+ };
+ reader.readAsDataURL(file);
+ });
+ };
+
+ const processContent = (content: string) => {
+ return content
+ .replace(/\*\*(.*?)\*\*/g, '$1')
+ .replace(/\*(.*?)\*/g, '$1')
+ .replace(/(.*?)<\/u>/g, '$1')
+ .replace(/{{sexo_paciente}}/g, pacienteSelecionado?.sexo || laudo?.paciente?.sexo || '[SEXO]')
+ .replace(/{{diagnostico}}/g, campos.diagnostico || '[DIAGNÓSTICO]')
+ .replace(/{{conclusao}}/g, campos.conclusao || '[CONCLUSÃO]')
+ .replace(/\n/g, '
');
+ };
+
+ return (
+
+
+ {/* Header */}
+
+
+
+
+ {isNewLaudo ? "Novo Laudo Médico" : "Editar Laudo Existente"}
+
+ {isNewLaudo ? (
+
+ Crie um novo laudo selecionando um paciente
+
+ ) : (
+
+ Paciente: {laudo?.paciente?.nome} | Pedido: {laudo?.id} | {laudo?.especialidade}
+
+ )}
+
+
+
+
+
+
+ {/* Seleção de Paciente (apenas para novos laudos) */}
+ {isNewLaudo && (
+
+ {!pacienteSelecionado ? (
+
+
+
+
+ ) : (
+
+
+
{pacienteSelecionado.nome}
+
+ CPF: {pacienteSelecionado.cpf} | Idade: {pacienteSelecionado.idade} anos | Sexo: {pacienteSelecionado.sexo}
+
+
+ {!preSelectedPatient && (
+
setPacienteSelecionado(null)}
+ >
+ Trocar Paciente
+
+ )}
+
+ )}
+
)}
-
- {/* Dados do Paciente */}
- {pacienteSelecionado && (
-
-
- Paciente: {pacienteSelecionado.nome}
-
-
- CPF: {pacienteSelecionado.cpf}
-
-
- Idade: {pacienteSelecionado.idade} anos
-
- {editorLaudo.cid && (
-
-
CID: {editorLaudo.cid}
+
+ {/* Tabs */}
+
+ {isNewLaudo && (
+ setActiveTab("info")}
+ className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${
+ activeTab === "info"
+ ? "border-blue-500 text-blue-600"
+ : "border-transparent text-muted-foreground hover:text-foreground"
+ }`}
+ >
+
+ Informações
+
+ )}
+ setActiveTab("editor")}
+ className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${
+ activeTab === "editor"
+ ? "border-blue-500 text-blue-600"
+ : "border-transparent text-muted-foreground hover:text-foreground"
+ }`}
+ >
+
+ Editor
+
+ setActiveTab("imagens")}
+ className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${
+ activeTab === "imagens"
+ ? "border-blue-500 text-blue-600"
+ : "border-transparent text-muted-foreground hover:text-foreground"
+ }`}
+ >
+
+ Imagens ({imagens.length})
+
+ setActiveTab("campos")}
+ className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${
+ activeTab === "campos"
+ ? "border-blue-500 text-blue-600"
+ : "border-transparent text-muted-foreground hover:text-foreground"
+ }`}
+ >
+
+ Campos
+
+ setShowPreview(!showPreview)}
+ className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${
+ showPreview
+ ? "border-green-500 text-green-600"
+ : "border-transparent text-muted-foreground hover:text-foreground"
+ }`}
+ >
+
+ {showPreview ? "Ocultar" : "Pré-visualização"}
+
+
+
+ {/* Content */}
+
+ {/* Left Panel */}
+
+ {activeTab === "info" && isNewLaudo && (
+
+ {!pacienteSelecionado ? (
+
+
+
+
Selecione um paciente primeiro
+
+
+ ) : (
+
+
+
Informações do Exame
+
+
+
+
+
+
+
+
+
+ setCampos(prev => ({ ...prev, exame: e.target.value }))}
+ placeholder="Ex: Ecocardiograma, Dermatoscopia, etc."
+ />
+
+
+
+
+
+
Dados do Paciente
+
+
+
+ Nome: {pacienteSelecionado.nome}
+
+
+ ID: {pacienteSelecionado.id}
+
+
+ CPF: {pacienteSelecionado.cpf}
+
+
+ Idade: {pacienteSelecionado.idade} anos
+
+
+ Sexo: {pacienteSelecionado.sexo}
+
+
+
+
+
+
+ setActiveTab("editor")}
+ disabled={!campos.especialidade || !campos.exame}
+ >
+ Continuar para Editor
+
+
+
+ )}
+
+ )}
+
+ {activeTab === "editor" && (
+
+ {/* Toolbar */}
+
+
+ formatText("bold")}
+ title="Negrito"
+ >
+ B
+
+ formatText("italic")}
+ title="Itálico"
+ >
+ I
+
+ formatText("underline")}
+ title="Sublinhado"
+ >
+ U
+
+ formatText("list")}
+ title="Lista"
+ >
+ •
+
+
+
+
+ {/* Templates */}
+
+
Frases rápidas:
+
+ {templates.map((template, idx) => (
+ insertTemplate(template)}
+ >
+ {template.substring(0, 30)}...
+
+ ))}
+
+
+
+
+ {/* Editor */}
+
+
+
+ )}
+
+ {activeTab === "imagens" && (
+
+
+
+
+
+
+
+ {imagens.map((img) => (
+
+ {img.type.startsWith('image/') ? (
+

+ ) : (
+
+
+
+ )}
+
{img.name}
+
setImagens(prev => prev.filter(i => i.id !== img.id))}
+ >
+ Remover
+
+
+ ))}
+
+
+ )}
+
+ {activeTab === "campos" && (
+
+
+
+ setCampos(prev => ({ ...prev, cid: e.target.value }))}
+ placeholder="Ex: M25.5, I10, etc."
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Assinatura Digital */}
+
+
+
+
+
+ sigCanvasRef.current?.clear()}
+ >
+ Limpar
+
+
+
+
)}
- )}
-
- {/* Conteúdo */}
-
- {editorLaudo.conteudo ? (
-
- ) : (
-
-
-
Nenhum conteúdo adicionado ainda.
-
Vá para a aba "Editor" para escrever o laudo.
+
+ {/* Preview Panel */}
+ {showPreview && (
+
+
+
Pré-visualização do Laudo
+
+
+
+ {/* Header do Laudo */}
+
+
+ LAUDO MÉDICO {campos.especialidade ? `- ${campos.especialidade.toUpperCase()}` : ''}
+
+ {campos.exame && (
+
{campos.exame}
+ )}
+ {campos.mostrarData && (
+
+ Data: {new Date().toLocaleDateString('pt-BR')}
+
+ )}
+
+
+ {/* Dados do Paciente */}
+ {(isNewLaudo ? pacienteSelecionado : laudo?.paciente) && (
+
+
Dados do Paciente:
+ {isNewLaudo && pacienteSelecionado ? (
+ <>
+
Nome: {pacienteSelecionado.nome}
+
ID: {pacienteSelecionado.id}
+
CPF: {pacienteSelecionado.cpf}
+
Idade: {pacienteSelecionado.idade} anos
+
Sexo: {pacienteSelecionado.sexo}
+ {campos.cid &&
CID: {campos.cid}
}
+ >
+ ) : (
+ <>
+
Nome: {laudo?.paciente?.nome}
+
ID: {laudo?.paciente?.id}
+ {campos.cid &&
CID: {campos.cid}
}
+ >
+ )}
+
+ )}
+
+ {/* Conteúdo */}
+
+
+ {/* Imagens */}
+ {imagens.length > 0 && (
+
+
Imagens:
+
+ {imagens.map((img) => (
+

+ ))}
+
+
+ )}
+
+ {/* Assinatura */}
+ {campos.mostrarAssinatura && (
+
+
+
Dr. Carlos Andrade
+
CRM 000000
+
+ )}
+
+
)}
-
- {/* Diagnóstico */}
- {editorLaudo.diagnostico && (
-
-
DIAGNÓSTICO:
-
{editorLaudo.diagnostico}
-
- )}
-
- {/* Conclusão */}
- {editorLaudo.conclusao && (
-
-
CONCLUSÃO:
-
{editorLaudo.conclusao}
-
- )}
-
- {/* Imagens */}
- {editorLaudo.imagens.length > 0 && (
-
-
IMAGENS:
-
- {editorLaudo.imagens.map((img, index) => (
-

- ))}
+
+ {/* Footer */}
+
+
+
+ Este editor permite escrever relatórios de forma livre, com formatação de texto rica.
+
+
+
+ Cancelar
+
+
+ Salvar Rascunho
+
+
+ {isNewLaudo ? "Liberar Laudo" : "Atualizar Laudo"}
+
- )}
-
- {/* Assinatura */}
- {editorLaudo.incluirAssinatura && assinaturaLaudo && (
-
-
-

-
{medico.nome}
-
{medico.identificacao}
-
-
- )}
+
);
- };
+ }
const renderComunicacaoSection = () => (
-
-
Comunicação com o Paciente
+
+
Comunicação com o Paciente
@@ -2605,7 +2777,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
id="destinatario"
placeholder="Nome do Paciente ou CPF"
disabled
- className="bg-muted cursor-not-allowed text-gray-700 disabled:text-gray-900"
+ className="bg-muted cursor-not-allowed text-muted-foreground disabled:text-foreground"
/>
@@ -2614,7 +2786,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
-
+
Lembrete de Consulta
Resultado de Exame
Instruções Pós-Consulta
@@ -2651,7 +2823,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
const renderRelatoriosMedicosSection = () => (
-
Relatórios Médicos
+ Relatórios Médicos
{editandoRelatorio && (
Cancelar Edição
@@ -2660,8 +2832,8 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
{/* Formulário de Relatório Médico */}
-
-
+
+
{editandoRelatorio ? 'Editar Relatório Médico' : 'Novo Relatório Médico'}
@@ -2676,7 +2848,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
id="profissionalNome"
value={relatorioMedico.profissionalNome}
disabled
- className="bg-gray-100"
+ className="bg-muted"
/>
@@ -2685,7 +2857,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
id="profissionalCrm"
value={relatorioMedico.profissionalCrm}
disabled
- className="bg-gray-100"
+ className="bg-muted"
/>
@@ -2885,12 +3057,12 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
{/* Lista de Relatórios Existentes */}
-
-
Relatórios Médicos Salvos
+
+
Relatórios Médicos Salvos
{relatoriosMedicos.length === 0 ? (
-
-
+
+
Nenhum relatório médico encontrado
Os relatórios salvos aparecerão aqui
@@ -2901,9 +3073,9 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
{relatorio.pacienteNome}
-
CPF: {relatorio.pacienteCpf} • Idade: {relatorio.pacienteIdade} anos
-
Data do relatório: {new Date(relatorio.dataRelatorio).toLocaleDateString('pt-BR')}
-
Gerado em: {relatorio.dataGeracao}
+
CPF: {relatorio.pacienteCpf} • Idade: {relatorio.pacienteIdade} anos
+
Data do relatório: {new Date(relatorio.dataRelatorio).toLocaleDateString('pt-BR')}
+
Gerado em: {relatorio.dataGeracao}
Motivo:
-
{relatorio.motivoRelatorio}
+
{relatorio.motivoRelatorio}
{relatorio.diagnosticos && (
Diagnóstico(s):
-
{relatorio.diagnosticos}
+
{relatorio.diagnosticos}
)}
{relatorio.recomendacoes && (
Recomendações:
-
{relatorio.recomendacoes}
+
{relatorio.recomendacoes}
)}
@@ -2958,7 +3130,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
const renderPerfilSection = () => (
-
Meu Perfil
+
Meu Perfil
{!isEditingProfile ? (
setIsEditingProfile(true)} className="flex items-center gap-2">
@@ -2979,12 +3151,12 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
{/* Informações Pessoais */}
-
Informações Pessoais
+
Informações Pessoais
-
{profileData.nome}
-
Este campo não pode ser alterado
+
{profileData.nome}
+
Este campo não pode ser alterado
@@ -2997,7 +3169,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
onChange={(e) => handleProfileChange('email', e.target.value)}
/>
) : (
-
{profileData.email}
+
{profileData.email}
)}
@@ -3010,14 +3182,14 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
onChange={(e) => handleProfileChange('telefone', e.target.value)}
/>
) : (
-
{profileData.telefone}
+
{profileData.telefone}
)}
-
{profileData.crm}
-
Este campo não pode ser alterado
+
{profileData.crm}
+
Este campo não pode ser alterado
@@ -3029,14 +3201,14 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
onChange={(e) => handleProfileChange('especialidade', e.target.value)}
/>
) : (
-
{profileData.especialidade}
+
{profileData.especialidade}
)}
{/* Endereço e Contato */}
-
Endereço e Contato
+
Endereço e Contato
@@ -3047,7 +3219,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
onChange={(e) => handleProfileChange('endereco', e.target.value)}
/>
) : (
-
{profileData.endereco}
+
{profileData.endereco}
)}
@@ -3060,7 +3232,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
onChange={(e) => handleProfileChange('cidade', e.target.value)}
/>
) : (
-
{profileData.cidade}
+
{profileData.cidade}
)}
@@ -3073,7 +3245,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
onChange={(e) => handleProfileChange('cep', e.target.value)}
/>
) : (
- {profileData.cep}
+ {profileData.cep}
)}
@@ -3088,15 +3260,15 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
placeholder="Descreva sua experiência profissional..."
/>
) : (
-
{profileData.biografia}
+
{profileData.biografia}
)}
{/* Foto do Perfil */}
-
-
Foto do Perfil
+
+
Foto do Perfil
@@ -3108,7 +3280,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
Alterar Foto
-
+
Formatos aceitos: JPG, PNG (máx. 2MB)
@@ -3143,7 +3315,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
return (
-
+
@@ -3172,7 +3344,7 @@ Paciente feminina, 67 anos, com queixa de dispneia progressiva aos esforços há
{}