Está en la página 1de 140
UNIVERSIDAD TECNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS TESIS DE GRADO Previa a la obtención

UNIVERSIDAD TECNICA DE MANABÍ

FACULTAD DE CIENCIAS INFORMÁTICAS

TESIS DE GRADO

Previa a la obtención del título de:

ANALISTA EN SISTEMAS

TEMA:

“DESARROLLO

AUTOMATIZAR

DE

EL

PACIENTES,

PARA

UN

SISTEMA

INFORMATICO

QUE

PERMITA

INGRESO

DE

LA

HISTORIA

CLÍNICA

DE

EL

CONSULTORIO

MÉDICO

DEL

DR.

JOSÉ

INTRIAGO ANDRADE.”

AUTORA:

ANA MARÍA ARGUELLO RUBIRA

DIRECTOR DE TESIS Ing. Esthela San Andrés Laz Mg. Sc.

PORTOVIEJO – MANABÍ – ECUADOR

2010

1

CERTIFICACIÓN

Ing. Esthela San Andrés Laz, certifica que la presente tesis ha sido elaborada por

la Señora Ana María Arguello Rubira bajo mi dirección, control y seguimiento. El

presente

trabajo

reúne

los

requisitos

de

una

investigación

y

programación

concluida mediante el esfuerzo, dedicación y constancia; tanto en la parte teórica,

investigativa y práctica, lo que permite otorgar su originalidad.

Para constancia y validez, firmo el documento.

Atentamente;

Ing. Esthela San Andrés Laz

DIRECTORA DE TESIS

2

UNIVERSIDAD TÉCNICA DE MANABÍ

FACULTAD DE CIENCIAS INFORMÁTICAS ESCUELA DE COMPUTACIÓN

TEMA:

“Desarrollo de un Sistema Informático que permita automatizar el ingreso de la

Historia Clínica de pacientes, para el consultorio médico del Dr. José Intriago

Andrade.”

TESIS DE GRADO

Sometida a consideración del Tribunal de Revisión y Sustentación, legalizada por el Honorable Consejo Directivo como requisito previo a la obtención del Título de:

ANALISTA EN SISTEMAS

APROBADA POR:

Ing. Carlos A. Intriago Zambrano

Ing. Cristhian Torres Morán

3

Ing. Jimmy Zambrano Acosta

DECLARATORIA DE AUTORIA

Ana María Arguello Rubira, declara que la presente tesis constituye requisito

previo la obtención del título de Analista en Sistemas bajo la supervisión de la

Ing. Esthela San Andrés Laz.

Autorizo al centro de información de la Universidad para que el presente trabajo

se convierta en un documento de lectura, de acuerdo a los requisitos establecidos

por la institución. Finalmente expresamos que el presente trabajo investigativo ha

sido de mi autoría, razón por la cual cedo los derechos a la Universidad Técnica

de Manabí.

Sra. Ana María Arguello Rubira

Autor

4

AGRADECIMIENTO

En la vida hay momentos de cambios donde hay que tomar decisiones y

emprender nuevos propósitos. Yo estoy en ese instante de cambio, evolución,

aprendizaje y superación gracias a mi esposo, merecedor de mi agradecimiento, él

es quien me brindó todo el apoyo y la paciencia necesaria para culminar mi

carrera. El enriquecimiento personal que me brinda no tiene parangón, pues es en

su autenticidad donde reside su secreto, su tesoro. Un tesoro que nadie podrá

robarle, una esencia de luz cristalina que forma su ser.

5

DEDICATORIA

Dedico este éxito académico a mis hijos: Silvia, José Luis, Leticia , Ana María; a

mis nietas: Melanie, María Cristina y Rafaela para que sepan y tengan siempre

presente que no hay obstáculo capaz de imponerse; si queremos podemos llegar

más lejos, si queremos podemos llegar más alto, si queremos podemos hacer lo

que sea…”Sólo hay que proponérselo

Si alguna vez sus sueños se derrumban busquen un poco de luz en la ventana,

prométanse a sí mismo un arco iris y vuelvan a comenzar.

No se detengan, construyan nuevos sueños. Piensen siempre que en su camino

nada es imposible.

Debo dedicar este esfuerzo también a mi madre, ya que nos inculcó y nos sembró

en lo más profundo de nuestro ser ese deseo de superación que ha latido en mi

hasta ahora y seguirá latiendo por siempre.

6

RESUMEN EJECUTIVO

En la actualidad todas las instituciones públicas o privadas no pueden prescindir

de los adelantos tecnológicos, la informática se ha vuelto una herramienta

indispensable para el desarrollo y servicio a la comunidad.

Toda la información recopilada que sirvió como argumento para respaldar este

programa, se basa en cinco años de observaciones a los problemas vividos a diario

en este consultorio por la falta de un sistema

basado en

un software de fácil

manejo, el que dará un cambio total a la atención en este lugar que presta tanto

servicio a la comunidad de Bahía de Caráquez y a la zona norte de Manabí.

Este

sistema

será

un

soporte

información de este consultorio.

indispensable

para

la

administración

de

la

Dicho

programa informático desarrollado en la siguiente tesis cumple con las

características de normatividad en aplicaciones de escritorio. Posee además

factibilidad justificada en su totalidad y respaldada económicamente, cuyo detalle

están en el presente informe.

7

EXECUTIVE SUMMARY

Nowadays all public and private entities lack technological advances; computer

science has become an indispensable tool for the development and service of the

community.

All the information gathered was used as an argument to back up this program, it

is based in five years of observing the problems encountered daily in this medical

office due to the lack of adequate and easy to use software that will improve the

customer service for Bahía de Caráquez’ community and Manabí’s north region.

This system will be an indispensable support to organize and manage the

information of this medical office.

This

program

elaborated

for

this

characteristics of desktop applications.

thesis

complies

with

the

normative

It also possesses total justified feasibility

and an economical back up, which details follow in this report.

8

INTRODUCCIÓN

Desde que la informática entró a constituir una herramienta básica en todas las

actividades del ser humano, también lo hizo en el trabajo de los médicos y de sus

lugares

de

trabajo,

como

consultorios,

Hospitales,

Clínicas,

Dispensarios,

Ministerios de Salud, Organismos Internacionales(OPS-OMS) etc. realizando para

estas actividades programas informáticos que han facilitado mucho el quehacer

médico, permitiendo en su base de datos conocer estadísticamente de manera

rápida y oportuna la morbilidad,

mortalidad de las diferentes enfermedades que

afectan al hombre y sus comunidades.

Sin embargo es muy poco lo que se ha hecho a nivel de los consultorios privados,

los mismos que han tenido que adaptar su atención en base a programas realizados

para otro tipo de atención médica Institucional pública o privada.

En nuestro país la actividad médica privada atiende en sus consultorios más del

40% de las enfermedades ambulatorias, motivo por el que se realizó un programa

especial, tomando como referencia el del Dr. José Intriago Andrade

y dado que

atiende seis horas diarias desde las 12:30 H. hasta las 14:30 y desde las 16:00H

hasta las 20:00 H. con un promedio de atención de veinte pacientes por día.

9

El programa desarrollado sirve de guía y de gran utilidad para todos los médicos

que trabajan privadamente; cumplido este propósito, se hizo un gran aporte para la

atención exitosa de los pacientes particulares, facilitando el trabajo del los

galenos, sustituyendo la Historia Clínica tradicional (manual), en soporte de

papel, por Historias Clínicas Computarizadas y permitiendo además que los

organismos de salud pública puedan conocer cuando lo requieran el estado de

salud de los pacientes que se atienden en sus consultorios.

10

CAPÍTULO I

1.1. PLANTEAMIENTO DEL PROBLEMA

Jugando la Historia Clínica un papel preponderante tanto en la vida del enfermo

como en la del médico; ya que reiteran resultados de pruebas que deberían estar

permanentemente registrados; sin embargo, el tipo de ayuda que tradicionalmente

ha estado a la disposición de los médicos para llevar a cabo esta tarea ha

disminuido la utilidad de la información que el registro mantiene, pues

tiende a

perder precisión en el proceso de transcripción y consecuentemente el médico

deja de percibir los beneficios que un registro médico electrónico pudiera proveer

como herramienta de soporte a decisiones capaces de sugerir intervenciones

oportunas basadas en la información recopilada.

1.2. FORMULACION DEL PROBLEMA

¿Cómo incide el análisis, diseño y desarrollo

de un sistema informático que

permita automatizar el ingreso de las historias clínicas de los pacientes, en el

consultorio médico particular del Dr. José Intriago Andrade en la ciudad de Bahía

de Caráquez?

11

1.3.

DELIMITACIÓN DEL PROBLEMA

La presente tesis se llevó a cabo en el consultorio privado de consulta externa en

medicina general del Dr. José Intriago Andrade ubicado en la ciudad de Bahía de

Caráquez, Provincia de Manabí.

1.4.

ANTECEDENTES

 

La

incorporación

de

los

avances

tecnológicos

y

científicos

a

la

medicina

sorprenden por la fascinación que producen y por su fuerza diagnóstica y

terapéutica.

La Medicina actual dentro de su desarrollo no ha escapado al fenómeno de la

Computación, y como condición necesaria, su vínculo estrecho con la Ciencia de

la Información, han dado lugar a la Informática Médica, que agrupa los campos

del software y el hardware para su uso en la Medicina.

La informatización de la historia clínica se ha convertido durante los últimos años

en objetivo de la mayor parte de los trabajos de la Informática Médica.

12

Ante esta realidad y luego de observar que los registros médicos tradicionalmente

se lleva aún en papeles y nos podríamos encontrar con la sorpresa de que los datos

que originalmente existían en relación al paciente puede que no estén disponibles

en la próxima visita que éste realice, ya que es un hecho bien conocido que parte

de los registros pueden perderse con el pasar del tiempo como consecuencia de su

manipulación y almacenaje; esto acarrea consecuencias nefastas ya que estas

notas clínicas tienden a ser resúmenes de hechos importantes que han sido

guardados previamente y que reiteran resultados de pruebas que deberían en todo

momento estar a la disposición. La computadora es el método idóneo para facilitar

el registro, la elaboración y procesamiento de la información y para lograr la

adopción de decisiones. En todos los sentidos la Computación constituye una

herramienta que ayuda a resolver los problemas que se presentan y esta ayuda no

puede

ni

debe

ser

subestimada

por

los

médicos

ya

que

nuestros

días

se

caracterizan por un desarrollo colosal de la técnica, y su aplicación cada vez más

extensa a todos los ámbitos de la vida humana, en particular.

1.5. JUSTIFICACIÓN

La historia clínica es una herramienta indispensable en la práctica clínica de los

profesionales de la salud. Es un documento que debe contener la narración escrita,

clara, precisa, detallada y ordenada de todos los datos y conocimientos, tanto

13

personales como familiares, que se refieren a un paciente y que sirven de base

para el diagnóstico definitivo y tratamiento adecuado de su enfermedad sin

embargo, en la actualidad en este consultorio su formato tradicional enfrenta

diversas dificultades, que se han hecho evidentes durante la práctica diaria como

es su deterioro o pérdida, debido a que la historia convencional, en su formato de

papel,

sólo

puede

existir en

un

lugar y

en

un

momento

determinado, en

condiciones determinadas, así como la presencia de una escritura pobre, ilegible e

incompleta que dificulta la interpretación del mensaje que se pretende enviar. Otra

de sus limitaciones es que sólo puede contribuir de forma pasiva a la toma de

decisiones y esto dificulta el análisis con fines científicos o de planeamiento de

estrategias de salud.

Toda esta problemática fué motivo suficiente para justificar el análisis y la

creación de un programa al cual tendrá acceso el galeno de una manera rápida,

ágil y oportuna para obtener la información requerida.

Teniendo el conocimiento de la existencia de una idiosincrasia difícil en nuestro

medio, lo convierte a este estudio en un reto para lograr obtener desde el primer

momento datos reales y precisos de cada paciente.

14

Los beneficiarios de este trabajo serán los pacientes y los médicos ya que tendrán

información confiable e inmediata de la situación del enfermo.

1.6. OBJETIVOS

1.6.1. OBJETIVOS GENERALES

Diseñar

e implementar un sistema informático de Historias Clínicas para lograr

que los registros de cada persona que se encuentren almacenados en una base de

datos, sean de fácil acceso para el médico.

1.6.2. OBJETIVOS ESPECÍFICOS

Crear una base de datos para globalizar los datos médico-paciente

Facilitar la búsqueda del registro de los pacientes.

Obtener reportes inmediatos.

Capacitar al personal que va a manipular el sistema.

15

1.7. BENEFICIARIOS

1.7.1 DIRECTOS

Al implementar este sistema informático los beneficiarios directos serán las

personas que acuden al consultorio médico del Dr. José Intriago Andrade.

1.7.2 INDIRECTOS

La comunidad de Bahía de Caráquez y del Cantón Sucre.

16

2.1. MARCO TEÓRICO

CAPÍTULO II

2.1.1. HISTORIAS CLINICAS

Desde el punto de vista clínico, puede entonces afirmarse que la HC se origina

con el primer episodio de la enfermedad o el control de salud, en cuyo contexto se

atiende al paciente, sea en la atención primaria o secundaria.

Constituye, además, el registro completo de la atención prestada al paciente

durante su enfermedad y de ello, su trascendencia como documento legal.

No es un simple relato, la descripción de una enfermedad aislada; comprende las

consideraciones de médico, de gran trascendencia en el aspecto jurídico. Tiene

gran valor para diagnóstico, el tratamiento, el pronóstico y la epidemiología,

aparte de documentar la habilidad y conocimiento del médico que la realiza.

17

Según

Delfor Podestá 1

una

fundamentales; ha de ser:

historia clínica

debe

reunir ciertas condiciones

a) Clara y precisa. Actualmente, no es utilizada sólo por el médico que la

elabora, sino que ha de servir a otros profesionales que desempeñan su

actividad en cualquier institución sanitaria y pueden tener acceso a ella.

b) Completa y metódicamente realizada. Es necesario seguir un plan en el

examen de los enfermos. La mayoría de los errores diagnósticos no derivan de

la ignorancia, sino de lo apresurado de una actuación.

c) Realizada de manera sistemática, sin caer en una abstracción que impida ver la

realidad. A estos elementos añadiríamos uno que la práctica de la medicina

actual exige; el consentimiento informado del paciente.

Si obviamos épocas anteriores, se puede decir que de Hipócrates son las primeras

historias clínicas conocidas. Nacido 460 años antes de Cristo, se lo considera el

padre

de

la

medicina.

Las

historias

clínicas

hipocráticas,

o

catástasis,

consideraban la totalidad del hombre, su ambiente y época de la vida. Hipócrates

1 Delfor Podestá L. La historia clínica. En: Mazzei E, Rozmann C. (Dirs.). Semiotecnia y fisiopatología. Buenos Aires: El Ateneo; 1977.

18

dio importancia a la anamnesis y la observación, y practicó la percusión y la

auscultación inmediata. Aconsejaba interrogar al enfermo sobre la naturaleza y

duración de sus sufrimientos, sobre el funcionamiento del intestino y sobre la

dieta que seguía. Inició el método racional de la descripción cuidadosa de los

síntomas y manifestaciones obtenidas directamente del enfermo y creó la historia

clínica.

2.1.2. EVOLUCIÓN DEL REGISTRO MEDICO ELECTRÓNICO COMO

HERRAMIENTA

El registro médico electrónico ha existido por décadas, pero a diferencia de otros

sistemas computarizados en el sector salud, su adopción ha sido limitada.

