Tesis Electrónicas UACh - Universidad Austral de Chile

Anuncio
Universidad Austral de Chile
Facultad de Ciencias de la Ingeniería
Escuela de Ingeniería Civil en Informática
"DISEÑO E IMPLEMENTACIÓN DE UN PROTOTIPO DE
SOFTWARE, FUNDAMENTADO EN UN SISTEMA BASADO EN
CONOCIMIENTO, PARA APOYO AL DIAGNÓSTICO MÉDICO EN
PACIENTES QUE PRESENTAN DEPRESIÓN".
Tesis para optar al Título de:
Ingeniero Civil en Informática.
Profesor Patrocinante:
Sr. Martín Solar.
Ingeniero Civil Industrial.
Magíster en Administración de Empresas.
Profesor Co-Patrocinante:
Sra. Gladys Masilla Gómez.
Ingeniero Matemático.
Analista de Sistemas.
Magíster en Estadística.
Profesor Informante:
Sra. Melina Miranda
Psicóloga.
MARÍA ANGÉLICA AGUILAR CAMPOS
VALDIVIA - CHILE
2007
AGRADECIMIENTOS
Agradezco a Dios por haberme ayudado a realizar y dar término dichosamente mi
Tesis de grado, y por estar conmigo siempre en los momentos de estudios.
Agradezco a mis padres por su gran amor, por inculcarme principios cristianos, para
valorar mi vida como persona y estudiante. A mi madre Angélica, quien me apoyó en
momentos difíciles dándome consejos, enseñándome a tener fe en Dios en todo lo que
realice. A mi padre Alberto, dedicando su vida con esfuerzo al trabajo para darme una
formación profesional, y así lograr esta meta. A mi hermano Alberto, quien me enseñó a
confrontar con firmeza los obstáculos que se presentaban en mi camino, dándome ánimo
para no decaer, y seguir adelante para poder lograr visiones emprendedoras.
A mis tíos, Haydeé y Marcos, quienes fueron primordiales en el proceso de desarrollo
de mi tesis, siempre estuvieron apoyándome para tomar buenas decisiones en situaciones
que debía enfrentar. A mi abuelita Haydeé, por sus oraciones, que a través de ellas
encomendaba a Dios las peticiones de mi corazón.
A mis profesores, Martín Solar y Gladys Mansilla que a pesar de la distancia me
apoyaron y se comprometieron con el desarrollo de este proyecto, al igual que la
psicóloga Melina Miranda del Policlínico de Psiquiatría.
Finalmente, agradezco a todas las personas que me entregaron palabras de aliento y
tendieron su mano cuando lo necesité, entre ellos, Sergio, Richard, Luis, Carlos,
Manuel y mis amigas incondicionales.
2
TABLA DE CONTENIDOS
TABLA DE CONTENIDOS…………………………………………………………....3
INDICE DE FIGURAS………………………………………………………………....8
INDICE DE TABLAS……………………………………………………………….….9
RESUMEN……………………………………………………………………………..10
SUMMARY…………………………………………………………………………….11
ORGANIZACIÓN DE LA TESIS…………………………………………………....12
CAPITULO I. INTRODUCCIÓN……………………………………………….…..13
1.1 Antecedentes generales…………………………………………………………...13
1.2 Objetivos a lograr………………………………………………………………....15
1.2.1 Objetivo general…………………………………………………………....15
1.2.2 Objetivos específicos………………………………………………….........15
1.3 Metodología……………………………………………………………………....16
CAPITULO II. FUNDAMENTOS SOBRE DEPRESIÓN Y DEL ENTORNO DE
SERVICIOS DE PSIQUIATRÍA Y SALUD LLANCHIPAL DE
PUERTO MONTT…………………………………………………...19
2.1 Antecedentes generales…………………………………………………………...19
2.2 Entorno de la aplicación en el Servicio de Psiquiatría……………...………….....24
2.2.1 Consideraciones para detectar un episodio depresivo………………………..24
2.2.2 Profesional médico, otorga servicio al Policlínico de Psiquiatría………....25
2.2.3 Fundamentos en atención a pacientes……………………………………...26
2.2.4 Sistema Actual del Servicio de Salud Público en atención primaria……….27
2.2.5 Sistema Actual del Servicio de Salud Público en atención secundaria……..27
2.2.6 Sistema Actual del Servicio de Salud Público en atención terciaria……….28
2.3 Entorno de la aplicación Servicio de Salud Llanchipal…………………….........30
2.3.1 Servicio Salud Llanchipal…………………………………………………..30
3
2.3.2 Objetivos del Servicio de Salud ……………………………………….…....32
2.3.3 Funciones del Servicio de Salud………………………………………….....32
2.3.4 Función del Hospital Base de Puerto Montt………………………………...33
2.3.5 Área Geográfica y Clasificación…………………………………….…………...33
2.3.6 Plataforma Hardware y Software del Servicio de Salud y Hospital
Base de Puerto Montt …………………………………………………………….34
CAPITULO III. ANÁLISIS DE LA TECNOLOGÍA COMPUTACIONAL -SBC…………………………………………………………………………35
3.1 Antecedentes generales..………………………………………………………… 35
3.1.1 Definición de SBC……………………………………..………………………...36
3.1.2 Historia sobre SBC………………………………….....................................39
3.1.3 La función de un SBC……………………………………………………….41
3.1.4 SBC y otras áreas de IA..…………………………………………………....41
3.1.5 Diferencias entre un Programa Convencional y SBC o SE…........................44
3.1.6 SBC o SE Pioneros……………………………………………….........................45
3.1.7 Ventajas y desventajas de los SE o BC………………………………….........46
3.1.8 SBC en tiempo real.……………………………………..…………………….…...47
3.2 Arquitectura de los SBC.………………………………………………...............48
CAPITULO IV. DESARROLLO DE LA HERRAMIENTA JESS -THE EXPERTS
SYSTEM SHELL FOR THE JAVA PLATAFORM………………………………………………………………..…..………....50
4.1 Antecedentes generales………………...…………………………………………50
4.2 JESS “Herramienta Poderosa”…………………………………………………. 51
4.3 JESS, Motor de Inferencia………………………………………………………..52
4.4 Interacción con JESS………… ………………………………………………….55
4.4.1 Aplicación JESS en el prototipo……………………………………............55
4
CAPITULO V. DISEÑO E IMPLEMENTACIÓN DEL PROTOTIPO PARA
APOYO AL DIAGNÓSTICO MÉDICO…………………………...58
5.1 Modelo……………………………………………………………………….........58
5.2 Arquitectura del prototipo………………………………………………………....60
5.3 Arquitectura de datos……………………………………………………………...65
5.4 Estructura de la base de datos relacional...…………………………………...........65
5.5 Modelo de Entidad/Relación……………………………………………………....67
5.6 Descripción de las tablas del prototipo…………………………………………....69
5.7 Implementación del prototipo……………………………………………………..72
5.7.1 Arquitectura del prototipo……………………………………………………....72
5.7.2 Control de acceso al prototipo……………………………………………………73
5.7.3 Pantallas gráficas de análisis y consulta..………………………………….75
5.7.4 Pantallas gráficas de servicios………………………………………...........75
CAPITULO VI. IMPLEMENTACIÓN DEL PROTOTIPO BASADOS EN
CONOCIMIENTOS………………………………………………….76
6.1 Antecedentes generales………...………………………………………………….76
6.2 Entorno del proyecto………………………………………………………...........77
6.2.1 Descripción de la solución para el desarrollo del prototipo………………..77
6.2.2 Funcionalidades primordiales del prototipo basados en SBC……………..79
6.2.3 Descripción de la funcionalidad del prototipo………………………………...79
6.2.3.1 Acceso al Sistema Prototipo……………………………………..........80
CAPITULO VII. CONCLUSIONES...........................................................................91
7.1 Conclusiones……………...…………………………………………..……….......91
7.2 Mejoras……………...…………………………………………..……...................94
CAPITULO VIII. BIBLIOGRAFIA...………………………………………………96
CAPITULO IX. ANEXOS…………………………………………………………..102
5
9.1 Anexo I. Plataforma Hardware / Software del Servicio de Salud y Hospital Base de
Puerto Montt………………………………………………………….102
9.1.1 Características de la plataforma hardware y software…………………..102
9.1.2 Topología de Red, Estrella…………………………………………………..103
9.2 Anexo II. Herramientas utilizadas para el desarrollo del prototipo………………104
9.2.1 Eclipse - Entorno Integrado de Desarrollo (IDE)………………………..104
9.2.1.1 Entrono de trabajo Eclipse, aplicación de reglas en JESS……...104
9.2.1.1.1 Procedimientos en aplicación de reglas en JESS…………….105
9.2.1.2 Entorno de trabajo Eclipse, proyecto Web………………………....109
9.2.1.2.1 Object Web Lomboz-Editor basado en la plataforma J2EE...109
9.2.2 Servidor Apache Tomcat- Servlet/ JSP……………………………………….112
9.2.3 Base de Datos desarrollada en MySQL…………………………………….112
9.2.4 Microsoft Office Visio 2003- Diagrama de modelo de base de datos…..113
9.3 Anexo III: Interfaces gráficas del sistema médico………………………………..115
9.3.1 Exámenes del paciente……………….………………………………………...115
9.3.1.1 Solicitud de exámenes………………………………………………115
9.3.1.2 Emisión de exámenes……………………………………………….116
9.3.1.3 Consulta de exámenes……………………………………………….117
9.3.2 Diagnósticos del paciente………………………………………………………118
9.3.2.1 Consulta de diagnósticos………………………………………...….118
9.3.3 Seguimientos del paciente…………………………………………………119
9.3.3.1 Consulta del seguimiento del paciente…………………………..119
9.3.4 Información del profesional médico…………………………………………....120
9.3.4.1 Consulta del Profesional médico……………………………………..120
9.4 Anexo IV: Código Fuente……………………….………………………………..122
9.4.1 Código fuente, aplicación JESS………………………………...………………..122
6
9.4.1.1 Código fuente de la clase RulesEnfermedades.java……………..……...122
9.4.1.2 Código fuente de la clase RulesHamilton.java…………….…………….126
9.4.1.3 Código fuente de la clase Enfermedades.java.…………….………….…127
9.4.1.4 Código fuente de la clase TestHamilton.java..…………….………….…128
9.4.1.5 Código fuente de la clase ProcessEnfermedades.java………………….129
9.4.1.6 Código fuente de la clase ProcessTestHamilton.java.………………….130
9.4.2 Código fuente, aplicación WEB……………………………...…………….……..131
9.4.2.1 Código fuente, válida usuario (Login Controler)….…………………….131
9.4.2.2 Código fuente, controlador paciente (Paciente Controler)…………...132
9.4.2.3 Código fuente,controlador diagnósticos (Diagnostico Controler)........135
9.4.2.4 Código fuente ,controlador JESS (JESS Controler)……………………. 141
9.4.2.5 Código fuente ,controlador prof.médico (Pmedico Controler)………...142
9.4.2.6 Código fuente ,DBCConection.java……………………………..………...144
9.4.2.7 Código fuente ,PmedicoBean.java……………………...………………145
9.5 Anexo V Evaluación y validación del proyecto de tesis.………..………………...147
9.5.1 Motivación para proyecto de tesis…………………………...…………….……..147
9.5.2 Restricciones a considerar…………………………...……………….…….…..…148
9.5.3 Comentarios………………..…………………………...……………….…….….….149
9.5.4 Certificado de validación y evaluación del proyecto de tesis………………….150
7
INDICE DE FIGURAS
Figura 1.3-1.-
Modelo Espiral, definido para el prototipo del proyecto de tesis.
Figura 2.2.4-1.-
Sistema Actual en atención primaria, Consultorios.
Figura 2.2.5-1.-
Sistema Actual en atención secundaria, Policlínico de Psiquiatría.
Figura 2.2.6-1.-
Sistema actual en atención terciaria, Hospital Base de Puerto Montt.
Figura 2.3.5-1.-
Red Asistencial del Servicio de Salud Llanchipal.
Figura 3.1.1-1.-
Campos de aplicación de estos sistemas.
Figura 3.1.2-1.-
Integración de programación de SBC o SE.
Figura 3.1.4-1.-
Áreas involucradas en IA.
Figura 3.1.4-2.-
Esquema jerárquico de conceptos vitales.
Figura 3.2-1.-
Arquitectura de los SBC.
Figura 4.2-1.-
Referencia a hechos y reglas, en JESS.
Figura 4.3-1.-
Mecanismo de Inferencia, encadenamiento hacia adelante.
Figura 4.3-2.-
Mecanismo de Inferencia, encadenamiento hacia atrás.
Figura 4.4-1.-
Aplicación de JESS en uso del Prototipo.
Figura 5.2.1.-
Sistema Actual en el Servicio de Psiquiatría.
Figura 5.2.2.-
Arquitectura global del prototipo propuesto.
Figura 5.2.3.-
Arquitectura de tecnología de SBC, prototipo propuesto.
Figura 5.5-1.-
Diagrama de Entidad / Relación.
Figura 5.7.2-1.-
Diagrama de Flujo del control de acceso al prototipo.
Figura 6.2.3.1-1.- Página de bienvenida al ingresar al Sistema Médico.
Figura 6.2.3.1-2.- Página de validación de usuario.
Figura 6.2.3.1-3.- Página de validación de usuario incorrecto.
Figura 6.2.3.1-4.- Página principal del Software Médico.
Figura 6.2.3.1-5.- Interfaz del Software Médico y sus opciones.
8
Figura 6.2.3.1-6.-
Página de validación de paciente.
Figura 6.2.3.1-7.-
Página de validación de paciente incorrecto.
Figura 6.2.3.1-8.-
Página de Ficha Clínica del paciente.
Figura 6.2.3.1-9.-
Interfaz del Software Médico visualizando menú Diagnósticos.
Figura 6.2.3.1-10.- Página de ingreso de Diagnósticos, Tratamientos y Observaciones.
Figura 6.2.3.1-11.- Página de rendición del Test de Hamilton.
Figura 6.2.3.1-12.- Página de detección de un Episodio Depresivo.
INDICE DE TABLAS
Tabla 3.1.2-1.- Breve historia de las etapas en aplicaciones con SBC o SE.
Tabla 3.1.5-1.- Diferencias Principales de los SBC. [GAL06]
Tabla 3.1.6-1.- Referencia a los principales Sistemas Expertos.
Tabla 3.1.7-1.- Descripción de las ventajas y desventajas de los SBC.
Tabla 5.7.1-1.- Páginas de acceso y validación de ingreso al sistema.
Tabla 5.7.1-2.- Páginas de desplazamiento dentro del prototipo.
Tabla 5.7.1-3.- Página de ayuda del prototipo.
9
RESUMEN
El proyecto de tesis está enfocado al Servicio de Salud Pública. Debido al
progresivo interés que surge en la actualidad, es necesario vincular la inteligencia
humana con el crecimiento tecnológico. Por ende, se ha determinado como objetivo de
trabajo de titulación, diseñar e implementar un prototipo de software médico en el
Servicio de Psiquiatría del Hospital Base de Puerto Montt, para apoyar al profesional
médico en el diagnóstico en pacientes que presentan Depresión.
Actualmente, no existe una herramienta de software médico para apoyar el
pensamiento clínico del profesional. Otorgar un diagnóstico con exactitud, es un gran
desafío, debido a los parámetros que hay que considerar. En el Servicio de Psiquiatría,
en atención secundaria, para detectar un paciente con depresión, se apoya en
consideraciones clínicas: anamnesis (antecedentes personales, familiares), exploración
física y psicológica, además, instrumentos de medición (test), para la determinación de
los comportamientos corporales y mentales. Incorporar la herramienta, beneficia al
médico en la toma de decisiones, evitando incertidumbre al momento de entregar el
diagnóstico al paciente. Los “Episodios Depresivos”, se encuentran bajo el código F32
de la CIE-10 (Décima Revisión de la Clasificación Internacional de Enfermedades).
Orientado al área de Inteligencia Artificial, y bajo un paradigma de Sistema Basado
en Conocimiento, se representa el conocimiento mediante la construcción de reglas
adecuadas en relación a síntomas _ enfermedad.
10
SUMMARY
This project of thesis is focused on the Service of Public Health. Due to the
progressive interest that arises at present, is necessary link to the human intelligence
with the technological growth. Therefore, it has decided as aim of work of qualifications,
designed and to implement a prototype of medical software in the Service of Psychiatry
in the Hospital Base of Puerto Montt, to lean the medical professional in the diagnosis in
patients who present Depression.
Nowadays, a tool of medical software doesn’t exist to support the clinical thought of
the professional. To grant a medical diagnosis with accuracy to patients is a great
challenge, due to the parameters that it is necessary to consider. In the Service of
Psychiatry, in secondary attention, to detect a patient, it rests on clinical considerations:
anamnesis (antecedent’s personals, family), physical and psychological exploration,
besides, instruments of measurement (test), for the determination of the corporal and
mental behaviors. To include the tool benefits the doctor in the capture of decisions,
avoiding uncertainty the moment to deliver a diagnosis the patients. The “Depressive
Episodes” analysed, does encountered under a codes F32, of the CIE-10 (Tenth Review
of the International Classification of Diseases).
Focused inside the field of Artificial Intelligence, and under a paradigm of System
Based on Knowledge, does represent the knowledge by means of the construction of
rules adapted in relation symptom-disease.
11
ORGANIZACIÓN DE LA TESIS
Los capítulos iniciales acercarán al lector a un mayor conocimiento de la tecnología
utilizada para construir el sistema. Pasarán por investigaciones, métodos y desarrollos,
explicando el funcionamiento y módulos que conforman el prototipo.
Los capítulos son:
Capítulo I, Introducción: Se da a conocer los antecedentes generales, los objetivos a
lograr y la metodología utilizada.
Capítulo II, Fundamentos sobre Depresión y el Entorno del Servicio de Psiquiatría
y Servicio de Salud Llanchipal de Puerto Montt: Definiciones de episodios depresivos,
bajo código F32 de la CIE-10. Formas de proceder en atenciones al paciente, por parte
de los especialistas en salud mental. Referencias de la organización del hospital;
estadísticas, objetivos y funcionalidad.
Capítulo III, Análisis de la Tecnología Computacional “SBC”: Descripción de esta
tecnología desde sus inicios en 1960, hasta las últimas técnicas.
Capítulo IV, Desarrollo de la herramienta JESS “The Experts System Shell for The
Java Plataform”: Nociones de la herramienta, la importancia en aplicaciones de SBC.
Capítulo V, Diseño e implementación del prototipo: Herramientas, módulos, flujos
de información.
Capítulo VI, Implementación del prototipo basado en conocimiento: Se enfoca a la
herramienta utilizada JESS como motor de inferencia para extraer la información
consistente almacenada en la base de conocimiento.
Capítulo VII, Conclusiones: Mejoras y conclusiones del Sistema médico.
Capítulo VIII, Bibliografía: Referencias electrónicas y textos utilizados.
Capítulo IX, Anexos: Detalles sobre tecnologías empleadas, figuras y fragmentos de
código fuente.
12
CAPÍTULO I
INTRODUCCIÓN
1.1 Antecedentes generales
Hoy en día, relacionar la inteligencia humana con el crecimiento tecnológico ha
generado bastante interés, lo que constituye una de las mayores líneas de investigación
en diferentes áreas: industrial, financiera, educacional, medicina, etc. El hecho de
incorporar avances tecnológicos en el área de la IA
1
como son los SBC
2
o SE
3
en
aplicaciones que tienen lugar en el campo médico, es de gran apoyo al profesional, ya
que son capaces de simular los atributos de un experto humano en un área de
conocimiento especializado, logrando eficiencia y rapidez en los procesos. Estos SBC
permiten responder a preguntas y resolver problemas mucho más rápido que el experto
humano. Por ello, los sistemas son muy valiosos, en casos en los que el tiempo de
respuesta es crítico, además el conocimiento de varios expertos humanos pueden
combinarse, siendo más fiables al obtener un SBC o SE que concierta la sabiduría
colectiva de varios expertos en lugar de la de uno sólo.
Actualmente, en el Hospital Base de Puerto Montt, Servicio de Psiquiatría, carecen
de herramientas informáticas, debido a esto, la forma de gestionar es totalmente manual,
lo que constituye demoras y deficiencias en los procesos de control de información, por
ejemplo, la capacidad de atención secundaria, que es excedida por la gran demanda
existente de consultas médicas de pacientes que presentan depresión. Por otra parte,
gestionar manualmente puede generar pérdidas de información sobre los datos que
conciernen al paciente, provocando inseguridad al profesional médico en la toma de
decisiones al momento de diagnosticar un cuadro depresivo, sólo por no tener la sólida
_______________________
1
Inteligencia Artificial.
Sistemas Basados en Conocimientos.
3
Sistemas Expertos.
2
13
información. De este modo, se produciría inconsistencia en los datos y generaría
resultados incorrectos. En consecuencia, este es el punto sobre el cual se enfoca la
solución propuesta en la tesis, solución que aborda el problema incorporando un SBC
dentro del área de IA, estableciendo reglas adecuadas en relación a los síntomas y
enfermedad a través de la herramienta JESS 4, actuando como motor de inferencia e
ingresando las reglas apropiadas. Estas aplicaciones en el campo de medicina tienen
gran valor, por ende, apoyar el pensamiento clínico del profesional en la toma de
decisiones al momento de diagnosticar “Episodios Depresivos”, bajo un código F32 5 de
la CIE-10 6, contribuye en la orientación, logrando eficiencia y rapidez en los procesos
de diagnósticos y tratamientos en atención secundaria7. Además respalda a pacientes en
el momento de emitir un diagnóstico clínico, otorgando una mayor confianza, ya que el
sistema reúne casos clínicos similares al del paciente.
En consecuencia, el prototipo establecido debe examinar todos los aspectos que
incluyen un ciclo de vida de un proyecto de desarrollo. Por lo mismo, este proyecto de
tesis constituye un conjunto de actividades que certifica la integridad del modelo de
producto de software en las diversas etapas del ciclo de vida. Sin embargo, se decidió
planificar las etapas que compensan la necesidad y que ayudan a concretar el objetivo
general.
Parte primordial de este permanente mejoramiento en la gestión, es establecer el uso
más habitual de las tecnologías de información, tanto en la utilización de software y
sistemas de información como en el hardware que la respalda.
_________________________
4
The Experts System Shell for the Java Plataform, herramienta de desarrollo.
Código de Enfermedades de Salud Mental basadas en “Episodios Depresivos”.
6
Décima Revisión de la Clasificación Internacional de Enfermedades.
7
Consultas realizadas en policlínico, mientras que las primarias son realizadas en consultorios
5
14
1.2 Objetivos a lograr
Los objetivos a lograr se desglosan en dos puntos. El objetivo general, donde se
señala el propósito final de la tesis y los objetivos específicos que detallan los ítems
necesarios para conseguir el objetivo general.
1.2.1 Objetivo general
Diseñar e implementar un prototipo de software, fundamentado en un Sistema
Basado en Conocimiento, para apoyo al diagnóstico médico en pacientes que presentan
Depresión.
1.2.2 Objetivos específicos
1.
Investigar el estado actual de operación referente al proceso de diagnóstico en el
Policlínico de Psiquiatría del Hospital Base de Puerto Montt, e indagar sobre
software existentes.
2. Crear una base de datos, o base de conocimientos, precisa para el diagnóstico
médico en atención secundaria.
3. Construir reglas a partir de una base de conocimiento para realizar las inferencias
de acuerdo con los parámetros definidos en el sistema, diagnosticando la patología
bajo la relación síntoma – enfermedad.
4.
Diseñar e implementar un prototipo de software médico que asista al profesional
de atención secundaria.
5. Validar los resultados obtenidos con el prototipo, contrastándolos con los
diagnósticos emitidos por expertos en el área.
15
1.3 Metodología
La metodología a utilizar para el desarrollo de este proyecto esta basada en el modelo
espiral, que considera las siguientes etapas:
 Planificación: determina los objetivos, alternativas y restricciones de la
