Sistema Experto Para El Diagnostico Medico de Enfermedades
April 18, 2017 | Author: Diana Grados Leyva | Category: N/A
Short Description
Download Sistema Experto Para El Diagnostico Medico de Enfermedades...
Description
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO DE ENFERMEDADES (SEDME) Integrantes: Grados Leyva Diana Elizabeth Grados Leyva Diana Lisset Docente:
Ing. Díaz Pulido José Arturo
2014
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
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.
Módulo de explicación .................................................................................... 6
1.3.6.
Módulo de adquisición.................................................................................... 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.
Introducción a Prolog ..................................................................................... 8
1.5.2.
Características de Prolog ............................................................................... 8
1.5.3.
Derivados de Prolog ....................................................................................... 9
1.6.
Java ...................................................................................................................... 9
1.6.1.
Introducción a Java ........................................................................................ 9
1.6.2.
Características de Java ................................................................................ 12
2. SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO DE ENFERMEDADES (SEDME) ........................................................................................................................... 13 2.1.
Planteamiento y Diseño....................................................................................... 13
2.2.
Implementación ................................................................................................... 14
3.
Ejecución ................................................................................................................... 18
4.
Referencias Bibliográficas .......................................................................................... 24
1
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
2 RESUMEN En la década de los 50’s Alan Turing comenzó a dar los primeros pasos en el área de Inteligencia Artificial utilizando el hardware desarrollado hasta ese momento. Tiempo después, Edwar Feigenbaum y otros programadores en la universidad de Stanford desarrollaron “Dentral”, este fue un sistema experto que tenía por objetivo estudiar un compuesto químico. 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 estreñimiento, 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 características que cumple como SE, es una buena herramienta para la preparación académica de estudiantes en medicina. La importancia del SEDME radica en la seguridad y la rapidez del diagnóstico, lo que trae reducción de costos al evitarle al paciente exámenes innecesarios produciéndose, por ende, un diagnóstico y tratamiento más oportuno. Palabras claves: Sistema experto, Prolog Java, MySQL, Enfermedad.
1. INTRODUCCION Con la rápida evolución de la tecnología, se han realizado avances notables para lograr mejorar la calidad de la salud de los seres humanos. Como era de esperar, en la salud también se han desarrollado sistemas expertos.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
El sistema experto descrito en este documento tiene dos objetivos, uno de ellos es permitir el correcto diagnostico a partir de los síntomas del paciente, y el otro es mostrar los posibles síntomas 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 informáticos.
1.1.
Sistema Experto Los Sistemas Expertos, rama de la Inteligencia Artificial, son sistemas informáticos que simulan el proceso de aprendizaje, de memorización, de razonamiento, de comunicación y de acción en consecuencia de un experto humano en cualquier rama de la ciencia. Estas características le permiten almacenar datos y conocimiento, sacar conclusiones lógicas, 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. Técnicamente 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 situación 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".
3
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
Un sistema experto es muy eficaz cuando tiene que analizar una gran cantidad de información, interpretándola y proporcionando una recomendación a partir de la misma. Un ejemplo es el análisis financiero, donde se estudian las oportunidades de inversión, dependiendo de los datos financieros de un cliente y de sus propósitos. Cuando el volumen de datos es muy elevado para obtener una conclusión, los sistemas expertos actúan llegando al resultado. Para detectar y reparar fallos en equipos electrónicos, se utilizan los sistemas expertos de diagnóstico y depuración, que formulan listas de preguntas con las que obtienen los datos necesarios para llegar a una conclusión. Para inferir posibles consecuencias a partir de una situación, mediante la predicción, como por ejemplo sistemas expertos para la predicción meteorológica. Cuando se necesita controlar un proceso tomando decisiones como respuesta a su estado y no existe una solución algorítmica adecuada, es necesario usar un sistema experto. un sistema experto puede evaluar el nivel de conocimientos y comprensión de un estudiante, y ajustar el proceso de aprendizaje de acuerdo con sus necesidades. En la depuración, los sistemas expertos se usan para escribir soluciones para funcionamientos erróneos, como por ejemplo en el desarrollo de software y circuitos electrónicos. Los sistemas expertos se aplican a una gran diversidad de campos y/o áreas. A continuación se listan algunas de las principales: Militar
Informática
Telecomunicaciones
Química
Derecho
Aeronáutica
Geología
Arqueología
Educación
4
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
1.3.
Electrónica
Transporte
Finanzas y Gestión
Medicina
Industria
Agricultura
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 clásica de representar el conocimiento en un sistema experto son lar reglas. Una regla es una estructura condicional que relaciona lógicamente la información contenida en la parte del antecedente con otra información 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 información del problema actual en la base de hechos. El sistema empareja esta información
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 módulo conocido como el motor de inferencia. Dicho motor de inferencia trabaja con la información 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:
5
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
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 acción. 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 interacción entre un sistema experto y un usuario se realiza en lenguaje natural. También es altamente interactiva y sigue el patrón de la conversación entre seres humanos. Para conducir este proceso de manera aceptable para el usuario es especialmente importante el diseño del interfaz de usuario. Un requerimiento básico del interfaz es la habilidad de hacer preguntas. Para obtener información fiable del usuario hay que poner especial cuidado en el diseño de las cuestiones. Esto puede requerir diseñar el interfaz usando menús o gráficos. 1.3.5. Módulo de explicación Una característica de los sistemas expertos es su habilidad para explicar su razonamiento. Usando el módulo del subsistema Generador de Explicaciones, un SE puede proporcionar una explicación al usuario de por qué está haciendo una pregunta y cómo ha llegado a una conclusión. Este módulo proporciona beneficios tanto al diseñador del sistema como al usuario. El diseñador puede utilizarlo para detectar errores y el usuario se beneficia de la transparencia del sistema. 1.3.6. Módulo de adquisición Permite que se puedan añadir, eliminar o modificar elementos de conocimiento en el SE. Si el entorno es dinámico es muy necesario, puesto que el sistema funcionará correctamente solo si se mantiene actualizado su conocimiento. También este módulo permite efectuar
6
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
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 pérdida de facultades con el paso del tiempo. Replicación: Una vez programado un SE lo podemos replicar infinidad de veces. Rapidez: Un SE puede obtener información de una base de datos y realizar cálculos numéricos mucho más rápido que cualquier ser humano. Bajo costo: A pesar de que el costo inicial pueda ser elevado, gracias a la capacidad de duplicación el coste finalmente es bajo. Entornos peligrosos: Un SE puede trabajar en entornos peligrosos o dañinos para el ser humano. Fiabilidad: Los SE no se ven afectados por condiciones externas, un humano sí (cansancio, presión, etc.). Consolidar varios conocimientos. Apoyo Académico. 1.4.2. Inconvenientes Sentido común: Para un Sistema Experto no hay nada obvio. Por ejemplo, un sistema experto sobre medicina podría 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 conversación 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 resolución de un problema.
7
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
Conocimiento no estructurado: Un SE no es capaz de manejar conocimiento poco estructurado.
1.5.
Prolog
1.5.1. Introducción a Prolog La Programación Lógica es un paradigma de computación que consiste de un enfoque declarativo para escribir programas para el computador. PROLOG es un lenguaje de computación basada en ese paradigma. Los programas lógicos pueden ser entendidos y estudiados a partir de dos conceptos: verdad y deducción lógica. En programación lógica, uno puede preguntarse si un axioma de un programa es verdad bajo alguna interpretación de los símbolos del programa y si ciertas declaraciones lógicas son consecuencia del programa. Esas preguntas pueden ser respondidas independientemente de cualquier mecanismo de ejecución concreto. Por otro lado, PROLOG es un lenguaje de programación con un significado operacional preciso que toma prestado sus conceptos básicos de la programación lógica. Los programas PROLOG son instrucciones para ejecutar sobre el computador. Esas instrucciones casi siempre son leídas como instrucciones lógicas y, lo más importante, el resultado de una computación de un programa PROLOG es una consecuencia lógica de los axiomas en éste. Es ampliamente aceptado que una programación efectiva en PROLOG requiere de una comprensión de la teoría de programación lógica, por lo menos en sus aspectos fundamentales, pero también que esto redunda en un mayor dominio del procesamiento de la información usando el computador. 1.5.2. Características de Prolog Las principales características del lenguaje de programación PROLOG son:
Basado en lógica y programación declarativa. No se especifica cómo debe hacerse, sino qué debe lograrse. Una característica importante en Prolog y que lo diferencia de otros lenguajes de programación, es que una variable sólo puede tener un valor mientras se cumple el objetivo. El programador se concentra más en el conocimiento que en los algoritmos. ¿Qué es conocido? (hechos, reglas). ¿Qué preguntar? (Cómo resolverlo).
8
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
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 características. El FRIL (Fuzzy Relational Inference Language) es una notable excepción, ya que basa explícitamente su sintaxis en él, sin ser no obstante plenamente compatible con el micro-PROLOG. Desarrollado en el seno de la Universidad de Bristol, la versión más reciente de este lenguaje es la 4.9, aunque desde 2003 no ha sido actualizado. Su continuador más 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 años con micro-PROLOG. Creado por el Grupo de Programación Funcional y Lógica, un equipo de trabajo integrado por docentes y alumnos de la Universidad Nacional de Luján y de la Universidad Nacional de la Pampa, ambas de Argentina, pretende superar los inconvenientes que plantea la utilización del habitualmente empleado interface SIMPLE y otros problemas observados en el aprendizaje que derivan de las características sintácticas propias del lenguaje, como el abundante uso de paréntesis o el formato rígido de algunas consultas. Dada la relación 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. También es aparentemente similar, aunque en mucha mayor medida, el Schelog, lenguaje que fusiona características del Scheme y del PROLOG.
1.6.
Java
1.6.1. Introducción a Java Java es un lenguaje desarrollado por Sun con la intención de competir con Microsoft en el mercado de la red. Sin embargo, su historia se remonta a la creación de una filial de Sun (FirstPerson) enfocada al desarrollo de aplicaciones para electrodomésticos, microondas, lavaplatos, televisiones... Esta filial desapareció tras un par de éxitos de laboratorio y ningún desarrollo comercial.
9
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
Sin embargo, para el desarrollo en el laboratorio, uno de los trabajadores 10 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 características. 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 estación de trabajo basada en Unix. También 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 también 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. ¿Cómo se come esto? Pues se coge el código fuente, se compila a un lenguaje intermedio cercano al lenguaje máquina 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 máquina virtual de Java. Este esquema lo han seguido otros lenguajes, como por ejemplo Visual Basic. Sin embargo, nunca se había empleado como punto de partida a un lenguaje multiplataforma ni se había hecho de manera tan eficiente. Cuando Java apareció en el mercado se hablaba de que era entre 10 y 30 veces más lento que C++. Ahora, con los compiladores JIT (Just in Time) se habla de tiempos entre 2 y 5 veces más lentos. Con la potencia de las máquinas actuales, esa lentitud es un precio que se puede pagar sin problemas contemplando las ventajas de un lenguaje portable. Orientación 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
programas. Desde el principio, la carrera por crear lenguajes de 11 programación ha sido una carrera para intentar realizar abstracciones sobre la máquina. Al principio no eran grandes abstracciones y el concepto de lenguajes imperativos es prueba de ello. Exigen pensar en términos del ordenador y no en términos del problema a solucionar. Esto provoca que los programas sean difíciles de crear y mantener, al no tener una relación obvia con el problema que representan No abstraen lo suficiente. Muchos paradigmas de programación intentaron resolver este problema alterando la visión del mundo y adaptándola 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, más generales, permiten realizar soluciones que, leídas, 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 características: Todo es un objeto. Cada elemento del problema debe ser modelado como un objeto. Un programa es un conjunto de objetos diciéndose entre sí que deben hacer por medio de mensajes. Cuando necesitas que un objeto haga algo le mandas un mensajes. Más concretamente, ejecutas un método 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 detrás 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 también un objeto de tipo Animal, se puede hacer código pensando en los mensajes que se mandan a un animal y aplicarlo a todos los objetos de ese tipo, sin pensar si son también gatos o no.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
1.6.2. Características de Java La principal característica de Java es la de ser un lenguaje compilado e interpretado. Todo programa en Java ha de compilarse y el código que se genera bytecodes es interpretado por una máquina virtual. De este modo se consigue la independencia de la máquina, el código compilado se ejecuta en máquinas virtuales que si son dependientes de la plataforma. Java es un lenguaje orientado a objetos de propósito general. Aunque Java comenzará a ser conocido como un lenguaje de programación 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 evolución ni de C++ ni un C++ mejorado. En el diseño de Java se prestó especial atención a la seguridad. Existen varios niveles de seguridad en Java, desde el ámbito del programador, hasta el ámbito de la ejecución en la máquina virtual Con respecto al programador, Java realiza comprobación estricta de tipos durante la compilación, evitando con ello problemas tales como el desbordamiento de la pila. Pero, es durante la ejecución donde se encuentra el método adecuado según el tipo de la clase receptora del mensaje; aunque siempre es posible forzar un enlace estático declarando un método 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 están referenciados. La máquina virtual de Java gestiona la memoria dinámicamente Una fuente común de errores en programación proviene del uso de punteros. En Java se han eliminado los punteros, el acceso a las instancias de clase se hace a través de referencias Además, el programador siempre está obligado a tratar las posibles excepciones que se produzcan en tiempo de ejecución. Java define procedimientos para tratar estos errores Java también posee mecanismos para garantizar la seguridad durante la ejecución comprobando, antes de ejecutar código, que este no viola ninguna restricción de seguridad del sistema donde se va a ejecutar
12
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
También cuenta con un cargador de clases, de modo que todas las 13 clases cargadas a través de la red tienen su propio espacio de nombres para no interferir con las clases locales Otra característica de Java es que está preparado para la programación concurrente sin necesidad de utilizar ningún 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 código nativo antes de poder ejecutar un método, pero gracias a la tecnología JIT, este proceso se lleva a cabo una única vez, después el código en código 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 Diseño 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 descripción de la enfermedad y las recomendaciones para dicha enfermedad. Este sistema también muestra los síntomas y recomendaciones de una cierta enfermedad que el paciente supuestamente cree tener. Para llegar a la solución, pasamos por diferentes etapas, las cuales se detallan a continuación: a. Búsqueda de información 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 información real de la descripción, síntomas y recomendaciones naturales para cada una de las enfermedades presentadas por el sistema. b. Modelado y Almacenamiento de la base de datos La información que hemos obtenido la almacenamos en una base de datos, para después poder adquirirlos mediante reglas hechas en prolog.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
c. Creación de Reglas e Instrucciones en Prolog 14 Debemos declarar las reglas e instrucciones en prolog. Para este proyecto hemos considerado diversas reglas para poder obtener los datos necesarios para una solución exitosa. d. Creación 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 interacción.
2.2.
Implementación 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 distribución de apache completamente gratuita y fácil 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 continuación se muestran algunas: Para la obtención del nombre y la descripción 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
concat('SELECT descripcion FROM enfermedades where nombre = "',Z,X). descrEnfermedad(NombreEnfermedad,X):consulta5(NombreEnfermedad,Consulta5), odbc_query('swiprolog',Consulta5, row(X)). Para la obtención 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 obtención de los síntomas 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.
15
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
Además en el archivo Principal.java hacemos la llamada a la clase 16 forName para acceder al driver de conexión, conectando mediante phpmyadmin mandando la bd, el usuario y la contraseña. Class.forName("com.mysql.jdbc.Driver"); con=(Connection)DriverManager.getConnection("jdbc:mysq l://localhost:3306/bddiagnostico","root",""); Pero si no hacemos la modificación correcta del controlador ODBC nos saldrá error al ejecutar la aplicación, por este motivo necesitamos modificarlo. Para ello seguimos los pasos que se encuentran en la siguiente página web: http://es.slideshare.net/diegotorres/23-prolog-con-base-de-datosmysql- paso-a-paso-17219728 Las interfaces de la aplicación comprenden 3 partes importantes: o Registro de clientes o Acceso al sistema o El sistema en sí. A continuación 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 permitirán acceder a nuestra base del conocimiento y así poder usar nuestro motor de inferencia para trabajar las consultas hechas.
3. Ejecución 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 atrás. Si no se realiza ningún tipo de consulta el botón “Descripción y Recomendaciones” se mantendrá bloqueado. Si damos clic en el botón “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 síntomas que presente el paciente, como se presenta a continuación.
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 botón “Descripción y recomendaciones”, como se muestra a continuación:
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
20
Fig. 6- Interfaz con la Enfermedad Diagnosticada. Ahora podremos consultar la descripción y recomendación para la enfermedad diagnosticada dando clic en el botón “Descripción y Recomendaciones” mostrándonos 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 descripción de cada enfermedad, mostrándonos también una interfaz diferente para cada descripción, así por ejemplo, se muestra a continuación para la enfermedad “Tuberculosis” obtenida en la interfaz anterior.
SISTEMA EXPERTO PARA EL DIAGNOSTICO MEDICO
22
Fig. 8- Interfaz de la Descripción de la Enfermedad Como hemos mencionado podemos hacer una consulta de tipo Encadenamiento hacia atrás, es decir, además de consultar la descripción podemos saber los síntomas de la enfermedad que supuestamente pensamos tener. Para esto damos clic en “Buscar Síntomas” 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 Después de seleccionar la enfermedad y dar clic en “Aceptar”, se mostrara la interfaz de la Fig. 6. Desde esta podemos obtener los síntomas 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
4. Referencias Bibliográficas -
http://www.informaticaintegral.net/sisexp.html
-
http://www.monografias.com/trabajos30/sistemas-expertos/sistemas-expertos.shtml
-
http://www.monografias.com/trabajos30/sistemas-expertos/sistemasexpertos.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
24
View more...
Comments