Skip to main content

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).

edicao

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.

adicao


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 telaOnde aparece
CabeçalhoTítulo do primeiro bloco (lista de estilos à esquerda)
Nome do CabeçalhoLabel do campo de texto do nome do estilo de cabeçalho
Adicionar PadrãoDica (title) do ícone de estrela no cabeçalho/rodapé
Pré-visualizarDica do botão com ícone de impressora
Novo CabeçalhoBotão para criar novo cabeçalho
TipoLabel do dropdown de tipo de laudo (cabeçalho e rodapé)
SalvarBotão de salvar (cabeçalho, rodapé e preferência da marca d’água)
ApagarBotã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 ArquivoBotão de upload (imagens de formatação e marca d’água)
Imagens CadastradasBotão que abre o modal de imagens já cadastradas
LinkLabel do campo somente leitura que exibe a URL da última imagem enviada (fixo no HTML, sem i18n)
Copiar LinkBotão para copiar o link para a área de transferência
Marca d'águaTítulo do bloco de marca d’água
Utilizar marca d'águaSubtítulo da opção Sim/Não
ImagemSubtítulo da área de upload/pré-visualização da marca d’água
SimOpção do radio “utilizar marca d’água”
NãoOpção do radio “utilizar marca d’água”
RemoverBotã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:

  1. Cabeçalho – lista e edição de estilos de cabeçalho dos laudos
  2. Rodapé – lista e edição de estilos de rodapé dos laudos
  3. Imagens / Link – upload de imagem, imagens cadastradas e cópia de link
  4. 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

ElementoDescriçãoObrigatórioObservaçõ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çalhoCampo de texto com o nome/título do estiloSimUsado 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ãoEstrela 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é-visualizarBotã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çalhoBotã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 textSimConteú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.
TipoSelect (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éricoCondicionalVisí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.
SalvarBotã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.
ApagarBotã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

  1. Clicar em Novo Cabeçalho.
  2. Preencher Nome do Cabeçalho e conteúdo no editor HTML.
  3. Selecionar Tipo (e, se OneLaudos, ajustar altura).
  4. Opcional: marcar como Padrão (estrela).
  5. Clicar em Salvar. O sistema valida título duplicado e padrão; em seguida cria e recarrega a lista.

Editar

  1. Na lista à esquerda, selecionar o cabeçalho desejado (radio).
  2. Alterar Nome, HTML, Tipo e/ou Padrão conforme necessário.
  3. Clicar em Salvar. Validações (título duplicado, padrão) se aplicam; em seguida atualiza e recarrega.

Excluir

  1. Selecionar o cabeçalho na lista.
  2. Clicar no botão Apagar (vermelho, abaixo da lista).
  3. Confirmar no diálogo. O cabeçalho é removido e a lista é recarregada; se houver itens, o primeiro fica selecionado.

edicao


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

ElementoDescriçãoObrigatórioObservaçõ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 estiloSimIdentificação na lista. Não pode repetir título de outro rodapé da unidade.
Estrela (Adicionar Padrão)Ícone estrelaNãoMarca/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 textSimConteú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).
TipoSelectSim (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éricoCondicionalApenas OneLaudos. Altura do editor em cm (máx. 10). Padrão rodapé: 3 cm.
SalvarBotão-Cria (se novo) ou atualiza (se existente). Desabilitado sem Nome ou HTML.
ApagarBotã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.

rodape

⚠️ 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 / ÍconeFunção para o usuário
DesfazerDesfazer última alteração
RefazerRefazer o que foi desfeito
Remover formataçãoRemove formatação do trecho selecionado
ColarCola texto da área de transferência
Inserir imagemInsere imagem no conteúdo
Seleção de fonteDropdown para escolher a fonte do texto (veja lista abaixo)
Tamanho da fonteDropdown para escolher o tamanho do texto (veja lista abaixo)
Cor do textoDefine a cor da letra
NegritoAplica negrito
ItálicoAplica itálico
SublinhadoAplica sublinhado
Alinhar à esquerda / Centro / Direita / JustificadoAlinhamento do parágrafo
Diminuir indentação / Aumentar indentaçãoIndentação do parágrafo
Lista com marcadores / Lista numeradaCria listas
ImprimirAbre impressão (contexto do navegador)
Cor de fundoDefine a cor de fundo do trecho selecionado
CamposMenu com campos dinâmicos (placeholders) – veja seção 6.3
Linha horizontalInsere uma linha horizontal
TabelaInsere ou edita tabela
Alterar maiúsculas/minúsculasAlterna entre maiúsculas e minúsculas no texto selecionado
HiperlinkInsere 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 menuPlaceholderUso
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.

campos

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.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

ElementoDescriçãoObrigatórioObservações
Subir ArquivoInput file disfarçado como botãoNãoAceita 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 CadastradasBotão-Abre modal listando imagens de formatação já cadastradas para a unidade (template modalImagensCadastradas).
LinkCampo 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 LinkBotã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).

imagem-link


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

ElementoDescriçãoObrigatórioObservações
Utilizar marca d’águaRadio: Sim (1) / Não (0)NãoValor 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’águaPré-visualização-Exibida quando existe marcaDaguaLink (URL da marca d’água da unidade). Opacidade da pré-visualização segue o valor definido no crop.
RemoverBotã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_dagua for verdadeiro e existir marca_dagua_path.
  • Remover: só aparece quando há imagem; remove arquivo e referência no backend.

marca-d


9. Pré-visualização (PDF)

O botão Pré-visualizar (ícone de impressora) no bloco de cabeçalho:

  1. Remove placeholders OIT do HTML do cabeçalho e do rodapé.
  2. Busca dados da marca d’água da unidade (caminho e opacidade).
  3. Monta um HTML completo com: cabeçalho + marca d’água (se habilitada) + rodapé.
  4. Chama o serviço que gera PDF em base64 (imagemChavePdfHttpServices.montaPdfHtmlPuro).
  5. 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).

pv-btn

pv-pdf


10. Carregamento inicial e contexto

  • Unidade: o controller usa $stateParams.id como ID da unidade. Se id != 0, carrega a empresa (getEmpresa) e em seguida chama buscarDados().
  • 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).
  • 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çãoServiço / Método
Cabeçalhos – listarlaudoHttpService.getCabecalho(empresa_id)
Cabeçalhos – criarlaudoHttpService.criarCabecalho(dados)
Cabeçalhos – atualizarlaudoHttpService.atualizarCabecalho(dados)
Cabeçalhos – excluirlaudoHttpService.excluirCabecalho(cabecalho_id)
Rodapés – listarlaudoHttpService.getRodape(empresa_id)
Rodapés – criarlaudoHttpService.criarRodape(dados)
Rodapés – atualizarlaudoHttpService.atualizarRodape(dados)
Rodapés – excluirlaudoHttpService.excluirRodape(rodape_id)
Unidade – dadosempresaHttpService.getEmpresa(id)
Imagem formatação – uploadempresaHttpService.uploadFormatacaoImagem(empresa_id, file)
Marca d’água – uploadempresaHttpService.uploadMarcaDagua(empresa_id, file)
Marca d’água – opacidadeempresaHttpService.atualizaValorOpacidade(empresa_id, opacity, format)
Marca d’água – removerempresaHttpService.deleteMarcaDagua(empresa_id)
Preferência marca d’águaempresaHttpService.atualizarEmpresaSimples({ preferencia_marca_dagua }, { id })
Pré-visualização PDFempresaHttpService.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.