/* global jQuery, SBP_EMISSOR_RECIBOS */ (function($){ 'use strict'; function initInstance(cfg){ if(!cfg || !cfg.rootId) return; var $root = $('#' + cfg.rootId); if(!$root.length) return; var $messages = $root.find('.emissor-recibos__messages'); var $list = $root.find('.emissor-recibos__lista-recibos'); var $msg = $root.find('.emissor-recibos__mensagem'); var $loaderBtn = $root.find('.emissor-recibos__btn__loader'); var $loginBox = $root.find('.emissor-recibos__login'); function getMessage(key, fallback){ var v = $messages.data(key); if(v !== undefined && v !== null && String(v).trim() !== '') return String(v); if(cfg.messages && cfg.messages[key]) return String(cfg.messages[key]); return fallback || ''; } function setLoaded(isLoaded){ $root.toggleClass('loaded', !!isLoaded); } function showMessage(text){ $msg.empty(); if(text && String(text).trim() !== ''){ $msg.append('

' + $('

').text(String(text)).html() + '

'); } } function finishLoading(message){ setLoaded(true); showMessage(message || ''); } function resetForLoading(){ setLoaded(false); showMessage(''); $list.empty(); } /** * Restaura o botão de emitir recibos para o estado clicável. */ function restoreLoaderBtn(){ $loaderBtn .show() .removeClass('emissor-recibos__btn__loader--disabled'); } /** * Extrai um ano numérico de uma string de data ISO (ex: "2025-04-04T00:00:00" -> 2025). */ function extrairAno(dateStr){ if(!dateStr || typeof dateStr !== 'string') return null; var match = dateStr.match(/^(\d{4})/); return match ? match[1] : null; } /** * Monta o link de download do recibo APONTANDO PARA O PROXY WP. * O cadid NUNCA vai na URL — o PHP deriva da sessão do usuário logado. * Só o pagid trafega, e o servidor valida se ele pertence ao usuário. */ function buildDownloadHref(pagId){ return cfg.ajaxUrl + '?action=sbp_emissor_recibos_download' + '&pagid=' + encodeURIComponent(pagId) + '&nonce=' + encodeURIComponent(cfg.nonce); } function renderList(recibos){ var rendered = 0; if(Array.isArray(recibos) && recibos.length){ var seen = []; // dedup por PagId recibos.forEach(function(e){ if(!e) return; // pagid é o identificador único do pagamento; sem ele não há recibo var pagId = e.PagId || e.pagId; if(!pagId){ console.warn('[SBP Emissor] Recibo ignorado - sem PagId:', e); return; } // Dedup: se já renderizamos esse PagId, pula if(seen.indexOf(pagId) >= 0) return; seen.push(pagId); // Label para exibição: ano limpo, com fallback para datas var anoRaw = e.PagAnuidade || e.pagAnuidade; var anoDisplay = (anoRaw && String(anoRaw).trim() !== '') ? String(anoRaw).trim() : ''; if(!anoDisplay || isNaN(parseInt(anoDisplay, 10))){ anoDisplay = extrairAno(e.PagDataInicio || e.pagDataInicio) || extrairAno(e.PagData || e.pagData) || ''; } if(!anoDisplay){ console.warn('[SBP Emissor] Recibo ignorado - sem ano identificável:', e); return; } // URL agora aponta para o proxy WP, sem expor cadid nem o endpoint da SBP var href = buildDownloadHref(pagId); var html = "
" + "" + "" + anoDisplay + "" + "
"; $list.append(html); rendered++; }); if(rendered > 0){ finishLoading(''); } else { finishLoading(getMessage('zerorecipes', 'Nenhum recibo foi encontrado.')); restoreLoaderBtn(); } } else { finishLoading(getMessage('zerorecipes', 'Nenhum recibo foi encontrado.')); restoreLoaderBtn(); } } /** * Interpreta o payload devolvido pelo proxy (resp.data), suportando: * - envelope { IsValid, Return } * - array direto */ function handlePayload(payload){ if(payload && payload.IsValid === false){ console.warn('[SBP Emissor] API retornou IsValid: false. Message:', payload.Message || '(sem mensagem)'); finishLoading(getMessage('zerorecipes', 'Nenhum recibo foi encontrado.')); restoreLoaderBtn(); return; } var recibos = null; if(payload && payload.Return !== undefined){ recibos = payload.Return; } else if(Array.isArray(payload)){ recibos = payload; } renderList(recibos); } /** * Busca a lista de recibos VIA PROXY WP. * O servidor deriva o cadid da sessão — nada de cadid no cliente. */ function fetchRecibos(){ return $.ajax({ url: cfg.ajaxUrl, method: 'GET', dataType: 'json', data: { action: 'sbp_emissor_recibos_list', nonce: cfg.nonce } }) .done(function(resp){ if(!resp || !resp.success){ var err = resp && resp.error ? resp.error : 'unknown'; console.error('[SBP Emissor] Proxy retornou erro na listagem:', err); if(err === 'not_logged_in'){ finishLoading(getMessage('login', 'Você precisa estar logado para acessar os recibos.')); } else if(err === 'no_cadid'){ finishLoading(getMessage('errorloading', 'Seu cadastro não possui identificação para emissão do recibo.')); } else { finishLoading(getMessage('errorloading', 'Não foi possível trazer os recibos.')); } restoreLoaderBtn(); return; } handlePayload(resp.data); }) .fail(function(jqXHR, textStatus, errorThrown){ console.error('[SBP Emissor] Falha na requisição ao proxy:', textStatus, errorThrown, '| Status:', jqXHR.status); finishLoading(getMessage('errorloading', 'Não foi possível trazer os recibos.')); restoreLoaderBtn(); }); } function fetchUser(){ return $.ajax({ url: cfg.ajaxUrl, method: 'GET', dataType: 'json', data: { action: 'sbp_emissor_recibos_user', nonce: cfg.nonce } }); } // Click to load receipts $loaderBtn.on('click', function(e){ e.preventDefault(); var $btn = $(this); // Previne clique duplo if($btn.data('loading')) return; $btn.data('loading', true); resetForLoading(); $btn.hide(); fetchRecibos().always(function(){ $btn.data('loading', false); }); }); // Initial: check login resetForLoading(); fetchUser() .done(function(resp){ if(!resp || !resp.success){ finishLoading(getMessage('login', 'Você precisa estar logado para acessar os recibos.')); $loginBox.removeClass('error-login'); return; } // O external_id NÃO é mais guardado/usado no cliente para montar chamadas. // Mantemos apenas a checagem de que o usuário tem identificação. var externalId = resp.data && resp.data.external_id ? String(resp.data.external_id) : ''; if(!externalId){ finishLoading(getMessage('errorloading', 'Seu cadastro não possui identificação para emissão do recibo.')); $loginBox.removeClass('error-login'); return; } // Render dados do sócio (opcional) if(cfg.showSocioHeader && resp.data && resp.data.socio){ var s = resp.data.socio || {}; var parts = []; if(s.nome) parts.push('' + $('
').text(String(s.nome)).html() + ''); var small = []; if(s.cpf) small.push('CPF: ' + $('
').text(String(s.cpf)).html()); if(s.email) small.push('E-mail: ' + $('
').text(String(s.email)).html()); if(small.length) parts.push('' + small.join(' · ') + ''); if(parts.length){ $root.find('.emissor-recibos__socio').html(parts.join('
')); } } // Apenas habilita o botão. O estado "loaded" final vem ao carregar os recibos. setLoaded(true); restoreLoaderBtn(); }) .fail(function(){ finishLoading(getMessage('errorloading', 'Não foi possível validar o login.')); $loginBox.removeClass('error-login'); }); } $(function(){ var list = window.SBP_EMISSOR_RECIBOS || []; list.forEach(initInstance); }); })(jQuery); Hélio de Martino - Sociedade Brasileira de Pediatria

Hélio de Martino (1964/65): pediatra social, professor e gestor público e privado

Hélio Sebastião de Martino nasceu em 1917, em Miracema (RJ) e se formou pela Faculdade Fluminense de Medicina, em 1941. No mesmo ano, estagiou com o Dr. Augusto Paulino na Santa Casa de Misericórdia e, logo depois, com os pediatras César Pernetta e Mário Olinto no antigo Abrigo-Hospital Arthur Bernardes, atual Instituto Fernandes Figueira. Este último estágio foi determinante na escolha de sua carreira, além de fazê-lo criar intensa relação de trabalho e companheirismo com os dois pediatras.

Recém-formado, foi assistente de ensino de Mario Olinto na cadeira de Pediatria e Puericultura da Faculdade de Ciências Médicas, da Universidade do Estado da Guanabara e, em 1956, foi aprovado como Livre-Docente da mesma cadeira. No mesmo ano, tornou-se gestor e professor do Departamento Nacional da Criança. Lecionou Puericultura e Administração de Serviços de Amparo à Maternidade, à Infância e à Adolescência e foi diretor da Divisão de Proteção Social. Foi Chefe do Serviço de Prematuros no Abrigo-Hospital Arthur Bernardes e substituto do diretor. Com cinco anos de formado, já tinha um consultório particular bem estabelecido, lecionava na Universidade do Estado da Guanabara e trabalhava como pediatra em um dos mais importantes centros de atendimento e pesquisa da cidade, o Abrigo-Hospital Arthur Bernardes. Elaborou e implementou políticas de proteção à criança e de formação de pessoal para seu atendimento no Departamento Nacional da Criança.

Em 1965, tornou-se diretor do Instituto Fernandes Figueira, vinculado ao Departamento Nacional da Criança, e em 1970 foi aprovado como Titular da Pediatria da Faculdade de Medicina da Universidade Federal Fluminense, onde lecionou por quase 25 anos. Nesse meio tempo, mudou seu consultório para Copacabana e depois para a clínica de urgência pediátrica AMIU, em Botafogo, que ajudou a fundar e dirigiu durante muitos anos.

A Neonatologia tornou-se aos poucos sua principal área de interesse acadêmico. Ajudou a fundar e a dinamizar o Centro de Estudos Olinto de Oliveira, no Instituto Fernandes Figueira. Publicou diversos artigos com Cezar Pernetta e Torres Barbosa sobre casos clínicos mais recorrentes na primeira infância.

No fim da década de 1950 e início de 1960, foi secretário geral da Sociedade Brasileira de Pediatria e lecionou em seus cursos regionais e nacionais de Atualização em Pediatria. Também teve grande atuação na Comissão Editorial do Jornal de Pediatria, da qual foi diretor do Comitê de Assuntos Perinatais e, depois, presidente. Em 1964 foi eleito presidente da Sociedade Brasileira de Pediatria e, no ano seguinte, delegado do governo brasileiro e da SBP no Congresso Internacional de Pediatria, realizado no Japão.