Skip to main content

Anexos (Attachment) — visão geral

O módulo de Anexos cobre os arquivos vinculados a um exame — pedido médico, exame anterior, laudo externo, resultado, documento do paciente, termo de consentimento e outros — e a via de upload para quem não tem login no Portal 2.0. Não existe uma tela própria de "lista de anexos": os anexos vivem dentro do modal de anexos do exame, aberto a partir do ícone de clipe na worklist ou no laudário, e dentro da página pública de upload por convite, aberta a partir de um link compartilhado fora do Portal.

:::caution Pendência deste levantamento — sem exame de teste na unidade O ambiente de testes (https://task4.srv1812538.hstgr.cloud/) apresentou indisponibilidade persistente da API (502 em /v1/auth/session e /v1/auth/login) por boa parte desta verificação; depois que ela voltou, o login funcionou normalmente com o perfil administrator. O bloqueio real acabou sendo outro: a worklist (/exams) da unidade "Unidade Central Docs" não retornou nenhum exame em nenhum filtro de período testado (24h/48h/7 dias/30 dias, com e sem "Assinados") — e as duas telas deste módulo (modal de anexos e convite externo) só abrem a partir de um exame concreto. Sem exame, não há linha para clicar. A única captura possível sem depender de exame foi o estado "Link inválido" da página pública, obtida abrindo /external-attachments sem token (ver Convite de anexo externo). O restante do conteúdo abaixo — rotas, guards, permissões, regras e os textos exatos de tela — foi confirmado lendo o código-fonte (componentes, guards de rota, funções de política e as chaves de tradução em public/i18n/pt-BR.json) da branch integration/with-fixlaudo de mm-pacs-portal-main-interface, não por navegação real. A confirmar — responsável: time de frontend; data: 24/09/2026. Refazer este levantamento com um exame de teste cadastrado na unidade, para: (1) capturar as telas listadas na tabela de páginas abaixo, incluindo os estados "vê"/"não vê" de cada perfil; (2) confirmar visualmente que o comportamento lido no código é o que a tela realmente mostra. :::

Este levantamento cobre a interface (Angular) do repositório mm-pacs-portal-main-interface, branch integration/with-fixlaudo. O contrato de API correspondente já está documentado em Anexos (Attachment) — visão geral, back; esta seção documenta a experiência de tela — quem vê o quê, o que cada ação faz e como o modal se comporta.

As duas vias, na tela​

Páginas deste módulo​

PáginaCobre
Anexos do exameModal de anexos (ExamAttachmentsComponent) aberto a partir da worklist (/exams) e do laudário (/exams/:examId/report) — upload, listagem, reclassificação e exclusão
Convite de anexo externoCriação do link (dentro do modal acima) e a página pública /external-attachments, sem login, onde o terceiro externo efetivamente anexa os arquivos

Onde cada capacidade vive​

O modal de anexos (app-exam-attachments) é o mesmo componente nos dois pontos de entrada — só muda quem o abre e com quais inputs:

Ponto de entradaRotaComponente que abre o modalreadOnlycanDelete
Ícone de clipe na linha da worklist/examsExamWorklistComponent (src/app/widgets/exam-worklist/ui/exam-worklist.component.html:903)sempre falsecanDeleteAttachments(exam) — gestor do exame (ver Anexos do exame)
Ícone de anexos no laudário/exams/:examId/reportExamReportPageComponent (src/app/pages/exam-report/ui/exam-report-page.component.html:664)readOnly() = exame assinado ou falha ao checar assinatura!readOnly()

A criação do convite de anexo externo acontece dentro do mesmo modal (menu do botão de anexar), não em uma tela separada — só aparece quando a unidade do exame libera anexo externo (ver Convite de anexo externo).

Quem acessa — resumo (confirmado no código, não testado navegando)​

CapacidadeRegra no códigoFonte
Ver/abrir a worklist (/exams), pré-requisito para tudo abaixopermissionGuard('exam:read')src/app/app/routes/exam.routes.ts:13
Ver o ícone de anexar/anexos na linha da worklistexam:add-attachment no escopo da unidade do exame (ou platform admin)canAttachToExam, src/app/entities/exam/lib/exam-policy.ts:182-184
Excluir um anexo (dentro do modal, aberto pela worklist)gestor do exame: platform admin, ou exam:update e exam:delete na unidade do exame; em exame concluído, só platform admincanDeleteAttachments, src/app/widgets/exam-worklist/ui/exam-worklist.component.ts:1013
Excluir um anexo (dentro do modal, aberto pelo laudário)qualquer usuário que chegou à tela, desde que o exame não esteja assinado (!readOnly())exam-report-page.component.html:667
Criar um link de anexo externonão estar em modo readOnly e a unidade ter externalAttachmentsEnabled = true (preferência, padrão false)canCreateExternalInvitation, exam-attachments.component.ts:194-198
Abrir a página pública /external-attachments e enviar arquivosqualquer pessoa com o link do convite — sem loginapp.routes.ts:59-65 (rota sem canActivate)

v1 (legado) restringia anexar a PROPRIETARIO/GESTOR/MEDICO/TECNICO/RESIDENTE/DIGITADOR; a v2 não distingue papel — qualquer usuário com a permissão granular exam:add-attachment no escopo da unidade do exame anexa, independente do nome do papel atribuído a ele. Nos 9 perfis de teste deste ambiente (docs-usuarios.md), isso deveria se traduzir em administrator, manager, doctor, technician, resident e typist vendo o ícone, e read_only, requestor e financial não — mas isso não foi confirmado navegando neste levantamento — a "Unidade Central Docs" não tinha nenhum exame cadastrado, então não havia uma linha de exame para testar com cada um dos 9 perfis. A confirmar — responsável: time de frontend; data: 24/09/2026.

Fora do escopo desta interface​

O legado (mm-pacs-portal-frontend, fora deste levantamento) tinha telas/ações para anexos duplicados (anexo_original_id), duplicação de anexos entre exames na replicação, conciliação via Clinux e geração de PDF de imagens-chave/laudo (cards Bitrix SPA 1320, entityTypeId 1320: F-006 "Anexar documentos via link externo com token temporário" #618, F-008 "Gerenciar anexos duplicados" #626, F-S01 "Armazenar e Persistir Anexos do Exame" #634, F-S04 "Duplicar e Conciliar Anexos entre Exames" #644, F-S05 "Gerar PDF de Laudo / Imagens-Chave e Relatório de Logs" #648). Nenhuma dessas capacidades tem tela correspondente no Portal 2.0 atual — o próprio back-end já registra que os pacotes lidos (clinical-media, external-attachment-invitation) não implementam anexos duplicados nem geração de PDF (ver visão geral do módulo — back, seção "Fora do escopo"). Trate esses cards como contexto histórico do sistema legado, nunca como especificação do comportamento atual.

O botão Imprimir e o botão Salvar Alterações do modal de anexos aparecem desabilitados de propósito (ver Anexos do exame) — não são telas ausentes, são funcionalidades do legado que o time decidiu não portar ainda.

Relacionado​