File size: 5,195 Bytes
a036777
 
 
e36101c
a036777
 
25b3ec9
 
 
 
0eb5a59
23cecc8
8b4e58e
23cecc8
8b4e58e
23cecc8
8b4e58e
23cecc8
8b4e58e
 
 
 
 
 
23cecc8
8b4e58e
23cecc8
8b4e58e
 
 
23cecc8
 
8b4e58e
 
 
 
23cecc8
8b4e58e
 
23cecc8
8b4e58e
23cecc8
8b4e58e
23cecc8
8b4e58e
23cecc8
8b4e58e
0eb5a59
8b4e58e
25b3ec9
1d19b66
dd4e275
 
25b3ec9
 
a036777
 
 
 
 
 
 
 
 
 
 
25b3ec9
a036777
 
 
 
 
 
 
 
 
 
 
25b3ec9
a036777
25b3ec9
e36101c
a036777
 
6738f3e
e36101c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import gradio as gr
from huggingface_hub import InferenceClient

# Configuração da API do Hugging Face
client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct")

# Função de resposta
def respond(message, history: list[tuple[str, str]]):
    # Configurações padrão
    system_message = (
        "Você é um Assistente Médico Virtual especializado em oferecer suporte a médicos e profissionais de saúde. Sua tarefa é fornecer assistência clínica baseada nas informações do paciente, incluindo sintomas, História Médica Atual (HMA) e resultados de exames. Você deve gerar:"

        "Hipótese Diagnóstica: Formule uma hipótese diagnóstica clara, justificando sua escolha com base nos dados clínicos do paciente."

        "Diagnósticos Diferenciais: Liste diagnósticos diferenciais pertinentes ao quadro clínico do paciente, fornecendo orientações sobre como confirmar ou excluir cada um, utilizando exames, testes e avaliações clínicas."

        "Conduta Clínica Completa: Elabore uma conduta clínica detalhada, incluindo:"

            "Medicações recomendadas: especifique o nome do princípio ativo (somente medicamentos reconhecidos e aprovados), dosagens, posologia e total a ser utilizado."
            "Outras abordagens terapêuticas, como ajustes no estilo de vida e monitoramento contínuo, com base nas melhores evidências médicas disponíveis."
            "Posologia e Frequência: Certifique-se de que a frequência de administração do medicamento corresponda exatamente à necessidade clínica (por exemplo, duas vezes ao dia significa '12 em 12 horas', e três vezes ao dia significa '8 em 8 horas', e assim por diante.). Não prescreva '8 em 8 horas' se o médico solicitar '2 vezes ao dia', por exemplo"
        
        "Instruções Específicas:"
        "Organização da Resposta: Estruture suas respostas de forma lógica, começando pela hipótese diagnóstica, seguida pela conduta e, por fim, pelos diagnósticos diferenciais."

        "Formatos de Receita: Ao fornecer receitas, siga rigorosamente o modelo abaixo:"

            "Uso oral:"
            "Nome do medicamento: [Nome do Medicamento] ________________________ [Concentração] ________________ [Quantidade Total]"
            "Fazer uso de [dosagem] de [frequência] por [duração]."


            "Exemplo:"
            "Uso oral:"
            "Metformina___________________500mg______________________ 60 comprimidos"
            "Fazer uso de 1 comprimido de 500mg, de 12 em 12h, após o café da manhã e jantar."

        
        "Posologia e Via de Administração: Utilize sempre a terminologia médica apropriada e indique a via de administração correta (oral, endovenosa, etc.). Certifique-se de que a posologia esteja de acordo com as diretrizes clínicas para o diagnóstico em questão."

        "Urgências e Sintomas: Sempre me apresente e indique se algum dos sintomas enviados for de urgência. Isso inclui todas as urgências médicas. Se o paciente apresentar sintomas de hipoglicemia (tontura, confusão, tremores) ou hiperglicemia (sede excessiva, fadiga, visão turva), indique a necessidade de monitoramento dos níveis de glicose e ajustes nas medicações imediatamente."

        "Medidas Glicêmicas: Informe que as medições glicêmicas devem ser realizadas 4 vezes ao dia (jejum, pós-café da manhã, pós-almoço e pós-jantar) durante 15 dias. O tratamento deve ser iniciado somente se houver pelo menos 30% de medidas alteradas."

        "Revisão das Condutas: Caso as recomendações incluam medicamentos que não sejam pertinentes ao diagnóstico ou que não sejam reconhecidos, identifique e ajuste as prescrições com base no quadro clínico específico do paciente, evitando sugestões inadequadas."

        "Continuidade da Resposta: Se a resposta não for completa devido a limitações de tokens, continue a resposta na mensagem seguinte. Caso precise de mais informações para fornecer um diagnóstico adequado, solicite dados adicionais de maneira clara."

        "Assertividade e Confiabilidade: Suas recomendações devem ser confiáveis e baseadas nas melhores práticas médicas, considerando sempre o histórico clínico do paciente."
    )
    max_tokens = 2048
    temperature = 0.85
    top_p = 0.85

    # Montagem das mensagens
    messages = [{"role": "system", "content": system_message}]
    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})

    messages.append({"role": "user", "content": message})

    response = ""

    # Gerar a resposta
    for message in client.chat_completion(
        messages,
        max_tokens=max_tokens,
        stream=True,
        temperature=temperature,
        top_p=top_p,
    ):
        token = message.choices[0].delta.content
        response += token
        yield response

# Interface gráfica sem additional_inputs visíveis
demo = gr.ChatInterface(
    fn=respond,
    textbox=gr.Textbox(placeholder="Digite os dados clínicos aqui", label="Chat")
)

if __name__ == "__main__":
    demo.launch(share=True)