Resumo de exames anteriores — Resume Previous Exam
O resumo de exames anteriores (previous_reports) utiliza um provider de IA para gerar uma síntese dos laudos de exames prévios do paciente (assinados ou reassinados). A interface primeiro consulta a API do portal para obter os exames elegíveis e, em seguida, envia os laudos à AI-API (POST /resume/previous-exam) para produção do resumo.
A funcionalidade está disponível no portal legado (contexto do laudário/exame), acionada por um botão dedicado.
Para quem é
| Persona | Quem é | O que faz aqui |
|---|---|---|
| Gestor | perfil administrativo da unidade | pode solicitar resumo de exames anteriores, conforme permissões |
| Proprietário | perfil com acesso ampliado | pode solicitar resumo de exames anteriores |
| Médico | radiologista / laudador | consulta resumo dos laudos anteriores do paciente durante a elaboração do laudo |
| Residente | médico em formação | consulta resumo dos laudos anteriores, conforme permissões |
Pré-requisitos
- Portal legado com exame/laudário aberto para o paciente em contexto.
- Termo de uso de IA aceito (unidade e/ou usuário, conforme escopo da configuração).
- Funcionalidade Previous Reports (
previous_reports/ Resume Previous Exam) 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.
- Existência de pelo menos um exame anterior assinado ou reassinado elegível para análise.
- No máximo 3 exames anteriores são enviados à IA (os mais recentes por
data_transferencia_final).
Diagrama de sequência
Fluxo principal ao acionar o resumo:
Etapas
1. Abrir o laudário
Na lista de exames do portal legado, localize o exame e clique em Abrir Laudário.

2. Acionar o resumo
Com o exame/laudário aberto, clique no botão Resumo de exames anteriores. A interface busca na API os exames anteriores do paciente elegíveis para análise.

3. Visualizar resultado no modal
Após resposta bem-sucedida da AI-API, um modal exibe a síntese de cada laudo anterior processado. Itens com falha parcial aparecem com destaque de erro; os demais exibem o resumo normalmente.

Campos / entradas
API — exames anteriores (POST /exame/todos/anteriores):
| Campo | Descrição |
|---|---|
| Contexto do exame/paciente | Identificação do exame atual para buscar anteriores assinados/reassinados |
Campos obrigatórios por exame anterior retornado:
| Campo | Descrição |
|---|---|
id | ID do exame |
html | Conteúdo HTML do laudo |
data_transferencia_final | Data de transferência/assinatura final |
AI-API — resumo (POST /resume/previous-exam):
| Campo | Descrição |
|---|---|
companyId | ID da unidade (empresa) |
reports[].reportId | ID do laudo/exame |
reports[].body | Conteúdo HTML do laudo anterior |
reports[].date | Data do laudo |
language | Idioma da resposta (pt-BR, es-ES, en-US) |
Saída esperada
| Campo | Descrição |
|---|---|
resume[].reportId | ID do laudo/exame resumido |
resume[].body | Texto resumido gerado pela IA |
resume[].success | Indica se o item foi processado com sucesso |
resume[].errorMessage | Mensagem de erro (quando success: false) |
Endpoints utilizados
| Endpoint | Descrição |
|---|---|
API POST /exame/todos/anteriores | Lista exames anteriores assinados/reassinados do paciente para envio à IA. |
AI_API POST /resume/previous-exam | Recebe os laudos anteriores e retorna a síntese por exame. |
→ Detalhe técnico: Resume Previous Exam — OpenAPI
Regras de negócio
| ID | Regra | Comportamento esperado |
|---|---|---|
| RN-01 | Sem exames anteriores | Toast de atenção; a IA não é chamada. |
| RN-02 | Campos obrigatórios ausentes | Toast de erro listando campos e ID do exame; a IA não é chamada. |
| RN-03 | Limite de 3 exames | Apenas os 3 mais recentes (assinados/reassinados) são enviados à AI-API. |
| RN-04 | Cache hit | Modal abre com payload cacheado; não chama API nem AI-API. |
| RN-05 | Sucesso parcial | Modal abre; itens com success: false exibem box vermelho; demais itens normais. |
| RN-06 | Configuração ausente | Toast indicando ausência de configuração (unidade, usuário ou genérica). |
| RN-07 | Sem reformular | Modal consultivo; não há POST /reformulate/response. |
| RN-08 | Escopo | Portal legado; laudário. Chave de config: previous_reports. |
Mapeamento de erros
| Situação | Resposta da API | Comportamento |
|---|---|---|
| Nenhum exame anterior assinado/reassinado encontrado para analisar | API POST /exame/todos/anteriores | Toast de atenção: não foi encontrado nenhum exame anterior. A IA não é chamada. |
Exame anterior sem campos obrigatórios (html, data_transferencia_final ou id) | API POST /exame/todos/anteriores | Toast de erro listando os campos ausentes e o ID do exame. A IA não é chamada. |
| Falha ao listar exames anteriores | API POST /exame/todos/anteriores | Cai no catch do fluxo; o toast só fica consistente se o erro vier no formato esperado (type/title/message). |
| API de resumo da IA retorna resposta vazia / sem dados | AI_API POST /resume/previous-exam | Toast de erro: não foi possível utilizar a IA para visualizar os exames anteriores. O modal não abre. |
| API de resumo da IA falha (erro HTTP / integração) | AI_API POST /resume/previous-exam | Toast de erro traduzido pelo resolvedor da IA (ou mensagem padrão de falha nos exames anteriores). O modal não abre. |
| Configuração da funcionalidade não encontrada (unidade) | AI_API POST /resume/previous-exam | Toast de atenção indicando ausência de configuração na unidade. |
| Configuração da funcionalidade não encontrada (usuário) | AI_API POST /resume/previous-exam | 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 /resume/previous-exam | Toast de atenção dizendo que a configuração não foi encontrada. |
| Provider/modelo inválido ou descontinuado | AI_API POST /resume/previous-exam | 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 /resume/previous-exam | Toast de erro da integração IA (título pode incluir o provider). |
| Erro genérico do provider / BadRequest | AI_API POST /resume/previous-exam | 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 /resume/previous-exam | Toast de erro de operação / timeout do processamento. |
Resumo “sucesso parcial”: item em resume com success: false | AI_API POST /resume/previous-exam | O modal abre. No item com erro aparece o box vermelho (título do laudo, se houver, + mensagem). Os demais itens seguem normais. |