- 1. Visão geral
- 2. Nomes dos campos e rótulos exibidos na tela
- 3. Estrutura da tela
- 4. Bloco Cabeçalho
- 5. Bloco Rodapé
- 6. Editor de texto rico (cabeçalho e rodapé)
- 7. Bloco Imagens e Link
- 8. Bloco Marca d’água
- 9. Pré-visualização (PDF)
- 10. Carregamento inicial e contexto
- 11. Resumo de APIs utilizadas
- 12. Modelo de dados (cabeçalho / rodapé)
Documentação Funcional – Tela de Formatação (Unidades)
1. Visão geral
A tela de Formatação faz parte do cadastro/edição de Unidades (empresas). Ela é exibida como uma aba (Formatação) no formulário da unidade e permite configurar a aparência dos laudos médicos da unidade: cabeçalhos, rodapés, imagens para uso em laudos, link de imagens e marca d’água.
Localização no sistema: Unidades → Editar unidade → aba Formatação.
Arquivos principais:
- View:
views/laudo/formatacao.html - Controller:
app/controllers/formatacaoFormCtrl.js - Inclusão:
views/empresa/empresaTabs.html(tab Formatação, índice 4)
A tela só carrega dados quando a unidade já existe ($stateParams.id != 0).

Para unidades novas, a aba pode ser acessada, mas cabeçalhos/rodapés só são listados e persistidos após a unidade ser criada.

