Está en la página 1de 25

SISTEMA EXPERTO PARA EL

DIAGNOSTICO MEDICO DE
ENFERMEDADES (SEDME)
Integrantes:
Grados Leyva Diana Elizabeth
Grados Leyva Diana Lisset
Docente:
Ing. Daz Pulido Jos Arturo
2014
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
1
INDICE
RESUMEN .......................................................................................................................... 2
1. INTRODUCCION ......................................................................................................... 2
1.1. Sistema Experto .................................................................................................... 3
1.2. Usos de un Sistema Experto ................................................................................. 3
1.3. Arquitectura y funcionamiento de un sistema experto............................................ 5
1.3.1. Base de conocimientos .................................................................................. 5
1.3.2. Base de datos ................................................................................................ 5
1.3.3. Motor de inferencias ....................................................................................... 5
1.3.4. Interfaz con el usuario .................................................................................... 6
1.3.5. Mdulo de explicacin .................................................................................... 6
1.3.6. Mdulo de adquisicin .................................................................................... 6
1.4. Ventajas e inconvenientes de un sistema experto ................................................. 7
1.4.1. Ventajas ......................................................................................................... 7
1.4.2. Inconvenientes ............................................................................................... 7
1.5. Prolog .................................................................................................................... 8
1.5.1. Introduccin a Prolog ..................................................................................... 8
1.5.2. Caractersticas de Prolog ............................................................................... 8
1.5.3. Derivados de Prolog ....................................................................................... 9
1.6. Java ...................................................................................................................... 9
1.6.1. Introduccin a Java ........................................................................................ 9
1.6.2. Caractersticas de Java ................................................................................ 12
2. SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO DE ENFERMEDADES
(SEDME) ........................................................................................................................... 13
2.1. Planteamiento y Diseo....................................................................................... 13
2.2. Implementacin ................................................................................................... 14
3. Ejecucin ................................................................................................................... 18
4. Referencias Bibliogrficas .......................................................................................... 24

SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
2
RESUMEN
En la dcada de los 50s Alan Turing comenz a dar los primeros pasos en el rea
de Inteligencia Artificial utilizando el hardware desarrollado hasta ese momento.
Tiempo despus, Edwar Feigenbaum y otros programadores en la universidad de
Stanford desarrollaron Dentral, este fue un sistema experto que tena por objetivo
estudiar un compuesto qumico. Con el pasar del tiempo se han desarrollado
muchos sistemas en diferentes campos, los cuales permiten imitar el pensamiento
de un experto humano a partir de un conocimiento.
En este trabajo se presenta un sistema experto el cual permite diagnosticar
diferentes tipos de enfermedades: la gastritis, el estreimiento, la leucemia, etc. El
diagnostico se logra a partir de una serie de preguntas que se realizan el paciente;
con base en las respuestas brindadas se logra determinar la enfermedad que
presenta el paciente.
El sistema contesta preguntas acerca de su modo de razonamiento y por esta y
otras caractersticas que cumple como SE, es una buena herramienta para la
preparacin acadmica de estudiantes en medicina. La importancia del SEDME
radica en la seguridad y la rapidez del diagnstico, lo que trae reduccin de costos
al evitarle al paciente exmenes innecesarios producindose, por ende, un
diagnstico y tratamiento ms oportuno.
Palabras claves: Sistema experto, Prolog Java, MySQL, Enfermedad.
1. INTRODUCCION
Con la rpida evolucin de la tecnologa, se han realizado avances notables
para lograr mejorar la calidad de la salud de los seres humanos. Como era
de esperar, en la salud tambin se han desarrollado sistemas expertos.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
3
El sistema experto descrito en este documento tiene dos objetivos, uno de
ellos es permitir el correcto diagnostico a partir de los sntomas del paciente,
y el otro es mostrar los posibles sntomas que puede tener un paciente y las
recomendaciones para dicho diagnostico a partir de la enfermedad que
supone tener el paciente.
Este sistema experto cuenta con una interfaz amigable con el usuario, ya que
no todo paciente est familiarizado con temas informticos.
1.1. Sistema Experto
Los Sistemas Expertos, rama de la Inteligencia Artificial, son sistemas
informticos que simulan el proceso de aprendizaje, de memorizacin,
de razonamiento, de comunicacin y de accin en consecuencia de un
experto humano en cualquier rama de la ciencia.
Estas caractersticas le permiten almacenar datos y conocimiento, sacar
conclusiones lgicas, tomar decisiones, aprender de la experiencia y los
datos existentes, comunicarse con expertos humanos, explicar el porqu
de las decisiones tomadas y realizar acciones como consecuencia de
todo lo anterior.
Tcnicamente un sistema experto, contiene una base de conocimientos
que incluye la experiencia acumulada de expertos humanos y un
conjunto de reglas para aplicar sta base de conocimientos en una
situacin particular que se le indica al programa. Cada vez el sistema se
mejora con adiciones a la base de conocimientos o al conjunto de reglas.
1.2. Usos de un Sistema Experto
Los sistemas expertos pueden tener diferentes usos:
Con la ayuda de un Sistema Experto, personas con poca experiencia
pueden resolver problemas que requieren un "conocimiento formal
especializado".
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
4
Un sistema experto es muy eficaz cuando tiene que analizar una gran
cantidad de informacin, interpretndola y proporcionando una
recomendacin a partir de la misma. Un ejemplo es el anlisis
financiero, donde se estudian las oportunidades de inversin,
dependiendo de los datos financieros de un cliente y de sus
propsitos.
Cuando el volumen de datos es muy elevado para obtener una
conclusin, los sistemas expertos actan llegando al resultado.
Para detectar y reparar fallos en equipos electrnicos, se utilizan los
sistemas expertos de diagnstico y depuracin, que formulan listas de
preguntas con las que obtienen los datos necesarios para llegar a una
conclusin.
Para inferir posibles consecuencias a partir de una situacin,
mediante la prediccin, como por ejemplo sistemas expertos para la
prediccin meteorolgica.
Cuando se necesita controlar un proceso tomando decisiones como
respuesta a su estado y no existe una solucin algortmica adecuada,
es necesario usar un sistema experto.
un sistema experto puede evaluar el nivel de conocimientos y
comprensin de un estudiante, y ajustar el proceso de aprendizaje de
acuerdo con sus necesidades.
En la depuracin, los sistemas expertos se usan para escribir
soluciones para funcionamientos errneos, como por ejemplo en el
desarrollo de software y circuitos electrnicos.
Los sistemas expertos se aplican a una gran diversidad de campos
y/o reas.
A continuacin se listan algunas de las principales:
Militar Informtica Telecomunicaciones
Qumica Derecho Aeronutica
Geologa Arqueologa Educacin
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
5
Electrnica Transporte Finanzas y Gestin
Medicina Industria Agricultura