Múltiples sistemas clínicos computarizados han sido implementados en una

amplia variedad de plataformas y arquitecturas, desde el mainframe, pasando por

19

el mini computador y el computador personal hasta aquellos cuya operación se

basa en el uso la Internet 2 .

Sin embargo, la adopción de estos sistemas ha sido lenta y reducida a ciertas

instancias. Varios son los factores que pudiesen asociarse a la limitada adopción

de los mismos, entre los cuales se pueden mencionar la tecnología requerida para

su

operación

y

uso,

resistencia

por

parte

de

la

comunidad

médica

a

su

implementación, factores socio-políticos, limitaciones económicas, o simplemente

el hecho de que éstos reflejan un paradigma erróneo del proceso clínico, la

historia

y

evolución

de

los

pacientes

cuya

información

es

almacenada

y

administrada a través de ellos, y en general de la relación médico-paciente y del

papel que cada uno de ellos juega en el proceso de administración de salud.

El primer cambio significativo en el registro médico ocurrió durante la Guerra de

Crimen, periodo durante el cual Florence Nightingale sistematizó el proceso de

recolección y registro de información médica. Este es el primer caso en el cual los

registros médicos tuvieron un rol significativo en el mejoramiento y orientación

de la salud pública. Sin embargo, el cambio más trascendental en la historia del

registro médico tuvo lugar con la contribución hecha por Lawrence Weed a

mediados del Siglo XX, quien introdujo la noción de desarrollar el registro

2 Safran C., Sands DZ, Rind DM. Online Medical Records: A Decade of Experience. Method Inform Medicine 1999; 38:308-12.

20

médico en torno a los problemas presentados por el paciente 3 . La innovación

hecha por Dr. Weed fue el reconocer la necesidad de organizar la historia del

paciente en forma longitudinal en el contexto de los problemas presentados por el

paciente en lugar de limitarse a recolectar las conclusiones del episodio de

atención al paciente.

2.1.3. BASES DE DATOS

El término base de datos fue acuñado por primera vez en 1963, en un simposio

celebrado en California.

Una base de datos se puede definir como un conjunto de información homogénea

que mantiene una estructura ordenada, y que toda ella se encuentra relacionada

con un mismo tema.

3 Weed LL. Medical records that guide and teach. New Engl. J. Med. 278 (1968) 593–600.

21

CARACTERÍSTICAS:

1. Independencia lógica y física de los datos.

2. Redundancia mínima.

3. Acceso concurrente por parte de múltiples usuarios: control de concurrencia

mediante técnicas de bloqueo o cerrado de datos accedidos.

4. Distribución espacial de los datos: la independencia lógica y física facilita la

posibilidad de sistemas de bases de datos distribuidas.

5.

Integridad de los datos: se refiere a las medidas de seguridad que impiden que

se

introduzcan

datos

erróneos.

Esto

puede

suceder

tanto

por

motivos

físicos (defectos de hardware, actualización incompleta debido a causas externas),

como de operación (introducción de datos incoherentes).

6. optimización de consultas permite la rápida ejecución de las mismas.

7. Seguridad de acceso y auditoría: El sistema de auditoría mantiene el control de

acceso a la base

de

datos, con el objeto de saber qué o quién realizó una

determinada modificación y en qué momento.

8. Respaldo y recuperación de datos.

22

9. Acceso a través de lenguajes de programación estándar: se refiere a la

posibilidad ya mencionada de acceder a los datos de una base de datos mediante

lenguajes de programación ajenos al sistema de base de datos propiamente dicho.

VENTAJAS

La principal ventaja de utilizar bases de datos es que múltiples usuarios pueden

acceder a ellas al mismo tiempo.

2.1.4. VISUAL BASIC

Visual Basic es una aplicación y un lenguaje de programación desarrollados por

Alan Cooper para Microsoft. Se origina en el clásico lenguaje BASIC. La primera

versión salió en 1991 en un entorno relativamente sencillo para facilitar la

creación de programas gráficos. Visual Basic, como su nombre lo indica, utiliza

una interfaz totalmente visual.

Actualmente, los programas creados en Visual Basic sólo funcionan en Windows.

23

La aplicación Visual Basic, permite crear ventanas, botones, menús, etc. de forma

sencilla con solo arrastrar y soltar los elementos. Luego se pueden definir las

apariencias, posiciones y comportamientos tanto de forma visual como utilizando

códigos de programación.

Este lenguaje toma elementos de diferentes paradigmas como el orientado a

objetos y el orientado a eventos.

Visual

Basic

suele

considerarse

un

sistema

RAD

(Rapid

Application

Development), porque permite crear aplicaciones de forma rápida, especialmente

para prototipos.

Visual Basic constituye un IDE (entorno de desarrollo integrado o en inglés

Integrated

Development

Enviroment)

que

ha

sido

empaquetado

como

un

programa de aplicación, es decir, consiste en un editor de código (programa donde

se escribe el código fuente), un depurador (programa que corrige errores en el

código fuente para que pueda ser bien compilado), un compilador (programa que

traduce el código fuente a lenguaje de máquina), y un constructor de interfaz

gráfica o GUI (es una forma de programar en la que no es necesario escribir el

código para la parte gráfica del programa, sino que se puede hacer de forma

visual).

24

VENTAJAS

Posee una curva de aprendizaje muy rápida.

Integra el diseño e implementación de formularios de Windows.

Permite usar con suma facilidad la plataforma de los sistemas Windows.

El código en Visual Basic es fácilmente migrable a otros lenguajes.

2.2. MARCO CONEPTUAL

2.2.1. SISTEMA DE GESTIÓN DE BASE DE DATOS

El propósito general de los sistemas de gestión de base de datos es el de manejar

de manera clara, sencilla y ordenada un conjunto de datos que posteriormente se

convertirán en información relevante, para un buen manejo de datos.

En el entorno informático, la gestión de bases de datos ha evolucionado desde ser

una

aplicación

más

disponible

para

los

computadores,

a

ocupar

un

lugar

fundamental en los sistemas de información. En la actualidad, un sistema de

25

información será más valioso cuanto de mayor calidad sea la base de datos que lo

soporta, la cual resulta a su vez un componente fundamental del mismo, de tal

forma que puede llegarse a afirmar que es imposible la existencia de un sistema de

información sin una base de datos, que cumple la función de "memoria", en todas

sus acepciones posibles, del sistema.

2.2.2. LENGUAJE DE PROGRAMACIÓN

Los

lenguajes

de

programación

son

herramientas

que

nos

permiten

crear

Programas y software. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java, etc.

Una computadora funciona bajo control de un programa el cual debe estar

almacenado en la unidad de memoria; tales como el disco duro.

2.2.3. SISTEMAS OPERATIVOS

Un Sistema operativo (SO) es un programa informático que actúa de interfaz

entre los dispositivos de hardware y el usuario. Es responsable de gestionar,

coordinar las actividades y llevar a cabo el intercambio de recursos de un

computador. Actúa como estación para las aplicaciones que se ejecutan en la

26

máquina. Uno de los más prominentes ejemplos de sistema operativo, es el núcleo

Linux 2 , el cual junto a las herramientas GNU, forman las llamadas distribuciones

GNU/Linux.

2.2.4. INTERFAZ DEL USUARIO

Es el medio con que el usuario puede comunicarse con una máquina, un equipo o

una computadora, y comprende todos los puntos de contacto entre el usuario y el

equipo, normalmente suelen ser fáciles de entender y fáciles de accionar.

TIPOS DE INTERFAZ

A) Una interfaz de hardware: teclado, ratón y pantalla visualizadora.

B) Una interfaz de software: entrega información a través de lo que usuario

observa en la pantalla.

C) Una interfaz de Software-Hardware: Es

puente entre la maquina y las

personas, permite a la maquina entender la instrucción y a el hombre entender el

código binario traducido a información legible.

27

3.1. HIPOTESIS

CAPÍTULO III

Desarrollar y diseñar un sistema informático para Historias Clínicas, volverá

eficaz el manejo de la información de los pacientes.

3.2. DEFINICIONES CONCEPTUALES Y OPERACIONALES DE LAS

VARIABLES

3.2.1 VARIABLE INDEPENDIENTE:

Sistema informático.

3.2.2. VARIABLE DEPENDIENTE

El manejo de la información de los pacientes.

29

3.3. OPERACIONALIZACION DE VARIABLES

3.3.1 Variable Independiente:

CONCEPTUALIZACION

CATEGORÍAS

INDICADORES

ITEMS BASICOS

Colección de programas, procedimientos, datos y equipos utilizados en el proceso de la información.

Normas a seguir en la construcción de software.

Flexibilidad en el manejo de la información.

¿Qué

tipos

de

conocimientos

se

necesitan

Rapidez

y

Sistema informático confiable.

 

para

la

 

seguridad en el manejo de toda la información procesar.

a

información?

¿Con

qué

tipo

Representación lógica mediante

de tecnología

se cuenta?

Interpretación crítica de una o varias experiencias que a partir de su ordenamiento y descubre la lógica.

diagramas

de

flujos

a

través

de análisis.

3.3.2 Variable Dependiente:

CONCEPTUALIZACIÓN

CATEGORÍAS

 

ITEMS

INDICADORES

BASICOS

Cumplimiento de objetivos para poder satisfacer los requerimientos exigidos por los pacientes.

Determinación

Mejorar

el

¿Cómo

se

y

orden

de

desempeño del

registra el

actividades que

asistente

proceso

y

se

desean

médico.

control de la

 

sistematizar.

 

la

Mejorar

información

Implementar

atención a los

?

un

mejor

pacientes

a

manejo

en

el

través de un

tratamiento

de

manejo rápido

la información

seguro de la información.

y

30

3.4. METODOLOGÍA

En

este

trabajo

se

tomaron

en

cuenta

los

siguientes

aspectos:

método,

instrumentos de investigación, población, muestra y recursos.

3.4.1. MODALIDAD DE LA INVESTIGACIÓN

Se utilizó el modelo experimental; ya que es una modalidad fáctica se ocupa de

los hechos que realmente acontecen.

Basados en hechos que se suscitan ha diario hemos podido desarrollar un sistema

conveniente y eficaz que cubra las necesidades del consultorio médico en estudio.

La

modalidad

está

abierta

a

la

incorporación

de

nuevos

conocimientos

y

procedimientos con el fin de asegurar un mejor acercamiento a la verdad.

31

3.5.

TÉCNICAS

Se utilizaron las técnicas siguientes:

La Observación Directa: Se realizada constantemente mediante el trato

médico-paciente.

La

observación Indirecta: valiéndonos de libros,

relacionados con lo investigado.

3.5.1. INSTRUMENTOS

La Encuesta.

La entrevista.

3.6. RECURSOS

Se utilizaron los siguientes recursos:

32

revistas,

informes

3.6.1 RECURSOS HUMANOS:

Interviene en este proyecto las siguientes personas:

Tutor de tesis: Ingeniera Esthela San András Laz.

Dr. José Intriago Andrade.

Estudiante: Ana María Arguello Rubira, asistente médico.

Personas que acuden diariamente a este consultorio como pacientes.

3.6.2 RECURSOS MATERIALES

Historias Clínicas en papel.

CDS.

Flash Memory

Copias.

Hojas A4.

Cartuchos de tinta para impresora.

Libros de soporte en base de datos.

Libros de visual BASIC 6.0.

33

3.6.3.

RECURSOS TECNICOS

Computador

Software

3.6.4. RECURSOS INSTITUCIONALES

Universidad Técnica de Manabí

Consultorio Médico del Dr. José Intriago Andrade

34

3.6.5. RECURSOS ECONOMICOS:

Rubros de gastos Internet Materiales de escritorio Material bibliográfico Transporte Impresiones Fotocopias Empastado de

Rubros de gastos

Internet

Materiales de escritorio

Material bibliográfico

Transporte

Impresiones

Fotocopias

Empastado de tesis

Asistencia Técnica

Imprevistos 10%

TOTAL

Valor

USD

200,00

50,00

40,00

30,00

250,00

43,00

150,00

450,00

120,00

1.333,00

35

CAPÍTULO IV

4.1. CONCLUSIONES Y RECOMENDACIONES

4.1.1. CONCLUSIONES

Luego de terminado el trabajo de investigación realizado con el apoyo de la

informática, mediante la creación de un programa para el funcionamiento del

consultorio privado del Dr. José Intriago Andrade, se concluye:

Las

actividades

del

establecimiento

médico

beneficiadas en todo el quehacer médico.

en

general

fueron

muy

Mejoró

sustancialmente

la

calidad

de

atención

médica

saliendo

beneficiados especialmente los pacientes y el personal que labora en el

consultorio.

El

S.H.C.

sirve

como

herramienta

indispensable

para

determinar

la

morbilidad, incidencias, prevalencias y mortalidad de los pacientes que se

atienden en este establecimiento.

Con información que se almacenamos en la base de datos se pueden

realizar investigaciones estadísticas, que aunque el universo no sea enorme

36

como sucede en una unidad de atención pública, sin embargo nos sirven

como un valor referencial de gran importancia.

4.1.2 RECOMENDACIONES

Toda unidad de salud deben de tener un programa que permita realizar las

labores de atención médica y de investigación más eficientes.

La utilización de un programa como este debe de universalizarse, tomando

en consideración todos los programas que para este tipo de atención

existan en el país, a fin de que teniendo un solo programa estandarizado a

nivel nacional, se pueda organizar de manera uniforme la atención médica

de los consultorios privados en el Ecuador.

Al universalizar un programa de atención médica en los consultorios

privados,

estaríamos

como

consecuencia

estandarizando

también

los

protocolos de atención referentes al diagnóstico y tratamiento de las

diferentes patologías existentes en el país.

37

CAPÍTULO V

PROPUESTA

S.H.C

5.1. DESCRIPCIÓN GENERAL DEL SISTEMA

El sistema S.H.C. registrar la información de pacientes con todos los datos

indispensables que conlleven a la buena elaboración de una Historia Clínica,

porque sigue siendo este el documento esencial del acto médico, a pesar del

desarrollo tecnológico actual que nos ha llevado a conocer actividades por

recuperar la salud del hombre verdaderamente deslumbrantes, como son: los

diagnósticos por imágenes, los marcadores tumorales, las pruebas específicas para

enfermedades infecciosas, la cirugía robótica. Sin embargo; una buena historia

clínica continúa siendo la base para el diagnóstico correcto y para el tratamiento

adecuado.

El presente sistema informático consta de los siguientes módulos:

FORMULARIO SPLASH.

FORMULARIO LOGIN.

38

FORMULARIO PRINCIPAL (MDI.)

FORMULARIO DATOS PERSONALES.

FORMULARIO HISTORIAS CLÍNICAS.

FORMULARIO CAMBIO DE CONTRASEÑA.

FORMULARIO CIUDADES.

FORMULARIO DIAGNÓSTICO.

FORMULARIO ESTADISTICA.

5.2. IMPLEMENTACIÓN DE UN SISTEMA INFÓRMATICO

5.2.1. Equipamiento central del Consultorio.-

El consultorio “Dr. José Intriago Andrade”, cuenta actualmente con un equipo

computacional con las siguientes características:

39

Procesador:

Intel Dual Core

Memoria:

2 GB

Disco Duro:

250 GB

DVD/R:

Reproductor de CDs y DVDs

Sistema Operativo:

Windows 7

Lenguaje de Programación:

Visual Basic 6.0

Aplicaciones:

Microsoft Office 2007

Impresora:

Lemax Z617

Es un equipo ideal para las funciones que cumple y su configuración es aceptable.

Tiene

posibilidades

de

crecimiento

y

el

fabricante

cuenta

con

repuesto

y

mantenimiento que garantiza la buena utilización del mismo.

5.2.2. Requisitos de Instalación del Software.-

Los requerimientos principales del equipo de computación que se necesita para un

óptimo funcionamiento son:

Pentium III, Pentium IV, Dual Core 1.60 GHZ, o Superior.que se necesita para un óptimo funcionamiento son: Microsoft Windows XP Servipack 2 Profesional, Milenium. 40

Microsoft Windows XP Servipack 2 Profesional, Milenium.que se necesita para un óptimo funcionamiento son: Pentium III, Pentium IV, Dual Core 1.60 GHZ,

40

RAM mínima de 256 MB o superior.Disco Duro 60 GB o Superior. 41

Disco Duro 60 GB o Superior.RAM mínima de 256 MB o superior. 41

5.3. CRONOGRAMA DE ACTIVIDADES

Meses ACTIVIDADES A REALIZAR Primero Segundo Tercero Cuarto Quinto Sexto 1 2 3 4 1
Meses
ACTIVIDADES A REALIZAR
Primero
Segundo
Tercero
Cuarto
Quinto
Sexto
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
Construcción del problema
Planificación de metodología
Elaboración del marco Teórico
Recolección de información
Ejecución del proyecto
Elaboración del informe final
Presentación del informe
Sustentación

42

5.4. RELACIONES EXISTENTE DE LA BASE DE DATOS

La base de datos fue desarrollada en Microsoft Access, que es una aplicación del paquete de Office. Se la crea con el nombre de

basehis.mdb; se le coloco contraseña para así dar seguridad a los datos almacenados en ella. Contiene cinco tablas, las mismas que

están relacionas entre sí; las cuales se detallan a continuación:

43
43

También cabe recalcar que la tabla Enfermedades, se utiliza como tablas auxiliares para realizar consultas.

También cabe recalcar que la tabla Enfermedades, se utiliza como tablas auxiliares para realizar consultas. 44

44

DETALLES Y RELACIONES DE LAS TABLAS DE LA BASE DE DATOS.

DETALLES Y RELACIONES DE LAS TABLAS DE LA BASE DE DATOS. Tabla Clave.- En esta tabla
DETALLES Y RELACIONES DE LAS TABLAS DE LA BASE DE DATOS. Tabla Clave.- En esta tabla

Tabla

Clave.-

En

esta

tabla

se

almacena

la

clave

(contraseña) y el nombre del usuario (alias). Contiene dos

campos de tipo texto.

Tabla

Ciudades.-

La

tabla

ciudades,

archiva

la

residencia

de

los

pacientes.

Esta

tabla

se

encuentra

relacionada

con

la

tabla

Datos_Personales_Pacientes.

Contiene dos campos uno numérico y uno de texto; idciudad, nombreciudad,

respectivamente.

y uno de texto; idciudad, nombreciudad, respectivamente. Tabla Enfermedades.- Aquí se guardan las diferentes

Tabla Enfermedades.- Aquí se guardan las diferentes

enfermedades, las mismas que servirán para realizar los

debidos diagnósticos. Se encuentra relacionada con la

tabla historia_clinica; contiene un campo de tipo numérico y uno de tipo texto.

contiene un campo de tipo numérico y uno de tipo texto. Tabla Datos Personales del Paciente.-

Tabla Datos Personales del Paciente.- La tabla

datos

personales

del

paciente,

es

de

suma

importancia, ya que en ella se almacena los datos

personales del paciente; desde el número de cedula

hasta los antecedente patológicos tantos familiares,

45

personales, incluyendo

diagnóstico.

alergias, todos ellos de mucha importancia para un buen

Esta tabla se encuentra relacionada con la tabla ciudades, por medio del IdCiudad,

que es de tipo numérico. También se relaciona con tabla historias_clinicas.

Contiene doce campos: dos de tipo numérico, seis texto, uno fecha/hora y tres tipo

memo.

tipo numérico, seis texto, uno fecha/hora y tres tipo memo. 46 Tabla Historias Clínicas.- Para almacenar
46
46

Tabla

Historias

Clínicas.-

Para

almacenar

las

historias

de

los

pacientes

(visitas).

Detallando,

signos

vitales,

diagnósticos,

tratamiento

y

prescripción.

Se

encuentra

relaciona

con

la

tabla

Datos_Personales_Paciente

y

la

tabla

Enfermedades (se crean tres tablas auxiliares para relacionar con los campos

diagnóstico1,

diagnóstico2,

diagnóstico3;

pero

sigue

siendo

la

tabla

enfermedades).

Esta tabla contiene diecisiete campos: cinco de tipo numérico, ocho de tipo texto,

uno de tipo fecha/hora, tres tipo memo.

47

ANEXOS

48

ÍNDICE DE ANEXOS

 

PAGS

FOTOS DEL CONSULTORIO DEL DR. JOSÉ INTRIAGO A.

50

Fotografía 1: Archivadores de las historias Clínicas de los pacientes

51

Fotografía 2. Dr. José Intriago Andrade prescribiendo

52

Fotografía 3. Carpeta con documentos de Historias Clínicas

52

Fotografía 4. Carpetas ordenadas por apellidos

53

Fotografía 5. Dr. José Intriago Andrade auscultando a una paciente

53

REALIZACIÓN DE LA PROPUESTA

54

MANUAL DEL USUARIO

55

MANUAL DEL PROGRAMADOR (CODIFICACIÓN)

63

Programación del Module 1

64

Formulario SPLASH (Frm_SPLASH.Frm)

74

Formulario ‘CONTRASEÑA’ (Frm_Login.Frm)

74

Formulario

Principal ‘MDI’ (Principal.Frm)

76

Formulario ‘Frm_datos_pacientes’ (frm_datos_pacientes.frm)

77

Formulario Frm_historia (historia.frm)

87

Formulario Cambio Contraseña (frm_contraseña.frm)

96

Formulario Diagnóstico frm_diagnostico (frm_diagnostico.frm)

97

Formulario Ciudad frm_ciudad (frm_cuidades.frm)

100

Formulario Estadística frm_ reportes (frm_reportes.frm)

103

AYUDA DEL SISTEMA

107

49

FOTOS DEL CONSULTORIO

DR. JOSÉ INTRIAGO

ANDRADE

50

1.1. Fotografía 6. Archivadores de las historias Clínicas de los pacientes 51

1.1. Fotografía 6. Archivadores de las historias Clínicas de los pacientes

51

1.2. Fotografía 7. Dr. José Intriago Andrade prescribiendo 1.3. Fotografía 8 . Carpeta con documentos

1.2. Fotografía 7. Dr. José Intriago Andrade prescribiendo

1.2. Fotografía 7. Dr. José Intriago Andrade prescribiendo 1.3. Fotografía 8 . Carpeta con documentos de

1.3. Fotografía 8. Carpeta con documentos de Historias Clínicas

52

1.4. Fotografía 9 . Carpetas ordenadas por apellidos 1.5. Fotografía 10 . Dr. José Intriago

1.4. Fotografía 9. Carpetas ordenadas por apellidos

1.4. Fotografía 9 . Carpetas ordenadas por apellidos 1.5. Fotografía 10 . Dr. José Intriago Andrade

1.5. Fotografía 10. Dr. José Intriago Andrade auscultando a una paciente

53

REALIZACIÓN DE LA PROPUESTA

TEMA:

“DESARROLLO

AUTOMATIZAR

DE

EL

PACIENTES,

PARA

UN

SISTEMA

INFORMATICO

QUE

PERMITA

INGRESO

DE

LA

HISTORIA

CLÍNICA

DE

EL

CONSULTORIO

MÉDICO

DEL

DR.

JOSÉ

INTRIAGO ANDRADE.”

54

MANUAL DE USUARIO

55

PANTALLAS DEL SISTEMA INFORMÁTICO

Pantalla que aparece cuando carga el Sistema S.H.C.

Pantalla que aparece cuando carga el Sistema S.H.C. Titulo: Ingreso de la Clave de los Usuarios
Titulo: Ingreso de la Clave de los Usuarios Ventana # 1 Se digita el nombre
Titulo: Ingreso de la Clave de los Usuarios
Ventana # 1
Se digita el nombre del usuario
que va a trabajar con el sistema.
Se escribe la contraseña.
Con
un
clic
en
el
botón
Aceptar, accede al sistema.
Al hacer clic en
el botón
Cancelar se cierra la ventana
del ingreso al sistema.
Color: &H8000000F&
56

Titulo: Formulario Principal (MDI)

Ventana # 2

Barra de Menú del Sistema

Principal (MDI) Ventana # 2 Barra de Menú del Sistema Barra de Menú Gráfica del Sistemas

Barra

de

Menú

Gráfica

del

Sistemas (Acceso Directo).

Contenedor de las Ventanas del Sistema.

de

Información hora

y Sistema (Barra de

Estado).

del

Barra

fecha

Color: &H8000000F&

57

Titulo: Datos del Paciente

Ventana # 3

En

esta

sección

se

ingresan

los

datos

personales

del

paciente

Búsqueda

de

Pacientes

por

Apellidos.

Ingreso

de

los

Antecedentes

Patológicos.

Frame de Controles.

Apellidos. Ingreso de los Antecedentes Patológicos. Frame de Controles. Color: &H8000000F& 58
Apellidos. Ingreso de los Antecedentes Patológicos. Frame de Controles. Color: &H8000000F& 58
Apellidos. Ingreso de los Antecedentes Patológicos. Frame de Controles. Color: &H8000000F& 58
Apellidos. Ingreso de los Antecedentes Patológicos. Frame de Controles. Color: &H8000000F& 58
Apellidos. Ingreso de los Antecedentes Patológicos. Frame de Controles. Color: &H8000000F& 58

Color: &H8000000F&

58

Titulo: Historia Clínica Ventana # 4 Se muestra la identificación del Paciente. que permite el
Titulo: Historia Clínica
Ventana # 4
Se
muestra
la
identificación del
Paciente.
que
permite el ingreso
de los Signos
Vitales.
Frame
Bloque
de
Diagnósticos.
Registros
de
Visitas
Médicas,
ordenadas
por
fechas.
Motivo
de
Consulta,
Prediagnóstico,
Tratamiento
y
Prescripción.
Botones
de
Control
Color: &H8000000F&

59

Titulo: Cambio de Contraseña Ventana # 5 Se digita el nuevo nombre del usuario (alias).
Titulo: Cambio de Contraseña
Ventana # 5
Se digita el nuevo nombre del
usuario (alias).
Se escribe la nueva contraseña.
Con un clic en el botón Nuevo,
activa los text para realizar el
cambio de la contraseña.
Al
hacer
clic
en
el
botón
Guardar,
almacena
la
nueva
contraseña.
Color: &H8000000F&
Titulo: Diagnósticos Ventana # 6 Ingreso del Diagnóstico Listado de los diferentes Diagnósticos. Botones de
Titulo: Diagnósticos
Ventana # 6
Ingreso del Diagnóstico
Listado
de
los
diferentes
Diagnósticos.
Botones de Controles
Color: &H8000000F&

60

Titulo: Ciudades

Ventana # 7

Ingreso de la Ciudad

Ciudades V e n t a n a # 7 Ingreso de la Ciudad Listado de
Ciudades V e n t a n a # 7 Ingreso de la Ciudad Listado de

Listado

de

las

Diferentes

Ciudades.

Ingreso de la Ciudad Listado de las Diferentes Ciudades. Botones de Controles Color: &H8000000F& 61

Botones de Controles

Ingreso de la Ciudad Listado de las Diferentes Ciudades. Botones de Controles Color: &H8000000F& 61

Color: &H8000000F&

61

Titulo: Estadísticas Ventana # 8 Sección donde se digita la enfermedad y se selecciona el
Titulo: Estadísticas
Ventana # 8
Sección donde se digita
la enfermedad y se
selecciona el lapso
tiempo.
de
Haciendo clic en este
icono, se realiza el filtro
de la búsqueda.
Resultado
de
la
búsqueda.
Muestra
el
total
de
incidencia
de
la
enfermedad digitada.
Botones
de
Imprimir
y
Salir
Color: &H8000000F&

62

MANUAL DEL

PROGRAMADOR

63

CODIFICACIÓN DEL PROGRAMA

Programación del Module 1

Option Explicit

Public BaseDatos As New ADODB.Connection

Public Declare Sub InitCommonControls Lib "comctl32" () Public cn As New ADODB.Connection Public rs As New ADODB.Connection Global StrConsulta, Mensaje As String Global ResConsulta As String Public Nposicion As Byte Public viva As Single Global CNumerico As String Global CMayuscula As String Public TipoVali, op As Integer Global Iva As Double Global IdPacienteDefecto As Long

Public ListaArchivos() As String Public Const MAX_PATH = 260

Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long

End Type

Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14

End Type

Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

#If Win32 Then Declare Function SendMessage Lib "User32" Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Const CB_SHOWDROPDOWN = &H14F #Else Declare Function SendMessage Lib "User" _ (ByVal hWnd As Integer, ByVal wMsg As Integer, _ ByVal wParam As Integer, lParam As Any) As Long Const WM_USER = &H400

64

Const CB_SHOWDROPDOWN = (WM_USER + 15) #End If Const CB_FINDSTRINGEXACT = &H158 'Buscar cadena completa en un ComboBox Const LB_FINDSTRINGEXACT = &H1A2 'Buscar cadena completa en un ListBox Const CB_FINDSTRING = &H14C 'Buscar cadena desde el principio en un ComboBox Const LB_FINDSTRING = &H18F 'Buscar cadena desde el principio en un ListBox

Public Sub Combo(ByRef c1, KeyAscii) On Error Resume Next Dim CB As Long Dim FindString As String Const CB_ERR = (-1) Const CB_FINDSTRING = &H14C If KeyAscii < 32 Or KeyAscii > 250 Then Exit Sub 'If KeyAscii = Asc("Ñ") Or KeyAscii <> Asc("ñ") Then Exit Sub If c1.SelLength = 0 Then FindString = c1.Text & Chr$(KeyAscii)

Else

FindString = Left$(c1.Text, c1.SelStart) & Chr$(KeyAscii) End If CB = SendMessage(c1.hWnd, CB_FINDSTRING, -1, ByVal FindString) If CB <> CB_ERR Then c1.ListIndex = CB c1.SelStart = Len(FindString) c1.SelLength = Len(c1.Text) - c1.SelStart End If KeyAscii = 0 End Sub

Public Sub LlenaCombo(C As ComboBox, Ssql As String) Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute(Ssql) 'C.Clear If Not aux.BOF Then Do While Not aux.EOF C.AddItem aux.Fields(0) aux.MoveNext

Loop End If aux.Close Set aux = Nothing End Sub

Function ValidaCedula(ced As String) As Boolean Dim Dig(10) As Byte Dim Comp As Byte Dim i As Byte Dim SumImpar As Integer Dim SumPar As Integer Dim Prox As Integer SumPar = 0 SumImpar = 0 If Len(ced) = 10 Then For i = 1 To 9 Dig(i) = Val(Mid(ced, i, 1)) If (i Mod 2) = 0 Then SumPar = SumPar + Dig(i) Else Dig(i) = Dig(i) * 2 If Dig(i) > 9 Then Dig(i) = Dig(i) - 9

65

SumImpar = SumImpar + Dig(i) End If Next i Prox = (Fix(((SumPar + SumImpar) / 10)) + 1) * 10 Comp = Val(Mid(ced, 10, 1)) If Comp = Prox - (SumPar + SumImpar) Then ValidaCedula = True Else

ValidaCedula = False End If If Comp = 0 And (Prox - (SumPar + SumImpar)) = 10 Then ValidaCedula =

True

Else ValidaCedula = False End If End Function

Public Sub EnterTab(Tecla As Integer) If Tecla = 13 Then Tecla = 0 SendKeys "{tab}" End If End Sub

Public Sub Sombrea(txt As Object) txt.SelStart = 0 txt.SelLength = Len(txt) End Sub

'función quita tilde de una cadena de texto Public Function QuitaTilde(txt As String) As String Dim tran As String Dim n As Integer, i As Integer n = Len(txt) For i = 1 To n Select Case UCase(Mid(txt, i, 1)) Case "Á" tran = tran & "A" Case "É" tran = tran & "E" Case "Í" tran = tran & "I" Case "Ó" tran = tran & "O" Case "Ú" tran = tran & "U" Case Else tran = tran & UCase(Mid(txt, i, 1)) End Select Next QuitaTilde = tran End Function

Public Function edad(X As String) As String Dim dn, mn, an As Integer Dim da, ma, aa As Integer Dim d, m, a As Integer

dn = Day(X) mn = Month(X) an = Year(X)

66

da = Day(Now) ma = Month(Now) aa = Year(Now) Dim FechaActual As Date If da < dn Then ma = ma - 1

FechaActual = Now() - dn

d = Day(FechaActual)

Else

FechaActual = Now() - dn

d = Day(FechaActual)

End If If ma < mn Then ma = ma + 12 aa = aa - 1

m

Else

m

End If

= ma - mn

= ma - mn

a = aa - an

edad = a & " Años

End Function

" & m & " Meses

" & d & " Dias"

Sub LLenaGrid(Msf As MSFlexGrid, Cadena As String) Dim temp As New ADODB.Recordset Dim nrocampos, i As Integer Set temp = BaseDatos.Execute(Cadena) nrocampos = temp.Fields.Count Msf.Cols = nrocampos + 1 Msf.Rows = 1 For i = 1 To nrocampos Msf.Row = 0

Msf.Col = i Msf.CellFontBold = True Msf.Text = temp.Fields(i - 1).Name

Next

Do Until temp.EOF Msf.AddItem "" Msf.Row = Msf.Rows - 1 For i = 1 To nrocampos Msf.Col = i Msf.Text = "" & temp.Fields(i - 1) Msf.ColWidth(i - 1) = 1800

Next

temp.MoveNext

Loop

Msf.ColWidth(0) = 0 Msf.ColWidth(1) = 0 End Sub

Public Sub LlenaList(Lst As ListBox, Cadena As String) Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute(Cadena) Lst.Clear If Not aux.BOF Then Do While Not aux.EOF Lst.AddItem aux.Fields(0) aux.MoveNext

67

Loop End If aux.Close Set aux = Nothing End Sub

Function Busca_Personas(formu As Form, txt As TextBox, Ssql As String, Mensaje1 As String) As Boolean Dim temp1 As New ADODB.Recordset Dim Encontrado As Boolean Set temp1 = BaseDatos.Execute("SELECT * FROM Datos_Personales_Paciente") If Not temp1.BOF Then Encontrado = False Do While Not temp1.EOF If temp1!cedula = txt Then Busca_Personas = True formu.txthistoriaclinica = temp1!NumeroHistoriaClinica Exit Do End If

temp1.MoveNext

Loop If temp1.EOF And Encontrado = False Then MsgBox "No Existe Paciente, Ingrese Información vbInformation, Mensaje

temp1.Close

",

Set temp1 = Nothing formu.TxtApellidosNombres.SetFocus Exit Function End If

Else

temp1.Close

Set temp1 = Nothing MsgBox "No Existe Registro de Paciente Ingrese Información

",

vbInformation, Mensaje Exit Function End If Dim temp As New ADODB.Recordset Set temp = BaseDatos.Execute(Ssql) Encontrado = False If Not temp.BOF Then Do While Not temp.EOF() If temp!NumeroHistoriaClinica = temp1!NumeroHistoriaClinica

Then

Encontrado = True Exit Do End If temp.MoveNext

Loop End If If Encontrado = True And Busca_Personas = True Then temp.Close Set temp = Nothing

temp1.Close

Set temp1 = Nothing 'MsgBox Mensaje1, vbInformation, Mensaje 'formu.txthistoriaclinica = "" formu.txtcedula = "" Exit Function ElseIf Busca_Personas = True Then formu.txthistoriaclinica = temp1!NumeroHistoriaClinica formu.txtcedula = temp1!cedula

68

formu.TxtApellidosNombres = temp1!Apellidos_Nombres formu.cbsexo = temp1!SEXO formu.DTPFechaNacimiento = temp1!Fecha_Nacimiento formu.cbestadocivil = temp1!Estado_Civil formu.txtocupacion = temp1!Ocupacion formu.txtocupacion = temp1!TELEFONO formu.TxtAlergias = temp1!ALERGIAS formu.txtAntPatFamiliares = temp1!Antecedentes_Familia

formu.txtAntPatPersonales = temp1!Antecedentes_Paciente

MsgBox "Paciente Existe, proceda End If temp.Close Set temp = Nothing

temp1.Close

Set temp1 = Nothing End Function

",

vbInformation, Mensaje

Public Function busca_nombre(tabla_temp As String, valor As String, campo_temp As String) As Boolean Dim t_aux As New ADODB.Recordset busca_nombre = False valor = QuitaTilde(valor) 'MsgBox ("select " & campo_temp & " from " & tabla_temp) '& " where upper(" & campo_temp & ")='" & UCase(valor) & "'") Set t_aux = BaseDatos.Execute("select " & campo_temp & " from " & tabla_temp) '& " where upper(" & campo_temp & ")='" & UCase(valor) & "'") If t_aux.BOF Then busca_nombre = False

Else

Do Until t_aux.EOF If QuitaTilde(t_aux.Fields(0)) = valor Then busca_nombre = True Exit Do

End If t_aux.MoveNext Loop End If t_aux.Close Set t_aux = Nothing End Function

Function Busca_PersonasAct(formu As Form, txt As TextBox, Ssql As String, Mensaje1 As String) As Boolean Dim temp1 As New ADODB.Recordset Dim Encontrado As Boolean Set temp1 = BaseDatos.Execute("SELECT * FROM Datos_Personales_Paciente") If Not temp1.BOF Then Encontrado = False Do While Not temp1.EOF If temp1!cedula = txt Then Busca_PersonasAct = True formu.txthistoriaclinica = temp1!NumeroHistoriaClinica Exit Do End If

temp1.MoveNext

Loop If temp1.EOF And Encontrado = False Then MsgBox "No Existe Paciente, Ingrese Información vbInformation, Mensaje

temp1.Close

69

",

Set temp1 = Nothing formu.TxtApellidosNombres.SetFocus Exit Function End If

Else

temp1.Close

Set temp1 = Nothing MsgBox "No Existe Registro de Paciente Ingrese Información

",

vbInformation, Mensaje Exit Function End If Dim temp As New ADODB.Recordset Set temp = BaseDatos.Execute(Ssql) Encontrado = False If Not temp.BOF Then Do While Not temp.EOF() If temp!NumeroHistoriaClinica = temp1!NumeroHistoriaClinica

Then

Encontrado = True Exit Do End If temp.MoveNext

Loop End If If Encontrado = True And Busca_PersonasAct = True Then temp.Close Set temp = Nothing

temp1.Close

Set temp1 = Nothing MsgBox Mensaje1, vbInformation, Mensaje

Exit Function ElseIf Busca_PersonasAct = True Then formu.txthistoriaclinica = temp1!NumeroHistoriaClinica formu.txtcedula = temp1!cedula formu.TxtApellidosNombres = temp1!Apellidos_Nombres formu.cbsexo = temp1!SEXO formu.DTPFechaNacimiento = temp1!Fecha_Nacimiento formu.cbestadocivil = temp1!Estado_Civil formu.txtocupacion = temp1!Ocupacion formu.txtocupacion = temp1!TELEFONO formu.TxtAlergias = temp1!ALERGIAS formu.txtAntPatFamiliares = temp1!Antecedentes_Familia

formu.txtAntPatPersonales = temp1!Antecedentes_Paciente

MsgBox "Paciente Existe, proceda End If temp.Close Set temp = Nothing

temp1.Close

Set temp1 = Nothing End Function

",

vbInformation, Mensaje

Function Busca_PersonasNew(formu As Form, txt As TextBox, Ssql As String, Mensaje1 As String) As Boolean Dim temp1 As New ADODB.Recordset Dim Encontrado As Boolean Set temp1 = BaseDatos.Execute("SELECT * FROM Datos_Personales_Paciente") If Not temp1.BOF Then Encontrado = False Do While Not temp1.EOF If temp1!cedula = txt Then

70

Busca_PersonasNew = True formu.txthistoriaclinica = temp1!NumeroHistoriaClinica Exit Do End If

temp1.MoveNext

Loop If temp1.EOF And Encontrado = False Then MsgBox "No Existe Paciente, Ingrese Información vbInformation, Mensaje

temp1.Close

",

Set temp1 = Nothing formu.TxtApellidosNombres.SetFocus Exit Function End If

Else

temp1.Close

Set temp1 = Nothing MsgBox "No Existe Registro de Paciente Ingrese Información

",

vbInformation, Mensaje Exit Function End If Dim temp As New ADODB.Recordset Set temp = BaseDatos.Execute(Ssql) Encontrado = False If Not temp.BOF Then Do While Not temp.EOF() If temp!NumeroHistoriaClinica = temp1!NumeroHistoriaClinica

Then

Encontrado = True Exit Do End If temp.MoveNext

Loop End If If Encontrado = True And Busca_PersonasNew = True Then temp.Close Set temp = Nothing

temp1.Close

Set temp1 = Nothing MsgBox Mensaje1, vbInformation, Mensaje 'formu.txthistoriaclinica = "" formu.txtcedula.Locked = True Exit Function ElseIf Busca_PersonasNew = True Then formu.txthistoriaclinica = temp1!NumeroHistoriaClinica formu.txtcedula = temp1!cedula formu.TxtApellidosNombres = temp1!Apellidos_Nombres formu.cbsexo = temp1!SEXO formu.DTPFechaNacimiento = temp1!Fecha_Nacimiento formu.cbestadocivil = temp1!Estado_Civil formu.txtocupacion = temp1!Ocupacion formu.txtocupacion = temp1!TELEFONO formu.TxtAlergias = temp1!ALERGIAS formu.txtAntPatFamiliares = temp1!Antecedentes_Familia

formu.txtAntPatPersonales = temp1!Antecedentes_Paciente

MsgBox "Paciente Existe, proceda End If temp.Close Set temp = Nothing

temp1.Close

Set temp1 = Nothing End Function

",

vbInformation, Mensaje

71

'función quita tilde de una cadena de texto Public Function QuitaTilde1(txt As String) As String Dim tran As String Dim n As Integer, i As Integer n = Len(txt) For i = 1 To n Select Case UCase(Mid(txt, i, 1)) Case "Á" tran = tran & "A" Case "É" tran = tran & "E" Case "Í" tran = tran & "I" Case "Ó" tran = tran & "O" Case "Ú" tran = tran & "U" Case Else tran = tran & UCase(Mid(txt, i, 1)) End Select Next QuitaTilde1 = tran End Function

'escribir solo letras Public Sub letras(Tecla As Integer) Select Case Tecla Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("A") To Asc("Z") Case Asc("a") To Asc("z") Case Asc("ñ"), Asc("Ñ"), Asc("á"), Asc("é"), Asc("í"), Asc("ó"), Asc("ú"), Asc("Á"), Asc("É"), Asc("Í"), Asc("Ó"), Asc("Ú") Case Asc("."), Asc(","), Asc("@"), Asc("_"), Asc("-"), Asc("("), Asc(")"), Asc("""), Asc(""") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

Public Sub letras_num(Tecla As Integer) Select Case Tecla Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("0") To Asc("9") Case Asc("A") To Asc("Z") Case Asc("a") To Asc("z") Case Asc("ñ"), Asc("Ñ"), Asc("á"), Asc("é"), Asc("í"), Asc("ó"), Asc("ú"), Asc("Á"), Asc("É"), Asc("Í"), Asc("Ó"), Asc("Ú") Case Asc("Ü"), Asc("ü") Case Asc("."), Asc(","), Asc("@"), Asc("_"), Asc("-"), Asc("("), Asc(")"), Asc("""), Asc("""), Asc("°"), Asc("/"), Asc("#"), Asc(":") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

Public Sub Telefonos(Tecla As Integer) Select Case Tecla

72

Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("0") To Asc("9") Case Asc("-"), Asc("("), Asc(")") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

Public Sub presion_arterial(Tecla As Integer) Select Case Tecla Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("0") To Asc("9") Case Asc("/"), Asc("-") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

Public Sub numero_punto(Tecla As Integer) Select Case Tecla Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("0") To Asc("9") Case Asc("."), Asc("-") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

Public Sub numero_va(Tecla As Integer) Select Case Tecla Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("0") To Asc("9") Case Asc("-") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

Public Sub numero(Tecla As Integer) Select Case Tecla Case vbKeyReturn, vbKeyLeft, vbKeyRight Case Asc("0") To Asc("9") Case 27, vbKeyBack, 13, vbKeySpace Case Else Tecla = 0 Exit Sub End Select End Sub

73

Formulario SPLASH (Frm_SPLASH.Frm)

Private Sub Timer1_Timer()

Dim Control As Integer Dim vector(30500) As String PB.Min = LBound(vector) PB.Max = UBound(vector) PB.Value = PB.Min For Control = LBound(vector) To UBound(vector) vector(Control) = "texto sin importancia" & Control PB.Value = Control

Next PB.Value = PB.Min Unload Me frm_Login.Show 1 End Sub

Formulario ‘CONTRASEÑA’ (Frm_Login.Frm)

Option Explicit Public LoginSucceeded As Boolean Dim S As Boolean Dim contraseña, aux, aux1 As New ADODB.Recordset

Private Sub CmdAceptar_Click() Dim aa As String Set contraseña = BaseDatos.Execute("SELECT * FROM Clave WHERE IdCLave='" & txtPassword & "' and usuario='" & txtUserName & "'") If contraseña.BOF Or contraseña.EOF Then MsgBox "Nombre de Usuario o Clave incorrecta", vbCritical,

"Error"

S = False txtUserName = "" txtPassword = "" txtUserName.SetFocus contraseña.Close Set contraseña = Nothing Exit Sub

Else

S = True Unload Me Principal.Show End If End Sub

Private Sub CmdCancelar_Click() Unload Me End Sub

Private Sub Form_KeyPress(KeyAscii As Integer) EnterTab KeyAscii End Sub

Private Sub Form_Unload(Cancel As Integer) If S = False Then BaseDatos.Close

End

End If

End Sub

74

Private Sub Timer1_Timer() If Image1.Visible = True Then Image2.Visible = True Image1.Visible = False Image3.Visible = False Image4.Visible = False Image5.Visible = False Image6.Visible = False Image7.Visible = False ElseIf Image2.Visible = True Then Image3.Visible = True Image1.Visible = False Image2.Visible = False Image4.Visible = False Image5.Visible = False Image6.Visible = False Image7.Visible = False ElseIf Image3.Visible = True Then Image4.Visible = True Image1.Visible = False Image2.Visible = False Image3.Visible = False Image5.Visible = False Image6.Visible = False Image7.Visible = False ElseIf Image4.Visible = True Then Image5.Visible = True Image1.Visible = False Image2.Visible = False Image3.Visible = False Image4.Visible = False Image6.Visible = False Image7.Visible = False ElseIf Image5.Visible = True Then Image6.Visible = True Image1.Visible = False Image2.Visible = False Image3.Visible = False Image4.Visible = False Image5.Visible = False Image7.Visible = False ElseIf Image6.Visible = True Then Image7.Visible = True Image6.Visible = False Image2.Visible = False Image3.Visible = False Image4.Visible = False Image5.Visible = False ElseIf Image7.Visible = True Then Image1.Visible = True Image7.Visible = False Image6.Visible = False Image2.Visible = False Image3.Visible = False Image4.Visible = False Image5.Visible = False

End If

End Sub

Formulario Principal ‘MDI’ (Principal.Frm)

Option Explicit

Private Sub BarraPrincipal_ButtonClick(ByVal Button AsMSComctlLib.Button) Select Case Button.Key Case Is = "paciente" Load frm_datos_pacientes frm_datos_pacientes.Show 1 Case Is = "enfermedades" Load frm_diagnostico frm_diagnostico.Show 1 Case Is = "Calculadora" Call Shell("calc.exe") Case Is = "Salir"

If MsgBox("¿Está seguro de Salir del Sistema "SISTEMA") = vbYes Then

End End If End Select End Sub

?", vbYesNo,

Private Sub MDIForm_Load() Mensaje = Principal.Caption BaseDatos.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\basehis.mdb;Persist Security Info=False;;Persist Security Info=False;Jet OLEDB:DataBase Password='rajarrob'" frmSplash.Show 1 End Sub

Private Sub MDIForm_Unload(Cancel As Integer) If MsgBox("¿Esta seguro de salir del sistema de seguridad") = vbYes Then End Else Cancel = 1 End If End Sub

?",

vbYesNo, "Pregunta

Private Sub mnuBEstado_Click() Select Case mnuBEstado.Checked Case True mnuBEstado.Checked = False BarraEstado.Visible = False Case False mnuBEstado.Checked = True BarraEstado.Visible = True End Select End Sub

Private Sub mnuBHerramientas_Click() Select Case mnuBHerramientas.Checked Case True mnuBHerramientas.Checked = False BarraPrincipal.Visible = False Case False mnuBHerramientas.Checked = True BarraPrincipal.Visible = True End Select End Sub

76

Private Sub mnuCalculadora_Click() Call Shell("calc.exe") End Sub

Private Sub mnuCiudad_Click() frm_ciudad.Show 1 End Sub

Private Sub mnuContraseña_Click() frm_contraseña.Show 1 End Sub

Private Sub mnuDatos_Click(Index As Integer) frm_datos_pacientes.Show 1 End Sub

Private Sub mnuenfermedad_Click() frm_diagnostico.Show 1 End Sub

Private Sub StatusBar1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu mnuBHerramientas End If End Sub

Private Sub mnureportes_Click() frm_reportes.Show 1 End Sub

Private Sub mnusalir_Click() If MsgBox("¿Está seguro de Salir del Sistema "SISTEMA") = vbYes Then End End If End Sub

?", vbYesNo,

Formulario ‘Frm_datos_pacientes’ (frm_datos_pacientes.frm)

Option Explicit

Public llena As Boolean Dim aux As New ADODB.Recordset Dim rela As New ADODB.Recordset Dim actualiza, Encontrado, Encontrado1, Busca1 As Boolean Dim paciente As Boolean Dim aa

Private Sub cbciudad_KeyPress(KeyAscii As Integer) Combo cbciudad, KeyAscii End Sub

Private Sub cbestadocivil_KeyPress(KeyAscii As Integer) Combo cbestadocivil, KeyAscii End Sub

77

Private Sub cbsexo_KeyPress(KeyAscii As Integer) Combo cbsexo, KeyAscii End Sub

Private Sub CmdActualizar_Click() If txthistoriaclinica = "" Then MsgBox "Por Favor, Seleccione de la lista, el Paciente que desea Actualizar", vbInformation, Mensaje Exit Sub

Else

actualiza = True Botones

txtcedula.SetFocus End If End Sub

Private Sub CmdCancelar_Click() Limpiar Botones actualiza = False End Sub

Private Sub CmdCiudad_Click() llena = True Load frm_ciudad frm_ciudad.Show 1 End Sub

Private Sub CmdGuardar_Click() If Trim(txtcedula.Text) = "" Then txtcedula.Text = "-" End If If Len(txtcedula) = 10 Or txtcedula.Text = "-" Then Else

MsgBox "La cedula, debe contener diez caracteres", vbInformation,

Mensaje

txtcedula.SetFocus Exit Sub End If

If Trim(TxtApellidosNombres) = "" Then MsgBox "Por Favor, ingrese Apellidos y Nombres ", vbExclamation,

Mensaje

TxtApellidosNombres.SetFocus Exit Sub ElseIf Trim(cbsexo) = "" Then MsgBox "Por Favor, seleccione Sexo", vbExclamation, Mensaje cbsexo.SetFocus Exit Sub ElseIf Trim(DTPFechaNacimiento) = "" Then MsgBox "Por Favor,seleccione la Fecha de Nacimiento", vbExclamation, Mensaje DTPFechaNacimiento.SetFocus Exit Sub ElseIf Trim(cbestadocivil) = "" Then MsgBox "Por Favor, seleccione el Estado Civil", vbExclamation,

Mensaje

cbestadocivil.SetFocus Exit Sub ElseIf Trim(cbciudad) = "" Then

78

MsgBox "Por Favor, ingrese Ciudad", vbExclamation, Mensaje cbciudad.SetFocus Exit Sub End If

If Trim(txtocupacion) = "" Then txtocupacion.Text = "-" End If

If Trim(txttelefono) = "" Then txttelefono.Text = "-" End If

If Trim(TxtAlergias) = "" Then TxtAlergias.Text = "-" End If

If Trim(txtAntPatFamiliares) = "" Then txtAntPatFamiliares.Text = "-" End If

If Trim(txtAntPatPersonales) = "" Then txtAntPatPersonales.Text = "-" End If If txtcedula = "-" Then Else If ValidaCedula(txtcedula.Text) = False Then MsgBox "Nº de Cédula no válido", vbCritical, Mensaje txtcedula.SelStart = 0 txtcedula.SelLength = Len(txtcedula.Text) txtcedula.SetFocus Exit Sub End If End If Set aux = BaseDatos.Execute("SELECT * FROM Ciudades") Do Until aux.EOF If cbciudad = aux!nombreciudad Then aa = aux!IdCiudad Exit Do

Else

aux.MoveNext End If

Loop aux.Close Set aux = Nothing If txtcedula = "-" Then If busca_nombre("Datos_Personales_Paciente", Trim(TxtApellidosNombres.Text), "Apellidos_Nombres") Then MsgBox "Apellidos y Nombre del Paciente, ya existe", vbCritical, Mensaje TxtApellidosNombres.SetFocus Exit Sub End If End If If actualiza = True Then Set aux = BaseDatos.Execute("SELECT cedula FROM Datos_Personales_Paciente") Busca1 = False

Do Until aux.EOF If txtcedula = aux!cedula Then Busca1 = True

79

Exit Do

Else

aux.MoveNext End If

Loop aux.Close Set aux = Nothing If txtcedula = "-" Then Busca1 = False End If

Set aux = BaseDatos.Execute("SELECT NumeroHistoriaClinica,cedula FROM Datos_Personales_Paciente")

Do Until aux.EOF If txthistoriaclinica = aux!NumeroHistoriaClinica And txtcedula = aux!cedula Then Busca1 = False Exit Do

Else

aux.MoveNext End If

Loop aux.Close Set aux = Nothing If txtcedula = "-" Then Busca1 = False End If

'SI LA CEDULA ES VERDADERA SALE If Busca1 = True Then MsgBox "Ya existe este Nº de Cédula para Paciente", vbCritical, Mensaje txtcedula.SetFocus Exit Sub End If BaseDatos.Execute ("UPDATE Datos_Personales_Paciente SET Cedula='" & txtcedula & "', Apellidos_Nombres='" & UCase(TxtApellidosNombres) & "', Sexo='" & UCase(cbsexo) & "',Fecha_Nacimiento='" & DTPFechaNacimiento & "',Estado_Civil='" & UCase(cbestadocivil) & "',IdCiudad=" & (aa) & ",Ocupacion='" & UCase(txtocupacion) & "', Telefono='" & txttelefono & "', Alergias='" & UCase(TxtAlergias) & "', Antecedentes_Familia= '" & UCase(txtAntPatFamiliares) & "',Antecedentes_Paciente= '" & UCase(txtAntPatPersonales) & "' Where NumeroHistoriaClinica=" & txthistoriaclinica & "") MsgBox "Información Actualizada", vbInformation, Mensaje actualiza = False

Else

If txtcedula = "-" Then Encontrado1 = False Else Encontrado1 = Busca_Personas(frm_datos_pacientes, txtcedula, "SELECT * FROM Datos_Personales_Paciente", "Paciente Existe, busque en lista

")

End If

If Encontrado1 = False Then Set aux = BaseDatos.Execute("SELECT max(NumeroHistoriaClinica)AS mayor FROM Datos_Personales_Paciente") If IsNull(aux!mayor) Then txthistoriaclinica = 1

80

Else

txthistoriaclinica = aux!mayor + 1 End If aux.Close Set aux = Nothing

End If

Set aux = BaseDatos.Execute("SELECT NumeroHistoriaClinica FROM Datos_Personales_Paciente") Busca1 = False

Do Until aux.EOF If txthistoriaclinica = aux!NumeroHistoriaClinica Then Busca1 = True Exit Do

Else

aux.MoveNext End If

Loop aux.Close Set aux = Nothing

'SI LA CEDULA ES VERDADERA SALE If Busca1 = True Then MsgBox "Ya existe este Nº de Cédula para Paciente", vbCritical, Mensaje txtcedula.SetFocus Exit Sub End If

If Encontrado1 = False Then BaseDatos.Execute "INSERT INTO Datos_Personales_Paciente(NumeroHistoriaClinica,Cedula,Apellidos_Nombres, Sexo,Fecha_Nacimiento,Estado_Civil,IdCiudad,Ocupacion,Telefono,Alergias,A ntecedentes_Familia,Antecedentes_Paciente) values (" & txthistoriaclinica

& ",'" & txtcedula & "', '" & UCase(TxtApellidosNombres) & "', '" &

UCase(cbsexo) & "','" & DTPFechaNacimiento & "','" & UCase(cbestadocivil)

& "'," & (aa) & " ,'" & UCase(txtocupacion) & "','" & txttelefono & "','"

& UCase(TxtAlergias) & "', '" & UCase(txtAntPatFamiliares) & "','" & UCase(txtAntPatPersonales) & "' )" MsgBox "Información Almacenada", vbInformation, Mensaje End If End If Limpiar Botones VisualizaDatos End Sub

Private Sub CmdImprimir_Click() If txthistoriaclinica = "" Then MsgBox "No Hay Registro Activo, debe seleccionar un Paciente de la lista", vbCritical, Mensaje Exit Sub

Else Imprime txthistoriaclinica End If End Sub

Private Sub CmdNuevo_Click() Limpiar Botones txtcedula.SetFocus

81

End Sub

Private Sub CmdSalir_Click() Unload Me End Sub

Private Sub DTPFechaNacimiento_Change() lbedad.Caption = edad(DTPFechaNacimiento) End Sub

Private Sub DTPFechaNacimiento_Click() lbedad.Caption = edad(DTPFechaNacimiento) End Sub

Private Sub DTPFechaNacimiento_LostFocus() lbedad.Caption = edad(DTPFechaNacimiento) End Sub

Private Sub Form_KeyPress(KeyAscii As Integer) EnterTab KeyAscii End Sub

Private Sub Form_Load() LLenaGrid msflista, "SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil,Ciudades.NombreCiudad, Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad ORDER BY Apellidos_Nombres" msflista.ColWidth(2) = (1000) msflista.ColWidth(3) = (3500) DTPFechaNacimiento = (Date) LlenaCombo cbciudad, "SELECT NombreCiudad FROM Ciudades" End Sub

Private Sub msflista_Click() If msflista.Rows = 1 Then Exit Sub If msflista.TextMatrix(msflista.Row, 1) = "" Then Exit Sub VaciarDatos msflista.TextMatrix(msflista.Row, 1) End Sub

Private Sub msflista_DblClick() If msflista.Rows = 1 Then MsgBox "No Hay Registro Activo", vbCritical, Mensaje Unload Me

Else

Set rela = BaseDatos.Execute(" SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil,Ciudades.NombreCiudad,

82

Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad WHERE Datos_Personales_Paciente.NumeroHistoriaClinica = " & msflista.TextMatrix(msflista.Row, 1) & "") frm_historia.txthistoriaclinica = rela!NumeroHistoriaClinica frm_historia.TxtApellidosNombres = rela!Apellidos_Nombres frm_historia.lbedad = edad(DTPFechaNacimiento) frm_historia.TxtAlergias = rela!ALERGIAS rela.Close Set rela = Nothing LLenaGrid frm_historia.msflista, "SELECT Datos_Personales_Paciente.NumeroHistoriaClinica,(Historia_Clinica.Fecha_E laboracion) as Fecha_Visita, (Enfermedades.Enfermedad) as Diagnostico1,( Enfermedades_1.Enfermedad) as Diagnostico2, (Enfermedades_2.Enfermedad) as Diagnostico3, (Enfermedades_3.Enfermedad) as Diagnostico4" & _ " FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Historia_Clinica.NumeroHistoriaClinica= " & frm_historia.txthistoriaclinica & " ORDER BY Historia_Clinica.Fecha_Elaboracion" frm_historia.msflista.ColWidth(1) = 1000 End If CmdSalir_Click frm_historia.Show End Sub

Private Sub msflista_LeaveCell() msflista.CellBackColor = &H80000005 End Sub

Private Sub msflista_SelChange() If msflista.Rows = 1 Then Exit Sub If msflista.TextMatrix(msflista.Row, 1) = "" Then Exit Sub VaciarDatos msflista.TextMatrix(msflista.Row, 1) End Sub

Private Sub TxtAlergias_KeyPress(KeyAscii As Integer) letras_num KeyAscii End Sub

Private Sub txtAntPatFamiliares_KeyPress(KeyAscii As Integer) letras_num KeyAscii End Sub

Private Sub txtAntPatPersonales_KeyPress(KeyAscii As Integer) letras_num KeyAscii End Sub

83

Private Sub TxtApellidosNombres_Change() If frmbusqueda.Enabled = False Then Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil,Ciudades.NombreCiudad, Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN

Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad WHERE Datos_Personales_Paciente.Apellidos_Nombres LIKE '" & TxtApellidosNombres

& "%'") msflista.Rows = 1 Do Until aux.EOF msflista.AddItem "" & Chr(9) & aux!NumeroHistoriaClinica & Chr(9)

& aux!cedula & Chr(9) & aux!Apellidos_Nombres & Chr(9) & aux!SEXO &

Chr(9) & aux!Fecha_Nacimiento & Chr(9) & aux!Estado_Civil & Chr(9) &

aux!nombreciudad & Chr(9) & aux!Ocupacion & Chr(9) & aux!TELEFONO & Chr(9) & aux!ALERGIAS & Chr(9) & aux!Antecedentes_Familia & Chr(9) & aux!Antecedentes_Paciente aux.MoveNext

Loop aux.Close Set aux = Nothing End If End Sub

Private Sub TxtApellidosNombres_GotFocus() Sombrea TxtApellidosNombres End Sub

Private Sub TxtApellidosNombres_KeyPress(KeyAscii As Integer) letras KeyAscii End Sub

Private Sub txtbusqueda_Change() Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil,Ciudades.NombreCiudad, Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad WHERE Datos_Personales_Paciente.Apellidos_Nombres LIKE '" & txtbusqueda & "%'") msflista.Rows = 1 Do Until aux.EOF msflista.AddItem "" & Chr(9) & aux!NumeroHistoriaClinica & Chr(9)

& aux!cedula & Chr(9) & aux!Apellidos_Nombres & Chr(9) & aux!SEXO & Chr(9) & aux!Fecha_Nacimiento & Chr(9) & aux!Estado_Civil & Chr(9) &

84

aux!nombreciudad & Chr(9) & aux!Ocupacion & Chr(9) & aux!TELEFONO & Chr(9) & aux!ALERGIAS & Chr(9) & aux!Antecedentes_Familia & Chr(9) & aux!Antecedentes_Paciente aux.MoveNext

Loop aux.Close Set aux = Nothing End Sub

Private Sub txtbusqueda_GotFocus() Sombrea txtbusqueda End Sub

Private Sub txtcedula_GotFocus() Sombrea txtcedula End Sub

Private Sub txtcedula_KeyPress(KeyAscii As Integer) numero KeyAscii End Sub

Private Sub txtocupacion_GotFocus() Sombrea txtocupacion End Sub

Private Sub txtocupacion_KeyPress(KeyAscii As Integer) letras KeyAscii End Sub

Private Sub txttelefono_KeyPress(KeyAscii As Integer) Telefonos KeyAscii End Sub

Sub Limpiar() txthistoriaclinica = "" txtcedula = "" TxtApellidosNombres = "" cbsexo = "" DTPFechaNacimiento = (Date) lbedad.Caption = "" cbestadocivil = "" cbciudad = "" txtocupacion = "" txttelefono = "" TxtAlergias = "" txtAntPatFamiliares = "" txtAntPatPersonales = "" txtbusqueda = "" End Sub

Sub Botones() CmdNuevo.Enabled = Not (CmdNuevo.Enabled) CmdGuardar.Enabled = Not (CmdGuardar.Enabled) CmdCancelar.Enabled = Not (CmdCancelar.Enabled) CmdActualizar.Enabled = Not (CmdActualizar.Enabled) CmdSalir.Enabled = Not (CmdSalir.Enabled) frmbusqueda.Enabled = Not (frmbusqueda.Enabled) frmpaciente.Enabled = Not (frmpaciente.Enabled) End Sub

85

Sub VaciarDatos(id As Integer) Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil,Ciudades.NombreCiudad, Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id) If aux.EOF = False Then txthistoriaclinica = aux!NumeroHistoriaClinica txtcedula = aux!cedula TxtApellidosNombres = aux!Apellidos_Nombres cbsexo = aux!SEXO DTPFechaNacimiento = aux!Fecha_Nacimiento lbedad.Caption = edad(DTPFechaNacimiento) cbestadocivil = aux!Estado_Civil cbciudad = aux!nombreciudad txtocupacion = aux!Ocupacion txttelefono = aux!TELEFONO TxtAlergias = aux!ALERGIAS txtAntPatFamiliares = aux!Antecedentes_Familia txtAntPatPersonales = aux!Antecedentes_Paciente End If Set aux = Nothing End Sub

Sub VisualizaDatos() Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil,Ciudades.NombreCiudad, Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad ORDER BY Apellidos_Nombres") msflista.Rows = 1 Do Until aux.EOF msflista.AddItem "" & Chr(9) & aux!NumeroHistoriaClinica & Chr(9) & aux!cedula & Chr(9) & aux!Apellidos_Nombres & Chr(9) & aux!SEXO & Chr(9) & aux!Fecha_Nacimiento & Chr(9) & aux!Estado_Civil & Chr(9) & aux!nombreciudad & Chr(9) & aux!Ocupacion & Chr(9) & aux!TELEFONO & Chr(9) & aux!ALERGIAS & Chr(9) & aux!Antecedentes_Familia & Chr(9) & aux!Antecedentes_Paciente aux.MoveNext

Loop aux.Close Set aux = Nothing End Sub

86

Sub Imprime(id As Integer) Dim tPaciente As New ADODB.Recordset Set tPaciente = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Cedula, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Sexo, Datos_Personales_Paciente.Fecha_Nacimiento, Datos_Personales_Paciente.Estado_Civil, Ciudades.NombreCiudad, Datos_Personales_Paciente.Ocupacion, Datos_Personales_Paciente.Telefono, Datos_Personales_Paciente.Alergias, Datos_Personales_Paciente.Antecedentes_Familia, Datos_Personales_Paciente.Antecedentes_Paciente FROM Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id) Set DReportPacientes.DataSource = tPaciente DReportPacientes.Show 1 End Sub

Formulario Frm_historia ( historia.frm)

Option Explicit Public llena As Boolean Dim Modifica, Encontrado As Boolean Dim aux As New ADODB.Recordset Dim aa, bb, cc, dd, fe Dim FEC As String

Private Sub cmbdiagnostico1_KeyPress(KeyAscii As Integer) Combo cmbdiagnostico1, KeyAscii End Sub

Private Sub cmbdiagnostico2_KeyPress(KeyAscii As Integer) Combo cmbdiagnostico2, KeyAscii End Sub

Private Sub cmbdiagnostico3_KeyPress(KeyAscii As Integer) Combo cmbdiagnostico3, KeyAscii End Sub

Private Sub cmbdiagnostico4_KeyPress(KeyAscii As Integer) Combo cmbdiagnostico4, KeyAscii End Sub

Private Sub CmdActualizar_Click() If cmbdiagnostico1 = "" Then MsgBox "Seleccione de la Lista, el Registro que desea actualizar ", vbCritical, Mensaje Exit Sub End If Botones Modifica = True txtpresionarterial.SetFocus End Sub

Private Sub CmdCancelar_Click() Limpiar Botones Modifica = False

87

End Sub

Private Sub CmdDiagnostico_Click() llena = True Load frm_diagnostico frm_diagnostico.Show 1 End Sub

Private Sub CmdGuardar_Click() Dim aux As New ADODB.Recordset If Trim(txtpresionarterial) = "" Then txtpresionarterial.Text = "-" End If

If Trim(txtpulsaciones) = "" Then txtpulsaciones.Text = "-" End If If Trim(txtrespiracion) = "" Then txtrespiracion.Text = "-" End If If Trim(txttemperatura) = "" Then txttemperatura.Text = "-" End If

If Trim(txtperimetrocefalico) = "" Then txtperimetrocefalico.Text = "-" End If

If Trim(txttalla) = "" Then txttalla.Text = "-"

End If

If Trim(txtpeso) = "" Then txtpeso.Text = "-" End If

If Trim(txtmotivoconsulta) = "" Then MsgBox "Ingrese el Motivo de la Consulta" txtmotivoconsulta.SetFocus Exit Sub End If

If Trim(txtprediagnostico) = "" Then txtprediagnostico.Text = "-" End If

If Trim(txttratamiento) = "" Then txttratamiento.Text = "-" End If

If Trim(txtprescripcion) = "" Then txtprescripcion.Text = "-" End If

Set aux = BaseDatos.Execute("SELECT * FROM Enfermedades") Do Until aux.EOF If cmbdiagnostico1 = "" Then aa = 1 Exit Do End If

88

If cmbdiagnostico1 = aux!enfermedad Then

aa = aux!Idenfermedad Exit Do

Else

aux.MoveNext End If

Loop

aux.Close Set aux = Nothing Set aux = BaseDatos.Execute("SELECT * FROM Enfermedades") Do Until aux.EOF If cmbdiagnostico2 = "" Then

bb = 1

Exit Do

End If

If cmbdiagnostico2 = aux!enfermedad Then

bb = aux!Idenfermedad

Exit Do

Else

aux.MoveNext End If

Loop aux.Close Set aux = Nothing

Set aux = BaseDatos.Execute("SELECT * FROM Enfermedades") Do Until aux.EOF If cmbdiagnostico3 = "" Then

cc = 1

Exit Do

End If If cmbdiagnostico3 = aux!enfermedad Then

cc = aux!Idenfermedad Exit Do

Else

aux.MoveNext End If

Loop

aux.Close

Set aux = Nothing Set aux = BaseDatos.Execute("SELECT * FROM Enfermedades") Do Until aux.EOF If cmbdiagnostico4 = "" Then

dd = 1

Exit Do

End If

If cmbdiagnostico4 = aux!enfermedad Then

dd = aux!Idenfermedad

Exit Do

Else

aux.MoveNext End If

Loop aux.Close Set aux = Nothing If Modifica = False Then fe = CStr(Now) BaseDatos.Execute "INSERT INTO Historia_Clinica(NumeroHistoriaClinica,Fecha_Elaboracion,Motivo_Consulta, Presion_Arterial,Pulso,Respiracion,Temperatura,Perimetro_Cefalico,Talla,P

eso,Prediagnostico,Diagnostico1,Diagnostico2,Diagnostico3,Diagnostico4,Tr

atamiento,Prescripcion) VALUES (" & txthistoriaclinica & ", '" &

89

CStr(Now) & "', '" & UCase(txtmotivoconsulta) & "', '" & UCase(txtpresionarterial) & "', '" & (txtpulsaciones) & "' , '" & txtrespiracion & "', '" & txttemperatura & "', '" & txtperimetrocefalico & "', '" & txttalla & "', '" & txtpeso & "','" & UCase(txtprediagnostico) & "'," & (aa) & "," & (bb) & "," & (cc) & "," & (dd) & ",'" & UCase(txttratamiento) & "', '" & UCase(txtprescripcion) & "' )" MsgBox "Información Almacenada", vbInformation, Mensaje ElseIf Modifica = True Then fe = CStr(lbfechavisita) BaseDatos.Execute "UPDATE Historia_Clinica SET NumeroHistoriaClinica= " & txthistoriaclinica & ",Motivo_Consulta= '" & UCase(txtmotivoconsulta) & "', Presion_Arterial='" & UCase(txtpresionarterial) & "', Pulso='" & (txtpulsaciones) & "' ,Respiracion= '" & txtrespiracion & "', Temperatura='" & txttemperatura & "', Perimetro_Cefalico='" & txtperimetrocefalico & "', Talla='" & txttalla & "',Peso='" & txtpeso & "', Prediagnostico='" & UCase(txtprediagnostico) & "',Diagnostico1=" & (aa) & ",Diagnostico2=" & (bb) & ",Diagnostico3=" & (cc) & ",Diagnostico4=" & (dd) & ",Tratamiento='" & UCase(txttratamiento) & "', Prescripcion='" & UCase(txtprescripcion) & "' WHERE CStr(Fecha_Elaboracion)='" & CStr(lbfechavisita) & "' and NumeroHistoriaClinica= " & txthistoriaclinica MsgBox "Información Actualizada", vbInformation, Mensaje Modifica = False

End If If MsgBox("Desea Imprimir la Receta", vbYesNo, Mensaje) = vbYes Then ImprimeRecetaG txthistoriaclinica End If

Limpiar

Botones

VisualizaDatos

End Sub

Private Sub CmdImpHistorias_Click() If msflista.Rows = 1 Then MsgBox "No Hay Registro Activo", vbCritical, Mensaje Exit Sub End If ImprimeHistorias txthistoriaclinica End Sub

Private Sub CmdImprimir_Click() If lbfechavisita = "" Then MsgBox "No Hay Registro Activo, debe seleccionar una cita de la lista", vbCritical, Mensaje Exit Sub

Else Imprime txthistoriaclinica End If End Sub

Private Sub CmdNuevo_Click() If txthistoriaclinica = "" Then MsgBox "Debe tener seleccionado un Paciente", vbInformation,

Mensaje

Else

Limpiar Botones txtpresionarterial.SetFocus End If

90

End Sub

Private Sub CmdPacientes_Click() llena = True CmdSalir_Click Load frm_datos_pacientes frm_datos_pacientes.Show 1 End Sub

Private Sub cmdreceta_Click() If lbfechavisita = "" Then MsgBox "No Hay Registro Activo, debe seleccionar una cita de la lista", vbCritical, Mensaje Exit Sub

Else ImprimeReceta txthistoriaclinica End If End Sub

Private Sub CmdSalir_Click() Unload Me End Sub

Private Sub Form_KeyPress(KeyAscii As Integer) EnterTab KeyAscii End Sub

Private Sub Form_Load() lbfechavisita.Caption = "" lblFecha.Caption = Format(Date, "Long Date") & ", " & Time LlenaCombo cmbdiagnostico1, "SELECT Enfermedad FROM enfermedades" LlenaCombo cmbdiagnostico2, "SELECT Enfermedad FROM enfermedades" LlenaCombo cmbdiagnostico3, "SELECT Enfermedad FROM enfermedades" LlenaCombo cmbdiagnostico4, "SELECT Enfermedad FROM enfermedades" End Sub

Private Sub msflista_Click() If msflista.Rows = 1 Then Exit Sub If msflista.TextMatrix(msflista.Row, 1) = "" Then Exit Sub lbfechavisita.Caption = msflista.TextMatrix(msflista.Row, 2) VaciarDatos msflista.TextMatrix(msflista.Row, 1) End Sub

Private Sub msflista_LeaveCell() msflista.CellBackColor = &H80000005 End Sub

Private Sub msflista_SelChange() If msflista.Rows = 1 Then Exit Sub If msflista.TextMatrix(msflista.Row, 1) = "" Then Exit Sub lbfechavisita.Caption = msflista.TextMatrix(msflista.Row, 2) VaciarDatos msflista.TextMatrix(msflista.Row, 1) End Sub

Private Sub Timer1_Timer() lblFecha.Caption = Format(Date, "Long Date") & ", " & Time End Sub

Private Sub txtperimetrocefalico_KeyPress(KeyAscii As Integer) numero_punto KeyAscii

91

End Sub

Private Sub txtpeso_KeyPress(KeyAscii As Integer) numero_va KeyAscii End Sub

Private Sub txtpresionarterial_KeyPress(KeyAscii As Integer) presion_arterial KeyAscii End Sub

Private Sub txtpulsaciones_KeyPress(KeyAscii As Integer) numero_va KeyAscii End Sub

Private Sub txtrespiracion_KeyPress(KeyAscii As Integer) numero_va KeyAscii End Sub

Private Sub txttalla_KeyPress(KeyAscii As Integer) numero_va KeyAscii End Sub

Private Sub txttemperatura_KeyPress(KeyAscii As Integer) numero_punto KeyAscii End Sub

Sub Limpiar() txtpresionarterial = "" txtpulsaciones = "" txtrespiracion = "" txttemperatura = "" txtperimetrocefalico = "" txttalla = "" txtpeso = "" cmbdiagnostico1 = "" cmbdiagnostico2 = "" cmbdiagnostico3 = "" cmbdiagnostico4 = "" txtmotivoconsulta = "" txtprediagnostico = "" txttratamiento = "" txtprescripcion = "" lbfechavisita = ""

End Sub

Sub Botones() CmdNuevo.Enabled = Not (CmdNuevo.Enabled) CmdGuardar.Enabled = Not (CmdGuardar.Enabled) CmdCancelar.Enabled = Not (CmdCancelar.Enabled) CmdActualizar.Enabled = Not (CmdActualizar.Enabled) CmdSalir.Enabled = Not (CmdSalir.Enabled) frmsignosvitales.Enabled = Not (frmsignosvitales.Enabled) frmdiagnostico.Enabled = Not (frmdiagnostico.Enabled) txtmotivoconsulta.Enabled = Not (txtmotivoconsulta.Enabled) txtprediagnostico.Enabled = Not (txtprediagnostico.Enabled) txttratamiento.Enabled = Not (txttratamiento.Enabled) txtprescripcion.Enabled = Not (txtprescripcion.Enabled) Frmreceta.Enabled = Not (Frmreceta.Enabled) End Sub

92

Sub VaciarDatos(id As Integer) Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica,

Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias, (Historia_Clinica.Fecha_Elaboracion) AS Fecha_Visita, Historia_Clinica.Motivo_Consulta, Historia_Clinica.Presion_Arterial, Historia_Clinica.Pulso, Historia_Clinica.Respiracion, Historia_Clinica.Temperatura, Historia_Clinica.Perimetro_Cefalico, Historia_Clinica.Talla, Historia_Clinica.Peso,(Enfermedades.Enfermedad) AS Diagnostico1, ( Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4, Historia_Clinica.Prediagnostico, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion" & _

" FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON

Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id & " AND CStr(Historia_Clinica.Fecha_Elaboracion) = '" & CStr(lbfechavisita) & "' ")

If aux.EOF = False Then txtpresionarterial = aux!presion_arterial txtpulsaciones = aux!Pulso txtrespiracion = aux!Respiracion txttemperatura = aux!Temperatura txtperimetrocefalico = aux!Perimetro_Cefalico txttalla = aux!talla txtpeso = aux!peso cmbdiagnostico1 = aux!Diagnostico1 cmbdiagnostico2 = aux!Diagnostico2 cmbdiagnostico3 = aux!Diagnostico3 cmbdiagnostico4 = aux!Diagnostico4 txtmotivoconsulta = aux!Motivo_Consulta txtprediagnostico = aux!Prediagnostico txttratamiento = aux!tratamiento txtprescripcion = aux!prescripcion End If Set aux = Nothing End Sub

Sub VisualizaDatos() Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT

Datos_Personales_Paciente.NumeroHistoriaClinica,(Historia_Clinica.Fecha_E laboracion) as Fecha_Visita, (Enfermedades.Enfermedad) as Diagnostico1,( Enfermedades_1.Enfermedad) as Diagnostico2, (Enfermedades_2.Enfermedad) as Diagnostico3, (Enfermedades_3.Enfermedad) as Diagnostico4" & _

" FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON

Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad =

93

Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Historia_Clinica.NumeroHistoriaClinica= " & frm_historia.txthistoriaclinica & " ORDER BY Historia_Clinica.Fecha_Elaboracion") msflista.Rows = 1 Do Until aux.EOF msflista.AddItem "" & Chr(9) & aux!NumeroHistoriaClinica & Chr(9) & aux!Fecha_Visita & Chr(9) & aux!Diagnostico1 & Chr(9) & aux!Diagnostico2 & Chr(9) & aux!Diagnostico3 & Chr(9) & aux!Diagnostico4 aux.MoveNext

Loop aux.Close Set aux = Nothing End Sub

Sub Imprime(id As Integer) Dim tHistoria As New ADODB.Recordset Set tHistoria = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias, Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.Motivo_Consulta, Historia_Clinica.Presion_Arterial, Historia_Clinica.Pulso, Historia_Clinica.Respiracion, Historia_Clinica.Temperatura, Historia_Clinica.Perimetro_Cefalico, Historia_Clinica.Talla,Historia_Clinica.Peso, (Enfermedades.Enfermedad) AS Diagnostico1, ( Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4, Historia_Clinica.Prediagnostico, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion" & _ " FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id & " AND CStr(Historia_Clinica.Fecha_Elaboracion)='" & CStr(lbfechavisita) & "' ") Set DReportHistoriaClinica.DataSource = tHistoria

DReportHistoriaClinica.Sections("Sección2").Controls.Item("EFechaElaborac

ion").Caption = lbfechavisita

DReportHistoriaClinica.Sections("Sección2").Controls("EHistoriaClinica").

Caption = txthistoriaclinica

DReportHistoriaClinica.Sections("Sección2").Controls("EPaciente").Caption

= TxtApellidosNombres

DReportHistoriaClinica.Sections("Sección2").Controls("EAlergias").Caption

= txtalergias

DReportHistoriaClinica.WindowState = vbMaximized

DReportHistoriaClinica.Refresh DReportHistoriaClinica.Show 1 End Sub

Sub ImprimeHistorias(id As Integer) Dim tHistoria As New ADODB.Recordset

94

Set tHistoria = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias, Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.Motivo_Consulta, Historia_Clinica.Presion_Arterial, Historia_Clinica.Pulso, Historia_Clinica.Respiracion, Historia_Clinica.Temperatura, Historia_Clinica.Perimetro_Cefalico,

Historia_Clinica.Talla,Historia_Clinica.PEso, (Enfermedades.Enfermedad) AS Diagnostico1, ( Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4, Historia_Clinica.Prediagnostico, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion" & _

" FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON

Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id & " ") Set DReportHistoriasGeneral.DataSource = tHistoria

DReportHistoriasGeneral.Sections("Sección2").Controls("EHistoriaClinica")

.Caption = txthistoriaclinica

DReportHistoriasGeneral.Sections("Sección2").Controls("EPaciente").Captio

n = TxtApellidosNombres

DReportHistoriasGeneral.Sections("Sección2").Controls("EAlergias").Captio

n = txtalergias

DReportHistoriasGeneral.Show 1

End Sub

Sub ImprimeReceta(id As Integer) Dim tReceta As New ADODB.Recordset Set tReceta = BaseDatos.Execute("SELECT Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias,Historia_Clinica.Motivo_Consulta, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion FROM Datos_Personales_Paciente INNER JOIN Historia_Clinica ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id & " AND CStr(Historia_Clinica.Fecha_Elaboracion)='" & CStr(lbfechavisita) & "' ") Set DReportReceta.DataSource = tReceta

DReportReceta.Sections("Sección4").Controls.Item("E2FechaElaboracion").Ca

ption = lbfechavisita DReportReceta.Sections("Sección4").Controls("E6Paciente").Caption =

TxtApellidosNombres

DReportReceta.Sections("Sección4").Controls.Item("E1FechaElaboracion").Ca

ption = lbfechavisita DReportReceta.Sections("Sección4").Controls("E5Paciente").Caption =

TxtApellidosNombres

DReportReceta.Sections("Sección4").Controls("E4Edad").Caption = lbedad DReportReceta.Show 1 End Sub

Sub ImprimeRecetaG(id As Integer) Dim tReceta As New ADODB.Recordset

95

Set tReceta = BaseDatos.Execute("SELECT Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias,Historia_Clinica.Motivo_Consulta, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion FROM Datos_Personales_Paciente INNER JOIN Historia_Clinica ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Datos_Personales_Paciente.NumeroHistoriaClinica=" & id & " AND CStr(Historia_Clinica.Fecha_Elaboracion)='" & CStr(fe) & "' ") lbfechavisita = tReceta!Fecha_Elaboracion Set DReportReceta.DataSource = tReceta

DReportReceta.Sections("Sección4").Controls.Item("E2FechaElaboracion").Ca

ption = lbfechavisita DReportReceta.Sections("Sección4").Controls("E6Paciente").Caption = TxtApellidosNombres

DReportReceta.Sections("Sección4").Controls.Item("E1FechaElaboracion").Ca

ption = lbfechavisita DReportReceta.Sections("Sección4").Controls("E5Paciente").Caption = TxtApellidosNombres DReportReceta.Sections("Sección4").Controls("E4Edad").Caption = lbedad DReportReceta.Show 1 End Sub

Formulario Cambio Contraseña ( frm_contraseña.frm)

Dim aux As New ADODB.Recordset

Dim actualiza, Encontrado1, Busca1 As Boolean

Private Sub CmdCancelar_Click() Limpiar Botones actualiza = False End Sub

Private Sub CmdGuardar_Click() If Trim(txtnombre) = "" Then MsgBox "Ingrese el Nombre del Usuario", vbInformation, Mensaje txtnombre.SetFocus Exit Sub ElseIf Trim(txtcontraseña) = "" Then MsgBox "Ingrese la Contraseña", vbInformation, Mensaje txtcontraseña.SetFocus Exit Sub End If

BaseDatos.Execute ("UPDATE Clave SET Idclave='" & txtcontraseña & "',usuario='" & UCase(txtnombre) & "'") MsgBox "Información Actualizada", vbInformation, Mensaje

Limpiar

Botones

End Sub

Private Sub CmdNuevo_Click() Limpiar Botones

96

txtnombre.SetFocus End Sub

Private Sub CmdSalir_Click() Unload Me End Sub

Sub Botones() CmdNuevo.Enabled = Not (CmdNuevo.Enabled) CmdGuardar.Enabled = Not (CmdGuardar.Enabled) CmdCancelar.Enabled = Not (CmdCancelar.Enabled) CmdSalir.Enabled = Not (CmdSalir.Enabled) frmdatos.Enabled = Not (frmdatos.Enabled) End Sub

Sub Limpiar() txtnombre = "" txtcontraseña = "" End Sub

Private Sub Form_KeyPress(KeyAscii As Integer) EnterTab KeyAscii End Sub

Formulario Diagnóstico frm_diagnostico ( frm_diagnostico.frm)

Dim Modifica, Encontrado As Boolean Dim aux As New ADODB.Recordset

Private Sub CmdActualizar_Click() If txtid_diagnostico = 1 Then MsgBox "Esta información no se puede actualiza", vbInformation, Mensaje Exit Sub

End If If txtnombre_diagnostico = "" Then MsgBox "Seleccione de la Lista, el Registro que desea actualizar ", vbCritical, Mensaje Exit Sub End If Botones Modifica = True txtnombre_diagnostico.SetFocus End Sub

Private Sub CmdCancelar_Click() Limpiar Botones Modifica = False End Sub

Private Sub CmdGuardar_Click() Dim aux As New ADODB.Recordset If Trim(txtnombre_diagnostico) = "" Then MsgBox "Ingrese el Nombre de la Enfermedad" txtnombre_diagnostico.SetFocus Exit Sub End If

97

If Modifica = False Then Set aux = BaseDatos.Execute("SELECT Enfermedad FROM Enfermedades WHERE ucase(Enfermedad)='" & QuitaTilde(UCase(txtnombre_diagnostico)) & "'")

If aux.EOF = False Then MsgBox "La Enfermedad, ya existe", vbCritical, Mensaje txtnombre_diagnostico.SetFocus Exit Sub End If aux.Close Set aux = Nothing Set aux = BaseDatos.Execute("SELECT max(idenfermedad)as mayor FROM Enfermedades") If IsNull(aux!mayor) Then txtid_diagnostico = 1

Else

txtid_diagnostico = aux!mayor + 1 End If aux.Close Set aux = Nothing BaseDatos.Execute "INSERT INTO Enfermedades(IdEnfermedad,Enfermedad) VALUES (" & txtid_diagnostico & ", '" & UCase(txtnombre_diagnostico) & "')" MsgBox "Información Almacenada", vbInformation, Mensaje LstLista.Refresh ElseIf Modifica = True Then Set aux = BaseDatos.Execute("SELECT Enfermedad FROM Enfermedades WHERE IdEnfermedad <> " & txtid_diagnostico) Encontrado = False Do Until Encontrado = True Or aux.EOF If QuitaTilde(UCase(txtnombre_diagnostico)) = QuitaTilde(UCase(aux!enfermedad)) Then Encontrado = True Exit Do End If aux.MoveNext

Loop aux.Close Set aux = Nothing If Encontrado = True Then MsgBox "Ya existe la Enfermedad", vbCritical, Mensaje txtnombre_diagnostico.SetFocus Exit Sub End If BaseDatos.Execute "UPDATE Enfermedades SET Enfermedad='" & UCase(txtnombre_diagnostico) & "' WHERE IdEnfermedad=" & txtid_diagnostico MsgBox "Información Actualizada", vbInformation, Mensaje Modifica = False LstLista.Refresh End If Limpiar Botones visualiza

If frm_historia.llena = True Then LlenaCombo frm_historia.cmbdiagnostico1, "SELECT Enfermedad FROM Enfermedades" LlenaCombo frm_historia.cmbdiagnostico2, "SELECT Enfermedad FROM Enfermedades" LlenaCombo frm_historia.cmbdiagnostico3, "SELECT Enfermedad FROM Enfermedades"

98

LlenaCombo frm_historia.cmbdiagnostico4, "SELECT Enfermedad FROM Enfermedades" Unload Me frm_historia.llena = False

End If

End Sub

Private Sub CmdNuevo_Click() Limpiar Botones txtnombre_diagnostico.SetFocus End Sub

Private Sub CmdSalir_Click() Unload Me End Sub

Private Sub Form_Load() LlenaList LstLista, "SELECT Enfermedad FROM Enfermedades ORDER BY Enfermedad" End Sub

Private Sub Form_KeyPress(KeyAscii As Integer) EnterTab KeyAscii End Sub

Sub Limpiar() txtid_diagnostico = "" txtnombre_diagnostico = "" End Sub

Sub Botones() CmdNuevo.Enabled = Not (CmdNuevo.Enabled) CmdGuardar.Enabled = Not (CmdGuardar.Enabled) CmdCancelar.Enabled = Not (CmdCancelar.Enabled) CmdActualizar.Enabled = Not (CmdActualizar.Enabled) CmdSalir.Enabled = Not (CmdSalir.Enabled) FrmLista.Enabled = Not (FrmLista.Enabled) frmregistro.Enabled = Not (frmregistro.Enabled) End Sub

Sub visualiza() Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT Enfermedad FROM Enfermedades ORDER BY Enfermedad") LstLista.Clear Do Until aux.EOF LstLista.AddItem aux!enfermedad aux.MoveNext

Loop aux.Close Set aux = Nothing End Sub

Private Sub LstLista_Click() llenaDatos LstLista.Text End Sub

Sub llenaDatos(nom As String) Dim aux As New ADODB.Recordset

99

Set aux = BaseDatos.Execute("SELECT * FROM Enfermedades WHERE Enfermedad='" & Trim(nom) & "'") txtid_diagnostico = aux!Idenfermedad txtnombre_diagnostico = aux!enfermedad aux.Close Set aux = Nothing End Sub

Sub Sombrea(txt As Object) txt.SelStart = 0 txt.SelLength = Len(txt) End Sub

Private Sub txtnombre_diagnostico_GotFocus() Sombrea txtnombre_diagnostico End Sub

Private Sub txtnombre_diagnostico_KeyPress(KeyAscii As Integer) letras_num KeyAscii End Sub

Formulario Ciudad frm_ciudad (frm_cuidades.frm)

Dim Modifica, Encontrado As Boolean Dim aux As New ADODB.Recordset

Private Sub CmdActualizar_Click() If txtnombre_ciudad = "" Then MsgBox "Seleccione de la Lista, el Registro que desea actualizar ", vbCritical, Mensaje Exit Sub End If Botones Modifica = True txtnombre_ciudad.SetFocus End Sub

Private Sub CmdCancelar_Click() Limpiar Botones Modifica = False End Sub

Private Sub CmdGuardar_Click() Dim aux As New ADODB.Recordset If Trim(txtnombre_ciudad) = "" Then MsgBox "Ingrese el Nombre de la Ciudad" txtnombre_ciudad.SetFocus Exit Sub End If If Modifica = False Then Set aux = BaseDatos.Execute("SELECT NombreCiudad FROM Ciudades WHERE ucase(NombreCiudad)='" & QuitaTilde(UCase(txtnombre_ciudad)) & "'") If aux.EOF = False Then MsgBox "La Ciudad, ya existe", vbCritical, Mensaje txtnombre_ciudad.SetFocus Exit Sub End If

100

aux.Close Set aux = Nothing Set aux = BaseDatos.Execute("SELECT max(idCiudad)as mayor FROM Ciudades") If IsNull(aux!mayor) Then txtid_ciudad = 1

Else

txtid_ciudad = aux!mayor + 1 End If aux.Close Set aux = Nothing BaseDatos.Execute "INSERT INTO Ciudades(IdCiudad,NombreCiudad) VALUES (" & txtid_ciudad & ", '" & UCase(txtnombre_ciudad) & "')" MsgBox "Información Almacenada", vbInformation, Mensaje LstLista.Refresh ElseIf Modifica = True Then Set aux = BaseDatos.Execute("SELECT NombreCiudad FROM Ciudades WHERE IdCiudad <> " & txtid_ciudad) Encontrado = False Do Until Encontrado = True Or aux.EOF If QuitaTilde(UCase(txtnombre_ciudad)) = QuitaTilde(UCase(aux!nombreciudad)) Then Encontrado = True Exit Do End If aux.MoveNext

Loop aux.Close Set aux = Nothing If Encontrado = True Then MsgBox "Ya existe la Ciudad", vbCritical, Mensaje txtnombre_ciudad.SetFocus Exit Sub End If BaseDatos.Execute "UPDATE Ciudades SET NombreCiudad='" & UCase(txtnombre_ciudad) & "' WHERE IdCiudad=" & txtid_ciudad MsgBox "Información Actualizada", vbInformation, Mensaje Modifica = False LstLista.Refresh End If Limpiar Botones visualiza If frm_datos_pacientes.llena = True Then frm_datos_pacientes.cbciudad.Clear LlenaCombo frm_datos_pacientes.cbciudad, "SELECT NombreCiudad FROM Ciudades" Unload Me frm_datos_pacientes.llena = False

End If

End Sub

Private Sub CmdNuevo_Click() Limpiar Botones txtnombre_ciudad.SetFocus End Sub

Private Sub CmdSalir_Click() Unload Me End Sub

101

Private Sub Form_KeyPress(KeyAscii As Integer) EnterTab KeyAscii End Sub

Private Sub Form_Load() LlenaList LstLista, "SELECT NombreCiudad FROM Ciudades ORDER BY NombreCiudad" End Sub

Private Sub LstLista_Click() llenaDatos LstLista.Text End Sub

Private Sub txtnombre_ciudad_GotFocus() Sombrea txtnombre_ciudad End Sub

Private Sub txtnombre_ciudad_KeyPress(KeyAscii As Integer) letras KeyAscii End Sub Sub Sombrea(txt As Object) txt.SelStart = 0 txt.SelLength = Len(txt) End Sub

Sub Botones() CmdNuevo.Enabled = Not (CmdNuevo.Enabled) CmdGuardar.Enabled = Not (CmdGuardar.Enabled) CmdCancelar.Enabled = Not (CmdCancelar.Enabled) CmdActualizar.Enabled = Not (CmdActualizar.Enabled) CmdSalir.Enabled = Not (CmdSalir.Enabled) FrmLista.Enabled = Not (FrmLista.Enabled) FrmRegistro.Enabled = Not (FrmRegistro.Enabled) End Sub

Sub Limpiar() txtid_ciudad = "" txtnombre_ciudad = "" End Sub

Sub llenaDatos(nom As String) Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT * FROM Ciudades WHERE NombreCiudad='" & Trim(nom) & "'") txtid_ciudad = aux!IdCiudad txtnombre_ciudad = aux!nombreciudad aux.Close Set aux = Nothing End Sub

Sub visualiza() Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT NombreCiudad FROM Ciudades ORDER BY NombreCiudad") LstLista.Clear Do Until aux.EOF LstLista.AddItem aux!nombreciudad aux.MoveNext

Loop

102

aux.Close Set aux = Nothing End Sub

Formulario Estadística frm_ reportes (frm_reportes.frm)

Dim sumavis

Private Sub Cmdbuscar_Click()

If CDate(DTPFechaI) > CDate(DTPFechaF) Then MsgBox "La fecha inicial debe ser menor que la fecha final", vbCritical, Mensaje Else

Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias, Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.Motivo_Consulta, Historia_Clinica.Presion_Arterial, Historia_Clinica.Pulso, Historia_Clinica.Respiracion, Historia_Clinica.Temperatura, Historia_Clinica.Perimetro_Cefalico, Historia_Clinica.Talla, (Enfermedades.Enfermedad) AS Diagnostico1, ( Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4, Historia_Clinica.Prediagnostico, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion" & _ " FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Enfermedades.Enfermedad LIKE '" & txtbusqueda & "%' and Historia_Clinica.Fecha_Elaboracion BETWEEN datevalue('" & DTPFechaI & "') and datevalue('" & DTPFechaF & "') ") msflista.Rows = 1 txtvisitas = 0 sumavis = 0 Do Until aux.EOF msflista.AddItem "" & Chr(9) & aux!Fecha_Elaboracion & Chr(9) & aux!NumeroHistoriaClinica & Chr(9) & aux!Apellidos_Nombres & Chr(9) & aux!Diagnostico1 & Chr(9) & aux!Diagnostico2 & Chr(9) & aux!Diagnostico3 & Chr(9) & aux!Diagnostico4 aux.MoveNext If Trim(txtbusqueda) = "" Then Else

txtvisitas = Val(txtvisitas) + 1 End If

Loop aux.Close Set aux = Nothing

End If CmdImprimir.Visible = True End Sub

103

Private Sub CmdImprimir_Click() If msflista.Rows = 1 Then MsgBox "No Hay Registro Activo, para imprimir", vbCritical, Mensaje CmdImprimir.Visible = False Exit Sub End If If txtbusqueda = "" Then MsgBox "Debe digitar un carácter, para poder imprimir", vbCritical, Mensaje Exit Sub

Else

Imprime txtbusqueda End If CmdImprimir.Visible = False End Sub

Private Sub CmdSalir_Click() Unload Me End Sub

Private Sub Form_Load() LLenaGrid msflista, "SELECT Historia_Clinica.Fecha_Elaboracion,Datos_Personales_Paciente.NumeroHistor iaClinica, Datos_Personales_Paciente.Apellidos_Nombres, (Enfermedades.Enfermedad) AS Diagnostico1, ( Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4" & _ " FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica ORDER BY Fecha_Elaboracion" msflista.ColWidth(1) = 2000 msflista.ColWidth(3) = 3000 msflista.ColWidth(4) = 2000 msflista.ColWidth(5) = 2000 msflista.ColWidth(6) = 2000 msflista.ColWidth(7) = 2000 DTPFechaI = (Date) DTPFechaF = (Date) End Sub

Private Sub txtbusqueda_Change() If txtbusqueda = "" Then Label3.Visible = False DTPFechaI.Visible = False Label2.Visible = False DTPFechaF.Visible = False Cmdbuscar.Visible = False Dim aux As New ADODB.Recordset Set aux = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres, Datos_Personales_Paciente.Alergias, Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.Motivo_Consulta, Historia_Clinica.Presion_Arterial, Historia_Clinica.Pulso, Historia_Clinica.Respiracion,

104

Historia_Clinica.Temperatura, Historia_Clinica.Perimetro_Cefalico, Historia_Clinica.Talla, (Enfermedades.Enfermedad) AS Diagnostico1, (

Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4, Historia_Clinica.Prediagnostico, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion" & _

" FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON

Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad = Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Enfermedades.Enfermedad LIKE '" & txtbusqueda & "%'") msflista.Rows = 1 txtvisitas = 0 sumavis = 0 Do Until aux.EOF msflista.AddItem "" & Chr(9) & aux!Fecha_Elaboracion & Chr(9) & aux!NumeroHistoriaClinica & Chr(9) & aux!Apellidos_Nombres & Chr(9) & aux!Diagnostico1 & Chr(9) & aux!Diagnostico2 & Chr(9) & aux!Diagnostico3 & Chr(9) & aux!Diagnostico4 aux.MoveNext If Trim(txtbusqueda) = "" Then Else

txtvisitas = Val(txtvisitas) + 1 End If

Loop aux.Close Set aux = Nothing

Else

Label3.Visible = True DTPFechaI.Visible = True Label2.Visible = True DTPFechaF.Visible = True Cmdbuscar.Visible = True End If End Sub

Sub Imprime(id As String) Dim tEstadistica As New ADODB.Recordset Set tEstadistica = BaseDatos.Execute("SELECT Datos_Personales_Paciente.NumeroHistoriaClinica, Datos_Personales_Paciente.Apellidos_Nombres,

Datos_Personales_Paciente.Alergias, Historia_Clinica.Fecha_Elaboracion, Historia_Clinica.Motivo_Consulta, Historia_Clinica.Presion_Arterial, Historia_Clinica.Pulso, Historia_Clinica.Respiracion, Historia_Clinica.Temperatura, Historia_Clinica.Perimetro_Cefalico, Historia_Clinica.Talla, (Enfermedades.Enfermedad) AS Diagnostico1, ( Enfermedades_1.Enfermedad) AS Diagnostico2, (Enfermedades_2.Enfermedad) AS Diagnostico3, (Enfermedades_3.Enfermedad) AS Diagnostico4, Historia_Clinica.Prediagnostico, Historia_Clinica.Tratamiento, Historia_Clinica.Prescripcion" & _

" FROM (Ciudades INNER JOIN Datos_Personales_Paciente ON

Ciudades.IdCiudad = Datos_Personales_Paciente.IdCiudad) INNER JOIN (Enfermedades AS Enfermedades_3 INNER JOIN (Enfermedades AS Enfermedades_2 INNER JOIN (Enfermedades AS Enfermedades_1 INNER JOIN (Enfermedades INNER JOIN Historia_Clinica ON Enfermedades.IdEnfermedad =

105

Historia_Clinica.Diagnostico1) ON Enfermedades_1.IdEnfermedad = Historia_Clinica.Diagnostico2) ON Enfermedades_2.IdEnfermedad = Historia_Clinica.Diagnostico3) ON Enfermedades_3.IdEnfermedad = Historia_Clinica.Diagnostico4) ON Datos_Personales_Paciente.NumeroHistoriaClinica = Historia_Clinica.NumeroHistoriaClinica WHERE Enfermedades.Enfermedad LIKE '" & id & "%' and Historia_Clinica.Fecha_Elaboracion BETWEEN datevalue('" & DTPFechaI & "') and datevalue('" & DTPFechaF & "') ") Set DReportEstadistica.DataSource = tEstadistica DReportEstadistica.Sections("Sección5").Controls("E4Nvisitas").Caption = Val(txtvisitas)

DReportEstadistica.Sections("Sección5").Controls("E5Diagnostico").Caption

= (txtbusqueda) DReportEstadistica.Show 1 End Sub

106

AYUDA DEL SISTEMA

107

INSTALACIÓN DEL SISTEMA

FORMULARIO DE INGRESO AL SISTEMA

FORMULARIO LOGIN

PANTALLA PRINCIPAL

DATOS PACIENTES

HISTORIA CLINICA

CAMBIO DE CONTRASEÑA

DIAGNÓSTICO

CIUDAD

ESTADÍSTICA (REPORTE)

108

MANUAL DE AYUDA DEL PROGRAMA

El Manual de ayuda del programa es el que nos servirá para poder manejar el

sistema sin incurrir en errores.

1. INSTALACIÓN DEL PROGRAMA

1. Insertar el CD.

2. Seleccione el ícono Mi PC.

3. Abrir la unidad de CD-ROM.

4. Abrir la carpeta Instaladores.

5. Hacer doble clic en el ícono Setup.exe, una vez escogido ese paso el

sistema comenzará por si solo a instalarse, debiendo seguir los pasos,

aceptando todos los términos para realizar la instalación en éxito.

2. EJECUCIÓN DEL PROGRAMA

1. Seleccionar el botón Inicio.

2. Seleccionar Todos los programas.

3. Elegir el menú Historias Clínicas.

4. Por último clic en Historias Clínicas.

109

FUNCIONAMIENTO DEL SISTEMA

FUNCIONAMIENTO DEL SISTEMA Esta pantalla es el inicio y presentación del sistema donde aparecen las siglas

Esta pantalla es el inicio y presentación del sistema donde aparecen las siglas

S.H.C. (Sistema Historias Clínicas) versión 1.0 y la advertencia de rigor sobre la

prohibición de reproducción de este sistema.

110

LOGIN (CONTRASEÑA DEL SISTEMA)

LOGIN (CONTRASEÑA DEL SISTEMA) Este formulario sirve de seguridad y restricción del sistema, donde podrán entrar

Este formulario sirve de seguridad y restricción del sistema, donde podrán entrar

únicamente las personas autorizadas que serán quienes tendrán conocimiento de la

clave y contraseña.

quienes tendrán conocimiento de la clave y contraseña. En esta sección se ingresa el nombre del

En esta sección se ingresa el nombre del usuario y password.

Luego para tener acceso al sistema presiona el botón

oprime

.
.

111

el nombre del usuario y password. Luego para tener acceso al sistema presiona el botón oprime

; si desea salir

PANTALLA PRINCIPAL

PANTALLA PRINCIPAL Esta es la pantalla principal del sistema. Es un Formulario MDI donde encontramos barra

Esta

es

la

pantalla

principal

del

sistema.

Es

un

Formulario

MDI

donde

encontramos barra de menú que contiene sub menús.

Desde este formulario podremos acceder a los componentes del programa.

formulario podremos acceder a los componentes del programa. Barra de Titulo.- En ella se muestra el

Barra de Titulo.- En ella se muestra el nombre del Sistema; contiene los botones

maximizar, minimizar y cerrar.

112

Barra de Menú.-

Barra de Menú.- Desde aquí podemos acceder a todos los formularios. Dentro del editor Administración encontramos

Desde aquí podemos acceder a todos los formularios.

Menú.- Desde aquí podemos acceder a todos los formularios. Dentro del editor Administración encontramos los

Dentro del editor Administración encontramos los submenús Datos personales,

Cambiar contraseña y Salir del sistema, desde aquí podemos ingresar a los

formularios correspondientes.

113

Con un clic en el editor Registros accederemos a los formularios de Diagnósticos y ciudades.

Con un clic en el editor Registros accederemos a los formularios de Diagnósticos

y ciudades.

Presionando en el menú Estadística, se muestra el formulario de Estadística en el

cual podemos obtener reportes.

de Estadística en el cual podemos obtener reportes. Desde el menú Herramientas mantenemos activa la barra

Desde el menú Herramientas mantenemos activa la barra de herramientas y la

barra de estado hacienda clic en cada una de ellas. También podemos activar

desde aquí la calculadora.

114

Barra

de

Barra de Herramientas.- Esta barra sirve como acceso directo, para los formularios de Datos del Paciente,

Herramientas.-

Esta

barra

sirve

como

acceso

directo,

para

los

formularios de Datos del Paciente, Diagnostico, Calculadora y salir del Sistema.

del Paciente, Diagnostico, Calculadora y salir del Sistema. Barra de Estado.- Aquí se muestra el diseñador

Barra de Estado.-

Aquí se muestra el diseñador del sistema, MAYUS (se

muestra cuando se activa la tecla MAYUS para escribir en mayúscula), NUM,

hora y fecha.

115

DATOS DEL PACIENTE

DATOS DEL PACIENTE En el formulario datos personales, se ingresan los datos básicos que permiten la

En el formulario datos personales, se ingresan los datos básicos que permiten la