2. Nomes dos campos e rótulos exibidos na tela
Os textos que o usuário vê na tela vêm do arquivo de tradução (i18n) ou estão fixos no HTML. Abaixo, o nome exibido e onde ele aparece:
| Nome exibido na tela | Onde aparece |
|---|---|
| Cabeçalho | Título do primeiro bloco (lista de estilos à esquerda) |
| Nome do Cabeçalho | Label do campo de texto do nome do estilo de cabeçalho |
| Adicionar Padrão | Dica (title) do ícone de estrela no cabeçalho/rodapé |
| Pré-visualizar | Dica do botão com ícone de impressora |
| Novo Cabeçalho | Botão para criar novo cabeçalho |
| Tipo | Label do dropdown de tipo de laudo (cabeçalho e rodapé) |
| Salvar | Botão de salvar (cabeçalho, rodapé e preferência da marca d’água) |
| Apagar | Botão vermelho para excluir cabeçalho ou rodapé |
| Rodapé | Título do segundo bloco (lista de estilos à esquerda) |
| Nome do Rodapé | Label do campo de texto do nome do estilo de rodapé |
| Novo Rodapé | Botão para criar novo rodapé |
| Subir Arquivo | Botão de upload (imagens de formatação e marca d’água) |
| Imagens Cadastradas | Botão que abre o modal de imagens já cadastradas |
| Link | Label do campo somente leitura que exibe a URL da última imagem enviada (fixo no HTML, sem i18n) |
| Copiar Link | Botão para copiar o link para a área de transferência |
| Marca d'água | Título do bloco de marca d’água |
| Utilizar marca d'água | Subtítulo da opção Sim/Não |
| Imagem | Subtítulo da área de upload/pré-visualização da marca d’água |
| Sim | Opção do radio “utilizar marca d’água” |
| Não | Opção do radio “utilizar marca d’água” |
| Remover | Botão vermelho para remover a imagem da marca d’água |
Na lista de cabeçalhos/rodapés, quando o item não tem título definido, é exibido "Estilo 1", "Estilo 2", etc. (N = índice + 1). Ao lado dos itens marcados como padrão aparece o ícone de estrela e o nome do tipo de laudo (Todos, Texto, OIT, Imagens, Protocolo, Prescrição).
3. Estrutura da tela
A tela está dividida em quatro blocos:
- Cabeçalho – lista e edição de estilos de cabeçalho dos laudos
- Rodapé – lista e edição de estilos de rodapé dos laudos
- Imagens / Link – upload de imagem, imagens cadastradas e cópia de link
- Marca d’água – uso de marca d’água e upload/remoção da imagem
4. Bloco Cabeçalho
4.1 Finalidade
Definir múltiplos estilos de cabeçalho para os laudos da unidade. Cada estilo pode ser usado conforme o tipo de laudo (Todos, Texto, OIT, Imagens, Protocolo, Prescrição) e pode ser marcado como padrão para esse tipo.
4.2 Campos e elementos
| Elemento | Descrição | Obrigatório | Observações |
|---|---|---|---|
| Lista de cabeçalhos (esquerda) | Lista em formato de radio com todos os cabeçalhos da unidade | - | Exibe título do cabeçalho ou "Estilo N". Cabeçalhos padrão mostram ícone de estrela e nome do tipo de laudo. |
| Nome do Cabeçalho | Campo de texto com o nome/título do estilo | Sim | Usado para identificar o estilo na lista. Não pode repetir título de outro cabeçalho da mesma unidade. |
| Estrela (Adicionar Padrão) | Ícone estrela (vazia/cheia) | Não | Estrela vazia: clicando, marca este cabeçalho como padrão para o tipo selecionado. Estrela cheia: já é padrão; clicar alterna. Só pode existir um padrão por tipo de laudo; ao definir outro, o sistema pergunta se deseja trocar. |
| Pré-visualizar | Botão com ícone de impressora | - | Gera um PDF de pré-visualização com o cabeçalho e rodapé atuais (e marca d’água, se configurada). Abre em nova aba. |
| Novo Cabeçalho | Botão | - | Limpa o formulário e prepara para criar um novo estilo de cabeçalho. Nenhum item fica selecionado na lista. |
| Editor HTML (TinyMCE) | Área rich text | Sim | Conteúdo HTML do cabeçalho (logos, texto, tabelas, etc.). Possui barra de ferramentas com tamanho de texto, fontes, cores, campos dinâmicos, etc. Ver seção 6 (Editor de texto rico). Para tipo "OIT" pode haver placeholder específico; ao trocar o tipo, o placeholder OIT é removido. |
| Tipo | Select (dropdown) | Sim (implícito) | Tipo de laudo ao qual o cabeçalho se aplica: Todos (0), Texto (1), OIT (2), Imagens (3), Protocolo (4), Prescrição (5). |
| Altura (cm) | Campo numérico | Condicional | Visível apenas em ambiente OneLaudos. Define a altura do editor em cm (máx. 10). Valor padrão cabeçalho: 4 cm. Alterar redimensiona o TinyMCE. |
| Salvar | Botão | - | Se for novo: chama criação (valida título e HTML). Se já existir: chama atualização. Fica desabilitado se Nome ou HTML estiverem vazios. |
| Apagar | Botão vermelho (esquerda, abaixo da lista) | - | Exclui o cabeçalho atualmente selecionado. Abre confirmação antes de excluir. Não exclui se não houver id (ex.: item novo não salvo). |
4.3 Regras de negócio – Cabeçalho
- Título único: não é permitido criar ou atualizar cabeçalho com o mesmo título (case insensitive) de outro da mesma unidade.
- Padrão por tipo: apenas um cabeçalho por tipo de laudo pode ser marcado como padrão. Ao marcar outro como padrão para o mesmo tipo, o sistema pergunta se deseja trocar; o antigo deixa de ser padrão.
- Salvar: exige Nome do Cabeçalho e HTML (conteúdo do editor) preenchidos.
- Exclusão: só é possível excluir cabeçalho que já foi salvo (possui
id). É exibido diálogo de confirmação. - OneLaudos: em ambiente OneLaudos, o campo Altura (cm) é exibido e a altura padrão do editor de cabeçalho é 4 cm.
4.4 Fluxos – Cabeçalho
Adicionar
- Clicar em Novo Cabeçalho.
- Preencher Nome do Cabeçalho e conteúdo no editor HTML.
- Selecionar Tipo (e, se OneLaudos, ajustar altura).
- Opcional: marcar como Padrão (estrela).
- Clicar em Salvar. O sistema valida título duplicado e padrão; em seguida cria e recarrega a lista.
Editar
- Na lista à esquerda, selecionar o cabeçalho desejado (radio).
- Alterar Nome, HTML, Tipo e/ou Padrão conforme necessário.
- Clicar em Salvar. Validações (título duplicado, padrão) se aplicam; em seguida atualiza e recarrega.
Excluir
- Selecionar o cabeçalho na lista.
- Clicar no botão Apagar (vermelho, abaixo da lista).
- Confirmar no diálogo. O cabeçalho é removido e a lista é recarregada; se houver itens, o primeiro fica selecionado.

