usar o Anthropic Claude 3.5 Sonnet para gerar as respostas da IA.
laudaa/api/score-report/route.ts:
typescriptCopyimport { NextResponse } from 'next/server';
import { Anthropic } from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
export async function POST(req: Request) {
try {
const { reportContent } = await req.json();
const prompt = `
Você é um especialista em laudos médicos. Avalie o seguinte laudo radiológico e atribua uma pontuação de 0 a 100 com base nos seguintes critérios:
1. Clareza e organização (0-25 pontos)
2. Completude das informações (0-25 pontos)
3. Uso apropriado de terminologia médica (0-25 pontos)
4. Relevância clínica das observações (0-25 pontos)
Laudo a ser avaliado:
${reportContent}
Forneça a pontuação total e uma breve justificativa para cada critério.
`;
const response = await anthropic.completions.create({
model: "claude-3-sonnet-20240229",
max_tokens_to_sample: 1000,
prompt: `Human: ${prompt}\n\nAssistant:`,
});
return NextResponse.json({ score: response.completion });
} catch (error) {
console.error('Error scoring report:', error);
return NextResponse.json({ error: 'Failed to score report' }, { status: 500 });
}
}
laudaa/api/follow-up/route.ts:
typescriptCopyimport { NextResponse } from 'next/server';
import { Anthropic } from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
export async function POST(req: Request) {
try {
const { reportContent } = await req.json();
const prompt = `
Você é um radiologista experiente. Com base no seguinte laudo radiológico,
sugira recomendações de acompanhamento apropriadas. Considere a gravidade dos achados,
a necessidade de exames adicionais e o intervalo de tempo recomendado para reavaliação.
Laudo:
${reportContent}
Forneça uma lista de recomendações de acompanhamento detalhadas e justificadas.
`;
const response = await anthropic.completions.create({
model: "claude-3-sonnet-20240229",
max_tokens_to_sample: 1000,
prompt: `Human: ${prompt}\n\nAssistant:`,
});
return NextResponse.json({ followUpRecommendations: response.completion });
} catch (error) {
console.error('Error generating follow-up:', error);
return NextResponse.json({ error: 'Failed to generate follow-up' }, { status: 500 });
}
}
laudaa/api/generate-report/route.ts:
typescriptCopyimport { NextResponse } from 'next/server';
import { Anthropic } from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
export async function POST(req: Request) {
try {
const { patientInfo, studyInfo, findings } = await req.json();
const prompt = `
Você é um radiologista especializado. Gere um laudo radiológico completo e profissional
usando as seguintes informações:
Informações do Paciente:
${JSON.stringify(patientInfo, null, 2)}
Informações do Estudo:
${JSON.stringify(studyInfo, null, 2)}
Achados:
${findings.join('\n')}
Gere um laudo estruturado incluindo:
1. Cabeçalho com informações do paciente e do estudo
2. Técnica utilizada
3. Comparação com estudos anteriores (se aplicável)
4. Achados detalhados
5. Impressão
6. Recomendações (se aplicável)
Use terminologia médica apropriada e mantenha um tom profissional.
`;
const response = await anthropic.completions.create({
model: "claude-3-sonnet-20240229",
max_tokens_to_sample: 2000,
prompt: `Human: ${prompt}\n\nAssistant:`,
});
return NextResponse.json({ generatedReport: response.completion });
} catch (error) {
console.error('Error generating report:', error);
return NextResponse.json({ error: 'Failed to generate report' }, { status: 500 });
}
}
laudaa/api/enhance-report/route.ts:
typescriptCopyimport { NextResponse } from 'next/server';
import { Anthropic } from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
export async function POST(req: Request) {
try {
const { reportContent } = await req.json();
const prompt = `
Você é um editor especializado em laudos médicos. Aprimore o seguinte laudo radiológico,
focando nos seguintes aspectos:
1. Clareza e concisão da linguagem
2. Uso consistente e preciso de terminologia médica
3. Organização lógica das informações
4. Adição de detalhes relevantes, se necessário
5. Correção de erros gramaticais ou de pontuação
Laudo original:
${reportContent}
Forneça o laudo aprimorado, mantendo todas as informações importantes do original.
`;
const response = await anthropic.completions.create({
model: "claude-3-sonnet-20240229",
max_tokens_to_sample: 2000,
prompt: `Human: ${prompt}\n\nAssistant:`,
});
return NextResponse.json({ enhancedReport: response.completion });
} catch (error) {
console.error('Error enhancing report:', error);
return NextResponse.json({ error: 'Failed to enhance report' }, { status: 500 });
}
}
laudaa/api/ai-suggestions/route.ts:
typescriptCopyimport { NextResponse } from 'next/server';
import { Anthropic } from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
export async function POST(req: Request) {
try {
const { reportContent, adiposeTissue } = await req.json();
const prompt = `
Você é um assistente de IA especializado em radiologia. Com base no seguinte laudo
radiológico e nas informações sobre o tecido adiposo, forneça sugestões para melhorar
o laudo ou insights adicionais que possam ser relevantes.
Laudo:
${reportContent}
Informações sobre o tecido adiposo:
${adiposeTissue}
Forneça uma lista de 3 a 5 sugestões ou insights, explicando a relevância de cada um.
`;
const response = await anthropic.completions.create({
model: "claude-3-sonnet-20240229",
max_tokens_to_sample: 1500,
prompt: `Human: ${prompt}\n\nAssistant:`,
});
return NextResponse.json({ suggestions: response.completion });
} catch (error) {
console.error('Error generating AI suggestions:', error);
return NextResponse.json({ error: 'Failed to generate AI suggestions' }, { status: 500 });
}
}
Para integrar essas APIs com a interface do laudo existente, você pode adicionar funções para chamar essas APIs nos manipuladores de eventos dos botões correspondentes. Por exemplo:
typescriptCopyconst handleScoreReport = async () => {
try {
const response = await fetch('/api/score-report', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ reportContent: content })
});
const data = await response.json();
// Atualizar o estado ou exibir o resultado do score
} catch (error) {
console.error('Error scoring report:', error);
// Exibir mensagem de erro
}
};
// Implementar funções similares para os outros botões
Essas implementações usam o modelo Claude 3.5 Sonnet da Anthropic para gerar respostas baseadas no conteúdo do laudo ou nas informações fornecidas. As funções de API processam o texto do editor e, quando relevante, as informações sobre o tecido adiposo.
Lembre-se de ajustar os prompts e a lógica conforme necessário para se adequar às necessidades específicas do seu aplicativo e às expectativas dos usuários.
---
css
javascript
typescript
First Time Repository
TypeScript
Languages:
CSS: 1.7KB
JavaScript: 0.3KB
TypeScript: 389.9KB
Created: 10/8/2024
Updated: 10/8/2024