Tradução de laudo — Translate Report
A tradução de laudo utiliza um provider de IA para traduzir o conteúdo do laudo em edição para o idioma configurado. A funcionalidade está disponível na tela de laudário do portal legado, acionada por um botão dedicado.
A resposta contém apenas o laudo traduzido em translate[].body — sem campo de observações separado. Não há reformulação neste fluxo.
Para quem é
| Persona | Quem é | O que faz aqui |
|---|---|---|
| Gestor | perfil administrativo da unidade | pode utilizar a tradução no laudário, conforme permissões |
| Proprietário | perfil com acesso ampliado | pode utilizar a tradução no laudário |
| Médico | radiologista / laudador | traduz o laudo em edição antes de assinar |
| Residente | médico em formação | traduz o laudo em edição, conforme permissões |
Pré-requisitos
- Portal legado com laudário aberto para um exame.
- Termo de uso de IA aceito (unidade e/ou usuário, conforme escopo da configuração).
- Funcionalidade Translate Report (
translate_report) ativa e configurada:- na unidade — ver Configuração por empresa;
- no usuário — ver Configuração por usuário.
- Provider, modelo e token válidos para a funcionalidade.
- Laudo com conteúdo preenchido (corpo do documento não pode estar vazio).
Diagrama de sequência
Fluxo principal ao acionar a tradução:
Sem reformular: o botão de reformulação não é exibido para
translate_report_ia.
Etapas
1. Abrir o laudário
Na lista de exames do portal legado, localize o exame e clique em Abrir Laudário.

2. Acionar a tradução
Com o laudário aberto e o laudo preenchido, clique no botão Tradução de laudo. A interface envia apenas o laudo e o idioma — sem o bloco context de exame/paciente usado na RevisIA / ortografia.

Dados enviados (exemplo):
| Grupo | Campos |
|---|---|
| Unidade | companyId (path e body) |
| Laudo | reports[].reportId, body, date |
| Idioma | language (pt-BR, es-ES, en-US) |
3. Visualizar resultado no modal
Após resposta bem-sucedida da API, um modal exibe o laudo traduzido — apenas o conteúdo em translate[].body, sem observações adicionais.

4. Aplicar no documento (opcional)
O usuário pode aceitar o laudo traduzido (Usar este) para substituir o conteúdo no editor do laudário.

Campos / entradas
| Campo / origem | Descrição |
|---|---|
companyId | ID da unidade (empresa) — informado no path /translate/report/{companyId} e no body |
reports[].reportId | ID do laudo |
reports[].body | Conteúdo do laudo em edição |
reports[].date | Data do laudo |
language | Idioma de destino da tradução (pt-BR, es-ES, en-US) |
Diferente de outras funcionalidades, o payload de tradução não envia
reports[].context.
Saída esperada
| Campo | Descrição |
|---|---|
translate[].body | Laudo traduzido |
translate[].reportId | ID do laudo |
Não há campo
observations— somente o texto traduzido embody.
Endpoints utilizados
| Endpoint | Descrição |
|---|---|
AI_API POST /translate/report/{companyId} | Envia o laudo e o idioma de destino; retorna o conteúdo traduzido em translate[].body. |
→ Detalhe técnico: Translate Report — OpenAPI
Regras de negócio
| ID | Regra | Comportamento esperado |
|---|---|---|
| RN-01 | Laudo vazio | A tradução não é enviada; exibe toast de atenção. |
| RN-02 | Configuração ausente | Toast indicando ausência de configuração (unidade, usuário ou genérica). |
| RN-03 | Resposta | Apenas translate[].body; sem observações. |
| RN-04 | Sem reformular | Botão de reformulação oculto neste método. |
| RN-05 | Aplicar no documento | Opcional — Usar este substitui o conteúdo do editor. |
| RN-06 | Escopo | Portal legado; laudário. |
Mapeamento de erros
| Situação | Resposta da API | Comportamento |
|---|---|---|
| Clicar em Tradução de laudo com laudo vazio | Toast de atenção: o laudo do exame não pode estar vazio. A tradução não é enviada. | |
| API de tradução retorna resposta vazia / sem dados | AI_API POST /translate/report/{companyId} | Toast de atenção dizendo que não foi possível verificar o laudo. O modal não abre. |
| API de tradução falha (erro HTTP / integração) | AI_API POST /translate/report/{companyId} | Toast de erro traduzido pelo resolvedor de erros da IA (ou mensagem padrão de falha na verificação). O modal não abre. |
| Configuração da funcionalidade não encontrada (unidade) | AI_API POST /translate/report/{companyId} | Toast de atenção indicando ausência de configuração na unidade. |
| Configuração da funcionalidade não encontrada (usuário) | AI_API POST /translate/report/{companyId} | Toast de atenção indicando ausência de configuração do usuário. |
| Configuração de IA não encontrada (genérico / companyId) | AI_API POST /translate/report/{companyId} | Toast de atenção dizendo que a configuração não foi encontrada. |
| Provider/modelo inválido ou descontinuado | AI_API POST /translate/report/{companyId} | Toast de erro específico de modelo inválido/descontinuado (pode citar o modelo). |
| Token / chave de API inválida ou rejeitada pelo provider | AI_API POST /translate/report/{companyId} | Toast de erro da integração IA (título pode incluir o provider). |
| Erro genérico do provider / BadRequest | AI_API POST /translate/report/{companyId} | Toast com a mensagem tratada pelo resolvedor (ou a mensagem bruta do provider, conforme o tipo). |
| Timeout / job da IA estoura (pooling) | AI_API POST /translate/report/{companyId} | Toast de erro de operação / timeout do processamento. |