Necesito ayuda para implementar un programa que simule el diagnóstico de un médico según síntomas

Hola, soy Juan Hernández del DF. Pues la duda es la siguiente: Para Finalizar una materia del ultimo semestre de la universidad me piden entregar un programa que simule o que sea la base para un sistema experto, este tratara sobre medicina, el usuario dará síntomas y el programa responderá con diagnostico y medicación, la cuestión es que se algo de visual basic y C pero no tengo ni idea de como programar o crear esta interactividad con el usuario.. Me imagino que es como una base de datos...
Como te darás cuenta la ayuda que pido es enorme pero mi área son redes y telecomunicaciones y de programación CERO... Ojala tu u alguien que conozcas puedan ayudarme y de antemano millones de GRACIAS.

4 respuestas

Respuesta
1
Antes que nada, perdoname la demora y gracias por elegirme.
Existen lenguajes especiales (basados en reglas) para crear sistemas expertos, como clips, que luego se utilizan desde otros lenguajes (VB, C, etc.) que sirven como la interfaz entre el usuario y el sistema experto.
Obviamente, aprender esto te llevara tiempo (cuanto depende de vos), al igual que si te lo hayo yo mismo. Pero como tu carrera es de telecomunicaciones y redes me parece raro que te pidan programar un sistema experto (algo que en realidad es bastante complejo y para expertos).
Así que en realidad no se que quieres que te expliquen. Pasarte manuales de CLIPS, ¿VB o C?. ¿O entendí mal la pregunta?
Espero que te sirva de ayuda, no te olvides de ponerle puntaje a la respuesta.
Pues me piden el sistema experto porque es parte de la I.A. y me lo piden no´más por ching... osea que es la segunda vez que curso la materia por lo mismo, pero bueno, ya encontré un código muy bueno para el S.E.. De cualquier forma muchas gracias por responder. Atentamente. Juan.
Respuesta
1
Yo de C no conozco nada pero si de Visual Basic y no parece tan complicado.
Lo que te están pidiendo es un programa que busque en una base de datos tres valores coincidentes: Síntomas, diagnostico, enfermedad.
Necesitas crear de antemano (con Acccess por ejemplo) una base de datos de tres o más columnas. Seria una o más columnas de "Sintomas" (una columna por cada síntoma que se pueda pedir a usuario, una columna de "Diagnostico" (con el diagnostico específico a esos síntomas), y una última columna de "Medicación" (con la medicación acorde a los síntomas y diagnostico).
La base de datos no debe ser completada al azar, por el contrario cada fila (en horizontal) debe tener los síntomas, el diagnósico acorde a los síntomas, y la medicación acorde a los síntomas y el diagnostico. Quedaría más o menos así:
Sint1 | Sint2 | Sint3 | Diag | Med
Fiebre | Tos |Mareos | Gripe|WilpanC
Fiebre | Tos |Vomitos|Alergia|Vitam A
... y así. El programa le pide al usuario que elija de una serie de opciones disponibles el o los síntomas y el programa busca en la base la o las líneas que coincidancon esos síntomas, recoge el Diagnostico y la medicación del mismo renglón y lo muestra al usuario.
Es sencillo, lo difícil es programar el acceso a datos y la búsqueda, y crear y llenar la base de datos pues mientras más completa (o más síntomas puedas poner -yo use 3-) más específico sera el diagnostico.
El programa (la parte que ve el usuario) puede contener un ComboBox por cada sintomá que pueda definir (siguiendo mi ejemplo, serian tres ComboBoxs), u botón de buscar (que desencadenaría toda lo búsqueda en la base de datos) y un textBox donde mostrar el diagnostico y su medicación (o podes poner dos textboxs uno para cada uno, es igual). La parte visual no es difícil de hacer para nada.
Si tienes alguna otra pregunta mandala nomas.
Gracias por haber atendido mis suplicas, lo que me dices es muy bueno, pero justamente en la materia de I.A. se pondrán a prueba los métodos de búsqueda y acceso a la base de datos, justamente comencé a hacerla en access como me dices, pero, repito, la duda seguirá siendo el "como" explicarle al teacher como se esta haciendo la búsqueda y de que tipo y es allí donde esta el nervio que me jode todo esto, ojala y me puedas ayudar a resolver este problema. De Antemano Gracias. Atentamente Juan H.
No termino de entender lo que te pide el proesor. Una expicación tipo definición de cómo estas realizando la búsqueda, ¿o una descrippción de como codificaste la búsqueda?. En el primer caso no te puedo ayudar pero el profesor debe de haber dado definiciones en clase sobre el tema. En el segundo caso tendrías que programar el motor de búsqueda, describírselo y explicarle porqué elegiste hacerlo de esa forma.
Más sobre el segundo caso:
Primero, los síntomas en la base de datos deberán ser representados por números de esta manera la base erá mucha más pequea y fácil de revisar por el motor de búsqueda.
Segundo, la vas deberá estar ordenada de menor a mayor primero por el primer campo de síntomas y luego por el segundo y así por cada campo de síntomas. De esta forma todos las enfermedades de igual (o semejantes) síntomas estarán juntas. Esto es importante porque:
A. Si la base NO tuviera un orden: El motor de busquda tendría que ser programado para que revisara linea por linea, campo por campo, desde el primer dato hasta el ultimo en la base.
B. Si la base ESTA ordenada:
El motor de búsqueda puede ser programado para que:
1. Busque en la base el primer dato que cumpla con el primer síntoma.
2. Cuando lo encuentre, que busque más adelante en la base el primer dato que compla con el segundo síntoma (No me preocupa comprobar el primer síntoma pues si la tabla esta ordenada, ya estoy buscando en datos que cumplen con el primera síntoma).
3. A continuación busco el primer dato que cumpla el tercer síntoma.
(Sigo así hasta que busque cada síntoma. En este ejemplo uso 3 síntomas solamente.)
4.Cuando encuentre el primer dato de la base que cumple con el tercer síntoma tomo nota de su posisión en la base (digamos 205).
5. Busco el primer dato a continuación que NO cumple con el TERCER dato de la fila y tomo nota de su numero de orden en la base (digamos el 254)
6. Mando etraer de la base los datos desde el 205 a 253 (es 253 y no 254 pues el 254 es el primero que es distinto, o sea los datos son todos iguale desde el 205 al 253!)
Esta es -a mi parecer- una forma eficiente de obtener los datos que te interesan dentro de la base de datos. Sin tener que revisar todos y cada uno. Sobretodo si los datos son numéricos (por ejemplo, en ves de usar el síntoma FIEBRE en la base de datos pogo 1 y par DOLOR DE ESTOMAO pongo 2 y así sigo.) El el programa (específicamente en los combobox donde el usuario elije los síntomas SI muetro FIEBRE en lugar de 1).
Respuesta
Respuesta
Te comento que lo que pides es algo complicado explicar por este medio pero,
existen cosas básicas para desarrollar un proyecto
como lo son el diagrama de flujo de datos que nos ayuda a entender el problema y tener en claro las entradas y salidas que nos proporciana en problema en si, una vez entendido y cubierto todos lo huecos nos planteamos a dibujar el D.E.R. diagrama entidad relación que nos ayuda a derivar a tabla.
Luego viene el diseño y el pseudo código. Terminado todo esto puedes a empezar a programa en cualquier lenguaje.
Es un poco de análisis e Ingeniería.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas