window.salvarEvolucao = async function() { const idEdicao = document.getElementById('eIdEdicao').value; const pacienteId = document.getElementById('ePaciente').value; const data = document.getElementById('eData').value; const descricao = document.getElementById('eDescricao').value.trim(); const descricaoIA = document.getElementById('iaTexto').innerText.trim(); if (!pacienteId || !data || !descricao) { alert('Preencha paciente, data e descrição.'); return; } const paciente = pacientesGlobal.find(p => p.id === pacienteId); try { let textoFinalIA = descricaoIA; if (!textoFinalIA || textoFinalIA.includes("Analisando")) { textoFinalIA = processarTextoIA(descricao); } if (idEdicao) { await updateDoc(doc(db, "evolucoes", idEdicao), { pacienteId, pacienteNome: paciente.nome, data, descricao, descricaoIA: textoFinalIA }); } else { await addDoc(collection(db, "evolucoes"), { pacienteId, pacienteNome: paciente.nome, data, descricao, descricaoIA: textoFinalIA }); } window.cancelarEdicaoEvolucao(); alert('Evolução salva com sucesso!'); await carregarDados(); } catch(e) { alert("Erro: " + e.message); } }; window.editarEvolucao = async function(id) { const e = evolucoesGlobal.find(e => e.id === id); if (!e) return; document.getElementById('eIdEdicao').value = e.id; document.getElementById('ePaciente').value = e.pacienteId; document.getElementById('eData').value = e.data; if (document.getElementById('eData')._flatpickr) document.getElementById('eData')._flatpickr.setDate(e.data, false); document.getElementById('eDescricao').value = e.descricao; if (!e.descricaoIA) { document.getElementById('iaTexto').innerText = "Gerando evolução automática..."; document.getElementById('iaResultado').classList.add('visivel'); const textoGerado = processarTextoIA(e.descricao); document.getElementById('iaTexto').innerText = textoGerado; await updateDoc(doc(db, "evolucoes", id), { descricaoIA: textoGerado }); e.descricaoIA = textoGerado; } else { document.getElementById('iaTexto').innerText = e.descricaoIA; document.getElementById('iaResultado').classList.add('visivel'); } document.getElementById('tituloFormEvolucao').innerText = "Editar Evolução de Atendimento"; document.getElementById('btnSalvarEvolucao').innerText = "Atualizar Evolução"; document.getElementById('btnCancelarEvolucao').style.display = "inline-block"; window.scrollTo({ top: 0, behavior: 'smooth' }); }; window.cancelarEdicaoEvolucao = function() { document.getElementById('eIdEdicao').value = ''; document.getElementById('ePaciente').value = ''; document.getElementById('eData').value = ''; if (document.getElementById('eData')._flatpickr) document.getElementById('eData')._flatpickr.clear(); document.getElementById('eDescricao').value = ''; document.getElementById('iaResultado').classList.remove('visivel'); document.getElementById('iaTexto').innerText = ''; document.getElementById('tituloFormEvolucao').innerText = "Registrar Evolução de Atendimento"; document.getElementById('btnSalvarEvolucao').innerText = "Salvar no Prontuário"; document.getElementById('btnCancelarEvolucao').style.display = "none"; }; // FUNÇÃO DA IA COM O NOVO PROMPT (TEXTO ÚNICO E CORRIDO) function processarTextoIA(textoOriginal) { let t = textoOriginal; const correcoes = [ { de: /\bnao\b/gi, para: "não" }, { de: /\bvoce\b/gi, para: "você" }, { de: /\btambem\b/gi, para: "também" }, { de: /\bagente\b/gi, para: "a gente" }, { de: /\bpobrema\b/gi, para: "problema" }, { de: /\bmenas\b/gi, para: "menos" }, { de: /\bconcerteza\b/gi, para: "com certeza" }, { de: /\bderrepente\b/gi, para: "de repente" }, { de: /\bexcessao\b/gi, para: "exceção" }, { de: /\bexelente\b/gi, para: "excelente" }, { de: /\bapos\b/gi, para: "após" }, { de: /\bja\b/gi, para: "já" }, { de: /\bso\b/gi, para: "só" }, { de: /\bate\b/gi, para: "até" }, { de: /brincamos/gi, para: "Foram propostas atividades lúdicas direcionadas a" }, { de: /trabalhamos/gi, para: "A intervenção foi focada em" }, { de: /ele ficou agitado/gi, para: "O paciente apresentou agitação psicomotora inicial" }, { de: /ela ficou agitada/gi, para: "A paciente apresentou agitação psicomotora inicial" }, { de: /melhorou/gi, para: "demonstrou evolução positiva no processo de regulação" }, { de: /equilíbrio/gi, para: "controle postural e equilíbrio dinâmico" }, { de: /balanço/gi, para: "equipamentos suspensos (estímulo vestibular)" }, { de: /massinha/gi, para: "massa de modelar (estímulo tátil e proprioceptivo)" }, { de: /texturas/gi, para: "exploração tátil de diferentes texturas" }, { de: /piscina de bolinhas/gi, para: "piscina de bolinhas (estímulo proprioceptivo por compressão)" }, { de: /pulou/gi, para: "realizou saltos (praxia global)" }, { de: /rolou/gi, para: "executou rolamentos (praxia global)" }, { de: /focou/gi, para: "sustentou a atenção por períodos mais longos" }, { de: /não quis/gi, para: "apresentou resistência inicial à proposta" }, { de: /gostou/gi, para: "aderiu positivamente à atividade" }, { de: /correu/gi, para: "vivenciou experiências de deslocamento e velocidade" }, { de: /circuito/gi, para: "circuito motor sequencial" }, ]; correcoes.forEach(c => { t = t.replace(c.de, c.para); }); t = t.replace(/\s+/g, ' ').trim(); t = t.replace(/([.!?]\s+)([a-zà-ú])/g, (match, p1, p2) => p1 + p2.toUpperCase()); if (t.length > 0) t = t.charAt(0).toLowerCase() + t.slice(1); // PROMPT APLICADO: Texto único, corrido, técnico, sem marcadores. return `Durante a sessão de Terapia Ocupacional, o atendimento foi conduzido considerando as demandas sensoriais e motoras da criança. ${t} A intervenção estruturou-se a partir das atividades descritas, as quais atuaram como ferramentas para o aprimoramento do processamento sensorial, da modulação e do planejamento motor (praxia), em um ambiente terapêutico adequado para a expressão de respostas adaptativas. A partir da resposta da criança às propostas, observou-se engajamento nas tarefas e oportunidades de ganho em autorregulação e consciência corporal, recomendando-se a continuidade do plano terapêutico com foco na generalização das habilidades sensório-motoras para o cotidiano familiar e escolar.`; } window.gerarIA = function() { const textoOriginal = document.getElementById('eDescricao').value.trim(); if (!textoOriginal) { alert('Escreva a descrição do atendimento primeiro.'); return; } document.getElementById('iaTexto').innerText = "Analisando relato e estruturando prontuário clínico..."; document.getElementById('iaResultado').classList.add('visivel'); setTimeout(() => { document.getElementById('iaTexto').innerText = processarTextoIA(textoOriginal); }, 1500); }; function carregarSelects() { let options = ''; pacientesGlobal.forEach(p => { options += ``; }); document.getElementById('aPaciente').innerHTML = options; document.getElementById('ePaciente').innerHTML = options; let filtroOptions = ''; pacientesGlobal.forEach(p => { filtroOptions += ``; }); document.getElementById('fPaciente').innerHTML = filtroOptions; } function renderizarTudo() { document.getElementById('listaPacientes').innerHTML = pacientesGlobal.map(p => { const idade = window.calcularIdade(p.nasc); return `