5. Bloco Rodapé
5.1 Finalidade
Definir múltiplos estilos de rodapé para os laudos da unidade, associados a tipo de laudo e padrão por tipo, de forma análoga ao cabeçalho.
5.2 Campos e elementos
| Elemento | Descrição | Obrigatório | Observações |
|---|---|---|---|
| Lista de rodapés (esquerda) | Lista em radio com todos os rodapés da unidade | - | Exibe título ou "Estilo N". Padrões exibem estrela e nome do tipo. |
| Nome do Rodapé | Nome/título do estilo | Sim | Identificação na lista. Não pode repetir título de outro rodapé da unidade. |
| Estrela (Adicionar Padrão) | Ícone estrela | Não | Marca/desmarca como padrão para o tipo selecionado. Um padrão por tipo; ao trocar, pergunta confirmação. |
| Novo Rodapé | Botão | - | Prepara formulário para criar novo rodapé; nenhum item fica selecionado. |
| Editor HTML (TinyMCE) | Área rich text | Sim | Conteúdo HTML do rodapé. Mesma barra de ferramentas do cabeçalho (tamanho de texto, fontes, Campos dinâmicos, etc.). Ver seção 6 (Editor de texto rico). |
| Tipo | Select | Sim (implícito) | Mesmos tipos do cabeçalho, exceto que a opção OIT (id 2) não é exibida no dropdown de rodapé (ng-style="tipo.id === 2 && {'display':'none'}"). |
| Altura (cm) | Campo numérico | Condicional | Apenas OneLaudos. Altura do editor em cm (máx. 10). Padrão rodapé: 3 cm. |
| Salvar | Botão | - | Cria (se novo) ou atualiza (se existente). Desabilitado sem Nome ou HTML. |
| Apagar | Botão vermelho | - | Exclui o rodapé selecionado, após confirmação. Só para itens já salvos. |
5.3 Regras de negócio – Rodapé
- Título único: não permitido outro rodapé na mesma unidade com o mesmo título (case insensitive).
- Padrão por tipo: um único rodapé padrão por tipo; ao definir outro, pergunta troca e o antigo deixa de ser padrão.
- Tipo OIT: não é oferecido no select de tipo do rodapé.
- Salvar: exige Nome do Rodapé e HTML preenchidos.
- Exclusão: apenas itens com
id; confirmação obrigatória. - OneLaudos: campo Altura (cm) visível; altura padrão do editor de rodapé 3 cm.
5.4 Fluxos – Rodapé
Adicionar / Editar / Excluir
Fluxos equivalentes ao do cabeçalho: Novo Rodapé → preencher Nome, HTML, Tipo (e altura se OneLaudos) → Salvar; ou selecionar na lista → editar → Salvar; ou selecionar → Apagar → confirmar.

