{"id":7456,"date":"2026-04-10T13:37:27","date_gmt":"2026-04-10T16:37:27","guid":{"rendered":"https:\/\/saudecajati.com.br\/?page_id=7456"},"modified":"2026-04-10T16:41:57","modified_gmt":"2026-04-10T19:41:57","slug":"registro-de-acompanhantes","status":"publish","type":"page","link":"https:\/\/saudecajati.com.br\/index.php\/registro-de-acompanhantes\/","title":{"rendered":"Registro de Acompanhantes"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7456\" class=\"elementor elementor-7456\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c5a85fc e-flex e-con-boxed e-con e-parent\" data-id=\"c5a85fc\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe9b81a elementor-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-invisible elementor-widget elementor-widget-icon-list\" data-id=\"fe9b81a\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;slideInDown&quot;}\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Registro de Acompanhantes - UPA<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7bffa37 e-flex e-con-boxed e-con e-parent\" data-id=\"7bffa37\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3d0bc4 elementor-widget elementor-widget-html\" data-id=\"f3d0bc4\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"pt-br\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Controle de Acompanhantes<\/title>\r\n    <style>\r\n        .wp-box {\r\n            font-family: inherit;\r\n            max-width: 100%;\r\n            margin: auto;\r\n            background: white;\r\n            box-sizing: border-box;\r\n        }\r\n        .wp-box .header-config { \r\n            background: #f4f7f6; \r\n            padding: 15px; \r\n            border-radius: 5px; \r\n            margin-bottom: 20px; \r\n            display: flex; \r\n            gap: 20px; \r\n            align-items: center; \r\n            border: 1px solid #ddd;\r\n        }\r\n        .wp-box .form-row { \r\n            display: flex !important; \r\n            flex-wrap: nowrap !important; \r\n            gap: 10px !important; \r\n            align-items: flex-end !important; \r\n            margin-bottom: 20px !important; \r\n            width: 100%;\r\n        }\r\n        .wp-box .form-group { display: flex; flex-direction: column; flex: 1; }\r\n        .wp-box .col-nome { flex: 2.5; }\r\n        .wp-box .btn-align { flex: 0 0 auto; }\r\n        .wp-box label { font-size: 13px !important; font-weight: 600 !important; color: #555 !important; margin-bottom: 4px !important; display: block; }\r\n        \r\n        .wp-box input, .wp-box select { \r\n            height: 38px !important; \r\n            padding: 8px 10px !important; \r\n            border: 1px solid #ccc !important; \r\n            border-radius: 4px !important; \r\n            box-sizing: border-box !important; \r\n            width: 100% !important;\r\n            background-color: #fff !important;\r\n            font-size: 14px !important;\r\n        }\r\n        \r\n        .wp-box button { \r\n            height: 38px !important; \r\n            padding: 0 20px !important; \r\n            font-size: 14px !important;    \r\n            cursor: pointer !important; \r\n            border: none !important; \r\n            border-radius: 4px !important; \r\n            font-weight: bold !important; \r\n            color: white !important; \r\n            transition: 0.2s !important; \r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            white-space: nowrap !important;\r\n            background-color: #00A09A !important; \r\n        }\r\n        .wp-box button:hover { background-color: #00827d !important; }\r\n\r\n        .wp-box .print-section { \r\n            margin-top: 10px; \r\n            margin-bottom: 10px; \r\n            display: flex; \r\n            gap: 10px; \r\n            justify-content: center; \r\n            flex-wrap: wrap;\r\n        }\r\n\r\n        \/* Estilo do lembrete em cinza *\/\r\n        .wp-box .backup-alert {\r\n            text-align: center;\r\n            color: #7f8c8d;\r\n            font-size: 12px;\r\n            margin-bottom: 25px;\r\n            font-style: italic;\r\n        }\r\n\r\n        .wp-box .btn-out-list { height: 28px !important; padding: 0 10px !important; font-size: 11px !important; }\r\n        \r\n        .wp-box .btn-remove { \r\n            background-color: #e74c3c !important; \r\n            height: 28px !important; \r\n            padding: 0 10px !important; \r\n        }\r\n        .wp-box .btn-remove:hover { background-color: #c0392b !important; }\r\n        \r\n        .wp-box table.screen-table { width: 100% !important; border-collapse: collapse !important; border: 1px solid #ddd !important; }\r\n        .wp-box table.screen-table th { background-color: #00A09A !important; color: white !important; padding: 12px !important; text-transform: uppercase; font-size: 12px !important; text-align: center;}\r\n        .wp-box table.screen-table td { padding: 10px !important; border-bottom: 1px solid #eee !important; font-size: 13px !important; text-align: center;}\r\n        .wp-box table.screen-table td:nth-child(2), .wp-box table.screen-table td:nth-child(3) { text-align: left; }\r\n        \r\n        .print-only { display: none; }\r\n    <\/style>\r\n<\/head>\r\n<body onload=\"configurarAutomaticos()\">\r\n\r\n    <div class=\"wp-box\">\r\n        <div class=\"header-config\">\r\n            <div class=\"form-group\" style=\"max-width: 180px;\">\r\n                <label>Data do Plant\u00e3o:<\/label>\r\n                <input type=\"text\" id=\"dataPlantao\" placeholder=\"DD\/MM\/AAAA\" oninput=\"formatarData(this)\" maxlength=\"10\">\r\n            <\/div>\r\n            <div class=\"form-group\" style=\"max-width: 180px;\">\r\n                <label>Turno:<\/label>\r\n                <select id=\"turnoPlantao\">\r\n                    <option value=\"DIURNO\">Diurno<\/option>\r\n                    <option value=\"NOTURNO\">Noturno<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"form-row\">\r\n            <div class=\"form-group\" style=\"flex: 0.6;\">\r\n                <label>Hor. Ent.<\/label>\r\n                <input type=\"time\" id=\"horEnt\">\r\n            <\/div>\r\n            \r\n            <div class=\"form-group col-nome\">\r\n                <label>Acompanhante \/ Visita<\/label>\r\n                <input type=\"text\" id=\"nome\">\r\n            <\/div>\r\n\r\n            <div class=\"form-group col-nome\">\r\n                <label>Paciente Visitado<\/label>\r\n                <input type=\"text\" id=\"pacienteVisitado\">\r\n            <\/div>\r\n\r\n            <div class=\"form-group\">\r\n                <label>DN<\/label>\r\n                <input type=\"text\" id=\"dn\" placeholder=\"DD\/MM\/AAAA\" oninput=\"formatarData(this)\" maxlength=\"10\">\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label>CPF<\/label>\r\n                <input type=\"text\" id=\"cpf\" placeholder=\"000.000.000-00\" oninput=\"formatarCPF(this)\" maxlength=\"14\">\r\n            <\/div>\r\n\r\n            <div class=\"form-group btn-align\">\r\n                <button type=\"button\" onclick=\"adicionarRegistro()\">Adicionar<\/button>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"print-section\">\r\n            <button type=\"button\" onclick=\"imprimirIsolado()\">Imprimir Planilha<\/button>\r\n            <button type=\"button\" onclick=\"exportarBackup()\">Salvar Backup (JSON)<\/button>\r\n            <button type=\"button\" onclick=\"document.getElementById('fileBackup').click()\">Restaurar Backup<\/button>\r\n            <button type=\"button\" onclick=\"limparTodaALista()\">Limpar Lista<\/button>\r\n            \r\n            <input type=\"file\" id=\"fileBackup\" accept=\".json\" style=\"display: none;\" onchange=\"importarBackup(event)\">\r\n        <\/div>\r\n\r\n        <div class=\"backup-alert\">\r\n            Aten\u00e7\u00e3o: Esta planilha n\u00e3o fica salva permanentemente no sistema. Para evitar perda de dados, fa\u00e7a o backup regularmente.\r\n        <\/div>\r\n\r\n        <table class=\"screen-table\">\r\n            <thead>\r\n                <tr>\r\n                    <th>Entrada<\/th>\r\n                    <th style=\"text-align: left;\">Acompanhante<\/th>\r\n                    <th style=\"text-align: left;\">Paciente<\/th>\r\n                    <th>DN<\/th>\r\n                    <th>CPF<\/th>\r\n                    <th>Sa\u00edda<\/th>\r\n                    <th style=\"width: 120px;\">A\u00e7\u00e3o<\/th>\r\n                <\/tr>\r\n            <\/thead>\r\n            <tbody id=\"listaTela\"><\/tbody>\r\n        <\/table>\r\n    <\/div>\r\n\r\n    <div id=\"area-impressao\" class=\"print-only\">\r\n        <div class=\"print-header\">\r\n            <div class=\"header-logo\">\r\n                <img decoding=\"async\" src=\"https:\/\/saudecajati.com.br\/wp-content\/uploads\/2024\/10\/LOGO-SAUDEnovo-300x109.png\" alt=\"Logo Secretaria de Sa\u00fade\" \/>\r\n            <\/div>\r\n            <div class=\"header-text\">\r\n                <h1>UPA - Pronto Atendimento Reynaldo Guerra<\/h1>\r\n                <h2>Secretaria Municipal de Sa\u00fade - Cajati-SP<\/h2>\r\n                <h3>Controle de Acompanhantes e Visitas<\/h3>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <div class=\"print-header-info\">\r\n            <div id=\"print-data\"><\/div>\r\n            <div id=\"print-turno\"><\/div>\r\n            <div>SETOR: OBSERVA\u00c7\u00c3O \/ PS \/ SALA LARANJA<\/div>\r\n        <\/div>\r\n\r\n        <table class=\"print-table\">\r\n            <thead>\r\n                <tr>\r\n                    <th style=\"width: 80px;\">HOR. ENT.<\/th>\r\n                    <th class=\"col-nome-print\">ACOMPANHANTE<\/th>\r\n                    <th class=\"col-nome-print\">PACIENTE VISITADO<\/th>\r\n                    <th style=\"width: 90px;\">DN<\/th>\r\n                    <th style=\"width: 110px;\">CPF<\/th>\r\n                    <th style=\"width: 80px;\">HOR. SAI.<\/th>\r\n                <\/tr>\r\n            <\/thead>\r\n            <tbody id=\"listaImpressao\"><\/tbody>\r\n        <\/table>\r\n    <\/div>\r\n\r\n    <script>\r\n        let registros = JSON.parse(localStorage.getItem('registros_upa_vfinal')) || [];\r\n\r\n        function formatarData(input) {\r\n            let valor = input.value.replace(\/\\D\/g, '');\r\n            if (valor.length >= 5) {\r\n                input.value = valor.slice(0, 2) + '\/' + valor.slice(2, 4) + '\/' + valor.slice(4, 8);\r\n            } else if (valor.length >= 3) {\r\n                input.value = valor.slice(0, 2) + '\/' + valor.slice(2, 4);\r\n            } else { input.value = valor; }\r\n        }\r\n\r\n        function formatarCPF(input) {\r\n            let valor = input.value.replace(\/\\D\/g, '');\r\n            if (valor.length >= 10) {\r\n                input.value = valor.slice(0, 3) + '.' + valor.slice(3, 6) + '.' + valor.slice(6, 9) + '-' + valor.slice(9, 11);\r\n            } else if (valor.length >= 7) {\r\n                input.value = valor.slice(0, 3) + '.' + valor.slice(3, 6) + '.' + valor.slice(6, 9);\r\n            } else if (valor.length >= 4) {\r\n                input.value = valor.slice(0, 3) + '.' + valor.slice(3, 6);\r\n            } else { input.value = valor; }\r\n        }\r\n\r\n        function configurarAutomaticos() {\r\n            const agora = new Date();\r\n            const dia = String(agora.getDate()).padStart(2, '0');\r\n            const mes = String(agora.getMonth() + 1).padStart(2, '0');\r\n            const ano = agora.getFullYear();\r\n            document.getElementById('dataPlantao').value = `${dia}\/${mes}\/${ano}`;\r\n            \r\n            const horas = String(agora.getHours()).padStart(2, '0');\r\n            const minutos = String(agora.getMinutes()).padStart(2, '0');\r\n            document.getElementById('horEnt').value = `${horas}:${minutos}`;\r\n\r\n            const selectTurno = document.getElementById('turnoPlantao');\r\n            selectTurno.value = (agora.getHours() >= 6 && agora.getHours() < 18) ? \"DIURNO\" : \"NOTURNO\";\r\n            \r\n            atualizarTela();\r\n        }\r\n\r\n        function adicionarRegistro() {\r\n            const nome = document.getElementById('nome').value;\r\n            const paciente = document.getElementById('pacienteVisitado').value;\r\n            \r\n            if (!nome || !paciente) return alert(\"Preencha o nome do acompanhante e do paciente!\");\r\n\r\n            const novo = {\r\n                id: Date.now(),\r\n                horEnt: document.getElementById('horEnt').value,\r\n                nome: nome,\r\n                paciente: paciente,\r\n                dn: document.getElementById('dn').value,\r\n                cpf: document.getElementById('cpf').value, \r\n                horSai: ''\r\n            };\r\n            \r\n            registros.push(novo);\r\n            salvar();\r\n            \r\n            document.getElementById('nome').value = '';\r\n            document.getElementById('pacienteVisitado').value = '';\r\n            document.getElementById('dn').value = '';\r\n            document.getElementById('cpf').value = '';\r\n            configurarAutomaticos();\r\n        }\r\n\r\n        function registrarSaida(id) {\r\n            const index = registros.findIndex(r => r.id === id);\r\n            if (index !== -1) {\r\n                const agora = new Date();\r\n                registros[index].horSai = String(agora.getHours()).padStart(2, '0') + \":\" + String(agora.getMinutes()).padStart(2, '0');\r\n                salvar();\r\n            }\r\n        }\r\n\r\n        function salvar() {\r\n            localStorage.setItem('registros_upa_vfinal', JSON.stringify(registros));\r\n            atualizarTela();\r\n        }\r\n\r\n        function atualizarTela() {\r\n            const tbody = document.getElementById('listaTela');\r\n            tbody.innerHTML = registros.map((r) => `\r\n                <tr>\r\n                    <td>${r.horEnt}${r.horEnt ? 'h' : ''}<\/td>\r\n                    <td><strong>${r.nome}<\/strong><\/td>\r\n                    <td>${r.paciente}<\/td>\r\n                    <td>${r.dn}<\/td>\r\n                    <td>${r.cpf}<\/td>\r\n                    <td>${r.horSai ? r.horSai + 'h' : '<span style=\"color:#00A09A; font-weight:bold;\">Presente<\/span>'}<\/td>\r\n                    <td>\r\n                        <div style=\"display:flex; gap:5px; justify-content:center; align-items:center;\">\r\n                            ${!r.horSai ? `<button type=\"button\" class=\"btn-out-list\" onclick=\"registrarSaida(${r.id})\">Sa\u00edda<\/button>` : ''}\r\n                            <button type=\"button\" class=\"btn-remove\" onclick=\"removerRegistro(${r.id})\">X<\/button>\r\n                        <\/div>\r\n                    <\/td>\r\n                <\/tr>\r\n            `).join('');\r\n        }\r\n\r\n        function removerRegistro(id) {\r\n            if(confirm(\"Tem certeza que deseja excluir este registro?\")) {\r\n                registros = registros.filter(r => r.id !== id);\r\n                salvar();\r\n            }\r\n        }\r\n\r\n        function limparTodaALista() {\r\n            if(confirm(\"Deseja apagar todos os registros da lista?\")) {\r\n                registros = [];\r\n                salvar();\r\n            }\r\n        }\r\n\r\n        function exportarBackup() {\r\n            if (registros.length === 0) return alert(\"N\u00e3o h\u00e1 registros para salvar.\");\r\n            const blob = new Blob([JSON.stringify(registros, null, 2)], { type: \"application\/json\" });\r\n            const url = URL.createObjectURL(blob);\r\n            const a = document.createElement(\"a\");\r\n            const dataPlantao = document.getElementById('dataPlantao').value.replace(\/\\\/\/g, '-');\r\n            a.href = url;\r\n            a.download = `backup_upa_${dataPlantao}.json`;\r\n            a.click();\r\n            URL.revokeObjectURL(url);\r\n        }\r\n\r\n        function importarBackup(event) {\r\n            const arquivo = event.target.files[0];\r\n            if (!arquivo) return;\r\n            const leitor = new FileReader();\r\n            leitor.onload = function(e) {\r\n                try {\r\n                    const dados = JSON.parse(e.target.result);\r\n                    if (Array.isArray(dados) && confirm(\"Restaurar backup substituir\u00e1 os dados atuais. Continuar?\")) {\r\n                        registros = dados;\r\n                        salvar();\r\n                    }\r\n                } catch (err) { alert(\"Arquivo inv\u00e1lido.\"); }\r\n            };\r\n            leitor.readAsText(arquivo);\r\n            event.target.value = '';\r\n        }\r\n\r\n        function imprimirIsolado() {\r\n            const data = document.getElementById('dataPlantao').value;\r\n            const turno = document.getElementById('turnoPlantao').value;\r\n            document.getElementById('print-data').innerText = `DATA: ${data}`;\r\n            document.getElementById('print-turno').innerHTML = turno === \"DIURNO\" ? \"( <b>X<\/b> ) DIURNO &nbsp;&nbsp; ( &nbsp; ) NOTURNO\" : \"( &nbsp; ) DIURNO &nbsp;&nbsp; ( <b>X<\/b> ) NOTURNO\";\r\n            \r\n            const tbodyPrint = document.getElementById('listaImpressao');\r\n            tbodyPrint.innerHTML = '';\r\n            \r\n            for (let i = 0; i < Math.max(17, registros.length); i++) {\r\n                const r = registros[i] || { horEnt:'', nome:'', paciente:'', dn:'', cpf:'', horSai:'' };\r\n                const ent = r.horEnt ? r.horEnt + 'h' : '';\r\n                const sai = r.horSai ? r.horSai + 'h' : '';\r\n                tbodyPrint.innerHTML += `<tr><td>${ent}<\/td><td class=\"col-nome-print\">${r.nome}<\/td><td class=\"col-nome-print\">${r.paciente}<\/td><td>${r.dn}<\/td><td>${r.cpf}<\/td><td>${sai}<\/td><\/tr>`;\r\n            }\r\n\r\n            const janela = window.open('', '', 'width=900,height=700');\r\n            janela.document.write('<html><head><title>Impress\u00e3o<\/title><style>');\r\n            janela.document.write(`\r\n                @page { size: landscape; margin: 10mm; }\r\n                body { font-family: Arial, sans-serif; margin: 0; padding: 20px; }\r\n                .print-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #000; padding-bottom: 10px; margin-bottom: 15px; }\r\n                .header-logo img { max-height: 60px; }\r\n                .header-text { text-align: right; }\r\n                .header-text h1 { margin: 0; font-size: 18px; font-weight: bold; text-transform: uppercase; }\r\n                .header-text h2 { margin: 2px 0 0 0; font-size: 13px; color: #333; font-weight: normal; }\r\n                .header-text h3 { margin: 10px 0 2px 0; font-size: 15px; font-weight: bold; text-transform: uppercase; }\r\n                .print-header-info { display: flex; justify-content: space-between; font-weight: bold; margin-bottom: 15px; font-size: 14px; }\r\n                table { width: 100%; border-collapse: collapse; }\r\n                th, td { border: 1px solid black; padding: 8px; text-align: center; font-size: 13px; height: 30px; }\r\n                th { background-color: #eee !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }\r\n                .col-nome-print { text-align: left; padding-left: 8px; width: 30%; }\r\n            `);\r\n            janela.document.write('<\/style><\/head><body>' + document.getElementById('area-impressao').innerHTML + '<\/body><\/html>');\r\n            janela.document.close();\r\n            setTimeout(() => { janela.print(); janela.close(); }, 500);\r\n        }\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2a663fa e-con-full e-flex e-con e-child\" data-id=\"2a663fa\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Registro de Acompanhantes &#8211; UPA Controle de Acompanhantes Data do Plant\u00e3o: Turno: DiurnoNoturno Hor. Ent. Acompanhante \/ Visita Paciente Visitado DN CPF Adicionar Imprimir Planilha Salvar Backup (JSON) Restaurar Backup Limpar Lista Aten\u00e7\u00e3o: Esta planilha n\u00e3o fica salva permanentemente no sistema. Para evitar perda de dados, fa\u00e7a o backup regularmente. Entrada Acompanhante Paciente DN CPF [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-7456","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/pages\/7456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=7456"}],"version-history":[{"count":88,"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/pages\/7456\/revisions"}],"predecessor-version":[{"id":7549,"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/pages\/7456\/revisions\/7549"}],"wp:attachment":[{"href":"https:\/\/saudecajati.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=7456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}