0
respostas

Sistema Especialista para Diagnóstico Respiratório

Implementação em Python
python
class BaseDeConhecimento:
def init(self):
self.fatos = set()
self.regras = []

def adicionar_fato(self, fato):
    self.fatos.add(fato)

def adicionar_regra(self, condicoes, conclusao):
    self.regras.append((set(condicoes), conclusao))

class SistemaEspecialista:
def init(self, base):
self.base = base
self.historico = []

def inferir(self, fatos_iniciais):
    for fato in fatos_iniciais:
        self.base.adicionar_fato(fato)
    
    novos = True
    while novos:
        novos = False
        for condicoes, conclusao in self.base.regras:
            if condicoes.issubset(self.base.fatos) and conclusao not in self.base.fatos:
                self.base.adicionar_fato(conclusao)
                self.historico.append((condicoes, conclusao))
                novos = True
    return self.base.fatos

def exibir_diagnostico(self):
    diag = [f for f in self.base.fatos if 'pneumonia' in f or 'infeccao' in f]
    print(f"Diagnóstico: {diag if diag else 'Nenhum'}")
    for c, concl in self.historico:
        print(f"  {c} → {concl}")

Teste

base = BaseDeConhecimento()
base.adicionar_regra(['febre', 'tosse'], 'infeccao_respiratoria')
base.adicionar_regra(['infeccao_respiratoria', 'dificuldade_respirar'], 'pneumonia')

sistema = SistemaEspecialista(base)
sistema.inferir(['febre', 'tosse', 'dificuldade_respirar'])
sistema.exibir_diagnostico()
Saída
text
Diagnóstico: ['infeccao_respiratoria', 'pneumonia']
{'febre', 'tosse'} → infeccao_respiratoria
{'infeccao_respiratoria', 'dificuldade_respirar'} → pneumonia
Como funciona
Componente Função
Fatos Sintomas do paciente (ex: febre, tosse)
Regras SE condições ENTÃO diagnóstico
Inferência Aplica regras repetidamente até nenhum fato novo
Regras do sistema
SE febre E tosse → infeccao_respiratoria

SE infeccao_respiratoria E dificuldade_respirar → pneumonia

Aplicações
Diagnóstico médico assistido

Suporte a decisões clínicas

Treinamento de profissionais