⚠️ Observação: para gerar um pdf do laudo para revisar a formatação localmente, são necessários outros dois serviços apartados, para mais informações acesse: Generator PDF API
6. Editor de texto rico (cabeçalho e rodapé)
O conteúdo do cabeçalho e do rodapé é editado em um editor rich text (TinyMCE). Abaixo estão as opções de formatação e os campos dinâmicos disponíveis.
6.1 Barra de ferramentas do editor
Na parte superior do editor aparecem os seguintes recursos (da esquerda para a direita):
| Nome no código / Ícone | Função para o usuário |
|---|---|
| Desfazer | Desfazer última alteração |
| Refazer | Refazer o que foi desfeito |
| Remover formatação | Remove formatação do trecho selecionado |
| Colar | Cola texto da área de transferência |
| Inserir imagem | Insere imagem no conteúdo |
| Seleção de fonte | Dropdown para escolher a fonte do texto (veja lista abaixo) |
| Tamanho da fonte | Dropdown para escolher o tamanho do texto (veja lista abaixo) |
| Cor do texto | Define a cor da letra |
| Negrito | Aplica negrito |
| Itálico | Aplica itálico |
| Sublinhado | Aplica sublinhado |
| Alinhar à esquerda / Centro / Direita / Justificado | Alinhamento do parágrafo |
| Diminuir indentação / Aumentar indentação | Indentação do parágrafo |
| Lista com marcadores / Lista numerada | Cria listas |
| Imprimir | Abre impressão (contexto do navegador) |
| Cor de fundo | Define a cor de fundo do trecho selecionado |
| Campos | Menu com campos dinâmicos (placeholders) – veja seção 6.3 |
| Linha horizontal | Insere uma linha horizontal |
| Tabela | Insere ou edita tabela |
| Alterar maiúsculas/minúsculas | Alterna entre maiúsculas e minúsculas no texto selecionado |
| Hiperlink | Insere ou edita link |
6.2 Tamanhos de texto (fonte)
O dropdown tamanho da fonte oferece os seguintes valores (em pontos):
7pt, 8pt, 9pt, 10pt, 11pt, 12pt, 13pt, 14pt, 15pt, 16pt, 17pt, 18pt, 19pt, 20pt, 24pt.
Ao colar conteúdo no editor, o sistema aplica automaticamente fonte Arial e tamanho 11pt.
6.3 Fontes disponíveis
- Arial Black, Courier New, Georgia, Tahoma, Times New Roman, Verdana, Arial
- Calibri – disponível apenas quando não é ambiente OneLaudos; no OneLaudos essa opção não aparece no dropdown.
6.4 Campos dinâmicos (menu “Campos”)
O botão Campos na barra do editor abre um menu com itens que inserem placeholders no texto. Na geração do laudo, cada placeholder é substituído pelo valor correspondente (dados do paciente, exame, data, etc.).
Campos disponíveis em qualquer cabeçalho/rodapé (exemplos):
Nome do paciente, Nome do paciente (maiúsculas), Nome social, Código do paciente, Idade, Data de nascimento, Sexo, Médico realizante, CRM médico realizante, Médico solicitante, Modalidade, Identidade, Estudo, Data do laudo, Hora do laudo, Data do exame, Hora do exame, Convênio, Campo auxiliar 01, Campo auxiliar 02, Dia/Mês/Ano do laudo, Página atual, Total de páginas, Código pedido, Link, Protocolo do exame, Lateralidade, Contraste, Oncológico, AVC, Trauma, entre outros.
Campos adicionais exibidos apenas na tela de Formatação (cabeçalho/rodapé):
Quando o editor está na tela de Formatação da unidade, o menu Campos inclui também os itens específicos para laudos OIT:
| Nome exibido no menu | Placeholder | Uso |
|---|---|---|
| Data do RX | [#rxDateTime] | Data do exame RX |
| Número do RX | [#rxNumber] | Número do RX |
| Leitor | [#leitor] | Leitor |
| RX digital | [#rxDigital] | Indicação RX digital |
| Leitura em negatoscópio | [#leituraNegatoscopio] | Leitura em negatoscópio |
| Nome da empresa | [#nomeEmpresa] | Nome da unidade/empresa |
| Cargo | [#cargo] | Cargo |
| Indicação | [#indicacao] | Indicação clínica |
Esses itens inserem um trecho com a classe oitLaudo. Se o tipo do cabeçalho for alterado e deixar de ser OIT, o sistema remove do conteúdo os placeholders OIT ao salvar ou ao pré-visualizar. Ao apagar manualmente um campo OIT no editor, o aviso/placeholder visual relacionado ao OIT também pode ser removido automaticamente.

6.5 Outros comportamentos do editor
- Altura do editor: na formatação padrão a altura é fixa (ex.: 7 cm). No OneLaudos, o usuário pode informar a altura em cm (campo numérico ao lado do Tipo) para cabeçalho (padrão 4 cm) e rodapé (padrão 3 cm), e o editor é redimensionado de acordo.
- Largura: adaptada à tela (ex.: ~29,7 cm em telas largas e ~23,3 cm em telas menores).
- Tecla Tab: desabilitada no editor (não insere tabulação).
- Enter + Shift: insere nova linha sem criar novo parágrafo.
7. Bloco Imagens e Link
7.1 Finalidade
Permitir enviar uma imagem para uso na formatação de laudos, visualizar imagens já cadastradas e copiar o link da última imagem enviada (para uso em cabeçalhos/rodapés, por exemplo).
7.2 Campos e elementos
| Elemento | Descrição | Obrigatório | Observações |
|---|---|---|---|
| Subir Arquivo | Input file disfarçado como botão | Não | Aceita apenas imagem (accept="image/*"). Limite de tamanho: 1 MB (max-size-mb="1"). Ao selecionar, envia a imagem para a unidade; o Link é preenchido com a URL retornada. |
| Imagens Cadastradas | Botão | - | Abre modal listando imagens de formatação já cadastradas para a unidade (template modalImagensCadastradas). |
| Link | Campo somente leitura | - | Exibe o link da última imagem enviada via "Subir Arquivo" (ou o retornado pela API). Usado para colar no editor de cabeçalho/rodapé. |
| Copiar Link | Botão | - | Copia o valor do campo Link para a área de transferência. Desabilitado quando não há link. |
7.3 Regras de negócio
- Upload: tamanho máximo 1 MB (300 KB em uma validação interna no controller: 314572.8 bytes). Acima disso, mensagem de erro informando limite de 300 KB.
- Link: preenchido automaticamente após upload bem-sucedido; pode ser copiado e usado em HTML (ex.:
<img src="...">) no editor. - Imagens Cadastradas: abre modal que lista imagens de formatação da unidade (perfil empresa,
formatacao: true).
8. Bloco Marca d’água
8.1 Finalidade
Configurar se a unidade utiliza marca d’água nos laudos e qual imagem será usada, com opção de remover a imagem.
8.2 Campos e elementos
| Elemento | Descrição | Obrigatório | Observações |
|---|---|---|---|
| Utilizar marca d’água | Radio: Sim (1) / Não (0) | Não | Valor em empresa.preferencia_marca_dagua. Define se a marca d’água (quando existir) será aplicada. |
| Salvar (preferência) | Botão ao lado do radio | - | Persiste apenas a preferência (utilizar ou não) via empresaHttpService.atualizarEmpresaSimples com preferencia_marca_dagua. |
| Subir Arquivo (marca d’água) | Botão | - | Abre o modal de crop (imageCropperCtrl / watermarkCropper). Usuário escolhe imagem e opacidade. Após confirmar, envia a imagem; tamanho permitido depende da resolução: 520x320 → 300 KB; demais → 5 MB. |
| Imagem da marca d’água | Pré-visualização | - | Exibida quando existe marcaDaguaLink (URL da marca d’água da unidade). Opacidade da pré-visualização segue o valor definido no crop. |
| Remover | Botão vermelho | - | Remove a marca d’água da unidade (deleteMarcaDagua). Visível apenas quando já existe imagem; ao remover, o link e a pré-visualização são limpos. |
8.3 Regras de negócio
- Preferência: independente da existência de imagem. Pode ser Sim/Não e salva separadamente.
- Upload: via modal de crop; validação de tamanho por resolução (520x320 → 300 KB; caso contrário → 5 MB). Opacidade é salva junto (
atualizaValorOpacidade). - Pré-visualizar (cabeçalho): o PDF de pré-visualização considera a marca d’água apenas se
preferencia_marca_daguafor verdadeiro e existirmarca_dagua_path. - Remover: só aparece quando há imagem; remove arquivo e referência no backend.

9. Pré-visualização (PDF)
O botão Pré-visualizar (ícone de impressora) no bloco de cabeçalho:
- Remove placeholders OIT do HTML do cabeçalho e do rodapé.
- Busca dados da marca d’água da unidade (caminho e opacidade).
- Monta um HTML completo com: cabeçalho + marca d’água (se habilitada) + rodapé.
- Chama o serviço que gera PDF em base64 (
imagemChavePdfHttpServices.montaPdfHtmlPuro). - Decodifica e abre o PDF em nova aba.
Assim, o usuário vê como ficará o laudo com o cabeçalho e rodapé atuais e a marca d’água (quando aplicável).


10. Carregamento inicial e contexto
- Unidade: o controller usa
$stateParams.idcomo ID da unidade. Seid != 0, carrega a empresa (getEmpresa) e em seguida chamabuscarDados(). - buscarDados():
- Busca cabeçalhos:
laudoHttpService.getCabecalho(empresa_id). Se houver itens, seleciona o primeiro e carrega no formulário (carregaFormatacaoCabecalho). - Busca rodapés:
laudoHttpService.getRodape(empresa_id). Se houver itens, seleciona o primeiro e carrega (carregaFormatacaoRodape).
- Busca cabeçalhos:
- OneLaudos: detectado por
window.location.href.toUpperCase().includes('ONELAUDOS'). Quando verdadeiro, aplica alturas padrão (cabeçalho 4 cm, rodapé 3 cm) e exibe os campos de altura em cm. - Tipos de laudo: vêm do enum
formatacaoHeaderFooterTipo(): Todos (0), Texto (1), OIT (2), Imagens (3), Protocolo (4), Prescrição (5).
11. Resumo de APIs utilizadas
| Ação | Serviço / Método |
|---|---|
| Cabeçalhos – listar | laudoHttpService.getCabecalho(empresa_id) |
| Cabeçalhos – criar | laudoHttpService.criarCabecalho(dados) |
| Cabeçalhos – atualizar | laudoHttpService.atualizarCabecalho(dados) |
| Cabeçalhos – excluir | laudoHttpService.excluirCabecalho(cabecalho_id) |
| Rodapés – listar | laudoHttpService.getRodape(empresa_id) |
| Rodapés – criar | laudoHttpService.criarRodape(dados) |
| Rodapés – atualizar | laudoHttpService.atualizarRodape(dados) |
| Rodapés – excluir | laudoHttpService.excluirRodape(rodape_id) |
| Unidade – dados | empresaHttpService.getEmpresa(id) |
| Imagem formatação – upload | empresaHttpService.uploadFormatacaoImagem(empresa_id, file) |
| Marca d’água – upload | empresaHttpService.uploadMarcaDagua(empresa_id, file) |
| Marca d’água – opacidade | empresaHttpService.atualizaValorOpacidade(empresa_id, opacity, format) |
| Marca d’água – remover | empresaHttpService.deleteMarcaDagua(empresa_id) |
| Preferência marca d’água | empresaHttpService.atualizarEmpresaSimples({ preferencia_marca_dagua }, { id }) |
| Pré-visualização PDF | empresaHttpService.findWatermark(id) + imagemChavePdfHttpServices.montaPdfHtmlPuro(dados) |
12. Modelo de dados (cabeçalho / rodapé)
Frontend (laudoModel):
id,html,titulo,is_novo,preferencia_tamanho,height,tipo_laudo,is_padrao
Backend (payload):
- Cabeçalho:
{ laudoHeader: { id, html, titulo, empresa_id, height, preferencia_tamanho, tipo_laudo, is_padrao } } - Rodapé:
{ laudoFooter: { id, html, titulo, empresa_id, height, preferencia_tamanho, tipo_laudo, is_padrao } }
Conversão: laudoModel.frontCabecalho / frontRodape (API → tela) e backCabecalho / backRodape (tela → API).
Esta documentação descreve o comportamento da tela de Formatação no frontend e as regras funcionais aplicadas no controller e na view. Para detalhes de validação ou resposta de erro no backend, consulte a documentação da API.