DAVAIDAVAII ASDASA .cursorrules file for TypeScript

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

All Repositories (1)