planificación del proyecto inicial, además de la recopilación de requisitos a partir de
una exploración general de las personas involucradas en el medio.
Verificar completamente el problema actual que atraviesa el Policlínico de
Psiquiatría del Hospital Base de Puerto Montt. Adjunto a esto, planificar los
comentarios del cliente 8.
 Análisis de Riesgo: en esta fase se realiza un análisis de alternativas e
identificación de riesgos, los análisis están basados en el levantamiento de los
requerimientos del sistema a desarrollar. Se recopiló información para establecer los
antecedentes requeridos por los médicos, mediante entrevistas, literaturas, en el
Servicio de Psiquiatría del Hospital Base de Puerto Montt, con el objetivo de
concretar el esquema que lo representa. Además, se realizó una investigación de las
tecnologías disponibles relacionadas con la solución propuesta. Por último, incluye
análisis de riesgo basado en la reacción del cliente, lo que genera un gran desafío.
 Ingeniería: en esta fase se desarrolla y valida el producto, es decir, se verifica el
prototipo inicial del software, prototipo del siguiente nivel hasta llegar al sistema
operacional. Se da asistencia tanto al encargado de desarrollo como al cliente, si el
análisis de riesgo indica que hay una incertidumbre en los requisitos, se usa la
creación de prototipos. Es necesario establecer que en esta fase de evaluación del
producto, el diseño, implementación, prueba y aceptación del sistema, cumplen un
rol primordial para el desarrollo y validación del prototipo de software médico,
apoyando al diagnóstico clínico. En este ciclo se define:
__________________________
8
Se refiere al Profesional Médico
16
- Diseño: se determina los elementos que se establecen en el prototipo de software
médico. Las especificaciones de diseño lógico y físico del sistema informático,
cumpliendo de esta forma los requerimientos de la etapa anterior. En el diseño
lógico se describen las entradas y salidas, procesos, modelo de datos y controles,
y en el diseño físico se establecen las especificaciones para el hardware, software
y bases de datos físicas, medios de entrada y salida, y procedimientos.
- Implementación: dentro de la etapa de Ingeniería, en la implementación, se
verifica los resultados obtenidos mediante la evaluación por parte del cuerpo
médico.
- Prueba y aceptación del sistema: en esta fase se evalúa la eficacia de la
herramienta en relación a los resultados de diagnósticos emitidos por el médico.
Estas pruebas se realizan con los médicos en donde se chequearán tiempos de
respuesta, como también la confiabilidad del sistema y de la información
entregada, obteniendo las conclusiones mediante la retroalimentación necesaria
que se obtuvo para optimizar la solución.
 Evaluación del cliente: en esta etapa el cliente evalúa los resultados del sistema, y
tiene el derecho de sugerir modificaciones. Lo que implica que sobre la base de los
comentarios del cliente se producen las fases de planificación y de análisis de
riesgo, además, en cada ciclo alrededor del espiral, la culminación del análisis de
riesgo resulta en una decisión de “seguir o no seguir”.
17
Se eligió para este prototipo de software médico el modelo en espiral, porque al
analizarlo se aproxima a una orientación más realista para el desarrollo de sistemas a
gran escala. Lo principal es que utiliza un enfoque evolutivo, permitiendo al
desarrollador y al cliente entender y reaccionar a los riesgos en cada nivel de progreso,
asimismo, usa la creación de prototipos como un mecanismo de reducción de riesgos.
Por último, este modelo espiral genera en cada iteración, sucesivas versiones del
software, cada vez más íntegras, que finalmente concluyen en el. (Ver figura 1.3-1).
Figura 1.3-1: Modelo Espiral, definido para el prototipo del proyecto de tesis.
18
CAPÍTULO II
FUNDAMENTOS SOBRE DEPRESIÓN Y DEL ENTORNO DE SERVICIOS DE
PSIQUIATRÍA Y SALUD LLANCHIPAL (LLANQUIHUE-CHILOÉ-PALENA)
DE PUERTO MONTT.
2.1 Antecedentes generales
Este proyecto de tesis está enfocado al Servicio de Salud Pública. Se decidió elegir
esta patología, “Depresión”, debido a que existe un alto porcentaje de personas que
padecen esta enfermedad del estado de ánimo. Muchas veces se vive con ella sin darnos
cuenta, y en consecuencia, provoca deterioros en la persona siendo a veces incurables.
Para tener una noción de su origen y significado, “Depresión” proviene del Latín
“Deprimiere” que significa hundimiento, bajo estado de ánimo.
Esta enfermedad abarca muchas definiciones, entre las cuales, se mencionan
algunas:
 La depresión es un desorden mental que afecta a las personas integralmente.
Afecta sus sentimientos, pensamientos y acciones.
 Se define como una enfermedad orgánica, donde muchos son síntomas psíquicos
afectando también la parte física.
 Desde el punto de vista clínico, se señala la diferencia entre síndrome depresivo
(Trastorno Depresivo) y síntomas depresivos. El síndrome depresivo se define como
un conjunto covariante de síntomas relacionados (estado de ánimo bajo, insomnio,
pérdida de peso, etc.). Este conjunto de síntomas requiere estabilidad y permanencia
en la vida del sujeto y, al mismo tiempo, interfiere en la vida del paciente. Sin
embargo, el síntoma depresivo (sentirse triste, bajos de ánimo), es frecuente en
nuestra sociedad y lo hemos experimentado la mayor parte de nosotros en algún
momento de nuestra vida sin que suponga la existencia de un cuadro clínico.
19
 Depresión, psicopatología de los tiempos modernos, en la actualidad se ve que la
gente se deprime más, es una especie de patología construida. Debido a que el
mundo de hoy, presenta exigencias, cambios, donde las personas están obligadas
adaptarse rápidamente a las situaciones que van deviniendo. Las manifestaciones de
síntomas depresivos se incrementan notablemente, e inciden en la cadena productiva
de nuestra sociedad. Es necesario que la gente esté y se sienta bien, que produzca,
que trabaje, es ideal no presentar síntomas, ni desgano, menos en las condiciones
laborales.
Cabe destacar que todas estas definiciones son válidas, pero se hará hincapié a una
definición de depresión que dice lo siguiente:
 Es un estado en el cual el alma del hombre es sacudida en todo su ser, llevándole a
la impotencia, a la desesperación y a la ansiedad. Una situación en donde solamente
el poder divino y la voluntad personal puede ayudarle a salir.
Existen diversos tipos de depresión. Sin embargo, para este proyecto de tesis, son
analizados algunos tipos de episodios depresivos, bajo el código F32 de la CIE-10, tales
como:
 Episodio Depresivo Leve (F32.0).
 Episodio Depresivo Moderado (F32.1).
 Episodio Depresivo Grave sin Síntomas Psicóticos (F32.2).
 Episodio Depresivo Grave con Síntomas Psicóticos (F32.3).
En los episodios depresivos típicos, el enfermo que las padece sufre un humor
depresivo, una pérdida de la capacidad de interesarse y disfrutar de las cosas, una
disminución de su vitalidad que lleva a una reducción de su nivel de actividad y a un
20
cansancio exagerado, que aparece incluso tras un esfuerzo mínimo. También son
manifestaciones de los episodios depresivos:
a) La disminución de la atención y concentración.
b) La pérdida de la confianza en sí mismo y sentimientos de inferioridad.
c) Las ideas de culpa y de ser inútil.
d) Una perspectiva sombría del futuro.
e) Los pensamientos y actos suicidas o de auto-agresiones.
f) Los trastornos del sueño.
g) La pérdida del apetito.
La depresión del estado de ánimo varía escasamente de un día para otro, y no suele
responder a cambios ambientales. La presentación clínica puede ser distinta en cada
episodio y en cada individuo. Las formas atípicas son particularmente frecuentes en la
adolescencia; en algunos casos, la ansiedad, el malestar y la agitación psicomotriz,
pueden predominar sobre la depresión. La alteración del estado de ánimo puede estar
enmascarada por otros síntomas, tales como irritabilidad, consumo excesivo de alcohol,
comportamiento histriónico, exacerbación de fobias o síntomas obsesivos preexistentes o
por preocupaciones hipocondríacas.
Para el diagnóstico de episodio depresivo de cualquiera de los tres niveles de
gravedad, leve, moderado y severo, habitualmente se requiere de una duración de al
menos dos semanas, aunque períodos más cortos pueden ser aceptados si los síntomas
son excepcionalmente graves o de comienzo brusco. Incluye:
 Episodios aislados de reacción depresiva.
 Depresión psicógena (F32.0, F32.1 ó F32.2).
 Depresión reactiva (F32.0, F32.1 ó F32.2).
 Depresión mayor (sin síntomas psicóticos).
21
Episodio Depresivo Leve (F32.0), ánimo depresivo, la pérdida de interés y de la
capacidad de disfrutar, y el aumento de la fatiga suelen considerarse como los síntomas
más típicos de la depresión, y al menos dos de estos tres deben estar presentes para
hacer un diagnóstico definitivo, ninguno de los síntomas debe estar presente en un grado
intenso, el episodio depresivo debe durar al menos dos semanas.
Un enfermo con un episodio depresivo leve, suele encontrarse afectado por los
síntomas y tiene alguna dificultad para llevar a cabo su actividad laboral y social, aunque
es probable que no las deje por completo.
Episodio Depresivo Moderado (F32.1), deben estar presentes al menos dos de los
tres síntomas más típicos descritos para episodio depresivo leve (F32.0). Es probable que
varios de los síntomas se presenten en grado intenso, aunque esto no es esencial si son
muchos los síntomas presentes. El episodio depresivo debe durar al menos dos semanas.
Un enfermo con un episodio depresivo moderado suele tener grandes dificultades para
poder continuar desarrollando su actividad social, laboral o doméstica.
Episodio Depresivo Grave sin Síntomas Psicóticos (F32.2), durante un episodio
depresivo grave, el enfermo suele presentar una considerable angustia o agitación, a
menos que la inhibición sea una característica marcada. Es probable que la pérdida de
estimación suicidio sea importante en los casos particularmente graves. Se presupone
que los síntomas somáticos están presentes casi siempre durante un episodio depresivo
grave. Deben estar presentes los tres síntomas típicos del episodio depresivo leve y
moderado, los cuales deben ser de intensidad grave. Sin embargo, si están presentes
síntomas importantes como la agitación o la inhibición psicomotrices, el enfermo puede
estar poco dispuesto o ser incapaz de describir muchos síntomas con detalle. En estos
casos está justificada una evaluación global de la gravedad del episodio. El episodio
depresivo debe durar normalmente al menos dos semanas, pero si los síntomas son
particularmente graves, y de inicio muy rápido, puede estar justificado hacer el
22
diagnóstico con una duración menor de dos semanas.
Durante un episodio depresivo grave no es probable que el enfermo sea capaz de
continuar con su actividad laboral, social o doméstica más allá de un grado muy
limitado.
Incluye:
 Episodios depresivos aislados de depresión agitada.
 Melancolía.
 Depresión vital sin síntomas psicóticos.
Episodio Depresivo Grave con Síntomas Psicóticos (F32.3), episodio depresivo
grave que satisface las pautas establecidas en F32.2, y en el cual están presentes además
ideas delirantes, alucinaciones o estupor depresivo. Las ideas delirantes suelen incluir
temas de ruina o de catástrofes inminentes de los que el enfermo se siente responsable,
las alucinaciones auditivas u olfatorias suelen ser en forma de voces difamatorias o
acusatorias, de olores a podrido o carne en descomposición. La inhibición psicomotriz
grave puede progresar hasta el estupor. Las alucinaciones o ideas delirantes pueden
especificarse como congruentes o no congruentes con el estado de ánimo.
Incluye episodios depresivos de:
 Depresión mayor con síntomas psicóticos.
 Depresión psicótica.
 Psicosis depresiva psicógena.
 Psicosis depresiva reactiva.
23
2.2 Entorno de la aplicación en el Servicio de Psiquiatría
2.2.1 Consideraciones para detectar un episodio depresivo
El diagnóstico de la Depresión se apoya en consideraciones clínicas. Incluyen:
 La historia clínica: realización de una anamnesis completa que contenga los
antecedentes familiares, personales, rasgos de personalidad y curva vital.
 Una exploración, realizando, un examen físico y psíquico.
 Pruebas complementarias para descartar otros procesos.
Es por ello que se debe realizar un fehaciente análisis, solicitando los respectivos
exámenes y antecedentes del paciente, esenciales para determinar dicha patología.
Actualmente, en el Hospital Base de Puerto Montt, Servicio de Psiquiatría, lo que se
realiza para detectar depresión a un paciente, es asesorarse en un test que consta de 21
preguntas, basado en el Test de Hamilton 9, efectuándose en el Consultorio, no así en el
Policlínico de Psiquiatría, aquí mas bien se confirma el test, mediante la entrevista
clínica. El examen físico evalúa los aspectos y actitudes del paciente. Por lo tanto,
ambos procesos sirven para analizar los comportamientos corporales y mentales.
Muchas veces es necesaria la solicitud de un examen de sangre, como tipo de
muestra. Estos exámenes son muy valiosos, ya que pueden descartar otras posibles
enfermedades.
Realizar y evaluar exámenes implica un control verdadero y seguro. De lo contrario,
dificultaría promover un juicio clínico en el profesional médico, entregando diagnósticos
y tratamientos inadecuados, repercutiendo negativamente en el paciente para el
mejoramiento de su salud.
_________________________
9
Test adaptado por los Drs. Raúl Riquelme y Mario Quijada de la Sociedad Chilena de Salud Mental.
24
2.2.2 Profesional médico, otorga servicio al Policlínico de Psiquiatría.
El detalle que entrega el departamento de Estadística del Hospital Base de Puerto
Montt es el siguiente: 20 son los especialistas que tratan enfermedades mentales, los
cuales lo conforman 7 psiquiatras (3 infantil/juvenil, 4 adultos), 6 psicólogos, 2
enfermeras y un médico general, además de un terapeuta y 3 asistentes sociales.
Sin embargo, se debe marcar la diferencia, que los médicos psiquiatras diagnostican
un cuadro depresivo y recetan medicamentos, mientras que psicólogos se enfocan más
en el tratamiento, a través de psicoterapia, término aplicado más en el ámbito de la
orientación dinámica (psicoanálisis, terapia humanista), mientras que "psicología
clínica" lo han aplicado los psicólogos cognitivo conductuales a su labor terapéutica. Sin
embargo, desde algunos puntos de vista se ha considerado a la psicoterapia como una
parte de la psicología clínica [COP99].
Dependiendo del estado del paciente, es importante la adecuada indicación de
medicamentos, una incorrecta dosis o fármaco inadecuado, podría producir alteraciones
o un desequilibrio en el organismo.
Por otra parte, la demanda de consultas para su atención fluctúa bastante. El
departamento de estadística confirma que se atienden aproximadamente una cantidad de
90 pacientes por semana en el Policlínico de Psiquiatría. Se detalla a continuación que:
 Psicólogos atienden aproximadamente a 40 pacientes/semana.
 Psiquiatras atienden aproximadamente a 50 pacientes/semana.
25
2.2.3
Fundamentos en atención a pacientes
Reconocer a pacientes que acuden a la consulta por un cuadro depresivo, constituye
a menudo un verdadero desafío. El diagnóstico en atención secundaria es complicado,
debido a distintos factores que se dan a continuación, según estudios emitidos por la
Sociedad Española de Medicina Rural y Generalista (Semergen), Sociedad Española de
Psiquiatría Biológica (SEPB) y la Sociedad Española de Psiquiatría (SEP), señalan:
 Falta de tiempo: en el Libro Blanco de la Depresión de 1997, se ha constatado que
un 65% de los médicos de atención primaria como secundaria dedican a esto, menos de
16 minutos en la primera visita de estos pacientes. Esto contrasta con los 45 minutos
que suele emplear el 42,07% de los psiquiatras.
 El enmascaramiento de la Depresión con otra enfermedad o sintomatología: en
el Libro Blanco de la Depresión, el 77% de los médicos de atención primaria como
secundaria señalan que este es el mayor problema para el diagnóstico.
 La inexistencia de pruebas complementarias o test de detección de laboratorio
que sean lo suficientemente específicos o con una buena relación costo _ eficacia,
para realizar el diagnóstico.
Hoy en día, el Sistema de Salud Pública presenta falencias, por ejemplo, es muy
común la falta de horas de atención para poder satisfacer la excesiva demanda de manera
rápida. El Módulo Computacional de Atención Abierta verifica la disponibilidad de
horas, quedando en manos del UCAE10 la determinación de solicitudes para que se les
registre la cita respectiva, lo anterior es poco flexible puesto que los establecimientos del
área no tienen capacidad de administrar los cupos que implícitamente el Hospital Base
de Puerto Montt define para ellos. Lo bueno es que el Policlínico de Psiquiatría trabaja
de forma independiente, la misma administración asigna la atención de horas, lo que
reduce la espera de una consulta médica.
_______________________
10
Unidad Consultorio Adosado a Especialidades
26
2.2.4 Sistema Actual del Servicio de Salud Público en atención primaria.
 Atención Primaria: pacientes que ingresan a consultorios, donde son atendidos
por un médico general. Se les realiza algunas preguntas, aplicando el Test de
Hamilton para ver su condición general. Dependiendo de la gravedad del paciente,
se deriva al Policlínico de Psiquiatría del Hospital Base de Puerto Montt. (Ver
figura. 2.2.4-1)
Médico general
analiza al paciente
Paciente
depresivo
Figura 2.2.4-1: Sistema Actual en atención primaria, Consultorios.
2.2.5 Sistema Actual del Servicio de Salud Público en atención secundaria.
 Atención Secundaria: pacientes que ingresan al Policlínico de Psiquiatría del
Hospital Base de Puerto Montt, donde son atendidos por psiquiatras, psicólogos,
enfermeras, paramédicos, asistentes sociales. En este punto, es donde se enfoca la
investigación del proyecto de tesis, en “atención secundaria”. Los pacientes
tratados tienen mayor severidad, por ende, se solicitan exámenes físicos y
psicológicos para confirmar el tipo de episodio depresivo que presentan. Estos
procesos, como se señaló anteriormente, sirven para analizar los comportamientos
27
corporales y mentales. (Ver figura.2.2.5-1).
Psiquiatra
analiza examen
Paciente depresivo
severo
Psicóloga
aplica test
psicológico11
Figura 2.2.5-1: Sistema Actual en atención secundaria, Policlínico de Psiquiatría.
2.2.6 Sistema Actual del Servicio de Salud Público en atención terciaria.
 Tercera Atención: pacientes que ingresan al Hospital Base de Puerto Montt, de
manera urgente, debido al extremo deterioro mental y físico de su persona.
_______________________
11
Se aplica test psicológico en atención secundaria, cuando el Psiquiatra lo solicita, y se realiza
psicoterapia a pacientes ya diagnosticados por el Psiquiatra.
28
Por lo tanto, es necesario hospitalizarlos rápidamente. Son muchos los especialistas
encargados de un seguimiento en sus comportamientos mentales y corporales.
Si los síntomas son de gran intensidad, implica mayor duración en su recuperación,
para lo cual se requiere un tratamiento muy riguroso y eficaz. (Ver figura. 2.2.6-1)
Paciente depresivo en
extremo deterioro
(alucinaciones)
Establecimiento
Hospitalario
Profesional
Médico analiza
ficha clínica del
paciente
Figura 2.2.6-1: Sistema actual en atención terciaria, Hospital Base de Puerto Montt.
29
2.3 Entorno de la aplicación Servicio de Salud Llanchipal
2.3.1 Servicio de Salud Llanchipal
El Servicio de Salud Llanquihue, Chiloé y Palena, fue creado por decreto ley Nº
2.763 del 03 de Agosto de 1979, comprende geográficamente, las provincias de
Llanquihue, Chiloé y Palena totalizando 41.329 Km2.
El Servicio de Salud Llanchipal, es una empresa estatal dependiente del Ministerio
de Salud, para los efectos de someterse a la supervigilancia de esta secretaría de Estado,
y así cumplir las normas políticas y de planes generales que ella aprueba.
Este organismo estatal trabaja funcionalmente descentralizado y dota de
personalidad jurídica, además de patrimonio propio para la realización de las referidas
actividades.
Esta superficie se extiende en un sector llano que es Llanquihue; otro insular que es
Chiloé y otro cordillerano que es Palena.
Considerando las tres provincias mencionadas anteriormente, la población rural es de
un 48,3%.
Los límites del Servicio de Salud Llanquihue-Chiloé-Palena, son:
- Al Norte con la provincia de Osorno.
- Al Este con la frontera Argentina.
- Al Oeste con el Océano Pacífico.
- Al Sur con la región de Aysén, del General Carlos Ibáñez del Campo.
Las ciudades a las que sirve este Servicio de Salud dentro de la provincia de
Llanquihue son: Puerto Montt, Puerto Varas, Llanquihue, Fresia, Frutillar, Calbuco,
Maullín, Muermos, Río Negro-Hualaihué, Cochamó. Dentro de la provincia de Palena
serían: Palena, Chaitén, Futaleufú, y de la provincia de Chiloé se encontraría: Ancud,
Castro, Quellón, Queilen, Achao y Río Negro-Hualaihué.
30
La actual estructura organizacional del Servicio de Salud Llanquihue-Chiloé-Palena,
corresponde a la organización interna de los Servicios Públicos descentralizados, que
considera solamente niveles de Dirección, Departamentos, Secciones, Oficinas, como lo
establece el artículo 29º de la Ley 18.575.
La Dirección del Servicio de Salud está a cargo de un Director, secundado por una
Subdirección Médica y una Subdirección Administrativa, dependiendo de la línea
técnica el Departamento de Programas sobre el Ambiente. De la línea administrativa
dependen los Departamentos de Finanzas, Recursos Físicos, Recursos Humanos,
Informática y Abastecimiento, a quienes le corresponde la supervisión, asesoría, control
y coordinación de los establecimientos dependientes para el cumplimiento de las
políticas, normas, planes, programas y directivas emanadas del Nivel Central.
Hoy el Servicio cuenta con 2.241 funcionarios, 13 hospitales más el Hospital Base
Puerto Montt, habiéndose entregado en 1987 y 1988, las postas y consultorios a las
municipalidades respectivas para su administración.
El servicio tiene además convenio para atención de beneficiarios con la Armada de
Chile y con el Hospital de Puerto Varas, además de tener a la Municipalidad de Calbuco
la lancha Ana María Juricic, y convenio con casi todas las ISAPRES, todas las mutuales
de seguridad y con otras instituciones públicas y privadas dan prestaciones de salud a sus
afiliados, en el ámbito del territorio de las tres provincias de su jurisdicción.
Las siguientes ciudades son abastecidas por el Servicio de Salud en la parte médica
y distribución de fármacos: Puerto Montt, Puerto Varas, Llanquihue, Fresia, Frutillar,
Calbuco, Maullín, Palena, Chaitén, Futaleufú, Ancud, Castro, Achao, Quellón.
Actualmente, la dirección de este Servicio de Salud Llanchipal se encuentra ubicado
en calle Copiapó Nº 180 de la ciudad de Puerto Montt.
La red pública de salud de Chile cuenta con 19 hospitales de tipo 1, 34 hospitales de
tipo 2, 23 hospitales de tipo 3 y 100 de tipo 4. Todos los hospitales, incluidos los
institutos, se clasifican en cuatro tipos (1-2-3-4), sobre la base de los siguientes factores:
31
- Grado de complejidad técnica y nivel de desarrollo de especialidades.
- Grado de desarrollo de organización administrativa.
- Ámbito geográfico de acción, acorde con el sistema de complementación
asistencial.
- Número de prestaciones tales como consultas, egresos y otros.
El Hospital Base Puerto Montt se encuentra clasificado como tipo 1, por su alto
grado de complejidad técnica en el desarrollo de organización administrativa.
Esta documentación es dada por el jefe del departamento de estadísticas del Hospital
Base de Puerto Montt, Sr. Eleacer González.
2.3.2. Objetivos del Servicio de Salud.
La organización del Sistema Nacional de Servicios de Salud ha sido concebida para
que los establecimientos que lo conforman otorguen al paciente una atención integral,
mediante la complementación entre niveles asistenciales de complejidad creciente.
En consecuencia, la coordinación entre esos distintos niveles y la uniformidad de
criterios en el desarrollo de las actividades, son fundamentales para contribuir con
eficiencia la tarea.
2.3.3 Funciones del Servicio de Salud.
- Fomento de la Salud: son las acciones y medidas que tienden a mantener o
aumentar la salud del individuo, promoviendo su mayor desarrollo físico y
mental.
- Protección de la Salud: su objetivo es la creación, prevención y mantención de
la salud, suprimiendo los riesgos.
32
- Recuperación de la Salud: su finalidad es devolver la salud de los individuos
que la han perdido, en el plazo más corto, de manera de integrarlos a la
colectividad lo antes posible, considerando que forman parte del proceso
productivo del país.
- Rehabilitación de las personas enfermas: estas acciones tienen por finalidad
encarar el proceso educativo y de aprendizaje, tanto de las normas de
conductas, como también a facilitar la participación consciente de la comunidad
en las acciones y programas de las actividades de la salud.
2.3.4. Función del Hospital Base de Puerto Montt.
El Hospital Base de Puerto Montt constituye la principal unidad ejecutiva y
funcional del Servicio de Salud Llanquihue-Chiloé-Palena, y es el encargado de realizar
todas o algunas actividades de recuperación, fomento y protección de la salud y de
rehabilitación de personas enfermas mediante atención cerrada, abierta de especialista a
pacientes referidos y de emergencia.
Pero para tal efecto, debe existir una coordinación de este hospital y los demás, que
permita especialmente la atención oportuna de todos los pacientes que no puedan ser
atendidos en aquellos hospitales que no cuentan con la infraestructura adecuada, ni con
la especialización requerida del caso.
2.3.5 Área Geográfica y Clasificación.
Le corresponde al Hospital Base de Puerto Montt abarcar la misma área geográfica
que tiene el Servicio de Salud, esto es: todas las ciudades y poblados de las provincias de
Llanquihue, Chiloé y Palena, debido a que es el único establecimiento clasificado en
Tipo 1 o de alta complejidad.
El Servicio de Salud de Puerto Montt, hospital de mayor complejidad (Tipo 1), 7
hospitales de menor complejidad (Tipo 4), 6 consultorios periféricos urbanos, 6
33
consultorios periféricos rurales, 57 postas rurales y 73 estaciones de salud rural. Cabe
destacar que sólo los consultorios y las postas de salud rural dependen
administrativamente de la Municipalidad, técnicamente de la Dirección del Servicio de
Salud. (Ver figura. 2.3.5-1)
Servicio de Salud Llanchipal
Hospitales
Tipo 1, Mayor Complejidad
Hospital Base de Puerto Montt
Consultorios
Urbanos y Rurales
Postas Rurales
Estaciones de
Salud Rurales
Tipo 4, Menor Complejidad
Otros Hospitales
Figura 2.3.5-1: Red Asistencial del Servicio de Salud Llanchipal.
La misión del Hospital Base de Puerto Montt, es solventar las necesidades de salud
de la población beneficiaria de la provincia de Llanquihue, Chiloé y Palena, con una
orientación exhaustiva y humanizada, utilizando los recursos disponibles en forma eficaz
y eficiente, realizando sus funciones orientadoras, reguladoras y asistenciales en áreas de
educación, prevención, recuperación y rehabilitación de las personas, y de protección del
medio ambiente, apoyando además en la formación de profesionales y técnicos del área
de la salud.
2.3.6 Plataforma Hardware / Software del Servicio de Salud y Hospital Base de
Puerto Montt.
El Servicio de Salud_Hospital Base de Puerto Montt están conectados a través de
una línea dedicada ADSL de 1 Mbps. Ambas entidades cuentan con una red
computacional con topología de estrella. [Ver Anexo I].
34
CAPÍTULO III
ANÁLISIS DE LA TECNOLOGÍA COMPUTACIONAL -SBC-.
3.1 Antecedentes generales
Existen muchas formas de definir el campo de la IA, una de ellas, es el estudio de
las computaciones que permiten percibir, razonar y actuar, siendo una de las áreas
encargadas de la creación de hardware y software que tenga comportamientos
inteligentes; dentro de lo que se entiende por IA, es de gran importancia como rama de
la Ingeniería y como un tipo de Ciencia.
A. Barr y E. A. Feigenbaum, pioneros de la investigación en IA, expresan la
siguiente definición:
 La Inteligencia Artificial es la parte de la Ciencia que se ocupa del diseño de
sistemas de computación inteligentes, es decir, sistemas que exhiben las
características que asociamos a la inteligencia en el comportamiento humano que se
refiere a la comprensión del lenguaje, el aprendizaje, el razonamiento, la resolución
de problemas, etc.
Hoy en día, el campo de la IA engloba varias áreas tales como los sistemas expertos,
la demostración automática de teoremas, el juego automático, el reconocimiento de la
voz y de patrones, el procesamiento del lenguaje natural, la visión artificial, la robótica,
las redes neuronales. El poder construir, diseñar y adquirir máquinas capaces de ejecutar
procesos con cierto grado de inteligencia, ha sido para los científicos uno de los
propósitos más primordiales y preocupante a lo largo de la historia.
Primeramente, el esfuerzo se enfocó a la creación de autómatas, máquinas que
realizan funciones propias del ser humano con mayor o menor éxito.
35
Sin embargo, la disponibilidad de herramientas y lenguajes de programación
diseñados exclusivamente para el desarrollo de máquinas inteligentes, contrasta el
problema de que estas máquinas que se implementan sobre computadoras establecidas
bajo la filosofía funcional expuesta por Von Neuman, apoya una representación
secuencial del proceso de tratamiento de la información.
Es conveniente aclarar que la construcción de máquinas no se trata de reemplazar al
ser humano o experto, estas máquinas realizan funciones de tipo intelectual permitiendo
otorgar el apoyo al trabajo del mismo.
3.1.1 Definición de Sistemas Basados en Conocimientos.
Una de las ramas más importantes de la Inteligencia Artificial es aquella orientada a
desarrollar sistemas que repliquen las capacidades humanas de resolución de problemas
en dominios específicos, como la diagnosis de enfermedades, o la planificación de
procesos empresariales. Estos sistemas se han llamado tradicionalmente Sistemas
Expertos, aunque actualmente se los conoce como SBC, Sistema Basado en
Conocimiento, y han dado lugar a la Ingeniería del Conocimiento. Lo importante, es
que proporcionan una tecnología adecuada para automatizar procesos de razonamiento
para resolver problemas, en los cuales no es adecuada una metodología de computación
tradicional, porque estos poseen un tipo de implementación mezclando los
conocimientos con el procedimiento lógico, caso contrario sucede en los sistemas
basados en conocimientos, el aporte metodológico fundamental, es el concepto de
separación del conocimiento, organizada en una estructura denominada base de
conocimientos y el procedimiento lógico implementado en un motor de inferencia.
Existen distintas y numerosas definiciones de los SBC, desde las más simples hasta
las que tratan de explicar su complejidad. Algunas de estas definiciones se presentan a
continuación:
36
 Son sistemas informáticos capaces de simular los atributos de un experto humano
en un área de conocimiento especializado.
 Es un programa que soluciona problemas de alto nivel de complejidad y da
consejos en campo especializado. Por ejemplo, diagnóstico médico, diseño de
automóviles, investigaciones geológicas.
 Utiliza un “modelo computacional” del proceso de razonamiento del experto, y es
capaz de explicarlo.
 Un SE o SBC está basado en conocimiento, almacenados en una base de
conocimientos en forma separada al mecanismo de razonamiento, y utilizando un
método de representación, por medio de reglas, esquemas, átomos de
conocimiento, concepto asociado a una regla.
 Métodos cualitativos, generalmente se basan en el conocimiento heurístico de
“expertos” en el proceso o sistema. Este conocimiento se formula mediante
modelos cualitativos, estructurados mediante reglas.
 Un SE o SBC es adecuado para enfrentar un determinado problema si:
- Los expertos son capaces de explicar los métodos mediante los cuales
resuelven los problemas en su dominio.
- La naturaleza de los problemas requiere de manipulación simbólica.
- La formulación de soluciones requiere de habilidades cognitivas y
soluciones heurísticas.
Existen otras definiciones, según otros autores:
 Los SE son máquinas que piensan y razonan como un experto lo haría en una
cierta especialidad o campo, no sólo realiza funciones tradicionales de manejar
37
grandes cantidades de datos, sino que también manipula esos datos de forma tal
que, el resultado sea inteligible y tenga significado para responder a preguntas
incluso no completamente especificadas. [STE84]
A partir de ésta definición surgieron otras que se señalan a continuación:
 Un SE o SBC, es un sistema informático (software y hardware) que simula a los
expertos humanos en un área de especialización dada. [CAS91] [ALV91].
 Un sistema experto debería ser capaz de procesar y memorizar información,
aprender y razonar en situaciones deterministas e inciertas, comunicar con el ser
humano y/u otros sistemas expertos, tomar decisiones apropiadas y explicar
porque se han tomado tales decisiones. Además, se puede pensar en un sistema
experto como un consultor que puede suministrar ayuda a los expertos humanos
con un grado razonable de fiabilidad. [DUR94]
En la figura. 3.1.1-1 se observa los campos dominantes en los que se utilizan SE o
SBC.
.
Figura 3.1.1-1: Campos de aplicación de SE. o SBC.
Adaptado de Durkin (1994) - Castillo y Álvarez (1991)
38
3.1.2 Historia, sobre los Sistemas Basados en Conocimientos
Los primeros estudios y explicaciones teóricas sobre el cerebro y el pensamiento
fueron expuestos por antiguos filósofos griegos, Platón (427-347 a.C.) y Aristóteles
(384-422 a.C.), siguiendo la misma línea de ideas mantuvo Descartes (1596-1650) sobre
el proceso mental.
Allan Turing en 1936, fue el primero en estudiar el cerebro humano como una forma
de ver y relacionar el mundo de la computación.
A continuación, se presenta las etapas por las que ha pasado la ciencia I.A:
1.- El inicio (1956-1965) poniéndose principal énfasis en la implementación de
juegos en el computador (ajedrez, damas, etc.), así como en la demostración de
teoremas.
2.- Etapa obscura (1965-1970), aquí se apoya el entusiasmo por la I.A.
3.- Etapa del renacimiento de la I.A (1970-1975), iniciado en la Universidad de
Stanford con el sistema experto medico MYCIN (experto en enfermedades
infecciosas de la sangre como la meningitis).
4.- Etapa de las sociedades (1975-1980), se identifica la necesidad de trabajar en
sociedad con profesionales en otras áreas del conocimiento (Dendral = Mycin).
5.- Etapa de la comercialización de la I.A.
El estudio y desarrollo de los SE comenzó a mediados de la década del 60. Entre
1965 y 1972 fueron desarrollados varios de estos sistemas, muchos de ellos tuvieron un
alcance muy limitado, otros como MYCIN, DENDRAL y PROSPECTOR,
constituyeron la base histórica de los sistemas expertos; y aún en la actualidad son de
gran interés para los investigadores que se dedican al estudio y construcción de los
mismos.
39
A continuación en esta tabla se muestra los periodos con sus respectivos proyectos.
Tabla 3.1.2-1 Breve historia de las etapas en aplicaciones con SBC o SE.
Periodos
Proyectos
1960-1965
Primeras ideas
General Problem Solver
1965-1970
1970-1975
1975-1980
1980-1985
1985-1990
1990-1995
Razonamiento v/s Conocimiento
Conocimiento heurístico, específico
Primera generación, se combinan las ideas
Segunda generación
Entornos, inicio sistematización.
Madurez, sociedad del conocimiento,
metodologías
Dendral
Mycin
Mycin/Emycin
Prospector
KADS
CommonKADS
En teoría, estos sistemas son capaces de razonar siguiendo pasos comparables a los
que sigue un especialista (médico, biólogo, geólogo, matemático, etc.), cuando resuelve
un problema propio de su disciplina. El creador debe comenzar por identificar y recoger,
del experto humano, los conocimientos que éste utiliza: conocimientos teóricos, pero por
sobre todo, los conocimientos empíricos adquiridos en la práctica.
Por ser los sistemas expertos programas basados en conocimiento, la programación
de estos incluye como aspecto fundamental la programación del conocimiento (Ver
figura. 3.1.2-1), la cual hace uso de la representación explícita del conocimiento a
utilizar por el sistema y de su interpretación y manipulación lógica por medio de
mecanismos de inferencia, que permitan deducir nuevo conocimiento a partir del que ya
se conoce.
Figura 3.1.2-1: Integración de programación de SBC o SE.
40
Los SBC o SE son uno de los puntos que componen las investigaciones en el
campo de la IA. Un sistema de computación que trabaje con técnicas de IA deberá
estar en situación de combinar información de forma "inteligente", alcanzar
conclusiones y justificarlas al igual que el resultado final. Estos sistemas son una
expresión de los sistemas basados en el conocimiento. Con la aplicación de técnicas de
I.A, finaliza la transición del procesamiento de datos al procesamiento de
conocimientos.
3.1.3 La función de un Sistema Basado en Conocimiento o Sistema Experto.
La función primordial es aportar soluciones a problemas, como si de humanos se
tratara, es decir capaz de mostrar soluciones inteligentes. Es viable gracias que al
sistema lo crean con expertos, que intentan estructurar y formalizar conocimientos
poniéndolos a disposición del sistema, para que este pueda resolver una función dentro
del ámbito del problema.
Acceder a los conocimientos adquiridos por experiencia es lo más difícil, ya que los
expertos, al igual que otras personas, apenas los reconocen como tales. Son buscados
con mucho esfuerzo y cuidado, siendo descubiertos poco a poco.
3.1.4
Sistemas Basados en Conocimientos y otras áreas de Inteligencia Artificial
IA
Razonamiento
Conocimiento
.
Percepción
Movimiento
Restricción
General de
Problemas
Sistemas Basados
en Conocimiento
Planificación
Aprendizaje
Automático
Robótica
Visión
Artificial
Procesamiento del lenguaje
natural
Figura 3.1.4-1: Áreas involucradas en IA.
41
Los SBC son una de las áreas básicas en IA, relacionados con las capacidades
humanas de razonamiento y conocimiento. Por lo tanto, existe relaciones con:
• Representación de la información y conocimiento.
• Métodos de planificación que analizan diferentes estrategias para descomponer un
problema dado, resolver cada una de sus partes, y llegar a una solución final. La
interacción entre las partes dependerá del grado de desintegración del problema.
• Aprendizaje automático, razonamiento basado en reglas.
• Procesamiento del lenguaje natural, consiste en extraer tanta información como sea
posible de un texto escrito.
• Con aplicaciones financieras, industriales, corporativas crecientes, diagnósticos
médicos.
• La sociedad del conocimiento.
Definición de tres conceptos fundamentales (Ver figura. 3.1.4-2)
DATOS
INFORMACIÓN
CONOCIMIENTO
Figura 3.1.4-2: Esquema jerárquico de conceptos vitales.
• Datos: están formado por la evidencia o los hechos conocidos en una situación
particular. Este elemento es dinámico, es decir, puede cambiar de una aplicación a
otra, por lo tanto no es de naturaleza permanente y se almacena en la memoria de
trabajo. En situaciones deterministas, las relaciones entre un conjunto de objetos
pueden ser representadas mediante un conjunto de reglas.
42
• Información: son asociaciones funcionales implícitas entre datos en una
aplicación, la información almacenada en la base de conocimiento es permanente y
estática, es decir, no cambia de una aplicación a otra, a menos que se incorporen al
sistema experto elementos de aprendizaje.
• Conocimiento: se almacena en la base de conocimiento y consiste en un conjunto
de objetos y un conjunto de reglas que gobierna las relaciones entre esos objetos.
Las asociaciones funcionales explícitas entre elementos de información o de datos
en una aplicación, tiene como propósito la capacidad generativa de nueva
información.
Hay que diferenciar los conceptos entre dato y conocimiento, el conocimiento se
refiere a afirmaciones de validez general, tales como reglas, distribuciones de
probabilidad, y los datos se refieren a la información relacionada con una aplicación
particular, por ejemplo, en el caso de diagnóstico médico, los síntomas, enfermedades y
las relaciones entre ellos forman parte del conocimiento, los síntomas particulares de un
paciente dado, forman parte de los datos.
Mientras que el conocimiento es permanente, los datos son efímeros, es decir, no
forman parte del componente permanente de un sistema, y son destruidos después de
usarlos.
El conocimiento se almacena en la base de conocimiento y los datos en la memoria
de trabajo.
43
3.1.5
Diferencias entre un Programa Convencional y SBC o SE.
Tabla 3.1.5-1: Diferencias principales de los SBC. [GAL06]
Sistema Convencional
Sistema Experto
Conocimiento y lógica de proceso, mezclados
en un programa.
Base de conocimientos y mecanismos de
inferencia separados.
No se da explicación de la necesidad de los
datos, y tampoco del resultado en el que se
llegó.
Lo explican
Es difícil efectuar cambios en los
conocimientos programados.
Es más fácil modificar la base de
conocimientos.
Necesitan información completa para operar.
Deben ser más tolerantes para operar, aún
con alguna información desconocida.
Generalmente manejan datos cuantitativos.
Manejan datos cualitativos.
Captura, amplifica y distribuye el acceso a
datos numéricos o textuales.
Captura, amplifica y distribuye el acceso a
juicios basados en conocimientos.
El usuario define el conocimiento y además
debe definir cómo interacciona con el
conocimiento previo. Debe reestablecer la
secuencia de instrucciones de procesamiento,
conocimiento procedimental.
El usuario (experto) define el conocimiento
y el SBC lo integra en la aplicación
existente, conocimiento declarativo.
.
44
3.1.6 Sistemas Basados en Conocimientos o Sistemas Expertos, Pioneros
Entre los SE, inicialmente desarrollados, se destacan los siguientes:
Tabla 3.1.6-1: Referencia a los principales Sistemas Expertos.
DENDRAL
Determinación de la estructura de moléculas de química orgánica, a partir de
espectrografía de masas y otros datos Lindsay, Buchanan, Feigenbaum,
Lederberg (Universidad de Stanford, 1965)
INTERNIST
Para medicina interna (Pople y otros, 1975).
CASNET
Ayuda para el diagnóstico y tratamiento de glaucoma. Posee un modelo de
desarrollo de la enfermedad. (Weiss y otros, 1976).
MYCIN
Diagnóstico médico, que ayuda a determinar la identidad exacta de una
infección de la sangre, y a prescribir los antibióticos apropiados.
PUFF
Diagnóstico de infecciones pulmonares. (Edward Feigenbaum, 1977).
PROSPECTOR
Prospección minera: establece hipótesis sobre la existencia de yacimientos
Minerales. (Konolige, SRI Internacional, 1979).
MACSYMA
Cálculo Integral y Diferencial. Desde 1965 se trabajó en antecesores de este
Sistema Experto como SAINT, SIN y MATHLAB.
(Martín y Fateman, Massachusetts Institute of Technology, 1976).
R1 rebautizado
XCON
Configuración de Computadores Digital (Ejemplo: VAX 11), cumpliendo con
las necesidades del cliente y sometido a determinadas restricciones.
(John McDermott, Carnegie Mellon University for Digital Equipment Corp.,
1979).
45
3.1.7
Ventajas y Desventajas de los SE o SBC.
Tabla 3.1.7-1: Descripción de las ventajas y desventajas de los SBC.
Ventajas
Desventajas
- Conocimiento dependiente del dominio.
a) Siempre intentan resolver problemas,
aún fuera de su competencia
- Distribución de conocimiento escaso.
a) Conocimiento concentrado en pocos
expertos.
b) Deseable facilitar el acceso al
conocimiento.
- Facilidad de modificación del
conocimiento.
a) Imprescindible en dominios
cambiantes
- Carecen de conocimiento de sentido común.
a) A no ser que se incluya, lo que es difícil y
costoso.
- Consistencia de respuestas.
a) Distintos expertos, distintas
respuestas.
- Los algoritmos de inferencia para el caso
general son complejos y hay ciertos tipos
de problemas en los que bastaría un lenguaje
con algoritmos más sencillos.
- Preservación del conocimiento y
experiencia.
-Separación conocimiento
(reglas)/razonamiento (inferencia)
-Problemas para razonar con conocimiento
incierto, impreciso y subjetivo.
- Capacidad de solución de problemas
incompletos.
a) Proponen soluciones (parciales) a
problemas con datos inexactos.
- Explicación de solución.
a) Proporcionan explicaciones sobre
razonamiento y conocimiento.
b) Los usuarios comprenden y aprenden.
46
3.1.8
Sistemas Basados en Conocimientos en Tiempo Real.
Al evolucionar la metodología de los SE, de un arte hacia una ciencia, presentarán
problemas más exigentes y desafiantes. Por ende, algunos de los ambientes interesantes
son las tareas en operar en tiempo real. Cabe destacar, que un sistema se considera de
tiempo real, cuando garantiza procesar y responder dentro de un lapso de tiempo que ha
sido prefijado como parte de la definición del problema.
Los campos de aplicación son muy variados, por ejemplo en un sistema de
diagnóstico médico, o en un sistema integrado de ayuda a la toma de decisiones
empresariales. En cualquier caso, un SI12 partirá de unos datos y los convertirá en
información (conocimiento), de modo que ayude a tomar una decisión. Para convertir
los datos en información útil, empleará algoritmos de razonamiento, aprendizaje,
evolución, etc.
Además, el SI actuará siempre en tiempo real, lo que representa un aumento de la
productividad.
La complejidad de estos sistemas va incrementándose, y se puede medir sobre tres
dimensiones:
 Número de factores a considerar antes de tomar la decisión.
 Número de funciones a controlar.
 Velocidad a la cual debe ejercerse las funciones de entrada, decisión y control.
Una razón importante para aplicar SE a tareas de monitoreo y control en tiempo
real, es para reducir la excesiva carga de señales sobre operarios, los cuales por este
motivo pueden cometer costosos errores.
_________________________
12
Sistema de Información
47
3.2 Arquitectura de los Sistemas Basados en Conocimientos.
Figura 3.2-1: Arquitectura de los SBC.
A continuación se define en términos generales, la arquitectura de los SBC.
 Base de Conocimiento: los expertos deben brindar conocimientos aplicables al
dominio concreto, una base de conocimiento ordenada y estructurada, y un
conjunto de relaciones bien definidas y explicadas. Existen, reglas, marcos, redes
semánticas, redes bayesianas. Es un elemento estático.
 Motor de Inferencia: algoritmo para manipular los conocimientos y solucionar
problemas propuestos. El objetivo principal es obtener conclusiones aplicando el
conocimiento a los datos. Estas conclusiones pueden estar basadas en
conocimientos deterministas o probabilísticas. El tratamiento de situaciones de
incertidumbre (probabilísticas) puede ser considerablemente más difícil que el
tratamiento de situaciones ciertas (deterministas).
 Memoria de Trabajo: almacena datos proporcionados, objetivo propuesto y
resultados intermedios. Es un elemento dinámico.
 Interfaz de Usuario: es el enlace entre el sistema experto y el usuario. Como
48
entrada lo forman los datos, consultas y objetivos, y con respecto a la salida, lo
constituyen la representación y justificación de respuestas. Para que un sistema
experto sea una herramienta efectiva, debe incorporar mecanismos eficientes para
mostrar y obtener información fácil y agradable, por ejemplo, luego del trabajo
del motor de inferencia la información que se tiene que visualizar es el de las
conclusiones, razones de las mismas, y una explicación de las acciones iniciadas.
Cuando el motor de inferencia no puede concluir debido a la ausencia de
información, la interfaz de usuario es el vehículo para obtener la información
necesaria. Una implementación inadecuada de la interfaz de usuario disminuirá la
calidad de un sistema experto.
 Adquisición de Conocimiento: controla el flujo del nuevo conocimiento que
fluye del experto humano a la base de datos. El sistema determina que nuevo
conocimiento se necesita o si el conocimiento recibido es en realidad distinto.
Además es utilizado por el motor de inferencia cuando el conocimiento inicial es
muy limitado y no se pueden sacar conclusiones, este obtiene el conocimiento
necesario y continúa con el proceso de inferencia hasta que se hayan sacado
conclusiones. El usuario puede suministrar la información requerida para éste y
otros objetivos, para esto es necesario una interfaz de usuario y una
comprobación de consistencia de información suministrada por el usuario antes
de introducirla en la memoria de trabajo.
Señalado anteriormente, los primeros esfuerzos en IA estaban enfocados a encontrar
modelos de razonamiento sencillos y generales. Sin embargo, eran pocos los avances,
por ende, se inicia una parte importante dentro de la IA, los SBC, sistema informático,
con capacidad de razonamiento y resolución, limitado a un dominio concreto, además
establece una representación explícita del conocimiento para poder resolver problemas
entregando lo máximo de optimización en la solución.
49
CAPÍTULO IV
DESARROLLO DE LA HERRAMIENTA JESS “THE EXPERTS SYSTEM
SHELL FOR THE JAVA PLATAFORM”
4.1 Antecedentes generales
JESS13 es un motor de reglas en un ambiente de script, escritos netamente en la
lenguaje de Java
TM
de SUN MICROSYSTEM por Ernest Friedman-Friedman-Hill en
los laboratorios nacionales de Sandia en Livermore, CA. JESS fue inspirado
originalmente de los CLIPS14, pero ha crecido en un ambiente completo, distinto,
dinámico. Es pequeño, ligero, y uno de los motores más rápidos de la regla disponibles.
Usando JESS, se puede construir el software de Java que tiene la capacidad "de razonar"
con conocimiento que uno provee en la forma de reglas declarativas, además el lenguaje
JESS sigue siendo compatible con los CLIPS, en que muchas escrituras de JESS son
escrituras válidas de los CLIPS y viceversa. Como los CLIPS, JESS también utiliza el
Algoritmo de Rete15 para procesar las reglas, un mecanismo muy eficiente para
solucionar el problema que empareja múltiple dificultades. JESS agrega muchas
características a los CLIPS, incluyendo el encadenamiento hacia atrás, las preguntas de
la memoria de trabajo, que contiene los hechos representando conclusiones, hipótesis y
metas, la base de conocimiento, para almacenar el conocimiento embebido, construido o
diseñado dentro de un sistema experto, la agenda que reúne las reglas aplicables en un
estado dado de ejecución del sistema y la máquina de inferencia.
Además la capacidad de manipular y razonar directamente sobre los objetos de Java,
es decir crear los objetos de Java y llamar los métodos de Java sin la compilación de
_________________________
13
The Experts System Shell for the Java Plataform, herramienta de desarrollo.
Sistema shell o vacío, programado en lenguaje C.
15
Proceso de Unificación o Sustitución, infieren valores de las variables lógicas.
14
50
ningún código de Java. JESS permite representar el conocimiento como reglas, objetos,
y como hechos. Esta herramienta de desarrollo se define como sistemas vacíos,
representan y razonan modelando el comportamiento de los expertos humanos. Son
programas declarativos, describen lo que el computador debería hacer, más que la
instrucción sobre como hacerlo, y definen lenguajes procesales-orientados por objetoque proporcionan un flujo lineal de ejecución. La aplicación de shell, aumentan en gran
medida la eficiencia en la creación de SE o SBC.
Estos sistemas vacíos definen:
 Un lenguaje de representación de conocimiento.
 Proporcionan motor de inferencia.
 Definen e implementan primitivas de interfaz.
 Incorporan editor de base de conocimiento.
La importancia de los shell, es que ofrecen una considerable ayuda para la
construcción de prototipo, en este caso, representar el conocimiento mediante la
construcción de reglas adecuadas, en relación a los síntomas y enfermedades. Además,
es el procedimiento adecuado, pues posibilita una reacción rápida a los cambios, tanto
por parte de los expertos como del usuario. En consecuencia, se decidió utilizar esta
herramienta de desarrollo para aplicación del prototipo de proyecto de tesis.
4.2 JESS “Herramienta Poderosa”.
JESS, tiene la capacidad de crear funciones que se definen según la que se desee, esto
hace que la herramienta de desarrollo se destaque como un lenguaje de programación
completo. Por ejemplo, se puede escribir un programa, en el cual se pueda llamar XXXX
desde una función Java con JESS. Además, existen muchas posibilidades que JESS corra
en un servidor y que un interfaz gráfico en el lado cliente lo llame.
51
Es necesario enfatizar que como JESS utiliza este algoritmo especial llamado
“Rete”, que relaciona los hechos con las reglas, hace que JESS sea mucho más rápido
que una simple concatenación de sentencias if..then en un bucle. Aquí se puede
visualizar los hechos y reglas, en la memoria de trabajo. (Ver figura 4.2-1)
Figura 4.2-1: Referencia a hechos y reglas, en JESS.
4.3 JESS, Motor de Inferencia.
El motor de inferencia integra una colección de algoritmos de resolución de
problemas, codificado y probado. Señalado anteriormente, JESS como motor de
inferencia utiliza el algoritmo de Rete [FRIHI05], dando mayor eficiencia al
procedimiento de reglas.
El funcionamiento del proceso de inferencia es el siguiente:
 Detectar las reglas aplicables
 Elegir las reglas
 Aplicación de la regla
 Actualizar la base de conocimientos
 Repetir el ciclo hasta que no haya reglas aplicables
52
Al aplicar reglas al sistema se debe considerar que la base de conocimientos es la
que contiene el conjunto de reglas que definen el problema, y el motor de inferencia
obtiene las conclusiones de la base de conocimientos aplicando la lógica a estas reglas.
Como estrategia de inferencia existe el encadenamiento de reglas que se utiliza para
obtener conclusiones compuestas. Se usa cuando las premisas de ciertas reglas coinciden
con las conclusiones de otras. Cuando se encadenan las reglas, los hechos pueden
utilizarse para dar lugar a nuevos hechos. Esto se repite sucesivamente hasta que no
puedan obtenerse más conclusiones.
La representación de conocimiento basados en reglas, incluyen mecanismos de
inferencia. A continuación se presentan dos tipos de encadenamiento de reglas:
 Encadenamiento hacia adelante (Forward Chaining), guiado por los datos,
deductivo.
Estado Inicial
Conclusiones
Intermedias
Soluciones
Reglas y Hechos
Figura 4.3-1: Mecanismo de Inferencia, encadenamiento hacia adelante.
 Encadenamiento hacia atrás (Backward Chaining),guiado por los objetivos,
inductivo.
Estado Final
Conclusiones
Intermedias
Soluciones
Reglas y Hechos
Figura 4.3-2: Mecanismo de Inferencia, encadenamiento hacia atrás.
53
Por lo tanto, la representación del conocimiento, hace referencia a estos mecanismos
para representar y manipular la información. Los esquemas de representación resultantes
deben permitir una búsqueda o una operación eficiente de los mecanismos de inferencia.
Cabe destacar, que es importante controlar la coherencia del conocimiento, tanto en
la construcción de la base de conocimientos como durante los procesos de adquisición
de datos y razonamientos. Si la base de conocimientos contiene información
inconsistente (reglas y/o hechos), el SBC se comportará de manera insatisfactoria,
obteniendo conclusiones absurdas.
También existen tipos de reglas, tales como:
 Reglas de implicación: si antecedentes
 Reglas de activación: si condición
 Reglas causales: si causa
consecuente
acción
efecto
- deductivas
- puede emitirse incertidumbre.
 Reglas de diagnóstico: si efecto
posible causa
-
no deductivas (razonamiento basado en hipótesis)
-
existe incertidumbre.
Finalmente, el prototipo del proyecto de tesis, aplica en su motor de inferencia para
interpretar y evaluar los hechos de la base de conocimientos, la estrategia de búsqueda
de solución, un tipo de encadenamiento hacia atrás, siendo estas, reglas de activación.
(Ver Anexo II, Programa de ejecución) y (Ver Anexo III, Código fuente)
54
4.4 Interacción con JESS
4.4.1 Aplicación JESS en el prototipo
A continuación se muestra en la figura 4.4.1, la aplicación de JESS en el prototipo.
Apache_Tomcat
Servlets
Páginas JSP
B.D
MySQL
Usuario
Motor de
Inferencia
Base de
Conocimientos
Jess
(reglas)
Java
Figura 4.4-1: Aplicación de JESS en uso del Prototipo.
El prototipo propuesto para su aplicación debe realizar varios procedimientos, para
lograr la interacción de componentes con el sistema. Lo primero, es llegar a reunir la
información requerida. Se tuvo que localizar al experto, al profesional médico, que trata
enfermedades mentales, quien traspasará su conocimiento y experiencia al sistema. Para
retroalimentar esta base de conocimientos, el paciente otorga información mediante los
síntomas que presenta, otro influyente es cuando se realiza un test de 21 preguntas,
55
denominado Test de Hamilton, definido por la Sociedad Chilena de Salud Mental. A
partir de este test se examina psicológicamente al paciente, lo cual el médico infiere el
estado de los parámetros del habla, mental y memoria. Para una exploración física, se
observa el aspecto y la actitud del paciente. Además de pruebas adicionales, como es la
solicitud de exámenes requeridas por el médico en el policlínico de Psiquiatría,
generalmente solicitan el examen de sangre para verificar si la causa de presentar algún
cuadro depresivo fue provocada de una posible enfermedad. Toda esta recopilación de
información acerca del paciente es almacenada añadiéndose a la base de conocimiento,
teniendo una base irrefutable de los datos, donde el motor de inferencia como shell
extrae esta información y la representa mediante reglas, obteniendo conclusiones para
apoyar el criterio del profesional médico en la toma de decisiones, lo cual servirá para el
prototipo propuesto.
Cabe señalar que el diagnóstico médico combina dos formas de razonamiento:
 Utilizar síntomas conocidos para eliminar grupos de enfermedades, quedando
cierto números de clases de enfermedades posibles.
 Considerar las clases de enfermedades posibles, y tratar de confirmarlas
realizando preguntas por las demás manifestaciones no conocidas, y repetir en
forma iterativa el proceso hasta llegar a un candidato con mayor probabilidad.
La idea es considerar la primera forma de razonamiento, ya que el prototipo del
proyecto de tesis, relaciona los síntomas del paciente con sus respectivas intensidades y
duraciones, generando de este modo la clase de enfermedad posible que puede presentar
el paciente. Por lo tanto, se analizaron cuatro episodios depresivos bajo el código F32,
de la CIE-10, establecido por la psicóloga Melina Miranda, policlínico de Psiquiatría,
del hospital base de Puerto Montt, siendo estas las clases de enfermedades posibles.
56
La gracia es que al considerar esta forma de razonamiento, el profesional médico
pueda inferir mediante datos consistentes, concernientes al paciente, el diagnóstico
médico entregando compatibilidad de los síntomas con respecto a la enfermedad, y
validarlo con el resultado emitido por el sistema.
57
CAPÍTULO V
DISEÑO E IMPLEMENTACION DEL PROTOTIPO PARA APOYO AL
DIAGNÓSTICO MÉDICO
5.1 Modelo
Para poder interactuar con el modelo de solución propuesto en el Servicio de Salud,
Policlínico de Psiquiatría del Hospital Base de Puerto Montt, se determinó trabajar con
pantallas gráficas, desarrolladas en Macromedia Dreamweaver MX 2004, usando
páginas dinámicas Java Server Pages (JSP), simplificando el proceso de desarrollo con la
incorporación rápida de elementos dinámicos en páginas Web. Se utiliza el servidor Apache
Tomcat Versión 5.5.20, siendo el contenedor servlet, usado para la implementación de
páginas JSP. Es un open source, liberado bajo la licencia de software de Apache.
Referente al entorno de trabajo se usa el programa Eclipse, manejando los recursos del
usuario, organizados en uno o más proyectos. Cada proyecto corresponde a un directorio
de trabajo de Eclipse, conteniendo archivos y carpetas. Eclipse es un Entorno Integrado
de Desarrollo (IDE) abierto y extensible. El editor utilizado es Object Web Lomboz,
versión 3.1.2, es un open source, IDE para aplicaciones desarrolladas establecidas sobre
tecnologías basadas en la plataforma J2EE (Java Enterprise Edition).
El sistema debe ser amigable y claro para el usuario. A nivel técnico, debe
incorporar una conexión a una base de datos desarrollada en MySQL, enlazada a un
servidor de base de datos de MySQL, utilizando como editor SQLyog, libre MySQL
GUI versión 5.15, la cual será instalada en una estación de trabajo personal en el
Servicio de Psiquiatría, para luego poder validar el prototipo de software médico
propuesto como proyecto de tesis.
La implementación de este prototipo de software médico, señalado anteriormente se
realiza sobre una estación de trabajo particular, no de forma simultánea, por ende, no se
comparte en red.
58
Los requisitos de hardware y software, para el adecuado funcionamiento del
proyecto en el policlínico de Psiquiatría del Hospital Base de Puerto Montt, deben ser
como mínimo:
Cliente:
a) Software:

Internet Explorer versión 5.5 o superior.

Netscape 6.0 o superior.

Sistema Operativo, Windows 98 o superior.
b) Hardware:

64 MB RAM.

Pentium III o superior.

Conexión a Internet.
Servidor:
a) Software:

Apache Tomcat Versión 5.5.20.

Base de datos de MySQL.

Plataforma J2EE (Java Enterprise Edition).

Sistema Operativo, Windows XP.
b) Hardware:

256 MB RAM.

Pentium III o superior, 1 GHz.
59
5.2 Arquitectura del Prototipo
Es de gran responsabilidad lo que se desea obtener, dentro del contexto, se trabaja
mediante etapas o niveles de abstracción hasta los niveles expertos o técnicos. Lo
primordial, es que un nivel alto de abstracción tenga capacidad de cambiar herramientas
propias del sistema de información, sin afectar la arquitectura establecida. A medida que
se avanza en lo propuesto, es posible que se generen en el camino problemáticas, lo que
implica modificar la planificación sin que existan cambios en el nivel mayor de
abstracción, sólo en los niveles de referencias requeridas.
A continuación, se presenta la arquitectura de sistemas que involucra tres
componentes relacionados entre si: arquitectura de tecnología, arquitectura de datos y
arquitectura de aplicaciones.
 La figura.5.2-1, representa el sistema actual de gestión de manera manual en el
Policlínico de Psiquiatría. El diagrama muestra el flujo enviado de un usuario A
(profesional médico) hacia un usuario B (paciente) y viceversa.
Paciente
Profesional Médico
Figura 5.2-1: Sistema Actual en el Servicio de Psiquiatría.
60
 La figura.5.2-2 representa el prototipo de sistema basado en conocimientos
propuesto como solución. El diagrama muestra el flujo, en que el profesional
médico accede a la aplicación, no así el paciente, el paciente espera los resultados de
diagnósticos emitidos por el sistema, informándose mediante el médico.
Paciente
Aplicación o Prototipo SBC
Profesional Médico
Figura 5.2-2: Arquitectura global del prototipo propuesto.
El objetivo es que el modelo solución se circunscriba dentro de los lineamientos
estratégicos del Servicio de Psiquiatría de Puerto Montt.
A continuación en la figura 5.2-3, se detalla la arquitectura del SBC, prototipo
propuesto como solución, mostrando la interacción entre los componentes.
61
Servidor
Apache Tomcat
Experto
(Profesional
Médico)
Núcleo del sistema
Base de
Conocimientos
Java
Basados en
reglas.
Motor de
Inferencia
Adquisición del
conocimiento
JESS
Paciente
Memoria de
Trabajo
(hechos)
Base de
Datos
MySQL
Interfaz de Usuario
(Aplicación Web JSP)
Figura 5.2-3: Arquitectura de tecnología de SBC, prototipo propuesto.
Posteriormente, se define la arquitectura de tecnología SBC del prototipo propuesto:
 Interfaz de Usuario: relación entre usuario y ordenador. Se puede acceder al
sistema a través de pantallas gráficas, aplicado en un entorno Web, utilizando Java
Server Pages (JSP). Recordar que el usuario es el profesional médico, ya que sólo
ellos pueden acceder al sistema, no así el paciente, este puede consultar y/o
62
contribuir con la información añadiendo datos. En el caso de que el motor de
inferencia no pudiese concluir por falta de información, la interfaz de usuario sería
el vehículo para entregar la información necesaria. Por lo tanto, una
implementación inadecuada de la interfaz de usuario disminuiría la calidad del
sistema.
 Motor de Inferencia: se aplica como motor de inferencia la herramienta de
desarrollo JESS, asociado a reglas. Estas reglas como representación del
conocimiento son obtenidas de la base de conocimientos. El objetivo del motor de
inferencia es el de obtener conclusiones en relación a los síntomas/enfermedad,
aplicando el razonamiento a los datos, en este caso la lógica a estas reglas.
 Base de Conocimientos: al aplicar reglas al sistema se debe considerar que la
base de conocimientos contiene el conjunto de reglas que definen el problema. La
base de conocimientos se retroalimenta cada vez que se adquiera información del
experto, quien contiene el conocimiento sobre el dominio.
 Experto: su función es la de poner sus conocimientos especializados a
disposición del sistema. En este caso, el profesional médico.
 Memoria de Trabajo: es un elemento dinámico que almacena todos los hechos,
datos proporcionados. El usuario accede al sistema e introduce la información en
la base de hechos o memoria de trabajo. El sistema empareja esta información con
el conocimiento disponible en la base de conocimientos para deducir nuevos
hechos. En el prototipo propuesto se elige MySQL como estructura de la base de
datos.
Esta base de datos almacena registros de datos referentes al paciente (Ficha
clínica, exámenes, diagnósticos, tratamientos, etc.), datos del profesional médico,
clasificación de enfermedades, etc. Debe permitir la conexión con el servidor
Apache Tomcat 5.5.20. a la base de datos local MySQL.
63
 Adquisición del Conocimiento: controla el flujo del nuevo conocimiento que
fluye del profesional médico a la base de conocimiento. El sistema determina si el
conocimiento recibido es realmente nuevo.
 Servidor: se desarrolla bajo plataforma J2EE, utilizando la herramienta de
software Apache Tomcat 5.5.20.
Los parámetros considerados para creación del modelo propuesto son:
 Seguridad: La solución debe proveer un adecuado control de seguridad de
acceso a las aplicaciones.
 Conectividad con motor de bases de datos: La solución debe permitir
conectividad con el servidor de bases de datos MySQL, proporcionando
consistencia en los datos al realizar consultas.
 Rendimiento: La solución propuesta debe entregar tiempos de respuesta
aceptables.
64
5.3 Arquitectura de datos
Existen distintas maneras de crear las bases de datos. Dentro de las cuales están las
bases de datos fundamentadas en el modelo de red, base de datos jerárquicos, sistemas
de archivos con ISAM16 y base de datos relacionales.
Los tipos de bases de datos señalados no solo difieren en la manera de restaurar los
datos y gestionar físicamente el almacenamiento, sino además difieren en los modelos
conceptuales que muestran al programador y al usuario.
En el transcurso del tiempo, el modelo relacional se ha transformado en el estándar
para el diseño de bases de datos. Debido a la gran capacidad del propio modelo
relacional, entrega una interfaz estándar, como es el SQL17 , que permite trabajar de
manera clara, unida y entendible con infinidades de productos y distintas herramientas
de bases de datos, en este caso se aplica MySQL18. Es por ello que las bases de datos
relacionales son el tipo de bases de datos actualmente. Esto se debe fundamentalmente
a lo siguiente:
 Ofrecen sistemas simples y eficaces para representar y manipular los datos.
 Se basan en un modelo, relacional, con sólidas bases teóricas.
5.4 Estructura de una base de datos relacional
Las bases de datos están presentes en muchas aplicaciones, sobre todo en aquellas
que manejan grandes cantidades de información que deben ser almacenadas y
manipuladas de forma rápida y eficiente. Además, existen numerosas bases de datos
relacionales para distintas plataformas, algunas de ellas son: Access, Interbase,
Paradox, Oracle, Sybase, siendo ampliamente utilizables.
_________________________
16
17
18
Métodos de acceso secuencial indexado.
Structured Query Languaje
Open Source, más popular SQL sistema de gestión de base de datos
65
El modelo de base de datos relacional muestra los datos como una serie de tablas, la
estructura se especifica mediante el establecimiento de relaciones entre las tablas, en
lugar de organizar las relaciones de los datos acorde a la forma en que están físicamente
almacenados.
El almacenamiento físico de un archivo de la base de datos es independiente. Sin
embargo, las tablas se consideran como un conjunto de filas y columnas.
Con respecto a las relaciones, la base de datos puede estar formada por más de una
tabla y éstas pueden estar relacionadas entre sí de distintas maneras.
También existen las claves candidatas de una relación. Son conjuntos no vacío de
campos (atributos) que identifican unívoca y mínima cada registro. Por la propia
definición de relación, siempre hay al menos una clave candidata, ya que al ser la relación
un conjunto no existen registros repetidos, el conjunto de todos los campos identificará
unívocamente a los registros.
Una base de datos relacional es un conjunto de relaciones normalizadas.
Para representar el esquema de una base de datos relacional, se debe dar el nombre
de sus relaciones, los atributos de éstas, los dominios sobre los que se definen estos
atributos, las claves primarias (clave candidata que el usuario escoge) y las claves
alternativas (claves que no han sido elegidas).
El proceso de normalización es un estándar que consiste en la conversión de las
relaciones entre las entidades, evitando:
 La redundancia de los datos: repetición de datos en un sistema.
 Anomalías de actualización: inconsistencias resultantes de datos redundantes
y actualizaciones parciales.
 Anomalías de borrado: pérdidas no intencionadas de datos debido a que se
han borrado otros datos.
66
 Anomalías de inserción: imposibilidad de adicionar datos en la base de datos,
debido a la ausencia de otros datos.
El proceso de normalización se conduce hasta el modelo físico de datos y consta de
varias fases denominadas formas normales, es decir divide la información repetida en
diferentes tablas con el propósito de excluir la duplicidad, y así llegar al objetivo
deseado.
5.5 Modelo de Entidad-Relación (ER)
La base del sistema de software médico es la creación, mantención y el ingreso de
información.
El modelo ER fue pensado como una alternativa al modelamiento de datos
tradicional, aplicando los modelos de datos basados en grafos (jerárquico y redes) y los
basados en tablas (relaciones) para la representación de los datos de un sistema.
Además es aplicable poderosamente en los modernos DBMS19. El objetivo de este
modelo es manejar toda la información desde la base de datos, mediante la división de
los datos dentro de muchas entidades discretas, a través de un pequeño número de tablas.
Toda la información referida a los pacientes, diagnósticos, observaciones y
tratamientos médicos, serán almacenadas en este modelo y operadas por el sistema de
software.
El modelo resultante se visualiza a continuación en la figura 5.5-1
________________________
19
Sistemas de Administración de Bases de Datos
67
Fec.Tratamiento
o
Descripción
Nombre
*
Recibe
Código
Tratamiento
*
Nombre
Tiene
Previsión
Fonos
Nombre
Dirección
NºFC
RUT
Fec.Nac
1
1
Paciente
1
Posee
Código
1
Ficha Clínica
1
1
* Enfermedad
Registra
*
1..*
Descripción
Atendido
por
Fec.Ingreso
Escribe
Fonos
Clave
Nombre
RUT
1..*
1..*
Especialidad
Médico
1..*
Dpto.
Realiza
Fecha
1..*
Recibe
*
Diagnóstico
Código
Nombre
Figura 5.5-1: Diagrama de Entidad / Relación.
68
5.6 Descripción de tablas del Modelo o Prototipo.
 TABLA PACIENTE
Esta tabla almacena toda la información referente a los pacientes que ingresan al
Policlínico de Psiquiatría, atendidos en forma ambulatoria, de urgencia o por
hospitalización. Los campos que se visualizan: RUT, nombres, apellidos, edad,
sexo, estado civil, dirección actual, fecha de nacimiento, teléfono, etc.
 TABLA PMEDICO
En esta tabla se almacena toda la información de los profesionales médicos que
otorgan servicios en el Hospital Base de Puerto Montt, tales como: código
profesional
médico,
RUT,
nombres,
apellidos,
teléfono,
departamento,
especialidad, etc.
Esta tabla además valida el ingreso al sistema, ya que los campos que conforman
el control de acceso se encuentran incluidos en la tabla pmedico de la base de
datos. Los campos son: el RUT del usuario, en este caso el RUT profesional
médico y su contraseña.
 TABLA FICHA
Esta tabla almacena toda la información referente a la ficha clínica del paciente.
Los campos que se visualizan: código de ficha clínica, RUT, fecha de apertura,
antecedentes personales, familiares, etc.
 TABLA EXAMEN
En esta tabla se almacena toda la información relacionada al paciente y los
exámenes que se le emplearon. Los datos son: código del examen, nombre, tipo de
examen, procedencia, RUT y nombre del profesional médico, RUT del paciente,
fecha de solicitud y descripción del examen.
69
 TABLA DIAGNÓSTICOS
En esta tabla se almacena toda la información concerniente a los diagnósticos del
paciente, tales como: código del diagnóstico, nombre del diagnóstico, fecha inicio
del diagnóstico, y descripción breve del diagnóstico. Además, de los RUT
profesional médico y paciente.
 TABLA TRATAMIENTOS
En esta tabla se almacena toda la información referida al tratamiento del paciente.
Los datos son: código del tratamiento, código del diagnóstico, descripción del
tratamiento y observaciones del paciente.
 TABLA DETALLE_TRATAMIENTO
En esta tabla se almacena toda la información detallada del tratamiento del
paciente. Los datos son: código del detalle_tratamiento, código del tratamiento
nombre del fármaco, dosis, cantidad de comprimidos diarios, fecha de
inicio/término.
 TABLA SEGUIMIENTOPAC
En esta tabla se almacena toda la información de seguimiento al paciente para un
mayor control. Los datos son: código del diagnóstico, código del profesional
médico, fecha de control, asistencia, evaluación global y próxima cita del paciente.
 TABLA SÍNTOMAS_EVALUACIÓN
En esta tabla se almacena toda la información referente a los síntomas con sus
respectivas intensidades y duraciones del paciente, evaluado por el profesional.
Los datos son: código de evaluación, pregunta identificador del síntoma, estado
(presente/ausente), intensidad y duración.
 TABLA EVALUACIÓN
En
esta
tabla
se
almacena
la
información
que
relaciona
la
tabla
síntomas_evaluación del paciente. Los datos son: código de evaluación y los RUT
del profesional médico y paciente.
70
 TABLA PATOLOG (CIE-10)
En esta tabla se almacena las patologías asociadas a la depresión. Los datos son:
código, nombre y descripción breve de la patología.
 TABLA TESTHAMILTON
En esta tabla se almacena la información asociada al Test de Hamilton para
detección de depresión que realiza el médico hacia el paciente. Los datos son: los
RUT del profesional médico y paciente, añadiendo las 21 preguntas del test,
cantidad del rango definida por el cuestionario y el estado (ausente/presente).
 TABLA TURNOS
Esta tabla almacena toda la información concerniente a la sistematización de los
turnos que otorga el médico hacia los pacientes. Los datos que se manipulan son:
código del turno, los RUT del profesional médico y paciente, días y horas de
atención, duración de cada turno, fecha de control y fecha de próxima citación.
Para mayor conocimiento de la base de datos, en anexos se visualiza mediante el
programa Microsoft Visio 2003 el modelo de datos orientado a objetos, representando,
datos, relaciones y la interacción de aquellos. (Ver anexo II)
71
5.7 Implementación del Prototipo
El prototipo fue desarrollado con tecnologías Java compatibles para la instalación en
el Servicio de Psiquiatría del Hospital Base de Puerto Montt.
El modelo propuesto esta compuesto por páginas que permiten: registrar un
paciente, antecedentes, diagnósticos, exámenes, observaciones y tratamientos.
De igual modo, para conceder las horas de interconsultas médicas se componen de
páginas que permiten: asignar citas al paciente, consultar e imprimir pacientes citados.
La página para el control de acceso, es decir el cuadro de diálogo usuario, genera
conexión a las tablas PMEDICO, la función trascendental es controlar el acceso de los
usuarios al prototipo mediante la petición de consulta del RUT de usuario y contraseña.
5.7.1 Arquitectura del Prototipo
Las páginas que componen este prototipo, están organizadas en tres categorías. La
primera categoría corresponde a páginas de acceso y control de ingreso a la información,
ya sea de consulta como de análisis.
Tabla 5.7.1-1: Páginas de acceso y validación de ingreso al prototipo.
ct_validarusuario.jsp
ct_acceso1.jsp
La segunda categoría corresponde a las páginas que permite al usuario trasladarse
dentro del prototipo, siendo estas algunas páginas principales del sistema. Mediante
estas páginas se obtienen: consultas e ingresos de pacientes almacenados en la base de
datos, y en el caso del otorgamiento de interconsultas médicas, se maneja la página de
turnos, incluyendo días y horas de atención, registro de hora para interconsulta, consulta
72
de horas y fecha de control.
Tabla 5.7.1-2: Páginas de desplazamiento dentro del prototipo.
Portada21.jsp
IngresarPac.jsp
rg_tpacte_existente.jsp
rg_tpacte_nuevo.jsp
rg_tdiagxpatología.jsp
rg_turnos.jsp
El tercer grupo corresponde a la página que ofrece servicios al usuario.
Tabla 5.7.1-3: Página de ayuda del prototipo.
ayuda.jsp
5.7.2 Control de acceso al prototipo.
Para ingresar a la página del prototipo se utiliza la página Web ct_acceso1.jsp,
desde el cual el usuario ingresa su RUT y contraseña, acreditando la validación del
usuario mediante la página ct_validarusuario.jsp, se verifica la autenticidad de este.
El formulario es un control visual de Dreamweaver MX, para exportar la
información a la base de datos concerniente al usuario.
Primeramente, la función de la página es aplicar la conexión a la base de datos
MySQL y consultar en la tabla PMEDICO, si es válido al ser ingresado el RUT de
usuario y la contraseña, de lo contrario se mostrará un mensaje de acceso incorrecto,
certificando que los datos ingresados son erróneos.
73
Una vez verificada la autenticidad del RUT de usuario y contraseña, se visualizan
pantallas que permiten al usuario trasladarse dentro del prototipo, que son las páginas
principales del sistema.
Posteriormente, en los anexos se puede visualizar con más detalle y claridad de los
controladores definidos en Java. (Ver Anexo IV, código fuente)
A continuación se muestra la descripción de la interfaz en lenguaje de diseño,
asociada al usuario, siendo este un diagrama de flujo de datos nivel 1.
RUT y Contraseña del Usuario
Ingreso del RUT y
contraseña de usuario
ct_ acceso1.jsp
Existe error
Valida RUT y
contraseña de usuario
ct_ validarusuario.jsp
Página principal del
prototipo
Visualiza mensaje
incorrecto
RUT de Usuario y
Contraseña válida
Portada21.jsp
Figura 5.7.2-1: Diagrama de Flujo del control de acceso al prototipo.
Cabe destacar que el usuario se asocia al profesional médico, alumnos en práctica,
asistentes, es decir todas aquellas personas que tratan la salud mental, usarán la
aplicación, sólo con introducir los datos correspondientes a un formulario.
74
Con respecto a la validación de los datos, es un modulo que tiene la responsabilidad
de validar los datos ingresados por el usuario. Verificar que los datos obligatorios han
sido ingresados correctamente, por ejemplo, fechas, campos numéricos, etc. quedando
registrados en la base de datos del prototipo. De esta manera, se podrá acceder a la
página principal del prototipo y hacer uso de la aplicación. En caso contrario, solicitar
ser registrado como usuario al administrador del sistema computacional del hospital.
5.7.3 Pantallas Gráficas de Análisis y Consulta.
Después de haber ingresado los parámetros correctos al prototipo, se visualizan
distintas pantallas que son principales del sistema, presentadas en el siguiente capítulo,
son dependientes entre sí. Primeramente, para verificar si el paciente está registrado, se
requiere ingresar el RUT del paciente, analizando su ficha clínica (antecedentes,
exámenes, diagnósticos y tratamientos), y a través de esta pantalla el usuario podrá
acceder a las opciones de consultas. De lo contrario, se tendrán que llenar los datos del
paciente que es ingresado por primera vez al Policlínico de Psiquiatría, quedando
almacenada en la base de datos la información necesaria, para luego acceder a estas
opciones de consultas.
5.7.4 Pantallas Gráficas de Servicios.
Estas pantallas de servicios son básicas para el profesional médico. Dentro de este
grupo de pantallas distinguimos las siguientes:
 Consultas de pacientes registrados.
 Consultas de exámenes a cada paciente.
 Consulta de diagnósticos.
 Consulta del profesional médico.
75
CAPÍTULO VI
IMPLEMENTACIÓN DEL PROTOTIPO BASADO EN SISTEMAS DE
CONOCIMIENTOS
6.1 Antecedentes generales
El prototipo que se desea implementar está cimentado en una técnica de IA,
conocida como SBC, bajo este paradigma la base de conocimiento y el motor de
inferencia trabajan independientemente, el motor es utilizado para representar el
conocimiento especializado de un experto humano, mediante la construcción de reglas
adecuadas en relación a los síntomas y enfermedades. Se debe considerar la detección de
reglas aplicables, elección de reglas, aplicación de la regla, actualización de la base de
hechos; y por supuesto de las estrategias de inferencia que aplica un encadenamiento
hacia atrás (backward chaining), lo que implica construir e implementar estas reglas, y
con la interpretación de aquellas, obtener a través del sistema, resultados o respuestas
con exactitud en el diagnóstico médico en pacientes con cuadro depresivo.
Lo complicado en el prototipo para apoyo al diagnóstico médico, es el hecho de
diagnosticar patologías depresivas, específicamente, enfermedades orgánicas, donde
muchos son síntomas psíquicos, afectando también la parte física, acreditando un
trastorno psicofísico.
La necesidad de emplear tecnología inteligente es importante para evaluar la
factibilidad del prototipo, y pretendiendo establecer si realmente el apoyo informático
contribuye al profesional médico, inclusive en situaciones que puedan presentar cierta
ambigüedad para el especialista.
76
6.2 Entorno del Proyecto
6.2.1 Descripción de la solución para el desarrollo del prototipo
Como punto primordial, compensar necesidades del Servicio de Salud en el
Policlínico de Psiquiatría de Puerto Montt, logra una óptima atención al paciente o
público en general, implementando un prototipo de software médico, es decir, un
sistema informático fundamentado en técnicas de I.A, que soporte el funcionamiento del
servicio, reduciendo tiempos de respuesta.
La metodología empleada permite obtener un prototipo flexible basados en
modificaciones, como E/S, estructuras. También utilizar ocultamiento de información
(caja negra) y desarrollar un plan de cambios (modelo dinámico).
Para llevar a cabo la implementación de este prototipo, se dividió en varias etapas.
 Primeramente, fue vital conocer la necesidad actual, objetivos, entorno y los
involucrados en el tema, y así tener recopilación de toda la información para
poder evaluar la situación que enfrenta actualmente el Servicio de Psiquiatría de
Puerto Montt, lo cual debe ser suficiente para que el prototipo de software
médico a implementar, satisfaga los propósitos definidos presentados al
comienzo de este informe de tesis.
 Luego se analizó un estudio más a fondo de la situación vigente en el Policlínico
de Psiquiatría y los requerimientos, con el objetivo de tratar los alcances del
problema, y así apreciar la factibilidad que el prototipo emita un diagnóstico
médico sólido y verdadero para posteriormente implementar la solución
propuesta. Para llevar a cabo este proyecto, se tuvo que realizar varias reuniones
con el equipo médico para poder concretar un prototipo solución como
plataforma a la abstracción definida y estable de los datos. Al establecer estas
reuniones con el equipo encargado, no cabe la menor duda que forman un
77
modelo representativo y seguro en los requerimientos que actualmente se
presentan en el Hospital Base de Puerto Montt, Servicio de Psiquiatría, para
implementar el prototipo de software médico. Adjunto a esto, se especificó
escenarios de uso del prototipo, no limitando el modelo solución, sino para
evaluar situaciones de riesgo incorporados al proyecto y a las funciones
contenidas en el prototipo.
 Se procede a implementar el prototipo o modelo de solución ya establecido.
 Se debe además verificar las pruebas para evaluar la calidad del software, y
certificar íntegramente los propósitos definidos que se llevó acuerdo con el
equipo médico.
 Una de las etapas finales radica en la puesta en marcha del prototipo, donde se
realiza un plan de monitoreo para medir óptimamente su funcionamiento y
almacenamiento de los datos. Este plan consiste en observar la funcionalidad del
software de forma casual en la estación de trabajo del médico donde es instalado
el programa, y en presencia de pacientes que consultan por esta patología,
denominada Depresión.
 Y por último, se realizará un continuo mantenimiento del modelo de software
médico.
El objetivo del prototipo desarrollado sobre IA basados en sistemas de
conocimientos, es el de validar los resultados obtenidos del sistema con los diagnósticos
emitidos por el experto en el área. Por lo tanto, se debe adquirir la validación y
certificación de la precisión de los resultados obtenidos con el prototipo desarrollado.
Para ello, se aplica asistencia del profesional médico, quienes son los encargados de
realizar las pruebas necesarias para evaluar el razonamiento obtenido de estas reglas, que
son interpretadas y extraídas de la base de conocimiento del sistema. Logrando la
validez del prototipo, el cuerpo médico acredita mediante un certificado autorizado por
78
el Policlínico de Psiquiatría del Hospital Base de Puerto Montt, la aprobación del
sistema, estableciendo que evidentemente el apoyo informático asiste al profesional
médico. (Ver Anexo V)
6.2.2 Funcionalidades primordiales del prototipo basados en SBC
Para generar el prototipo de solución y lograr los objetivos planteados se integraron
los conceptos y las tecnologías. Las funcionalidades que implementa el prototipo son:
 Análisis y diagnóstico médico de los datos ingresados de un paciente que presenta
un cuadro depresivo.
 Extracción de datos de la base de datos.
 Visualización del diagnóstico médico de un paciente, sólo sí, es registrado en el
prototipo del sistema.
 Almacenamiento de los antecedentes, diagnósticos, tratamientos y observaciones,
sólo para pacientes del Policlínico de Psiquiatría.
 Emisión e impresión de la ficha clínica del paciente, lo cual constituye
antecedentes, resultados de exámenes, tratamientos, observaciones referidas al
diagnóstico.
 Además se podrán realizar consultar datos referentes al paciente, al profesional
médico, etc.
6.2.3 Descripción de la funcionalidad del prototipo
A continuación se define la funcionalidad del prototipo de solución, mediante un
ejemplo, que visualiza como opera el software al ser accedido por el profesional médico,
a través de los campos de interfaces usuario y contraseña, para hacer uso del sistema.
Se mostrarán algunas páginas principales en los anexos, ya que se visualizan otras
importantes. (Ver Anexo III)
79
Cabe destacar, que la información generada no corresponde a datos reales de un
paciente. Por ende, para el desarrollo de este prototipo se utilizaron una cantidad de 20
fichas clínicas ficticias, siendo supervisadas por el médico especialista de los pacientes
con patologías depresivas.
Las funcionalidades se muestran de manera secuencial de acuerdo a los datos
presentados en las pantallas gráficas desplegadas.
6.2.3.1 Acceso al Sistema Prototipo
Primeramente, se visualiza en la figura la página principal de bienvenida del software
médico.
Figura 6.2.3.1-1: Página de bienvenida al ingresar al Sistema Médico.
Al presionar botón Aceptar, automáticamente hace referencia a la página de
ct_acceso1. El usuario ingresa al software médico, mediante la página de identificación,
donde se válida al usuario para que tenga los privilegios en el uso del sistema.
80
A continuación se muestra en la siguiente figura, la página de ct_acceso1:
Figura 6.2.3.1-2: Página de validación de usuario.
Luego de introducir los datos solicitados, validarusuario.jsp abre una consulta a la
base de datos, y si estos son incorrectos, automáticamente al presionar Aceptar, se
desplegará esta página de acceso incorrecto.
Figura 6.2.3.1-3: Página de validación de usuario incorrecto.
Presionando Aceptar, retorna a la página de ct_acceso1, ingresando nuevamente los
datos necesarios. Posteriormente, si los datos solicitados son los correctos, hará
referencia a la página principal, donde el usuario, profesional médico, puede hacer uso
81
de la aplicación. A continuación se muestra la página principal:
Figura 6.2.3.1-4: Página principal del Software Médico.
Luego, en la selección de la barra de menú de la página principal se presentan las
siguientes opciones.
Figura 6.2.3.1-5: Interfaz del Software Médico y sus opciones.
En la barra de menú, al consultar por el paciente, existe la opción de Ingresar
Paciente, con esta opción se verifica si el paciente está registrado en el sistema, sólo con
ingresar el RUT.
82
Se puede observar en la siguiente figura 6.2.3.1-6.
Figura 6.2.3.1-6: Página de validación de paciente.
De lo contrario, arrojará un mensaje de error, como se ve en la figura 6.2.3.1-7.
Figura 6.2.3.1-7: Página de validación de paciente incorrecto.
Al ingresar el RUT, y validándolo como paciente existente, se visualiza la Ficha
Clínica que se da a continuación en la siguiente página:
83
84
Figura 6.2.3.1-8.- Página de Ficha Clínica del paciente.
85
En la barra de menú de la página principal se presentan las siguientes opciones.
Figura 6.2.3.1-9: Interfaz del Software Médico visualizando menú Diagnósticos.
La opción Ingresar Diagnósticos, consiste en el ingreso de aquellos, y posteriormente
incorporar los tratamientos adecuados con sus respectivas observaciones. Se visualiza a
continuación en la siguiente figura 6.2.3.1-10.
86
Figura 6.2.3.1-10: Página de ingreso de Diagnósticos, Tratamientos y Observaciones.
Al presionar Aceptar, la información ingresada es enviada a la base de datos,
quedando almacenada, para luego realizar consultas con respecto al diagnóstico. Se
visualiza en la segunda opción de la barra de menú de diagnósticos, Consultar
Diagnósticos.
Dentro de todas las interfaces fundamentales que presenta el software médico, es
necesario visualizar la página, en el que se solicita obligatoriamente rendir el Test de
Hamilton para detección de depresión. Aquí no se define que tipo de episodio depresivo
presenta el paciente. Sólo verifica la escala de puntuación como instrumento para validar
87
si el paciente es depresivo. En la figura se observa la ficha clínica del paciente:
Figura 6.2.3.1-11: Página de rendición, Test de Hamilton.
88
También dentro de la Ficha Clínica, se observa la siguiente opción, Realizar
Diagnósticos. Aquí si se detecta que tipo de episodio depresivo presenta el paciente. A
continuación se visualiza la página. Ver figura 6.2.3.1-12.
Figura 6.2.3.1-12: Página de detección de un Episodio Depresivo.
89
Con respecto, a las demás interfaces del sistema médico, se visualizarán en los
Anexos, como se señaló anteriormente, ya que son bastantes, pero sólo se presentarán
algunas, las más importantes.
Por ejemplo, petición de exámenes, necesarios para ir descartando posibles
enfermedades, tratamiento y seguimiento del paciente.
Se darán a conocer algunas selecciones de consultas, entre ellas:
 Consulta de información por pacientes, visualiza información que ya ha sido
registrada en la base de datos.
 Consulta del profesional médico, mostrando información del especialista del
Policlínico de Psiquiatría.
 Consultas de diagnósticos referidos al Policlínico de Psiquiatría
 Consulta de exámenes por paciente, vale decir, que exámenes se ha realizado
el paciente.
90
CAPÍTULO VII
CONCLUSIONES
7.1 Conclusiones
En este capítulo se abordan las conclusiones y las posibles mejoras a efectuar sobre
el prototipo desarrollado en esta Tesis de Grado.
A continuación se explica como se llevó a cabo, cada uno de estos objetivos
específicos para lograr el objetivo general.
Diseñar e implementar un prototipo de software, fundamentado en un sistema
basado en conocimiento, para apoyo al diagnóstico médico en pacientes que presentan
depresión, establecido en el Policlínico de Psiquiatría del Hospital Base de Puerto
Montt.
Los aportes serían los siguientes:
1.- Conforme a los requerimientos establecidos en el primer objetivo.
Investigar el estado actual de operación, referente al proceso de diagnóstico en
el Policlínico de Psiquiatría, Hospital Base de Puerto Montt, e indagar sobre
software’s exitentes.
Se concluye haber realizado la investigación correspondiente, a partir de una
exploración general de las personas involucradas en el medio; mediante
entrevistas, reuniones y literaturas. Se logra recopilar la información
fundamental; y con estos aspectos se genera un documento, para así tener un
mayor conocimiento del funcionamiento de gestión en el proceso de
diagnóstico en el Policlínico de Psiquiatría.
2.- Referente al segundo objetivo, se determina haber creado una base de datos, o
base de conocimientos, precisa para el diagnóstico médico en atención
91
secundaria. Para crear esta base de datos, se utilizó el gestor base de datos
MySQL. Se debió analizar y diseñar el flujo real de operación en el servicio de
salud pública. En consecuencia, se hizo un seguimiento al profesional de salud
mental, para tener las nociones de como se realiza un proceso de diagnóstico, y
así poder establecer las relaciones entre las tablas que conforman la base de
datos.
Esta base de datos permite predecir de manera confiable y consistente un
diagnóstico médico, incluso en situaciones confusas para el especialista.
Cabe destacar que la conexión a la base de datos debe ser absolutamente segura
y amigable al momento de ingresar o realizar consultas.
Además, se generó un documento detallando cada una de las tablas
correspondientes, el cual está incluido en esta Tesis.
3.- Con respecto al tercer objetivo.
Construir reglas a partir de una base de conocimiento para realizar las
inferencias de acuerdo con los parámetros definidos en el sistema,
diagnosticando la patología bajo la relación síntoma – enfermedad.
Se concluye haber logrado el objetivo. Para ello se tuvo que definir 27
síntomas, cada síntoma tiene cierto grado de intensidad (definida como: alta,
moderada,baja) y de duración (especificados en días), lo que genera una serie
de 81 parámetros.
A partir de estos parámetros definidos en un sistema basados en conocimientos,
se pudo construir una serie de reglas, lo cual JESS como motor de inferencia,
interpreta estas reglas extraídas de la base de conocimientos, para otorgar la
conclusión más acertada con respecto a la enfermedad que posee el paciente, es
decir que episodio depresivo se presenta de acuerdo a sus intensidades y
92
duraciones que poseen los síntomas, consideraciones fundamentales a la hora
de diagnosticar un cuadro depresivo.
4.-Referente al cuarto objetivo.
Diseñar e implementar un prototipo de software médico que asista al
profesional de atención secundaria.
Se concluye haber logrado el propósito del objetivo.
Se trabajó con páginas Web, desarrolladas en Dreamweaver MX, usando
páginas dinámicas Java Server Pages (JSP), desarrollado para ser usado
conjuntamente con el servidor Apache Tomcat 5.5.20. más el gestor de base de
datos MySQL, estas herramientas son una solución para hacer sitios Web
dinámicos de alta calidad, como lo es este Software Médico.
Referente al entorno de trabajo se usa el programa Eclipse, donde el editor utilizado
es Object Web Lomboz, IDE para aplicaciones desarrolladas sobre tecnologías
basadas en la plataforma J2EE.
Se aplicó como motor de inferencia la herramienta de desarrollo JESS, asociado
a reglas. El objetivo del motor de inferencia es el de obtener conclusiones
aplicando la lógica a estas reglas.
Por lo tanto, al utilizar la integración de estas herramientas se concluye haber
optimizado la atención secundaria a pacientes en el Policlínico de Psiquiatría,
debido a la rapidez del sistema en términos de tiempo de respuesta,
específicamente, al ingresar una ficha clínica, y realizar todo lo que se amerita.
En consecuencia, este software es de gran utilidad en lugares donde se requiere
que la atención a pacientes sea de manera confiable, rápida y segura.
5.- Y por último, con respecto al quinto objetivo.
Validar los resultados obtenidos con el prototipo, contrastándolos con los
93
diagnósticos emitidos por expertos en el área.
El profesional médico, tuvo la misión de validar y evaluar los resultados que se
obtuvieron del sistema, realizando una cierta cantidad de pruebas para su
aceptación. Se reflejó exitosamente las funcionalidades del sistema.
Por lo tanto, mediante un documento de acreditación certificado por el
profesional de salud mental del policlínico de Psiquiatría del Hospital Base de
Puerto Montt, se aprueba de manera satisfactoria, el haber logrado el quinto
objetivo propuesto en este proyecto de tesis. (Ver Anexo.V)
Por lo tanto, lo anterior confirma la factibilidad de implementar una
herramienta como esta a gran escala, para el apoyo al diagnóstico médico en
pacientes que presentan un cuadro depresivo. Señalando además, que el tiempo
de respuesta es un gran factor por la gran cantidad de demanda de consultas de
pacientes que padecen la enfermedad.
7.2 Mejoras
Se definen cinco mejoras a realizar en un futuro próximo, estas son:
1.- El método utilizado para el desarrollo de esta interfaz fue pensado en una
topología tipo estrella. Debido a los escasos recursos de hardware y software
con que cuenta el Hospital Base de Puerto Montt, no se pudo realizar lo
planificado, y se tuvo que trabajar con estaciones de trabajo, lo cual genera
restricciones de interactividad con otras unidades de estaciones de trabajo.
Se debe considerar la posibilidad de implementar el sistema en un tipo
computacional de red topología tipo estrella.
2.- El Servicio de Salud del Hospital Base de Puerto Montt requiere poseer
conocimiento y experiencia de tecnologías informáticas más actuales.
94
Aplicando un ambiente de trabajo bien organizado, se podría lograr la
utilización de tecnologías basadas en la plataforma J2EE, usando un Entorno
Integrado de Desarrollo (IDE). Este aspecto puede ser analizado con la
finalidad de poder suplir de mejor manera los sistemas vigentes en el
Policlínico de Psiquiatría, y por otra parte, para poder expandir el prototipo a
las restantes unidades del Hospital Base de Puerto Montt.
3.- Que el sistema de software médico realizado en el proyecto de tesis otorgue la
completa y eficiente información que involucra tener un Servicio de Salud. Para
esto, se sugiere la integración o mejora de los sistemas administrativos, ya que
este prototipo tiene la capacidad de ser un software flexible.
4.- Para lograr con mayor exactitud la confiabilidad de un diagnóstico médico, se
podrían utilizar métodos tales como: test de Kappa, Alfa de Crombach, que
consisten en validar matematicamnte los resultados generados por el sistema.
Entregando el grado o porcentaje de exactitud, y así compararlo con el criterio o
pensamiento clínico del profesional.
5.-
Como propuesta para mejora, se debe considerar que los instrumentos de
medición para detección de la depresión (test Hamilton), no sólo se realice en
Consultorios, sino además, volver a realizarlo en el Policlínico de Psiquiatría,
para constrastar el resultado del test que se emitió en el Consultorio. El test
puede fluctuar de gran manera, y no siempre se puede quedar con una sola
evidencia, es necesario realizarlo nuevamente para verificar si hay aumento o
disminución de síntomas depresivos.
Trabajo Futuro
Capacitar al profesional médico para manejar estos tipos de sistemas informáticos,
para luego traspasar sus conocimientos tanto teóricos como empíricos a los alumnos
practicantes de pre y post grado, para su uso.
95
CAPÍTULO VIII
BIBLIOGRAFIA
Referencias
[RUS97]
Rusty Harold, Elliotte (1997). Los Secretos de Java. Impreso en España.
Ediciones Anaya Multimedia. ISBN 84-415-0342-7.
[AND96]
Andreu Rafael, Ricart Joan E., Valor Josep. Segunda Edición (1996).
Estrategias y Sistemas de Información. Impreso en España. McGraw –
Hill / Interamericana de España S.A. ISBN 84-481-0508-7.
[KUL80]
Kulikowski CA (1980). Artificial intelligence methods and systems for
medical consultation. En: IEEE Transactions on Pattern Analysis and
Machine lntelligence; 1980: 464-476.
[MIL82]
Miller RA (1982).INTERNIST-1, an experimental computer based
diagnostic consultant for general internal medicine. N Engl J Med 1982;
307: 468.
[HAD92]
Hadzikadic M (1992). Automated design of diagnostic systems. Artificial
Intelligence in Medicine 1992; 4: 329-342.
[BAB92]
Babic A (1992). Extraction of diagnostic rules using recursive
partirioning systems. Artificial lntelligence in Medicine 1992, 4: 373387.
[SAN88]
Sánchez,
J.
(1988),
Sistemas
expertos,
una
metodología
de
programación, Ra-Ma, Madrid.
[TUR92]
Turban, E. (1992), Expert systems an applied Artificial Intelligence.
Edit. Macmillan Publishing Co. 1992.
96
[SHO76]
Shortlife EH (1976), Computer-based medical consultations: MYCIN.
New York: Elsevier, 1976.
[BAR88]
Barros Oscar. (1988). Enfoques de Modelamiento y Especificación de
Requerimientos en Sistemas de Información. Impreso en Chile. Depto.
de Ingeniería Industrial – Universidad de Chile. Serie Nº 88/06/C.
[GIA01]
Giarritano, J. (2001), Sistemas expertos, principios y programación,
Internacional Thomson.
[ARO98]
Aroca, F. (1998), “Diseño de un sistema experto de diagnóstico con
incertidumbre SEDEIC”, Universidad de Alcalá.
[HAR86]
Hartnell, T. (1986), Sistemas expertos. Introducción al diseño y
aplicaciones, Anaya.
[SAN88]
Sánchez,
J.
(1988),
Sistemas
expertos,
una
metodología
de
programación, Ra-Ma, Madrid.
[BEL90]
Belmonte MA (1990). Un sistema experto para la ayuda en el
diagnóstico de colagenosis y artropatías inflamatorias. [Tesis Doctoral
U.A.B.], 1990.
[HUM90]
Humphrey SM (1990. MedindEx system: medical indexing expert system
in expert system in libraries. Norwood, NJ: Ablex, 1990; 192-221.
[KUL80]
Kulikowski CA (1980). Artificial intelligence methods and systems for
medical consultation. En: IEEE Transactions on Pattern Analysis and
Machine lntelligence; 1980: 464-476.
[CHA86]
B. Chandrasekaran (1986). Generic tasks in knowledge-based reasoning:
High-level building blocks for system desing. IEEE Expert, 1(3):23-30,
1986.
97
[PAL99]
José Palma Méndez. (1999). Ingeniero del Conocimiento para Sistemas
en Tiempo Real Basados en Conocimiento. PhD thesis, Facultad de
Informática, Universidad de Murcia, 1999.
[BUC84]
Buchanan BG and Shortliffe EH (1984). Rule-Based Expert Systems:
The MYCIN Exeriments of the Stanford Heuristic Progamming. Project
Addison-Wesley. Reading. Massachusetts.
[MOR01]
Moreno Rodríguez (2001). El arte y la ciencia del diagnóstico médico.
La Habana. Edit. Científico-Técnica; 2001:47-166.
[FIE87]
Fiesch, M. (1987). Inteligencia Artificial en Medicina.
Sistemas Expertos. Barcelona, Masson, 1987.
[VIV97]
E. Vivancos, L. Hernandez, and V. Botti (1997). Construcción y análisis
temporal de sistemas basados en reglas para entornos de tiempo real. In
Proc. of 7th Conference of the Spanish Association for Artificial
Intelligence, pages 675-684, Malaga (Spain), Nov. 1997.
[WAN93]
C.-K. Wang and A. K. Mok (1993). Timing analysis of MRL: A real-time
rule-based system. Real-Time Systems, 5:89-128, 1993.
[KUN78]
Kunz, J.C., Fallat, R.J., McClung, D.H., Osborn, J.J., Votteri, B.A, Nii,
H.P., Aikins, J.S., Fagan, L.M. & Fcigenbaum, E.A (1978).
“A Physiological Rule-Based System for Intcrprcting Pulmonary hnction
Test Results.” Tech Report HPP- 78-19, Computer Science Dept.,
Stanford Univ. (1978).
[CAS98]
Enrique Castillo, José Manuel Gutiérrez y Ali S. Hadi. (1998) Sistemas
Expertos y Modelos de Redes Probabilísticas. Editorial Academia de
Ingeniería (España). Madrid, España. 1998. ISBN 84-600-9395-6.
98
[DUA00]
Duane K. Fields, Mark A. Kolb (2000).Web Development with Java
Server Pages. Manning 2000.
[BRE01]
Brena R (2001). La inteligencia artificial: enfoques, herramientas y
aplicaciones. Soluciones Avanzadas Ao2-13:15.2001
[EVA95]
Evans CD (1995). A case-based assistant for diagnosis and analysis of
dysmorphic syndrome. Med Inf Lond 1995; 20(2) 121-31.
[GAL06]
Galvez Lio, Daniel (2006). Sistemas Basados en el Conocimiento.
UCLV 2006:4-37.
[URL 1]
E. F. Hill. Jess : The Java Expert System Shell, Sandia National
Laboratories [Online]
http://herzberg.ca.sandia.gov/jess
[URL 2]
Comparativa CLIPS vs. JESS.
http://www.comp.lancs.ac.uk/~kristof/research/notes/clipsvsjess/
[URL 3]
Jess-in-action.
http://www.manning.com/friedman-hill/
[URL 4]
Tutorial WARS ("Web-Archives")
http://www.osmosislatina.com/java/wars.htm
[URL 5]
Set of documents for Lomboz.
http://lomboz.objectweb.org/documentation.html
[URL 6]
Jess 7.0p1 Manual, Adobe PDF format.
http://www.jessrules.com
99
[URL 7]
Documentation JavaBeans
http://java.sun.com/products/javabeans/docs/index.html
[URL 8]
MySQL Connector/JDBC
http://mysql.vision.cl/usingmysql/java/index.html
[URL 9]
Documentation Java Servlet
http://tomcat.apache.org
[URL 10]
Ingeniería de los Sistemas Basados en el Conocimiento.
http://iaaa.cps.unizar.es/docencia/ISBC.html
[URL 11]
Completo Material sobre JAVA.
http://www.apogeonline.com/libri/00895/allegati/risorse
[URL 12]
Aplicaciones de la inteligencia artificial en la medicina.
http://www.monografias.com/trabajos16/inteligencia-artificialhistoria/inteligencia-artificial-historia.shtml
[URL 13]
El entorno de desarrollo Eclipse.
http://www.lsi.us.es/docencia/get.php?id=1164
[URL 14]
Servlets
http://www.lsi.us.es/docencia/get.php?id=2041
[URL 15]
Eclipse y Java
http://www.uv.es/~jgutierr/MySQL_Java/TutorialEclipse.pdf
[URL 16]
Sistemas Expertos e Inteligencia Artificial
http://pisuerga.inf.ubu.es/~cgosorio/SExInArt/trabajos/CLIPS.pdf
100
[URL 17]
Eclipse Tutorial
http://eclipsetutorial.forge.os4os.org/cjava.htm
[URL 18]
CIE 10- Décima Revisión de la Clasificación de las enfermedades.
Trastornos Mentales y del Comportamiento
http://personal.telefonica.terra.es/web/psico/cie_10/cie10_F32.html
[URL 19]
F32 – Episodios Depresivos
http://www.psicoactiva.com/cie10/cie10_20.htm
[URL 20]
Trastornos Mentales – Depresión y Manía.
http://www.msd.es/publicaciones/mmerck_hogar/seccion_07/
seccion_07_084.html
101
CAPITULO IX
ANEXOS
9.1 Anexo I: Plataforma Hardware/Software del Servicio de Salud y Hospital Base
de Puerto Montt.
9.1.1 Características de la plataforma hardware y software.
El Hospital Base de Puerto Montt forma parte de una red computacional con
topología estrella, la cual se visualiza en el siguiente punto; y referente al hardware y
software, los recursos tecnológicos informáticos disponibles son los siguientes:
 LAN del Hospital Base Puerto Montt.
 Conexión de Redes LAN por medio de Fibra Óptica.
 Base de Datos Relacional SYBASE 11.
 Servidores del Hospital Base de Puerto Montt.
 Sistemas Operativos: UNIX, Windows XP, 2000, Windows 98, Windows 95.
 1 Router, 2 Switch, 13 Hubs.
 131 PCs en todo el establecimiento hospitalario.
Todas las estaciones clientes son equipos Pentium con S.O. Windows XP 2000, 98 y
95.
102
9.1.2 Topología de Red, Estrella.
En la figura 9.1.2-1, se visualiza la plataforma hardware del Servicio de Salud y
Hospital Base de Puerto Montt. Se define una topología de red de tipo estrella.
Servicio
LAN
INTERNET
ISDN
SERVICIO
Proxi
SALUD
Fibra
Optica
Server 1
Hub
Zona
Hub
Administrativa
Hub
ZAB
Hub
Server 2
Hub
Trauma-
Puntos
tología
UTP
UTP
UTP
UTP
Estación de trabajos grupo
de usuarios usanso
aplicaiones de
Abastecimiento
Switch
UTP
Puntos
Fibra
Terminal Puntos
Pc y Fibra Optica
Optica
Hub
UTP
Puntos
Fibra
Optica
Estación de trabajos grupo
de usuarios usanso
aplicaiones Area
Comercialización,
Gestión,Informática
Varios
Usuario Con
Servicios de
Internet
Terminal Puntos
Pc y Fibra Optica
UTP
Fibra
Optica
Fibra
Fibra
Estación de trabajos grupo
de usuarios usanso
aplicaiones de
Abastecimiento
Optica
Optica
Hub
Hub
Puntos
Hub
Hub
Terminal Puntos
Pc y Fibra Optica
Puntos
UTP
Terminal Puntos
Pc y Fibra Optica
Estación de trabajos grupo
de usuarios usanso
aplicaiones de
Abastecimiento, Mantención
Zona
Rayos
Laboratorio
Hub
Rack Transaiver
Zona
Abastecimiento
Zona
Terminal Puntos
Pc y Fibra Optica
Router
Hub
UTP
Hub
Puntos
Zona
Hospitalizados
Terminal Puntos
Pc y Fibra Optica
UTP
UTP
Estación de trabajos grupo
de usuarios usanso
aplicaiones de Atención
Cerrada
Usuario Con
Servicios de
Internet
Estación de trabajos grupo
Usuario Con de usuarios usanso
Servicios de aplicaiones de Pabellon,
Internet
Urgencia
Figura 9.1.2-1: Topología de Red Computacional, Estrella.
103
Zona
Pabellones
Urgencia
9.2 Anexo II. Herramientas utilizadas para el desarrollo del prototipo.
9.2.1 Eclipse - Entorno Integrado de Desarrollo (IDE).
Referente al entorno de trabajo se usa el programa Eclipse. Obteniendo así, una mayor
organización del directorio de trabajo, en cuanto, a la claridad y orden en la definición
de las carpetas y archivos.
Al desarrollar el prototipo propuesto, se optó por trabajar con dos espacios de
trabajo por separado. Finalmente, el desarrollo quedó sólo en un espacio de trabajo,
definido como Proyecto Tesis.
Para ello, se debió incorporar las librerías necesarias de la creación de reglas en
JESS, a la carpeta de las librerías del proyecto Web de la Tesis.
9.2.1.1 Entorno de trabajo Eclipse, aplicación de reglas en JESS.
En la siguiente figura 9.2.1.1-1, se visualiza el directorio de trabajo, que define el
contenido de las carpetas con sus respectivos archivos.
104
Figura 9.2.1.1-1: Directorio de trabajo en aplicación JESS.
9.2.1.1.1 Procedimientos en la aplicación de reglas en JESS.
1.- Dentro de la carpeta rules_test/cl.aaguilar.rules.defs, se encuentra
RulesEnfermedades.java, la cual consiste en definir las funciones y las reglas,
para ser aplicadas en la ejecución de los test.
2.- Una vez definidas las reglas de las enfermedades, se procesan los síntomas con
sus respectivas intensidades y duraciones, utilizando 81 parámetros. Esto se
encuentra dentro de la carpeta rules_test/cl.aaguilar.rules.process, con el
nombre ProcessEnfermedades.java.
Los códigos se detallan en el Anexo IV.
105
3.- Teniendo estas consideraciones, se procede ejecutar en el programa los test,
para validar y evaluar la creación de reglas aplicadas, generando el resultado
esperado, en este caso, el tipo de Episodio Depresivo que presenta el paciente.
(Ver figura 9.2.1.1.1-1)
Figura 9.2.1.1.1-1: Interfaz de ejecución de test.
4.- Para acreditar lo señalado en el punto Nº 3. Se validará y evaluará a un paciente
registrado de manera ficticia, en el policlínico de Psiquiatría del Hospital Base
de Puerto Montt.
Datos empleados:
- Profesional médico: RUT: 7.234.876-5
- Paciente: RUT: 14243555-2.
A continuación, ver tabla 9.2.1.1.1-1.
Tabla 9.2.1.1.1-1: RUT paciente, para ser evaluado.
106
Antes de proseguir con la evaluación. Se dará a conocer la tabla de los 27
síntomas, extraídos de la definición del código F32 de la CIE-10, descritas en planilla
Excel. (Ver tabla 9.2.1.1.1-2.)
Tabla 9.2.1.1.1-2: Tabla de Síntomas.
107
A partir de la tabla anterior, se realiza la evaluación del diagnóstico,
recopilando toda la información concerniente a los síntomas, intensidades y
duraciones del paciente. (Ver tabla 9.2.1.1.1-3)
Tabla 9.2.1.1.1-3: Síntomas, intensidades y duraciones del paciente.
A continuación se observa en la figura 9.2.1.1.1-2, la opción Argumentos, en
donde son ingresados los síntomas del paciente con sus respectivas intensidades
y duraciones, al presionar botón Run, se ejecutan las reglas.
Figura 9.2.1.1.1-2: Interfaz, ingreso de los argumentos.
108
5.- Lo cual generó la activación de una regla, al ingresar los síntomas, intensidades
y duraciones del paciente. Es decir, emitió la enfermedad del paciente como
Episodio Depresivo Grave con Síntomas Psicóticos (Cód. F32.2, de la CIE-10).
A continuación, se observa en la figura 9.2.1.1.1-3, el resultado esperado.
Figura 9.2.1.1.1-3: Emisión de la regla ejecutada.
9.2.1.2 Entorno de trabajo Eclipse, proyecto Web.
9.2.1.2.1 Object Web Lomboz – Editor basado en la plataforma J2EE.
El editor utilizado es ObjectWeb Lomboz 3.1.2, IDE para aplicaciones desarrolladas
establecidas sobre tecnologías basadas en la plataforma J2EE.
Con este editor se organiza los recursos del usuario de forma clara en uno o más
proyectos, conteniendo archivos y carpetas, como se ve en la figura 9.2.1.2.1-1.
109
110
Figura 9.2.1.2.1-1: Detalle de archivo y carpetas del proyecto tesis.
En el proyecto tesis, la carpeta WebContent almacena las páginas Web, páginas
dinámicas Java Server Pages, desarrolladas en Macromedia Dreamweaver MX.
En la figura 9.2.1.2.1-2, se observa como se creó mediante el programa Dreamweaver
MX las páginas dinámicas JSP.
Figura 9.2.1.2.1-2: Creación de JSP, en Dreamweaver MX.
111
A través del frontal ObjectWeb Lomboz, se visualizan las interfaces JSP, con sólo presionar
el System Editor, como se observa en la figura 9.2.1.2.1-3.
Figura 9.2.1.2.1-3: Acceso a interfaces JSP, mediante al System Editor.
9.2.2 Servidor Apache Tomcat- Servlet/ JSP
Para la implementación de páginas JSP, se utiliza el servidor Apache Tomcat Versión
5.5.20.
9.2.3 Base de Datos desarrollada en MySQL
A nivel técnico, incorpora conexión a una base de datos desarrollada en MySQL,
enlazada a un servidor de base de datos de MySQL, utilizando como editor SQLyog,
libre MySQL GUI versión 5.15.
112
En la siguiente figura 9.2.3-1, se define la base de datos denominada Clínica, con sus
respectivas tablas
Figura 9.2.3-1: Tablas definidas en la base de datos Clínica.
9.2.4 Microsoft Office Visio 2003, Diagrama de modelo de base de datos.
En la figura 9.2.4-1, se visualiza como se accede a la plantilla de diagrama de
modelo de base de datos
Figura 9.2.4-1: Interfaz, de acceso al diagrama de modelo de base de datos
113
A continuación, en la figura 9.2.4-2, se observa las tablas relacionadas de la base de
datos Clínica.
sintomas_evaluacion
PK,FK1 SINT_EVALUACION_ID
PK
SINT_ID_PREGUNTA
SINT_ESTADO
SINT_INTENSIDAD
SINT_DURACION
evaluacion
PK
EVALUACION_ID
FK1 EVALUACION_PAC_RUT
FK2 EVALUACION_PMED_RUT
examen
PK
FK1 EXA_PAC_RUT
EXA_PMED_RUT
EXA_NOMBRE
EXA_TIPO
EXA_PROCEDENCIA
EXA_FECHA _SOLICITUD
EXA_NOMMED
EXA_DESCRIPCION
ficha
PK
FIC_COD
PK,FK1,U1 FIC_PACIENTE
FIC_APERTURA
FIC_MOTIVO
FIC_HABITOS
FIC_FAMILIARES
FIC_DEPRESION
FIC_ENFNEUROLOGICAS
FIC_HEPATITIS
FIC_HIPERARTERIAL
FIC_ALERGIA
FIC_ASMABRONQUIAL
FIC_ULCERA
FIC_HEMOPATIAS
FIC_PSICOPATIA
FIC_CORONARIOPATIA
FIC_DIABETES
FIC_FIEBRESPROLONGADAS
FIC_UROPATIAS
FIC_ENDOCRINOPATIAS
FIC_CAUSAPORENFERMEDAD
FIC_MOTIVOSOCIAL
FIC_MOTIVOLABORAL
FIC_PERDIDAFAMILIAR
FIC_BAJAAUTOESTIMA
FIC_OTROS
turnos
PK
ID_TURNO
PK,FK1 TURNO_PMED_RUT
FK2
paciente
DETA_TRATAM_ID
DETA_TRATAM_NOMBRE_FARMACO
DETA_TRATAM_COD
DETA_TRATAM_DOSIS
DETA_TRATAM_COMPRIMIDOS_DIARIO
DETA_TRATAM_FECHA_INICIO
DETA_TRATAM_FECHA_TERMINO
FK1 DETA_TRATAM_TRATAM_ID
PAC_DV
PAC_NOMBRES
PAC_APELLIDOS
PAC_NACIMIENTO
PAC_EDAD
PAC_SEXO
PAC_CIVIL
PAC_FONOS
PAC_OCUPACION
PAC_PREVISION
PAC_DIRECCION
PAC_COMUNA
PAC_PROVINCIA
PAC_REGION
pmedico
PK PMED_RUT
diagnosticos
PK
DIAGNOS_ID
DIAGNOS_NOMBRE
DIAGNOS_FECHA_INICIO
DIAGNOS_COD
DIAGNOS_DESCRIPCION
FK1 DIAGNOS_PAC_RUT
FK2 DIAGNOS_PMED_RUT
DIAGNOS_PATOLOGIA
seguimientopac
PK SEGPAC_DIAGNOS_ID
tratamientos
SEGPAC_CODPMED
SEGPAC_FECHACONTROL
SEGPAC_ASISTENCIA
SEGPAC_EVALGLOBAL
SEGPAC_PROXCITA
TURNO_PAC_RUT
TURNO_FECHACONTROL
TURNO_DIASATENCION
TURNO_HRSATENCION
TURNO_DURACION
TURNO_FECHACITACION
PK PAC_RUT
detalle_tratamiento
PK
EXA_ID
PK
testhamilton
TRATAM_ID
PK,FK1 TEST_PAC_RUT
FK1 TRATAM_DIAGNOS_ID
TRATAM_DESCRIPCION
TRATAM_OBSERVACIONES
TEST_PMED_RUT
TEST_PREG_UNO
TEST_PREG_DOS
TEST_PREG_TRES
TEST_PREG_CUATRO
TEST_PREG_CINCO
TEST_PREG_SEIS
TEST_PREG_SIETE
TEST_PREG_OCHO
TEST_PREG_NUEVE
TEST_PREG_DIEZ
TEST_PREG_ONCE
TEST_PREG_DOCE
TEST_PREG_TRECE
TEST_PREG_CATORCE
TEST_PREG_QUINCE
TEST_PREG_DIECISEIS
TEST_PREG_DIECISIETE
TEST_PREG_DIECIOCHO
TEST_PREG_DIECINUEVE
TEST_PREG_VEINTE
TEST_PREG_VEINTIUNO
TEST_CANT_SIEMPRE
TEST_CANT_NO
TEST_CANT_CASISIEMPRE
TEST_CANT_ALGUNASVECES
TEST_ESTADO
cie_10
PK ENF_ID
ENF_NOMBRE
ENF_DESCRIPCION
Figura 9.2.4-2: Diagrama del modelo de base de datos.
114
PMED_ID
PMED_NOMBRE
PMED_PATERNO
PMED_MATERNO
PMED_PASS
PMED_DV
PMED_TELEFONO
PMED_DPTO
PMED_ESPECIALIDAD
9.3 Anexo III: Interfaces gráficas del sistema médico.
9.3.1 Exámenes del paciente
9.3.1.1 Solicitud de exámenes.
En la figura 9.3.1.1-1 se ve en el menú de la barra, la opción Solicitud Exámenes.
Figura 9.3.1.1-1: Interfaz, opción Solicitud Exámenes.
Al hacer link en Solicitud Exámenes, hace referencia inmediatamente a la página
rg_texamenes.jsp. Se ingresan los datos correspondientes por el profesional, y se envía a
la B.D. (Ver figura 9.3.1.1-2)
Figura 9.3.1.1-2: Página de ingreso de exámenes solicitados.
115
9.3.1.2 Emisión de exámenes.
Después de haber ingresado la información y ser almacenados en la B.D., se debe
verificar la emisión de los exámenes solicitados por el médico. En la barra de menú,
existe la opción Emisión Exámenes. Al hacer link en esta opción, se visualiza la página
IngresarPacEmiExam.jsp, donde se valida el RUT del paciente (Ver figura 9.3.1.2-1)
Figura 9.3.1.2-1: Página de ingreso, RUT paciente.
Una vez ingresado el RUT, se abrirá la página emisionexam.jsp, donde se registran
todos los exámenes del paciente, con sus respectivos códigos. (Ver figura 9.3.1.2-2)
Figura 9.3.1.2-2: Página de emisión de exámenes.
116
Es necesario que el profesional médico ingrese la descripción de los exámenes
emitidos y los envíe a la base de datos, quedando totalmente registrados para realizar
consecutivamente la consulta.
9.3.1.3 Consulta de exámenes.
En el caso, de consultar por los exámenes del paciente, se debe ir a la opción
Consulta Exámenes, de la barra de menú, y al hacer link en esta opción, se desplegará la
página IngresarPacConsultaExam.jsp, visualizándose la misma interfaz anterior, donde
se valida el RUT del paciente. Para luego, verificar el detalle de todos los exámenes
realizados del paciente. (Ver figura 9.3.1.3-1)
Figura 9.3.1.3-1: Página de consulta en la emisión de exámenes.
117
9.3.2 Diagnósticos del paciente
9.3.2.1 Consulta de diagnósticos
Una vez que se tiene toda la información referente a los exámenes del paciente, es
necesario que el profesional médico ingrese los diagnósticos correspondientes.
En la barra de menú, está la opción Ingresar Diagnóstico, al hacer link se generará
esta página rg_tdiagxpatologia.jsp, (se observó anteriormente, en el capítulo VI de la
tesis) donde se debe completar los campos necesarios tales como: descripción del
diagnóstico, tratamientos, observaciones, etc., y ser enviados a la B.D.
Al consultar por esta información, esta la opción Consultar Diagnóstico. Al hacer
link desplegará la página IngresarPacConsultaDiagnos.jsp, donde nuevamente se
visualiza el RUT del paciente. Una vez ingresado el RUT correcto, arrojará la página
que se ve en la siguiente figura 9.3.2.1-1
Figura 9.3.2.1-1: Página de resultado del diagnóstico del paciente.
Para tener mayores antecedentes, se debe presionar en Detalle botón Ver, y generará
toda la información de diagnósticos, tratamientos y observaciones del paciente. Esta
información es la que fue ingresada al diagnóstico.
118
9.3.3 Seguimientos del paciente
9.3.3.1 Consulta del seguimiento del paciente
Esta opción es Consultar Seguimiento, y se refiere a tener un mayor control sobre el
paciente, registrando su asistencia a las sesiones requeridas por el profesional de salud
mental, evaluando la evolución de su mejoramiento o empeoramiento, en fin.
A continuación se observa en la figura 9.3.3.1-1 esta página.
Figura 9.3.3.1-1: Página del seguimiento de un paciente
119
9.3.4 Información del profesional médico
9.3.4.1 Consulta del Profesional médico
Existen dos opciones para consultar por el profesional médico.
En la barra de menú, se tiene la opción Búsqueda Prof.Médico. Al hacer link en esta
opción se generará la página Codmedxespec.jsp. (Ver figura 9.3.4.1-1)
Figura 9.3.4.1-1: Página de búsqueda del profesional médico.
Sólo se debe ingresar el código del profesional para acceder a la página que contiene
información más detallada del profesional médico. (Ver figura 9.3.4.1-3)
120
La otra forma de consultar por la información es, hacer link en la opción Consulta
Prof.Médico, hará referencia a la siguiente página IngresarProfMed.jsp, donde se valida
el RUT del profesional, generando la siguiente figura 9.3.4.1-2.
Figura 9.3.4.1-2: Página de ingreso, RUT del profesional médico.
Una vez ingresado el RUT correcto, se accede a la información referente al
profesional, tal como se presenta en la figura 9.3.4.1-3
Figura 9.3.4.1-3: Página del profesional médico.
Por lo tanto, el ingreso del RUT como el código, deberían hacer referencia a la
página del profesional médico.
121
9.4 Anexo IV: Código Fuente
9.4.1 Código fuente, aplicación JESS
9.4.1.1 Código fuente de la clase RulesEnfermedades.java
package cl.aaguilar.rules.defs;
import jess.JessException;
import jess.Rete;
import jess.Value;
public class RulesEnfermedades {
//public static final Logger logger =
Logger.getLogger(RulesPerson.class);
public String resultRules(String strSintomas,String strIntensidades,
String strDuraciones){
Rete r = null;
Value v = null;
String result = null;
try {
//uso del algoritmo de rete;
r = new Rete();
r.eval("( deftemplate sintomas (multislot sintoma)
(multislot int) (multislot t) )");
//define un template con sus atributos síntomas, intensidades, tiempo;
//multislot es un atributo que puede recibir una lista de atributos;
r.eval("(watch all)");
r.eval("(reset)");
r.eval("( deffunction contar_categoria_m ($?SIN) " +
" (bind ?cat_m (create$ SIN4 SIN5 SIN6 SIN7 SIN8
SIN11 SIN12 SIN14 SIN16 SIN15 SIN18 SIN21 SIN23 SIN24 SIN27 ) )" +
" (bind ?c 0)" +
" (foreach ?x (create$ ?SIN) ( if (member$ ?x
?cat_m) then (++ ?c) ) )" +
" (return ?c))");
//esta funcion devuelve cuantos síntomas ingresados pertenecen a la;
//categoría m;
122
r.eval("( deffunction
"(bind ?cat_m
"(bind ?c 0)"
"(foreach ?x
?cat_m) then (++ ?c) ) )" +
"(return
")");
contar_categoria_l ($?SIN)" +
(create$ SIN1 SIN2 SIN3 ) )" +
+
(create$ ?SIN) ( if (member$
?x
?c) " +
//esta función devuelve cuantos síntomas ingresados pertenecen a la;
//categoría l;
r.eval("( deffunction contar_categoria_g1 ($?SIN)" +
"(bind ?cat_m (create$ SIN9 SIN20 ) )" +
"(bind ?c 0)" +
"(foreach ?x (create$ ?SIN) ( if (member$
?cat_m) then (++ ?c) ) )" +
"(return ?c) " +
")");
?x
//esta función devuelve cuantos síntomas ingresados pertenecen a la;
//categoría g1;
r.eval("( deffunction contar_categoria_g2 ($?SIN)" +
"(bind ?cat_m (create$
SIN10 SIN13
SIN17 SIN19
SIN22 SIN25 SIN26 ) )" +
"(bind ?c 0)" +
"(foreach ?x (create$ ?SIN) ( if (member$ ?x
?cat_m) then (++ ?c) )
)" +
"(return ?c) " +
")");
//esta función devuelve cuantos síntomas ingresados pertenecen a la;
//categoría g2;
r.eval("( deffunction contar_intensidad (?int $?I)"
+
"(bind ?c 0)" +
"(foreach ?x (create$ ?I) ( if
then (++ ?c) )
( eq ?x ?int
)
)" +
"(return ?c)" +
"" +
")");
//recibe 2 parámetros, una intensidad llamada int y una lista de;
//intensidades $?I, cuenta cuantas intensidades son = int en la lista;
//de intensidades;
r.eval("( deffunction tiempo_d (?d $?T)" +
"(foreach ?x (create$ ?T) ( if ( < ?x ?d
(return FALSE) ) )" +
"(return TRUE) " +
")");
)
then
//recibe un tiempo ?d que son días y una lista de días $?T,y lo que;
//hace es, si uno de los días es < al dia ¿d devuelve falso sino;
//verdadero;
123
r.eval("(defrule f32.0" +
"(sintomas (sintoma $?list1&:( and (>=
(contar_categoria_l ?list1) 2) ( = (length$ ?list1)
(contar_categoria_l ?list1) ) ) ) ) " +
//deben haber al menos 2 síntomas presentes de categoría l;
//todos los parámetros pertenecen a la categoría l;
baja ?list2)2) )
"(sintomas
) )" +
(int
$?list2&:(>=(contar_intensidad
//deben haber al menos 2 intensidades que sean bajas;
"(sintomas (t $?list3&:(tiempo_d 14 ?list3) ) )" +
"=>" +
//todos los tiempos deben ser >=14 días;
"(printout t \"Episodio Depresivo Leve!\" crlf)" +
")");
r.eval("(defrule f32.1" +
"(sintomas
(sintoma
$?list1&:(
and
(
>=
(contar_categoria_l ?list1) 2) (
>= (+ (contar_categoria_l ?list1)
(contar_categoria_m ?list1) ) 6 ) ( = (length$ ?list1) ( +
(contar_categoria_l
?list1
)
(contar_categoria_m
?list1)
(contar_categoria_g1 ?list1) ) ) ) ) )" +
//deben haber al menos 2 síntomas de categoría l;
//la suma de categoría l y m deben ser >=6;
//todos los síntomas deben pertenecer a las categorías l,m o g1;
"(sintomas
moderada ?list2) 3) ) )" +
(int
$?list2&:(
>=
(contar_intensidad
//deben haber al menos 3 intensidades moderadas;
"(sintomas (t $?list3&:(tiempo_d 14 ?list3) ) )" +
"=>" +
//todos los tiempos deben ser >=14 días;
"(printout
t
\"
crlf)" +
")");
124
Episodio
Depresivo
Moderado!\"
r.eval("(defrule f32.2" +
"(sintomas
(sintoma
$?list1&:(
and
(
>=
(contar_categoria_l ?list1) 2) ( >= (contar_categoria_g1 ?list1) 1) (
>= (+ (contar_categoria_l ?list1) (contar_categoria_m ?list1) ) 8 ) ( =
(length$ ?list1) ( + (contar_categoria_l ?list1 ) (contar_categoria_m
?list1) (contar_categoria_g1 ?list1) ) ) ) ) )" +
//deben haber al menos 2 de categoría l, y una de categoría g1;
//la suma de las categorías l y m >=8;
//todos los síntomas deben pertenecer a la categoría l, m o g1;
"(sintomas (int $?list2&:( >= (contar_intensidad
grave ?list2) 8) ) )" +
//deben haber al menos 8 intensidades graves;
"(sintomas (t $?list3&:(tiempo_d 8 ?list3) ) )" +
"=>" +
//deben ser >=8 días;
"(printout
Síntomas Psicóticos!\" crlf)" +
")");
t
\"Episodio
Depresivo
Grave
sin
r.eval("(defrule f32.3" +
"(sintomas
(sintoma
$?list1&:(
and
(
>=
(contar_categoria_l ?list1) 2) ( >= (contar_categoria_g2 ?list1) 1) (
>= (+ (contar_categoria_l ?list1) (contar_categoria_m ?list1) ) 8 ) ( =
(length$ ?list1) ( + (contar_categoria_l ?list1 ) (contar_categoria_m
?list1) (contar_categoria_g1 ?list1) (contar_categoria_g2 ?list1)) ) )
) )" +
//deben haber al menos 2 de categoría l, al menos una de categoría g2;
//la suma de las categorías l y m deber ser >=8;
//todos los síntomas deben pertenecer a las categorías l,m,g1 y g2;
"(sintomas (int $?list2&:( >= (contar_intensidad
grave ?list2) 8) ) )" +
//deben haber al menos >=8 síntomas de intensidad grave;
"(sintomas (t $?list3&:(tiempo_d 8 ?list3) ) )" +
"=>" +
//deben durar al menos 8 días;
"(printout
Síntomas Psicóticos!\" crlf)" +
")");
t
\"Episodio
125
Depresivo
Grave
con
r.eval("(assert ( sintomas( sintoma " + strSintomas + ")
(int " + strIntensidades + ") (t "+ strDuraciones +" )))");
v = r.eval("(run)");
result = v.stringValue(r.getGlobalContext());
return result;
} catch (JessException ex) {
ex.printStackTrace();
}
return result;
}
}
9.4.1.2 Código fuente de la clase RulesHamilton.java
package cl.aaguilar.rules.defs;
import jess.JessException;
import jess.Rete;
import jess.Value;
public class RulesHamilton {
public String resultRules(int cant_siempre,
int cant_casisiempre){
Rete r = null;
Value v = null;
String result = null;
try {
r = new Rete();
r.eval("(deftemplate test_hamilton (slot cant_siempre)
(slot cant_casisiempre) )");
r.eval("(watch all)");
r.eval("(reset)");
r.eval("(defrule resultado_test"
+"\"Da el resultado del test\""
+"(test_hamilton
{cant_siempre
cant_casisiempre > 5})"
>
5
||
//cant_siempre y cant_casisiempre deben ser >5 para ser depresivo;
+"=>"
+"(printout t \"Paciente es depresivo\" crlf))"
126
+"resultado_test: +1+1+1+t"
);
cant_siempre+")
r.eval("(assert (test_hamilton (cant_siempre "+
(cant_casisiempre "+ cant_casisiempre+") ))");
v = r.eval("(run)");
result = v.stringValue(r.getGlobalContext());
return result;
} catch (JessException ex) {
ex.printStackTrace();
}
return result;
}
}
9.4.1.3 Código fuente de la clase Enfermedades.java
package cl.aaguilar.rules.domain;
public class Enfermedades {
private String[] sintomas;
private String[] intensidades;
private int[] duraciones;
public Enfermedades() {
}
public int[] getDuraciones() {
return duraciones;
}
public void setDuraciones(int[] duraciones) {
this.duraciones = duraciones;
}
public String[] getIntensidades() {
return intensidades;
}
public void setIntensidades(String[] intensidades) {
this.intensidades = intensidades;
}
127
public String[] getSintomas() {
return sintomas;
}
public void setSintomas(String[] sintomas) {
this.sintomas = sintomas;
}
}
9.4.1.4 Código fuente de la clase TestHamilton.java
package cl.aaguilar.rules.domain;
public class TestHamilton {
private
private
private
private
int
int
int
int
cant_siempre;
cant_casisiempre;
cant_no;
cant_algunasveces;
public int getCant_algunasveces() {
return cant_algunasveces;
}
public void setCant_algunasveces(int cant_algunasveces) {
this.cant_algunasveces = cant_algunasveces;
}
public int getCant_casisiempre() {
return cant_casisiempre;
}
public void setCant_casisiempre(int cant_casisiempre) {
this.cant_casisiempre = cant_casisiempre;
}
public int getCant_no() {
return cant_no;
}
128
public void setCant_no(int cant_no) {
this.cant_no = cant_no;
}
public int getCant_siempre() {
return cant_siempre;
}
public void setCant_siempre(int cant_siempre) {
this.cant_siempre = cant_siempre;
}
}
9.4.1.5 Código fuente de la clase ProcessEnfermedades.java
package cl.aaguilar.rules.process;
import cl.aaguilar.rules.defs.RulesEnfermedades;
import cl.aaguilar.rules.domain.Enfermedades;
public class ProcessEnfermedades {
ProcessEnfermedades(String [] sintomas, String[] intensidades, int[]
duraciones) {
Enfermedades enfermedad = new Enfermedades();
enfermedad.setSintomas(sintomas);
enfermedad.setIntensidades(intensidades);
enfermedad.setDuraciones(duraciones);
RulesEnfermedades re = new RulesEnfermedades();
String strSintomas = "", strIntensidades = "", strDuraciones = "";
for ( int i = 0; i < enfermedad.getSintomas().length; i++ )
strSintomas += enfermedad.getSintomas()[i] + " ";
for ( int i = 0; i < enfermedad.getIntensidades().length; i++ )
strIntensidades += enfermedad.getIntensidades()[i] + " ";
for ( int i = 0; i < enfermedad.getDuraciones().length; i++ )
strDuraciones += enfermedad.getDuraciones()[i] + " ";
129
String res = re.resultRules( strSintomas, strIntensidades,
strDuraciones);
System.out.println("resultado test: " + res);
}
public static void main(String[] args) {
//test
String[] sintomas = args[0].split(" ");
String[] intensidades = args[1].split(" ");
String[] duraciones_str = args[2].split(" ");
int[] duraciones = new int[duraciones_str.length];
for (int i = 0; i < duraciones.length; i++) {
duraciones[i] = Integer.parseInt(duraciones_str[i]);
}
ProcessEnfermedades rules = new ProcessEnfermedades(
sintomas,
intensidades, duraciones);
}
}
9.4.1.6 Código fuente de la clase ProcessTestHamilton.java
package cl.aaguilar.rules.process;
import cl.aaguilar.rules.defs.RulesHamilton;
import cl.aaguilar.rules.domain.TestHamilton;
public class ProcessTestHamilton {
private String resultado;
public String getResultado() {
return resultado;
}
public ProcessTestHamilton(int cant_siempre, int cant_casisiempre) {
TestHamilton test = new TestHamilton();
test.setCant_siempre( cant_siempre);
test.setCant_casisiempre( cant_casisiempre);
RulesHamilton rh = new RulesHamilton();
resultado = rh.resultRules( test.getCant_siempre(),
test.getCant_casisiempre());
}
130
public static void main(String[] args) {
//test
int cant_siempre = Integer.parseInt(args[0]);
int cant_casisiempre = Integer.parseInt(args[1]);
ProcessTestHamilton rules = new ProcessTestHamilton(cant_siempre,
cant_casisiempre);
}
9.4.2 Código fuente, aplicación WEB.
9.4.2.1 Código fuente, valida usuario.
package controller;
import home.PmedicoHome;
import java.io.IOException;
import
import
import
import
import
javax.servlet.RequestDispatcher;
javax.servlet.ServletContext;
javax.servlet.ServletException;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import model.Pmedico;
/**
* Servlet implementation class for Servlet: LoginControlle
*
*/
public class LoginController extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
private static final long serialVersionUID = 1L;
public LoginController() {
super();
}
protected void doGet(HttpServletRequest request,
response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
HttpServletResponse
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated method stub
String forward;
131
if(request.getParameter("action")!=null&&
request.getParameter("action").compareTo("validausuario") == 0) {
forward = "/ct_acceso1.jsp";
}
else {
int user = Integer.parseInt(request.getParameter("user"));
String pass = request.getParameter("pass");
System.out.println(user + " " + pass);
PmedicoHome ph = new PmedicoHome();
Pmedico pmedico = ph.getPmedico(user, pass);
if(pmedico != null)
forward = "/portada21.jsp";
else
forward = "/ct_validarusuario.jsp";
}
System.out.println("forward="+forward);
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
}
9.4.2.2 Código fuente, controlador paciente.
package controller;
import beans.*;
import home.ExamenHome;
import home.PacienteHome;
import java.io.IOException;
import java.math.*;
import
import
import
import
import
javax.servlet.RequestDispatcher;
javax.servlet.ServletContext;
javax.servlet.ServletException;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import beans.PacienteBean;
import model.FichaClinica;
import model.Paciente;
import model.Pmedico;
/**
* Servlet implementation class for Servlet: LoginControlle
*
*/
public class PacienteController extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
132
private static final long serialVersionUID = 1L;
public PacienteController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
System.out.println(":: " + request.getParameter("action"));
if(request.getParameter("action").compareTo("obtenerPaciente") == 0)
getPaciente(request, response);
if(request.getParameter("action").compareTo("fichaPaciente") ==
fichaPaciente(request, response);
0)
if(request.getParameter("action").compareTo("ingresoPaciente") == 0)
ingresoPaciente(request, response);
if(request.getParameter("action").compareTo("validarPaciente") == 0)
validarPaciente(request, response);
}
private void validarPaciente(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
String forward = "";
if(request.getParameter("action") !=null &&
request.getParameter("action").compareTo("validarPaciente") == 0) {
forward = "/IngresarPac.jsp";
}
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void ingresoPaciente(HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
int rut = Integer.parseInt(request.getParameter("rut"));
String dvc = request.getParameter("dv");
int dv;
if(dvc.toUpperCase().compareTo("K") == 0)
dv = -1;
else
dv = Integer.parseInt(request.getParameter("dv"));
133
String nombres = request.getParameter("nombres");
String apellidos = request.getParameter("apellidos");
String nacimiento = request.getParameter("nacimiento");
int edad = Integer.parseInt(request.getParameter("edad"));
String sexo = request.getParameter("sexo");
String direccion = request.getParameter("direccion");
int telefono = Integer.parseInt(request.getParameter("fonos"));
String estado = request.getParameter("civil");
String ocupacion = request.getParameter("ocupacion");
String prevision = request.getParameter("prevision");
String comuna = request.getParameter("comuna");
String provincia = request.getParameter("provincia");
String region = request.getParameter("region");
System.out.println(estado);
Paciente paciente = new
Paciente(rut,dv,nombres,apellidos,nacimiento,edad,sexo,estado,telefono,
ocupacion,prevision,direccion,comuna,provincia,region); //USAR EL OTRO
//CONSTRUCTOR
PacienteHome ph = new PacienteHome();
String motivo = request.getParameter("textarea3");
String apertura = request.getParameter("apertura");
String familiares = request.getParameter("textarea2").trim();
String habitos = request.getParameter("textarea");
String depresion = request.getParameter("depresion");
String enfneurologicas = request.getParameter("enfneurologicas");
String hepatitis = request.getParameter("hepatitis");
String hiperarterial = request.getParameter("hiperarterial");
String alergia = request.getParameter("alergia");
String asmabronquial = request.getParameter("asmabronquial");
String ulcera = request.getParameter("ulcera");
String hemopatias = request.getParameter("hemopatias");
String psicopatia = request.getParameter("psicopatia");
String coronariopatia = request.getParameter("coronariopatia");
String diabetes = request.getParameter("diabetes");
String fiebresprolongadas = request.getParameter("fiebresprolongadas");
String uropatias = request.getParameter("uropatias");
String endocrinopatias = request.getParameter("endocrinopatias");
String causaporenfermedad = request.getParameter("causaporenfermedad");
String motivosocial = request.getParameter("motivosocial");
String motivolaboral = request.getParameter("motivolaboral");
String bajaautoestima = request.getParameter("bajaautoestima");
String perdidafamiliar=(String)request.getParameter("perdidafamiliar");
String otros = request.getParameter("otros");
System.out.println(alergia);
FichaClinica ficha = new FichaClinica(rut,apertura, motivo, habitos,
familiares,depresion, enfneurologicas, hepatitis, hiperarterial,
alergia, asmabronquial, ulcera, hemopatias, psicopatia, coronariopatia,
diabetes, fiebresprolongadas, uropatias, endocrinopatias,
causaporenfermedad, motivosocial, motivolaboral, perdidafamiliar,
bajaautoestima, otros);
ph.createPaciente( paciente,ficha);
}
private void fichaPaciente(HttpServletRequest request,
HttpServletResponse response)
{
}
134
private void getPaciente(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
String forward;
Paciente paciente = null;
FichaClinica ficha = null;
String strRut = request.getParameter("rut").trim();
if (strRut.matches("\\d+")) {
int rut = Integer.parseInt(strRut);
PacienteHome ph = new PacienteHome();
paciente = ph.getPaciente(rut);
ficha = ph.getFicha(rut);
System.out.println(ficha);
}
if(paciente != null)
{
forward = "/rg_tpacte_existente.jsp";
request.setAttribute("paciente", paciente);
request.setAttribute("ficha", ficha);
}
else{
forward = "/ct_validarpaciente.jsp";
}
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
}
9.4.2.3 Código fuente, controlador diagnósticos.
package controller;
import
import
import
import
home.DiagnosticoHome;
home.ExamenHome;
home.PacienteHome;
home.SeguimientoPacienteHome;
import java.io.IOException;
import java.util.ArrayList;
import
import
import
import
import
javax.servlet.RequestDispatcher;
javax.servlet.ServletContext;
javax.servlet.ServletException;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import model.Diagnostico;
import model.Examen;
import model.FichaClinica;
135
import model.Paciente;
import model.Tratamiento;
import model.DetalleTratamiento;
import model.SeguimientoPaciente;
/**
* Servlet implementation class for Servlet: LoginControlle
*
*/
public class DiagnosticoController extends
javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
public DiagnosticoController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated method stub
if(request.getParameter("action").compareTo("ingresardiagnostico")
== 0)
ingresardiagnostico(request, response);
if(request.getParameter("action").compareTo("ingresarpacdiagnos")
== 0)
ingresarpacdiagnos(request, response);
if(request.getParameter("action").compareTo("ingresarpactratam")
== 0)
ingresarpactratam(request, response);
if(request.getParameter("action").compareTo("consultardiagnostico")
== 0)
consultardiagnostico(request, response);
if(request.getParameter("action").compareTo("detallediagnostico")
== 0)
detallediagnostico(request, response);
if(request.getParameter("action").compareTo("ingresarpacseguimien
to") == 0)
ingresarpacseguimiento(request, response);
if(request.getParameter("action").compareTo("crearseguimiento")
== 0)
crearseguimiento(request, response);
if(request.getParameter("action").compareTo("consultarseguimiento")
== 0)
consultarseguimiento(request, response);
if(request.getParameter("action").compareTo("realizarDiagnostico")
== 0)
realizarDiagnostico(request, response);
136
}
private void realizarDiagnostico(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
String forward = "";
forward = "/Realizardiagnostico.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void ingresardiagnostico (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
String patologia = request.getParameter("cod_patologia");
int rutpac = Integer.parseInt(request.getParameter("rutpac"));
int rutprofmed= Integer.parseInt(request.getParameter("rutprofmed"));
String cod = request.getParameter("cod_diagnostico");
String nombre_diagnostico =
request.getParameter("nombre_diagnostico");
String fecha_diagnostico = request.getParameter("fecha_diagnostico");
String descripcion_diagnostico =
request.getParameter("descripcion_diagnostico");
String descripcion_tratamiento =
request.getParameter("descripcion_tratamiento");
String observaciones_tratamiento =
request.getParameter("observaciones_tratamiento");
Diagnostico diagnostico = new Diagnostico(rutpac, rutprofmed,
nombre_diagnostico, fecha_diagnostico, descripcion_diagnostico,
patologia, cod);
Tratamiento tratamiento = new Tratamiento(descripcion_tratamiento,
observaciones_tratamiento);
diagnostico.setTratamiento(tratamiento);
ArrayList<DetalleTratamiento> detalletratamientos = new
ArrayList<DetalleTratamiento>();
int num = Integer.parseInt(request.getParameter("num_tratamientos"));
for (int i = 0; i < num; i++) {
String nombre_farmaco = request.getParameter("farmaco" + (i+1));
String cod_det = request.getParameter("codtratam" + (i+1));
String dosis = request.getParameter("dosis" + (i+1));
int comprimidos_diario = 0;
try {
comprimidos_diario = Integer.parseInt(
request.getParameter("comprimidos" + (i+1)));
}
catch (NumberFormatException ex) {
}
String fecha_inicio = request.getParameter("fechainicio" +
(i+1));
String fecha_termino = request.getParameter("fechafinal" +
(i+1));
137
if ( nombre_farmaco.equals("") && dosis.equals("") &&
cod_det.equals(""))
continue;
DetalleTratamiento detalletratamiento = new
DetalleTratamiento(cod_det, nombre_farmaco, dosis,
comprimidos_diario, fecha_inicio, fecha_termino);
detalletratamientos.add(detalletratamiento);
}
tratamiento.setDetalletratamientos(detalletratamientos);
DiagnosticoHome dh = new DiagnosticoHome();
dh.createDiagnostico(diagnostico);
}
private void crearseguimiento (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
int num_diagnosticos =
Integer.parseInt(request.getParameter("num_diagnosticos"));
for (int i = 0; i < num_diagnosticos; i++) {
String
String
String
String
String
String
diagnos_id = request.getParameter("diagnos_id"+(i+1));
codpmed= request.getParameter("codpmed"+(i+1));
fechacontrol = request.getParameter("fechacontrol"+(i+1));
asistencia = request.getParameter("asistencia"+(i+1));
evalglobal = request.getParameter("evalglobal"+(i+1));
proxcita = request.getParameter("proxcita"+(i+1));
if (!( codpmed.equals("") || fechacontrol.equals("") ||
asistencia.equals("") || evalglobal.equals("") || proxcita.equals("")))
{
SeguimientoPaciente seguimientopaciente = new
SeguimientoPaciente (diagnos_id, codpmed, fechacontrol, asistencia,
evalglobal, proxcita);
SeguimientoPacienteHome sh = new SeguimientoPacienteHome();
sh.createSeguimientoPaciente(seguimientopaciente);
}
}
}
private void ingresarpacseguimiento (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
int rutpac = Integer.parseInt(request.getParameter("rutpac"));
PacienteHome ph = new PacienteHome();
Paciente paciente = ph.getPaciente(rutpac);
String forward;
if(paciente != null)
{
SeguimientoPacienteHome sph = new SeguimientoPacienteHome();
ArrayList<Diagnostico> diagnosticos =
sph.obtenerDiagnostico(rutpac);
request.setAttribute("desde_ingresarpaciente", true);
138
{
request.setAttribute("diagnosticos", diagnosticos);
forward = "/seguimientopac.jsp";
}
else
forward = "/ct_validarpaciente.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void ingresarpacdiagnos (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
int rutpac = Integer.parseInt(request.getParameter("rutpac"));
PacienteHome ph = new PacienteHome();
Paciente paciente = ph.getPaciente(rutpac);
String forward;
if(paciente != null)
{
request.setAttribute("desde_ingresarpaciente", true);
forward = "/rg_tdiagxpatologia.jsp";
}
else
forward = "/ct_validarpaciente.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void ingresarpactratam (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
int rutpac = Integer.parseInt(request.getParameter("rutpac"));
PacienteHome ph = new PacienteHome();
Paciente paciente = ph.getPaciente(rutpac);
String forward;
if(paciente != null)
{
request.setAttribute("desde_ingresarpaciente", true);
forward = "/rg_tdiagxpatologia.jsp";
}
else
forward = "/ct_validarpaciente.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
139
{
private void consultardiagnostico (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
int rut_pac = Integer.parseInt(request.getParameter("pac_rut"));
DiagnosticoHome dh = new DiagnosticoHome();
ArrayList<Diagnostico> diagnostico = dh.getDiagnosticos(rut_pac);
request.setAttribute("diagnosticos", diagnostico);
String forward="/emisiondiagnos.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void detallediagnostico (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
int id = Integer.parseInt(request.getParameter("id"));
DiagnosticoHome dh = new DiagnosticoHome();
Diagnostico diagnostico = dh.getDiagnostico(id);
Tratamiento tratamiento = dh.getTratamiento( diagnostico.getId());
ArrayList<DetalleTratamiento> detalletratamiento =
dh.getDetalleTratamiento(tratamiento.getId());
request.setAttribute("diagnostico", diagnostico);
request.setAttribute("tratamiento", tratamiento);
request.setAttribute("detalletratamiento", detalletratamiento);
String forward="/rg_tdiagxpatologia1.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void consultarseguimiento (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
int pac_rut = Integer.parseInt(request.getParameter("pac_rut"));
SeguimientoPacienteHome sph = new SeguimientoPacienteHome();
ArrayList<SeguimientoPaciente> seguimientos =
sph.getSeguimientos(pac_rut);
request.setAttribute("seguimientos", seguimientos);
String forward="/seguimientopac1.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
}
140
{
9.4.2.4 Código fuente, controlador JESS.
package controller;
import java.io.IOException;
import
import
import
import
import
javax.servlet.RequestDispatcher;
javax.servlet.ServletContext;
javax.servlet.ServletException;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import cl.aaguilar.rules.process.ProcessTestHamilton;
/**
* Servlet implementation class for Servlet: LoginControlle
*
*/
public class JESSController extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
private static final long serialVersionUID = 1L;
public JESSController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
if(request.getParameter("action").compareTo("obtenerresultadohamil
ton") == 0)
obtenerresultadohamilton(request, response);
if(request.getParameter("action").compareTo("detectardiagnostico")
== 0)
detectardiagnostico(request, response);
}
private void detectardiagnostico(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
final int NUM_SINTOMAS = 27;
String[] estados = new String[NUM_SINTOMAS];
String[] intensidad = new String[NUM_SINTOMAS];
int[] duracion = new int[NUM_SINTOMAS];
141
{
for (int i = 1; i <= NUM_SINTOMAS; i++) {
estados[i] = request.getParameter("select" + i);
intensidad[i] = request.getParameter("int" + i);
duracion[i] = Integer.parseInt(request.getParameter("t" + i));
}
}
private void obtenerresultadohamilton(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
int siempre = Integer.parseInt(request.getParameter("siempre"));
int casisiempre =
Integer.parseInt(request.getParameter("casisiempre"));
int algunasveces =
Integer.parseInt(request.getParameter("algunasveces"));
int no = Integer.parseInt(request.getParameter("no"));
ProcessTestHamilton test_hamilton = new
ProcessTestHamilton(siempre, casisiempre);
String resultado_test = test_hamilton.getResultado();
request.setAttribute("resultado_test", resultado_test);
String forward = "/TestJESS.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
}
9.4.2.5 Código fuente, controlador profesional médico
package controller;
import home.PacienteHome;
import home.PmedicoHome;
import java.io.IOException;
import
import
import
import
import
javax.servlet.RequestDispatcher;
javax.servlet.ServletContext;
javax.servlet.ServletException;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
import model.FichaClinica;
import model.Paciente;
import model.Pmedico;
/**
* Servlet implementation class for Servlet: LoginControlle
*
*/
142
{
public class PmedicoController extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
private static final long serialVersionUID = 1L;
public PmedicoController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
if(request.getParameter("action").compareTo("busquedaPmedico") == 0)
getbusquedaPmedico(request, response);
if(request.getParameter("action").compareTo("consultarPmedico")== 0)
getconsultaPmedico(request, response);
}
private void getPmedico(HttpServletRequest request, HttpServletResponse
response) {
String codigoprof = request.getParameter("codigoprof");
PmedicoHome ph = new PmedicoHome();
Pmedico medico = ph.busqueda(codigoprof);
}
private void getbusquedaPmedico(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException {
String forward = "";
String codigoprof = request.getParameter("codigoprof");
PmedicoHome ph = new PmedicoHome();
Pmedico medico = ph.busqueda(codigoprof);
request.setAttribute("medico",medico);
forward="/rg_tprofmed.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void getconsultaPmedico(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException {
String forward = "";
int rut = Integer.parseInt(request.getParameter("rut").trim());
PmedicoHome ph = new PmedicoHome();
Pmedico medico = ph.getconsultaPmedico(rut);
143
request.setAttribute("medico",medico);
forward="/rg_tprofmed.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
private void fichaPaciente(HttpServletRequest request,
HttpServletResponse response)
{
}
private void getPaciente(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
int rut = Integer.parseInt(request.getParameter("rut"));
PacienteHome ph = new PacienteHome();
Paciente paciente = ph.getPaciente(rut);
String forward;
if(paciente != null)
{
forward = "/rg_tpacte_existente.jsp";
request.setAttribute("paciente", paciente);
}
else
forward = "/rg_tpacte_nuevo.jsp";
ServletContext app = getServletContext();
RequestDispatcher disp;
disp = app.getRequestDispatcher(forward);
disp.forward(request, response);
}
9.4.2.6 Código fuente, DBConection.java
package DBConections;
import
import
import
import
java.io.IOException;
java.sql.Connection;
java.sql.DriverManager;
java.sql.SQLException;
public class DBConection {
private static DBConection instance ;
static Connection con = null;
private DBConection(){
con = getConn();
}
144
public static DBConection getInstance() {
if(instance == null || con == null)
instance = new DBConection();
return instance;
}
private Connection getConn(){
Connection conexion=null;
String drivers = "com.mysql.jdbc.Driver";
if (drivers != null)
System.setProperty("jdbc.drivers", drivers);
String url = "jdbc:mysql://localhost/clinica";
String username = "root";
String password = "apache";
try {
conexion = DriverManager.getConnection(url, username, password);
} catch (SQLException e2) {
e2.printStackTrace();
}
return conexion;
}
public Connection getConnection()
throws SQLException, IOException
{
return con;
}
}
9.4.2.7 Código fuente, PmedicoBean.java
public class PmedicoBean {
private DBConection con;
public PmedicoBean() {
super();
}
public Pmedico getPmedico(int rut, String pass)
{
Connection conn = null;
ResultSet rs = null;
Pmedico soc = null;
PreparedStatement stat = null;
con = DBConection.getInstance();
String query = "SELECT PMED_RUT, PMED_NOMBRE " +
"FROM pmedico WHERE PMED_RUT = " + rut + "
AND PMED_PASS = '" + pass + "'";
145
try {
conn = con.getConnection();
stat = conn.prepareStatement(query);
rs = stat.executeQuery();
rs.next();
soc = new Pmedico(rs.getInt(1),rs.getString(2));
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(query + "\n");
return soc;
}
Cabe señalar, que los códigos que se dieron ha conocer se encuentran en la carpeta src
del proyecto Web, detallados los más primordiales . (clases java (*.java))
Obviamente, algunos no se dieron a conocer, ya que las clases java, de las que no se
mostraron, se podían importar. En todo caso, en la parte superior del código se
visualizan todos los import que se requerían.
Se observa también el código de conexión a la base de datos, proceso fundamental.
Y por último, presentamos uno de los códigos Bean.java, la del profesional médico,
PmedicoBean.java, sólo para explicar que la clase PmedicoBean crea una nueva
instancia en la base de datos y devuelve el objeto del tipo clase. (cualquiera de los
profesionales médicos)
146
9.5 Anexo V: Evaluación y validación del proyecto de tesis
Antes que dé a conocer la evaluación y validación del proyecto de tesis, quisiera
señalar tres puntos importantes. Puntos fundamentales para la finalización de este
proyecto.
9.5.1 Motivación para proyecto de tesis
La motivación del presente proyecto de tesis se originó por las siguientes razones:
 En la actualidad se puede observar la existencia de un alto porcentaje de personas
que padecen algún tipo de Depresión. Y de no ser detectada a tiempo, podría
implicar en un deterioro físico y psicológico en estas personas, afectando sus
vidas, ya sea familiar y laboral.
 Por la necesidad del Hospital Base de Puerto Montt, específicamente, en el
Policlínico de Psiquiatría. Actualmente no existe una herramienta que contribuya
al diagnóstico médico de esta patología.
En consecuencia, la incorporación de este prototipo de software médico, consiste en
apoyar la toma de decisiones del profesional médico, mediante estos SBC desarrollados
en el seno de la IA.
Atendiendo a la necesidad expuesta previamente, se pretende desarrollar
herramientas que permitan apoyar procesos presentes en el Hospital Base de Puerto
Montt.
Las modificaciones del actual sistema de salud y los requerimientos de mejoría, son
de vital importancia para una atención integral a pacientes que presentan Depresión.
Enfatizando primordialmente, a los programas que el gobierno efectúa hoy en día,
como es el Plan Auge, iniciado a partir desde junio del año 2006. Es favorable, ya que al
considerar el Plan Auge, existe mayor cobertura en respaldar a todas las personas que
147
presentan distintas patologías. Específicamente, a personas de pocos recursos, y de
avanzada edad. Por lo tanto, es de gran necesidad la contribución estatal. Además, se
están realizando convenios con ISAPRES, lo que beneficia al público a una mayor
atención integral en el sistema de salud.
9.5.2 Restricciones a considerar.
Referente a las restricciones, se asocia al hardware del hospital base de Puerto
Montt, Policlínico de Psiquiatría, varios PCs fueron dados de baja, no se tenían las
herramientas necesarias, sólo recurrir a los recursos disponibles que se tenían en ese
momento y que no eran de lo mejor, ya que las especificaciones de los PCs eran muy
limitadas.
Por lo tanto, el funcionamiento del sistema se realizó en un notebook HP con las
siguientes especificaciones:
a) Software:

Internet Explorer

S.O Windows XP Home Edition, Versión 2002 Service Pack 2
b) Hardware:

CPU Intel Core ,Centrino 1.86 GHz

512 MB RAM

Disco Duro 60GB
Con respecto al diseño de solución del prototipo, como otra limitación, radica en
acotar y definir la cantidad de enfermedades, ya que es muy complejo analizarlas todas.
Es necesario señalar, que no existe documentación de software construido en el
establecimiento hospitalario de Puerto Montt, Servicio de Psiquiatría que otorgue apoyo
al prototipo, sólo con gran disposición del equipo médico involucrado, y por supuesto
148
del profesor patrocinante e informante de la Escuela de Ingeniería Civil en Informática,
es posible diseñar e implementar el prototipo de solución sugerido.
9.5.3
Comentarios
Con relación al prototipo de proyecto de tesis, resultó al inicio un poco complicado y
confuso, debido a la falta de conocimiento en esta área de I.A.
Actualmente, no es muy común encontrar sistemas de este índole, pero sí, existe
inquietud por tener nociones acerca de cómo operan estos sistemas que son bastantes
eficientes. Después de ver todo esto tan ambiguo, se tornó muy interesante el investigar
no sólo de las herramientas informáticas para ser aplicadas al sistema, sino también
estudiar acerca de una enfermedad, que en algún momento de nuestra vida la podríamos
tener.
Aplicar la medicina en estos sistemas es un gran desafío, debido a las
consideraciones que se deben tomar en cuenta cuando se realiza un diagnóstico médico.
Por lo tanto, fue grato el haber desarrollado este prototipo, gracias al apoyo del
profesor Martín Solar y Gladys Mansilla, que de alguna manera se responsabilizaron de
este proyecto de tesis, junto a la psicóloga Melina Miranda.
Además, con respecto a los resultados obtenidos, se puede decir que se logró a
cabalidad con las expectativas, en tanto que los resultados fueron claros y aceptados por
el profesional médico del Policlínico de Psiquiatría de Hospital Base de Puerto Montt, ya
que la patología era de gran interés.
En consecuencia, a continuación se da a conocer un certificado de acreditación, que
valida y evalúa el sistema médico.
149
9.5.4
Certificado de validación y evaluación del proyecto de tesis.
150
Descargar