1.3. Arquitectura y funcionamiento de un sistema experto
Un sistema experto est conformada por:
1.3.1. Base de conocimientos
Es la parte del sistema experto que contiene el conocimiento sobre el
dominio. Hay que obtener el conocimiento del experto y codificarlo en
la base de conocimientos. Una forma clsica de representar el
conocimiento en un sistema experto son lar reglas. Una regla es una
estructura condicional que relaciona lgicamente la informacin
contenida en la parte del antecedente con otra informacin contenida
en la parte del consecuente.
1.3.2. Base de datos
Base de datos o base de hechos. Contiene los hechos sobre un
problema que se han descubierto durante una consulta. Durante una
consulta con el sistema experto, el usuario introduce la informacin del
problema actual en la base de hechos. El sistema empareja esta
informacin con el conocimiento disponible en la base de
conocimientos para deducir nuevos hechos.
1.3.3. Motor de inferencias
El sistema experto modela el proceso de razonamiento humano con un
mdulo conocido como el motor de inferencia. Dicho motor de
inferencia trabaja con la informacin contenida en la base de
conocimientos y la base de hechos para deducir nuevos hechos.
Contrasta los hechos particulares de la base de hechos con el
conocimiento contenido en la base de conocimientos para obtener
conclusiones acerca del problema. Normalmente, el sistema sigue los
siguientes pasos:
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
6
Paso 1: Evaluar las condiciones de todas las reglas respecto a la base
de datos, identificando el conjunto de reglas que se pueden aplicar.
Paso 2: Si no se puede aplicar ninguna regla, se termina sin xito; en
caso contrario se elige cualquiera de las reglas aplicables y se ejecuta
su parte accin.
Paso 3: Si se llega al objetivo se ha resuelto el problema; en caso
contrario, se vuelve al paso 1.
1.3.4. Interfaz con el usuario
La interaccin entre un sistema experto y un usuario se realiza en
lenguaje natural. Tambin es altamente interactiva y sigue el patrn de
la conversacin entre seres humanos. Para conducir este proceso de
manera aceptable para el usuario es especialmente importante el
diseo del interfaz de usuario. Un requerimiento bsico del interfaz es
la habilidad de hacer preguntas. Para obtener informacin fiable del
usuario hay que poner especial cuidado en el diseo de las cuestiones.
Esto puede requerir disear el interfaz usando mens o grficos.
1.3.5. Mdulo de explicacin
Una caracterstica de los sistemas expertos es su habilidad para
explicar su razonamiento. Usando el mdulo del subsistema Generador
de Explicaciones, un SE puede proporcionar una explicacin al usuario
de por qu est haciendo una pregunta y cmo ha llegado a una
conclusin. Este mdulo proporciona beneficios tanto al diseador del
sistema como al usuario. El diseador puede utilizarlo para detectar
errores y el usuario se beneficia de la transparencia del sistema.
1.3.6. Mdulo de adquisicin
Permite que se puedan aadir, eliminar o modificar elementos de
conocimiento en el SE. Si el entorno es dinmico es muy necesario,
puesto que el sistema funcionar correctamente solo si se mantiene
actualizado su conocimiento. Tambin este mdulo permite efectuar
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
7
ese mantenimiento, anotando en la base de conocimiento los cambios
que se producen.
1.4. Ventajas e inconvenientes de un sistema experto
1.4.1. Ventajas
Permanencia: A diferencia de un experto humano un SE (sistema
experto) no envejece, y por tanto no sufre prdida de facultades
con el paso del tiempo.
Replicacin: Una vez programado un SE lo podemos replicar
infinidad de veces.
Rapidez: Un SE puede obtener informacin de una base de datos
y realizar clculos numricos mucho ms rpido que cualquier ser
humano.
Bajo costo: A pesar de que el costo inicial pueda ser elevado,
gracias a la capacidad de duplicacin el coste finalmente es bajo.
Entornos peligrosos: Un SE puede trabajar en entornos peligrosos
o dainos para el ser humano.
Fiabilidad: Los SE no se ven afectados por condiciones externas,
un humano s (cansancio, presin, etc.).
Consolidar varios conocimientos.
Apoyo Acadmico.
1.4.2. Inconvenientes
Sentido comn: Para un Sistema Experto no hay nada obvio. Por
ejemplo, un sistema experto sobre medicina podra admitir que un
hombre lleva 40 meses embarazado, a no ser que se especifique
que esto no es posible ya que un hombre no puede gestar hijos.
Lenguaje natural: Con un experto humano podemos mantener
una conversacin informal mientras que con un SE no podemos.
Capacidad de aprendizaje: Cualquier persona aprende con
relativa facilidad de sus errores y de errores ajenos, que un SE
haga esto es muy complicado.
Perspectiva global: Un experto humano es capaz de distinguir
cuales son las cuestiones relevantes de un problema y separarlas
de cuestiones secundarias.
Capacidad sensorial: Un SE carece de sentidos.
Flexibilidad: Un humano es sumamente flexible a la hora de
aceptar datos para la resolucin de un problema.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
8
Conocimiento no estructurado: Un SE no es capaz de manejar
conocimiento poco estructurado.
1.5. Prolog
1.5.1. Introduccin a Prolog
La Programacin Lgica es un paradigma de computacin que consiste
de un enfoque declarativo para escribir programas para el computador.
PROLOG es un lenguaje de computacin basada en ese paradigma. Los
programas lgicos pueden ser entendidos y estudiados a partir de dos
conceptos: verdad y deduccin lgica. En programacin lgica, uno
puede preguntarse si un axioma de un programa es verdad bajo alguna
interpretacin de los smbolos del programa y si ciertas declaraciones
lgicas son consecuencia del programa. Esas preguntas pueden ser
respondidas independientemente de cualquier mecanismo de ejecucin
concreto. Por otro lado, PROLOG es un lenguaje de programacin con
un significado operacional preciso que toma prestado sus conceptos
bsicos de la programacin lgica. Los programas PROLOG son
instrucciones para ejecutar sobre el computador. Esas instrucciones casi
siempre son ledas como instrucciones lgicas y, lo ms importante, el
resultado de una computacin de un programa PROLOG es una
consecuencia lgica de los axiomas en ste. Es ampliamente aceptado
que una programacin efectiva en PROLOG requiere de una
comprensin de la teora de programacin lgica, por lo menos en sus
aspectos fundamentales, pero tambin que esto redunda en un mayor
dominio del procesamiento de la informacin usando el computador.
1.5.2. Caractersticas de Prolog
Las principales caractersticas del lenguaje de programacin PROLOG
son:
Basado en lgica y programacin declarativa.
No se especifica cmo debe hacerse, sino qu debe lograrse.
Una caracterstica importante en Prolog y que lo diferencia de
otros lenguajes de programacin, es que una variable slo puede
tener un valor mientras se cumple el objetivo.
El programador se concentra ms en el conocimiento que en los
algoritmos.
Qu es conocido? (hechos, reglas).
Qu preguntar? (Cmo resolverlo).
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
9
1.5.3. Derivados de Prolog
La influencia de micro-PROLOG ha sido escasa en lenguajes
posteriores, si bien algunos han adoptado algunas de sus
caractersticas. El FRIL (Fuzzy Relational Inference Language) es una
notable excepcin, ya que basa explcitamente su sintaxis en l, sin ser
no obstante plenamente compatible con el micro-PROLOG. Desarrollado
en el seno de la Universidad de Bristol, la versin ms reciente de este
lenguaje es la 4.9, aunque desde 2003 no ha sido actualizado.
Su continuador ms reciente ha sido hasta ahora el EDULOG,
desarrollado a partir de 1999 y basado en la experiencia adquirida tras
trabajar en el rea educativa durante aos con micro-PROLOG. Creado
por el Grupo de Programacin Funcional y Lgica, un equipo de trabajo
integrado por docentes y alumnos de la Universidad Nacional de Lujn y
de la Universidad Nacional de la Pampa, ambas de Argentina, pretende
superar los inconvenientes que plantea la utilizacin del habitualmente
empleado interface SIMPLE y otros problemas observados en el
aprendizaje que derivan de las caractersticas sintcticas propias del
lenguaje, como el abundante uso de parntesis o el formato rgido de
algunas consultas.
Dada la relacin entre el Lisp y el micro-PROLOG, algunas
implementaciones de Prolog en Lisp y en Scheme (un dialecto del Lisp)
muestran gran similitud con el micro-PROLOG.
Tambin es aparentemente similar, aunque en mucha mayor medida, el
Schelog, lenguaje que fusiona caractersticas del Scheme y del
PROLOG.

1.6. Java
1.6.1. Introduccin a Java
Java es un lenguaje desarrollado por Sun con la intencin de competir
con Microsoft en el mercado de la red. Sin embargo, su historia se
remonta a la creacin de una filial de Sun (FirstPerson) enfocada al
desarrollo de aplicaciones para electrodomsticos, microondas,
lavaplatos, televisiones... Esta filial desapareci tras un par de xitos de
laboratorio y ningn desarrollo comercial.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
10
Sin embargo, para el desarrollo en el laboratorio, uno de los trabajadores
de FirstPerson, James Gosling, desarroll un lenguaje derivado de C++
que intentaba eliminar las deficiencias del mismo. Llam a ese lenguaje
Oak. Cuando Sun abandon el proyecto de FirstPerson, se encontr con
este lenguaje y, tras varias modificaciones (entre ellas la del nombre),
decidi lanzarlo al mercado en verano de 1995.
El xito de Java reside en varias de sus caractersticas. Java es un
lenguaje sencillo, o todo lo sencillo que puede ser un lenguaje orientado
a objetos, eliminando la mayor parte de los problemas de C++, que
aport su granito (o tonelada) de arena a los problemas de C. Es un
lenguaje independiente de plataforma, por lo que un programa hecho en
Java se ejecutar igual en un PC con Windows que en una estacin de
trabajo basada en Unix. Tambin hay que destacar su seguridad,
desarrollar programas que accedan ilegalmente a la memoria o realizar
caballos de troya es una tarea propia de titanes.
Cabe mencionar tambin su capacidad multihilo, su robustez o lo
integrado que tiene el protocolo TCP/IP, lo que lo hace un lenguaje ideal
para Internet. Pero es su sencillez, portabilidad y seguridad lo que le han
hecho un lenguaje de tanta importancia.
Portabilidad
La portabilidad se consigue haciendo de Java un lenguaje medio
interpretado medio compilado. Cmo se come esto? Pues se
coge el cdigo fuente, se compila a un lenguaje intermedio
cercano al lenguaje mquina pero independiente del ordenador y
el sistema operativo en que se ejecuta (llamado en el mundo Java
bytecodes) y, finalmente, se interpreta ese lenguaje intermedio
por medio de un programa denominado mquina virtual de Java.
Este esquema lo han seguido otros lenguajes, como por ejemplo
Visual Basic. Sin embargo, nunca se haba empleado como punto
de partida a un lenguaje multiplataforma ni se haba hecho de
manera tan eficiente. Cuando Java apareci en el mercado se
hablaba de que era entre 10 y 30 veces ms lento que C++.
Ahora, con los compiladores JIT (Just in Time) se habla de
tiempos entre 2 y 5 veces ms lentos. Con la potencia de las
mquinas actuales, esa lentitud es un precio que se puede pagar
sin problemas contemplando las ventajas de un lenguaje portable.
Orientacin a objetos
Dado que Java es un lenguaje orientado a objetos, es
imprescindible entender qu es esto y en qu afecta a nuestros
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
11
programas. Desde el principio, la carrera por crear lenguajes de
programacin ha sido una carrera para intentar realizar
abstracciones sobre la mquina. Al principio no eran grandes
abstracciones y el concepto de lenguajes imperativos es prueba
de ello. Exigen pensar en trminos del ordenador y no en
trminos del problema a solucionar. Esto provoca que los
programas sean difciles de crear y mantener, al no tener una
relacin obvia con el problema que representan No abstraen lo
suficiente.
Muchos paradigmas de programacin intentaron resolver este
problema alterando la visin del mundo y adaptndola al lenguaje.
Estas aproximaciones modelaban el mundo como un conjunto de
objetos o de listas. Funcionaban bien para algunos problemas
pero no para otros. Los lenguajes orientados a objetos, ms
generales, permiten realizar soluciones que, ledas, describen el
problema. Permiten escribir soluciones pensando en el problema
y no en el ordenador que debe solucionarlo en ltimo extremo. Se
basan en cinco caractersticas:
Todo es un objeto. Cada elemento del problema debe ser
modelado como un objeto.
Un programa es un conjunto de objetos dicindose entre s
que deben hacer por medio de mensajes. Cuando
necesitas que un objeto haga algo le mandas un mensajes.
Ms concretamente, ejecutas un mtodo de dicho objeto.
Cada objeto tiene su propia memoria, que llena con otros
objetos. Cada objeto puede contener otros objetos. De este
modo se puede incrementar la complejidad del programa,
pero detrs de dicha complejidad sigue habiendo simples
objetos.
Todo objeto tiene un tipo. En jerga POO, cada objeto es
una instancia (un caso particular) de una clase (el tipo
general). Lo que distingue a una clase de otra es la
respuesta a la pregunta, qu mensajes puedes recibir?
Todos los objetos de un determinado tipo pueden recibir
los mismos mensajes. Por ejemplo, dado que un objeto de
tipo Gato es tambin un objeto de tipo Animal, se puede
hacer cdigo pensando en los mensajes que se mandan a
un animal y aplicarlo a todos los objetos de ese tipo, sin
pensar si son tambin gatos o no.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
12
1.6.2. Caractersticas de Java
La principal caracterstica de Java es la de ser un lenguaje compilado e
interpretado. Todo programa en Java ha de compilarse y el cdigo que
se genera bytecodes es interpretado por una mquina virtual. De este
modo se consigue la independencia de la mquina, el cdigo compilado
se ejecuta en mquinas virtuales que si son dependientes de la
plataforma.
Java es un lenguaje orientado a objetos de propsito general. Aunque
Java comenzar a ser conocido como un lenguaje de programacin de
applets que se ejecutan en el entorno de un navegador web, se puede
utilizar para construir cualquier tipo de proyecto.
Su sintaxis es muy parecida a la de C y C++ pero hasta ah llega el
parecido. Java no es una evolucin ni de C++ ni un C++ mejorado.
En el diseo de Java se prest especial atencin a la seguridad. Existen
varios niveles de seguridad en Java, desde el mbito del programador,
hasta el mbito de la ejecucin en la mquina virtual
Con respecto al programador, Java realiza comprobacin estricta de
tipos durante la compilacin, evitando con ello problemas tales como el
desbordamiento de la pila. Pero, es durante la ejecucin donde se
encuentra el mtodo adecuado segn el tipo de la clase receptora del
mensaje; aunque siempre es posible forzar un enlace esttico
declarando un mtodo como final
Todas las instancias de una clase se crean con el operador new (), de
manera que un recolector de basura se encarga de liberar la memoria
ocupada por los objetos que ya no estn referenciados. La mquina
virtual de Java gestiona la memoria dinmicamente
Una fuente comn de errores en programacin proviene del uso de
punteros. En Java se han eliminado los punteros, el acceso a las
instancias de clase se hace a travs de referencias
Adems, el programador siempre est obligado a tratar las posi bles
excepciones que se produzcan en tiempo de ejecucin. Java define
procedimientos para tratar estos errores
Java tambin posee mecanismos para garantizar la seguridad durante la
ejecucin comprobando, antes de ejecutar cdigo, que este no viola
ninguna restriccin de seguridad del sistema donde se va a ejecutar
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
13
Tambin cuenta con un cargador de clases, de modo que todas las
clases cargadas a travs de la red tienen su propio espacio de nombres
para no interferir con las clases locales
Otra caracterstica de Java es que est preparado para la programacin
concurrente sin necesidad de utilizar ningn tipo de biblioteca
Finalmente, Java posee un gestor de seguridad con el que poder
restringir el acceso a los recursos del sistema.
A menudo se argumenta que Java es un lenguaje lento porque debe
interpretar los bytecodes a cdigo nativo antes de poder ejecutar un
mtodo, pero gracias a la tecnologa JIT, este proceso se lleva a cabo
una nica vez, despus el cdigo en cdigo nativo se almacena de tal
modo que est disponible para la siguiente vez que se llame.
2. SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO DE
ENFERMEDADES (SEDME)
2.1. Planteamiento y Diseo
Nuestro sistema experto est enfocado en un tema importante en
nuestra sociedad, la cual es el diagnostico de diferentes enfermedades
que pueden aquejar a un paciente y la respectiva descripcin de la
enfermedad y las recomendaciones para dicha enfermedad.
Este sistema tambin muestra los sntomas y recomendaciones de una
cierta enfermedad que el paciente supuestamente cree tener.
Para llegar a la solucin, pasamos por diferentes etapas, las cuales se
detallan a continuacin:
a. Bsqueda de informacin sobre enfermedades
Debido a que este sistema experto trata de diagnosticar una cierta
enfermedad del paciente y dar recomendaciones naturales para
aliviar dicha enfermedad, se ha buscado informacin real de la
descripcin, sntomas y recomendaciones naturales para cada una
de las enfermedades presentadas por el sistema.
b. Modelado y Almacenamiento de la base de datos
La informacin que hemos obtenido la almacenamos en una base de
datos, para despus poder adquirirlos mediante reglas hechas en
prolog.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
14
c. Creacin de Reglas e Instrucciones en Prolog
Debemos declarar las reglas e instrucciones en prolog. Para este
proyecto hemos considerado diversas reglas para poder obtener los
datos necesarios para una solucin exitosa.
d. Creacin de Interfaces y Conectividad en Java
Para interactuar con el usuario de forma amigable, se ha conectado
Prolog con el Lenguaje Java, con el fin de crear interfaces que
permitan la interaccin.
2.2. Implementacin
En primer lugar debemos crear una Base de Datos en MySQL llamada
bddiagnostico, en este caso hemos utilizado el apache llamado
Xampp, el cual es una distribucin de apache completamente gratuita y
fcil de instalar. Esta base de datos consta de cuatro tablas:
enfermedades, pregunta, preguntaprincipal y usuarios.
Posteriormente creamos una regla en prolog para poder conectarlo con
MySQL, la cual es la siguiente:
/*CONEXION CON MYSQL*/
abrir_conexion :- odbc_connect('swiprolog', _,
[ user(root), password(''),
alias(swiprolog),open(once)
]).

De la misma manera hemos incluido diferentes reglas en prolog que nos
permite obtener los datos necesarios para poder formar nuestra Base de
Conocimientos. A continuacin se muestran algunas:

Para la obtencin del nombre y la descripcin de las enfermedades
tenemos la siguiente regla:

/*ENFERMEDAD*/
consulta(Id,X):-concat(Id,'"',Z),
concat('SELECT nombre FROMenfermedades
where id = "',Z,X).
enfermedad(Id,X):- consulta(Id,Consulta),
odbc_query('swiprolog',
Consulta,row(X)).

/*DESCRIPCION DE ENFERMEDAD*/
consulta5(NombreEnfermedad,X):-
concat(NombreEnfermedad,'"',Z),
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
15
concat('SELECT descripcion FROM
enfermedades where nombre = "',Z,X).

descrEnfermedad(NombreEnfermedad,X):-
consulta5(NombreEnfermedad,Consulta5),
odbc_query('swiprolog',Consulta5,
row(X)).

Para la obtencin de las preguntas de cada enfermedad tenemos la
siguiente regla:

/*LISTA DE PREGUNTAS PARA CADA ENFERMEDAD*/
consulta2(IdE,IdP,X):-
concat(IdE,'"',Z),
concat(IdP,'"',W),
concat('SELECT descripcion FROM
pregunta where enfermedad =
"',Z,D),
concat(D,'and id="',A),
concat(A,W,X).

preguntas(IdE,IdP,X):- consulta2(IdE,IdP,Consulta2),
odbc_query('swiprolog',
Consulta2,
row(X)).

Para la obtencin de los sntomas de cada enfermedad tenemos la
siguiente regla:

/*SINTOMAS DE ENFERMEDAD*/
consulta3(NombreEnfermedad,X):-
concat(NombreEnfermedad,'"',Z),
concat('SELECT sintomas FROM
enfermedades where nombre = "',Z,X).

sintomaEnfermedad(NombreEnfermedad,X):-
consulta3(NombreEnfermedad,Consulta3),
odbc_query('swiprolog',Consulta3,row(X)).

As contamos con otras reglas que nos ayudaran a conectar java, prolog
y mysql, que se encuentran en el archivo bddiagnostico.pl.

SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
16
Adems en el archivo Principal.java hacemos la llamada a la clase
forName para acceder al driver de conexin, conectando mediante
phpmyadmin mandando la bd, el usuario y la contrasea.

Class.forName("com.mysql.jdbc.Driver");
con=(Connection)DriverManager.getConnection("jdbc:mysq
l://localhost:3306/bddiagnostico","root","");

Pero si no hacemos la modificacin correcta del controlador ODBC nos
saldr error al ejecutar la aplicacin, por este motivo necesitamos
modificarlo. Para ello seguimos los pasos que se encuentran en la
siguiente pgina web:
http://es.slideshare.net/diegotorres/23-prolog-con-base-de-datos-
mysql- paso-a-paso-17219728

Las interfaces de la aplicacin comprenden 3 partes importantes:
o Registro de clientes
o Acceso al sistema
o El sistema en s.
A continuacin se muestran dichas interfaces:

Fig. 1- Interfaz Principal de Acceso
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
17

Fig. 2-Interfaz de Registro de Usuario

Fig. 3- Interfaz de Ingreso de Usuario

SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
18

Fig. 4- Interfaz Principal del Sistema Experto

Las interfaces mostradas nos permitirn acceder a nuestra base
del conocimiento y as poder usar nuestro motor de inferencia
para trabajar las consultas hechas.
3. Ejecucin
En la interfaz principal de nuestro sistema experto, mostrada anteriormente,
podremos realizar dos tipos de consulta, una por Encadenamiento hacia
delante y otra por Encadenamiento hacia atrs. Si no se realiza ningn tipo de
consulta el botn Descripcin y Recomendaciones se mantendr bloqueado.
Si damos clic en el botn Iniciar Consulta, se realizara la consulta por
encadenamiento hacia delante, obteniendo como resultado una lista de
preguntas a las cuales se debe responder con si o No de acuerdo con los
sntomas que presente el paciente, como se presenta a continuacin.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
19

Fig. 5- Interfaz de Preguntas a Responder
Para cada enfermedad se presenta una lista diferente de preguntas. Al finalizar
la encuesta se mostrara la Interfaz con el nombre de la enfermedad que
padece el paciente y se desbloqueara el botn Descripcin y
recomendaciones, como se muestra a continuacin:



SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
20

Fig. 6- Interfaz con la Enfermedad Diagnosticada.
Ahora podremos consultar la descripcin y recomendacin para la enfermedad
diagnosticada dando clic en el botn Descripcin y Recomendaciones
mostrndonos una interfaz diferente para cada enfermedad, la cual contiene el
Tratamiento para aliviar la enfermedad.


SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
21

Fig. 7- Interfaz con el tratamiento para la enfermedad Diagnosticada.
En la interfaz mostrada anteriormente podemos consultar la descripcin de
cada enfermedad, mostrndonos tambin una interfaz diferente para cada
descripcin, as por ejemplo, se muestra a continuacin para la enfermedad
Tuberculosis obtenida en la interfaz anterior.



SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
22

Fig. 8- Interfaz de la Descripcin de la Enfermedad
Como hemos mencionado podemos hacer una consulta de tipo Encadenamiento
hacia atrs, es decir, adems de consultar la descripcin podemos saber los
sntomas de la enfermedad que supuestamente pensamos tener. Para esto damos
clic en Buscar Sntomas de la Interfaz Principal del Sistema (Fig. 4). Al hacer esto
se nos mostrara una interfaz donde tenemos que elegir la enfermedad que
suponemos.


SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
23

Fig. 9- Interfaz para Seleccionar la enfermedad que suponemos padecer
Despus de seleccionar la enfermedad y dar clic en Aceptar, se mostrara la
interfaz de la Fig. 6. Desde esta podemos obtener los sntomas y el tratamiento
para la enfermedad elegida.
De esta manera podemos navegar por el sistema experto de una manera amigable
y sencilla para el usuario.

SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
24
4. Referencias Bibliogrficas
- http://www.informaticaintegral.net/sisexp.html
- http://www.monografias.com/trabajos30/sistemas-expertos/sistemas-expertos.shtml
- http://www.monografias.com/trabajos30/sistemas-expertos/sistemas-
expertos.shtml
- http://sistexpertosmalkav.blogspot.com/2012/02/arquitectura-y-
funcionasmiento-de-un.html
- http://es.wikipedia.org/wiki/Sistema_experto
- http://es.scribd.com/doc/27500195/INTRODUCCION-A-PROLOG
- http://artemisa.unicauca.edu.co/~lgarreta/elenguajes/classes/logical/apuntes
05lp-prolog.pdf
- http://es.wikipedia.org/wiki/Micro-PROLOG