Sei sulla pagina 1di 3

;;;;;;=======================================================

;;;;;;Sistema Experto de deteccion de Enfermedades Virales


;;;;;;
;;;;;; Este es un sistema para la deteccion de enfermedades
;;;;;; que virales
;;;;;;
;;;;;; Para ejecutar, Cargar con la funcion load, reset y run.
;;;;;; ======================================================

;; ***************
;; funciones *****
;;****************

(deffunction preguntas (?pregunta $?valor)


(printout t ?pregunta)
(bind ?respuesta (read))
(if (lexemep ?respuesta)
then (bind ?respuesta (lowcase ?respuesta)))
(while (not (member ?respuesta ?valor)) do
(printout t ?pregunta)
(bind ?respuesta (read))
(if (lexemep ?respuesta)
then (bind ?respuesta (lowcase ?respuesta))))
?respuesta)

(deffunction si-or-no-p (?pregunta)


(bind ?responde (preguntas ?pregunta si no s n))
(if (or (eq responde si ) (eq ?responde s))
then TRUE
else FALSE))

;;***********
;; Reglas****
;;;**********

(defrule estado-normal ""


(declare (salience 10))
(estado vid normal)
=>
(assert (enfermedad "No tiene ninguna enfermedad")))

(defrule sintoma-de-paciente ""


(not (estado vid ?))
(not (enfermedad ?))
=>
(if (si-or-no-p "Presenta fiebre y dolor de cabeza (si/no)?")
then
(if (si-or-no-p "Presenta erupciones cutaneas (si/no)? ")
then (assert (estado vid erupciones))
else (assert (estado vid rubiola)))
else
(assert (estado vid picadura-insecto))))

(defrule chinkungunya ""


(estado vid erupciones)
(not (enfermedad ?))
=>
(if (si-or-no-p "las erupciones les provocan picazon (si/no)?")
then
(assert (estado vid varicela))
else
(assert (estado vid rubiola))
))

(defrule varicela ""


(estado vid varicela)
(not (enfermedad ?))
=>
(if (si-or-no-p "Las erupciones son peque�as y abultadas (si/no)?")
then
(assert (enfermedad " la enfermedad es VARICELA."))
else
(assert (enfermedad "La enfermedad es VIRUELA."))
))

(defrule rubiola ""


(estado vid rubiola)
(not (enfermedad ?))
=>
(if (si-or-no-p "Las erupciones estan diceminadas en todo el cuerpo
(si/no)?")
then
(assert (enfermedad " la enfermedad es RUBIOLA."))
else
(assert (estado vid sarampion ))
))

(defrule sarampion ""


(estado vid sarampion)
(not (enfermedad ?))
=>
(if (si-or-no-p "Los bultos en el cuerpo son de color rosado (si/no)?")
then
(assert (enfermedad " la enfermedad es SARAMPION."))
else
(assert (estado vid alegia))
))

(defrule alergia ""


(estado vid alergia)
(not (enfermedad ?))
=>
(if (si-or-no-p "Las erupciones citaneas se presentan de pie a cabeza
(si/no)?")
then
(assert (enfermedad " la enfermedad es solo una ALEGIA."))
else
(assert (enfermedad "estado vid normal."))
))

(defrule no-enfermedades ""


(declare(salience 10))
(not (enfermedad ?))
=>
(assert (enfermedad "La base de datos no detecto ninguna enfermedad")))
;;****************************************************************
;;* Diagnostico y deteccion de enfermedades virales
;;****************************************************************

(defrule system-banner ""


(declare (salience 10))
=>
(printout t crlf crlf)
(printout t "SISTEMA EXPERTO DE ENFERMEDADES")
(printout t crlf crlf))

(defrule imprimir-diagostico ""


(declare (salience 10))
(enfermedad ?dato)
=>
(printout t crlf crlf)
(printout t "El diagnostico es:")
(printout t crlf crlf)
(format t " %s%n%n%n" ?dato))

Potrebbero piacerti anche