• No se han encontrado resultados

DEPARTAMENTO DE INGENIERIA ELECTRICA INGENIERIA EN ELECTRONICA

N/A
N/A
Protected

Academic year: 2018

Share "DEPARTAMENTO DE INGENIERIA ELECTRICA INGENIERIA EN ELECTRONICA"

Copied!
81
0
0

Texto completo

(1)

DEPARTAMENTO DE INGENIERIA ELECTRICA

INGENIERIA EN ELECTRONICA

AREA DE CONCENTRACION: COMPUTACION

PROYECTO TERMINAL DE INGENIERIA ELECTRONICA

AUTOMATIZACI~N HOSPITALITARIA DESARROLLADO PARA EL HOSPITAL DEL VALLE DE CHALCO.

ASESOR:

M. en I.B. DAVID UZZIEL LOPEZ ILLEZCAS ALUMNO:

BRISEÑO SAQUEDO CALOS ARMANDO

(2)

UNIDAD

DIVISION

CARRERA

MATERIA

TITULO

FECHA

ALUMNO

:IZTAPALAPA.

:CIENCIAS BASICAS E INGENERIA.

:ING. ELECTRONICA EN COMPUTACI~N

:PROYECTO TERMINAL

:AUTOMATIZACIóN DE HOSPITAL.

:5

DE ENERO DE 2000.

:BRISEÑO SAQUEDO CARLOS ARMANDO.

MATRICULA 537222373.

a

i

ASESOR

:

M

en

I.B. DAVID UZ

7

EL LOPEZ ILLESCAS.

(3)

INTRODUCCION.

LA COMPUTADORA ES REALMENTE UNA MAQUINA ASOMBROSA.

POCAS HERRAMIENTAS TE PERMITEN REALIZAR TANTAS TAREAS

DIFERENTES. YA SEA QUE QUIERAS DAR SEGUIMIENTO A UNA INVERSION,

PUBLICAR UN PERIODICO, DISEÑAR UN EDIFICIO O ASUMIR LA PERSONA DE INDIANA JONES Y EXPLORAR CAVERNAS EN SUDAMERICA PODRAS

HACERLO CON UNA COMPUTADORA.

EN 1982, LA REVISTA TIME NOMBRO “HOMBRE DEL

AÑO’

A UNA

COMPUTADORA, DESDE ENTONCES, ESTAS COMPLEJAS MAQUINAS

(CONSTRUIDAS CON SILICIO, METAL Y PLASTICO)

HAN

VENIDO A INFLUIR

EN CASI TODOS LOS ASPECTOS DE NUESTRAS VIDAS.EN DONDE QUIERA QUE

COINCIDAN EL INTELECTO HUMANO Y LA TECNOLOGIA,

AHI

ENCONTRAS

COMPUTADORAS.

EN LA MEDICINA

Y

CUIDADO DE LA SALUD.

ACTUALMENTE, SE USAN LAS COMPUTADORAS PARA TODO EN

MEDICINA, DESDE DIAGNOSTICOS DE ENFERMEDADES HASTA EL

MONITOREO DE PACIENTES DURANTE CIRUGIA

Y

EL CONTROL

PERMENENTE DE PROTESIS.

ALGUNAS APLICACIONES MEDICAS INTERESANTES USAN PEQUEÑAS

COMPUTADORAS DE PROPOSITO ESPECIFICO QUE OPERAN DENTRO DEL

CUERPO HUMANO PARA AYUDARLE A FUNCIONAR MEJOR.UN EJEMPLO

SERIAN LOS MARCAPASOS; OTRO ES ÉL IMPLANTE DE COCLEA, UN

APARATO ESPECIAL PARA EL OIDO QUE PERMITE ESCUCHAR A PERSONAS CON MARCADA DEFICIENCIA AUDITIVA. PARTE DEL DISPOSITIVO ES UNA

PEQUEÑA COMPUTADORA QUE TRANSFORMA EL SONIDO EN IMPULSOS

ELECTRICOS QUE SON TRANSMITIDOS AL CEREBRO MEDIANTE UN

DISPOSITIVO INSTALADO EN EL OIDO.OTR0 USO DE LAS COMPUTADORAS

EN HOSPITALES ES LA AUTOMATIZACION DE TECNICAS PARA CREAR

(4)

DIMENSIONALES CON MUCHO MAYOR DETALLE Y MENOR RIESGO

QUE LAS PELICULAS COMUNES DE RAYOS X. EL PRIMER USO EXTENDIDO DE

LA CREACION DE IMÁGENES FUE CON LOS BARRIDOS DE TOMOGRAFIA AXIAL COMPUTARIZADA(CAT).

QUIZA EL EJEMPLO MAS DRAMATIC0 DE LA FORMA EN QUE LAS

COMPUTADORAS PERSONALES ESTAN MEJORANDO LA VIDA DE LAS

PERSONAS TIENEN QUE VER CON INDIVIDUOS CON IMPEDIMENTOS FISICOS. ANTES DE LAS COMPUTADORAS PERSONALES, LAS PERSONAS CON

DISCAPACIDADES FISICAS CON FRECUENCIA ENCONTRABAN MUCHOS

PROBLEMAS PARA REALIZAR TAREAS DIARIAS Y TEMAN OPOTUNIDADES

LIMITADAS PARA CONSEGUIR EMPLEO. ACTUALMENTE, UNA AMPLIA

VARIEDAD DE SOFTWARE Y HARWARE, ESTA DISPONIBLE PARA AYUDAR A

PERSONAS CON DIVERSOS IMPEDIMENTOS FISICOS. AUNQUE LA

COMPUTADORA NO ES LA PANACEA, SI ESTA AYUDANDO YA QUE

CUALQUIER PERSONA QUE TENGA

UN

MUSCULO BAJO SU CONTROL PODRA

UTILIZAR UNA COMPUTADORA.

EN SU MAYOR PARTE, LAS COMPUTADORAS SON MAQUINAS DE USO

GENERAL, MUCHAS PUEDEN SER USADAS CON LA MISMA EFICIENCIA PARA TRABAJAR CON NUMEROS, QUE PARA CREAR DOCUMENTOS, PARA

CONTROLAR MAQUINAS

o

PARA

AUTOMATIZAR HOSPÍTALES

LAS COMPUTADORAS SE HAN VUELTO TAN IMPORTANTES PARA LA

MAYORIA DE LOS HOSPITALES QUE SE HAN TOMADO AMPLIAS

PRECAUCIONES PARA ASEGURARSE DE QUE LOS SISTEMAS Y LOS DATOS ESTEN DISPONIBLES TODO EL TIEMPO, INCLUSO DURANTE GUERRAS,

DESASTRES NATURALES U OTRAS CRISIS NACIONALES. HAN SURGIDO

ELABORAJIAS ORGANIZACIONES INTERNAS PARA HACERSE CARGO DE LAS OPERACIONES QUE SE LLEVAN ACABO.

EN OCASIONES, LAS TECNOLOGIAS QUE HACEN LA DIFERENCIA MÁS

GRANDE SON AQUELLAS QUE RECIBEN LA MENOR COBERTURA DE

PRENSA.UNA TECNOLOGIA MUY SENSILLA LLAMADA ED1 (INTERCAMBIO

ELECTRONIC0 DE DATOS), ESTA CAMBIANDO LA MANERA EN QUE LAS

COMPAÑIAS LLEVAN A CABO NEGOCIOS, ELIMINANDO CASI POR COMPLETO

LAS FORMAS DE ORDENES EN PAPEL Y SE MANIFIESTA EN COME'mIAS

(5)

EL ED1 ES UN PROCESO EN EL QUE DIFERENTES COMPUTADORAS COMPARTEN INFORMACION INDEPENDIENTEMENTE QUIEN LAS FABRIQUE,

DONDE SE ENCUENTRE O QUE TAN RAPID0 CORRAN. NO ES UNA

TECNOLOGIA ATRACTIVA RARA VEZ ES DISCUTIDA EN EL MEDIO PERO EL ED1 ESTA AYUDANDO A MUCHOS NEGOCIOS A BAJAR COSTOS ASOCIADOS

CON ENBARQUES, ENTREGAS

Y

ALMACENAMIENTO DE PARTES

Y

SUMINISTROS.

EN EL HOSPITAL EVANSTON COW, EN EVANSTON, ILLINOIS, EL ED1 A

CAMBIADO LA MANERA EN QUE ESTE HOSPITAL ORDENA SUMISTROS

Y

EN

EL PROCESO,

HA

DEFINIDO NUEVAMENTE LA FORMA EN QUE LA COMPAÑÍA

MANEJA SUS INVENTARIOS

Y

LA COMUNICACIóN CON SUS PROVEEDORES.

LOS CAMBIOS SON TAN DRAMATICOS QUE, EN

UN

SOLO AÑO, EL

HOSPITAL AHORRO MÁS

2

MILLLONES DE DOLARES. EL ED1 PERMIT10 A LAS

COMPUTADORAS DEL HOSPITAL ORDENAR Y PROGRAMAR LA ENTREGA

DE

UN

AMPLIO GRUPO DE SUMISTROS EN FORMA AUTOMATICA, CONFORME SE

NECESITABAN ESOS PRODUCTOS.

DESCRIPCION DEL PROYECTO.

EL OBJETIVO DE ESTE PROYECTO SERÁ EL

DE

AUTOMATIZAR UN

HOSPITAL,

Y

GENERAR LAS CITAS DE PACIENTES, EL LABORATORIO Y EL

CARNET DEL PACIENTE EN

FORMA

AUTOMÁTICA, EL SISTEMA DEBE TENER

LA CAPACIDAD DE MANEJAR TODO TIPO DE CONSULTAS EN CUANTO A LOS

PACIENTES

Y

QUIMICOS, REALIZAR las INSCRIPCIONES, BAJAS

Y

REGISTRO DE LOS PACIENTES EN EXISTENCIA ASÍ COMO EL

MANTENIMIENTO SOBRE ESTOS.

(6)

EL SISTEMA DEBE DE

PROPORCIONAR LAS

SIGUIENTES

CARACTER~STICAS:

0 SEGURIDAD: LA INFORMACIÓN DELICADA SOLO DEBE PODER SER

MANEJADA POR LA PERSONA INDICADA.

0 CONFIABILIDAD:

EL SISTEMA DEBE

DE PROPORCIONAL INFORMACI~N

VERÍDICA.

FUNCIONALIDAD: DEBE DE CUMPLIR CON LOS REQUISITOS

ESTABLECIDOS AL INICIO DEL PROYECTO.

ESTE TAMBIÉN PROPORCIONARA

UN

SUBSISTEMA

DE

AYUDA EN LÍNEA

Y

UNA BARRA DE MENSAJES QUE INDICARAN LAS FUNCIONES DISPONIBLES A

EJECUTAR

Y

EL CóMO HACERLO, TODO ESTO CON E L

.FIN

DE HACER MÁS

(7)

ENTREVISTAS.

EL PRIMER PASO EN EL DESARROLLO DEL PROYECTO SON LAS

ENTREVISTAS CON LOS USUARIOS.

UN

USUARIO ES AQUEL (O AQUELLOS)

PARA QUIENES SE CONSTRUYE EL SISTEMA; DE ESTAS SE ESTAJ3LECI6 LO

SIGUIENTE PARA

EL DEPARTAMENTO DE ARCHIVO:

0 ALTAS DE PACIENTES QUE TENDRAN DERECHO AL USO DE LOS

SERVICIOS HOSPITALARIOS.

o MODIFICAR DATOS DE LOS PACIENTES COMO EL CAMBIO DE

DIRECCION,

TELBFONO

ETC.

EL DEPARTAMENTO DE LABORATORIO

0 AÑADIR REACTIVOS AL LABORATRIO

0 EQUIPOS

0 NUEVOS

0 MODIFICAR

0 BAJAS

PROGRAMAR CONSULTAS

0 GENERAL

0 OBSTETRICIA

0 GINECOLOGIA

(8)

DESARROLLO

DEL

PROYECTO

EL

DESARROLLO

DE

UN SISTEMA

DE

COMPUTACI~N

IMPLICA

VARIAS ETAPAS Y DIVERSOS ESPECIALISTAS

PARA

CADA UNA DE ESTAS, S E N D 0 EL ESTABLECIMIENTO

DE

LOS TIEMPOS

DE TERMINO

POSTERIOR

AL

ANALISIS.

LA GRÁFICA DE GANT SIGUIENTE MUESTRA LOS TIEMPOS PARA EL DESARROLLO DE ESTE PROYECTO

TIEMPO MESES

ACTIVIDAD

Investigación y estudio de las herramientas

Entrevistas con usuarios

Anfdisis y Requerimientos de prueba

DiseAo y programación

Pruebas

Documentación

Generación de Manuales

Generación del Reporte

Presentación

Instalación y pruebas del usuario

Liberación del sistema

O 1 2 3 4 5 6

m

(9)

CONSULTAS A LA BASE DE DATOS.

0 PACIENTES

0 PORNOMBRE

0 POR CLAVE

0 REACTIVOS

0 TIPO

0 DOCTORES

0 HORARIOS

0 ESPECIALIDADES

GRABAR TODOS LOS DATOS ACERCA DEL HOSPITAL

GENERAR LOS REPORTES

o DEL AREA DE RECURSOS HUMANOS

o DE LA AERA ADMINISTRATIVA

o DE LOS DOCTORES

o DE LOS REACTIVOS DE LABORATORIO

o DE LOS PACIENTES

0 DE BODEGA

EL SIGUIENTE PASO

ES

EL MODELADO DEL SISTEMA QUE DESEA EL

USUARIO. UN SISTEMA DE PROCESO DE DATOS INVOLUCRA TANTO DATOS COMO EL PROCESO.

LA HERRAMIENTA QUE UTILIZAMOS PARA DESCRIBIR LA

TRANSFORMACIóN DE ENTRADAS A SALIDAS DE UN DIAGRAMA DE FLUJO

DE DATOS.

LOS DIAGRAMAS DE FLUJOS DE DATOS CONSISTEN EN PROCESOS,

AGREGADOS DE DATOS, FLUJOS

Y

TERMINADORES:

0 LOS PROCESOS SE REPRESENTAN POR MEDIO DE CÍRCULOS O

“BURBUJAS”, EN EL DIAGRAMA. REPRESENTAN LAS DIVERSAS

FUNCIONES INDIVIDUALES QUE EL SISTEMA LLEVA A CABO. LAS

(10)

LOS FLUJOS

SE

MUESTRAN POR MEDIO DE FLECHAS CURVAS. SON LAS

CONEXIONES ENTRE LOS PROCESOS(FUNCI0NES DEL SISTEMA)

Y

REPRESENTAN LA INFORMACIóN QUE DICHOS PROCESOS REQUIEREN

COME ENTRADA O LA INFORMACIÓN QUE GENERAN COMA SALIDA.

0 LOS

AGREGADOS DE DATOS

SE REPRESENTAN POR MEDIO DE DOS L h E A S

PARALELAS O MEDIANTE UNA ELIPSE. MUESTRAN COLECCIONES (O

AGREGADOS) DE DATOS QUE EL SISTEMA DEBE RECORDAR POR UN

PERIODO DE TIEMPO.

0 LOS

T E M I N A D O R E S

MUESTRAN LAS ENTIDADES EXTERNAS CON LAS

QUE

EL SISTEMA SE COMUNICA.

A CONTINUACIóN SE MUESTRAN LOS DIAGRAMAS DE FLUJOS DE DATOS

(11)

LISTA DE EVENTOS

EVENTOS DE PROCESO

Citas

Generación de reportes

EVENTOS DE MANTENIMIENTO

Inventario

Altas, bajas de pacientes

Cambio de situación del paciente: Baja temporal

0 Especialidad

o Domicilio

0 Resello

PROCESO DE CONSULTA

(12)

HOSPITAL.

Informacion de Pacientes

Informacion de Doctores

Informacion de Reactivos

(13)

altas

Inf. Eouino ~

Bodega

-

Bodega

Cambios

altas

Inf. Doctores

.

Base doc. ___L Base doc.

Cambios ~

Nuevo Paciente

(14)

DIAGRAMAS

DE

FLUJOS DE DATOS

EVENTOS

DE PROCESO

Inf. Pacientes Cita Archivo

Inf. Paciente

-

Inf. Laboratori-

Estudios Clinicos

EVENTOS DE MANTENIMlENTO

altas

l n f Reactivos

-

(15)

A continuación se presenta el diagrama de flujo de datos para el sistema bibliotecario

Altas

b

Bajas

Cambios

+

pacientes

doctores

______,

Pacientes

Laboratorio _____*

Nombre Paciente

~

N Folio

Archivo Apellidos

Reactivos

T

. Inf. Doctores

Actualuacion de reactivos

Mantenimieto

Actualizacion de inf.

-

(16)

-

Nuevos Datos

.

Hodificacih

-

(-)

(

carnet Archivo

Del Paciente

\ -

Paciente

7.

N Folio

Apellido b- Búsquedas

Buscar Reactivos

(17)

Por ultimo tenemos las consultas, que tienen el siguiente diagrama

N

Folio

Busqueda

Reactivo

doctor Archivo Resultado

de consulta

Reporte

Estos diagramas aunque útiles, solo resaltan un aspecto principal de un sistema: sus

hnciones. Necesitamos conocer a detalle la información que debe contener el sistema, y

no solo eso, sino también la relación que existe entre los agregados de información. Para esto necesitamos lo que se conoce como diagrama de entidad-relacion.

(18)

Para el caso del mantenimiento del laboratorio tenemos el siguiente diagrama.

Infomacion del Reactivo

__I_____)

Eliminar

Laboratorio

Infomacion del Reactivo Reactivo

___)

t

(19)

Como puede verse este proceso se encargara de dar de alta, de bajq hacer cambios y consultar datos referentes a los Pacientes.

Proceso Citas:

Datos de Paciente

N-Folio Validar

Fecha de Citas y Consultorios

Registrar

Cita

Colocacion

-

Doctores

(20)

Para tener una mejor visión del sistema, es necesario desglosar cada burbuja de tal forma que la fbnción que cada proceso realiza sea perceptible. Se muestran a continuación la

“explosión” de cada

una

de ellas.

Para la esfera titulada paciente tenemos el siguiente diagrama.

Infomacion del nuevo paciente

Insertar

E

Paciente

N-Folio ___)

Infonnacion del paciente

(21)

Lista de entidades:

Paciente. N Folio Nombre

Dirección Teléfono Enfermedad Fecha de cita

Fecha de hospitalización Consultorios

Reactivos

Recursos humanos administración

Doctor Nombre teléfono

especialidad

Con base en las entidades anteriores y en los diagramas de flujos de datos podemos obtener

las relaciones entre las distintas entidades:

Relaciones y cardinalidad

Las líneas que atraviesan las líneas de unión entre las diferentes entidades representan

relaciones

1

a 1 y las

2

líneas oblicuas indican relaciones de muchos.

Doctores

I

t

t

t

Paciente

I

Notamos en este diagrama que existen relaciones uno a muchos entre la entidad doctor y la

(22)

f

S

c.

- ,

L

f

f

(23)

PLANTEAMIENTO DEL PROBLEMA.

AUTOMATIZACION DEL HOSPITAL.EN EL HOSPITAL ISEM DEL VALLE DE

CHALCO SÉ ENCONTRO UNA DUPLICACION DE DATOS; AS1 COMO UNA

LENTITUD

Y

FALTA DE CONTROL EN LOS RECURSOS MATERIALES y

HUMANOS.

ESTUDIOS DE FACTIBILIDAD.

SE LLEVO A CABO UN ESTUDIO DE LAS POSIBILIDADES TANTO DE

RECURSOS HUMANOS (QUE TANTO CONOCIMIENTO

TENIA CON

COMPUTADORAS. QUE TANFACTIBLE ES QUE LA GENTE SE PRESTARA PARA

ENSEÑARLE

Y

NO BIERAN CON MIEDO EL CAMBIO)

Y

MATERIALES(C0NQUE

EQUIPOS

SE

CONTABA QUE PRESUPUESTO

HIV ADESIGNAR), POR LO

QUE

SE LLEGO A LA CONCLUSION QUE COLOCARIA UNA RED EN TODO EL

HOSPITAL

UN

SISTEMA BASADO EN VISUAL BASIC.

ANALISIS Y DISEÑO

ANALISO LAS PARTES DEL SISTEMA

Y

COMO SE RELACIONAN ENTRE

SIPOR LO QUE; EL SISTEMA ESTA COMPUESTO POR UN CONJUNTO DE

SUBSISTEMAS, LOS CUALES ESTARAN CONTROLANDO CADA AREA COMO

POR EJEMPLO LABORATORIO, CITAS, ARCHIVO

Y

CONTROL

DE

REACTIVOS;

AVIENDO DENTRO DE ESTOS SUBSISTEMAS OTROS SUBSISTEMAS. POR

(24)

CON ESTO SE LOGRARA UN MAYOR CONTROL DEL SISTEMA NO PERDIENDO

DE VISTA LA INTERRELACION CON LAS DISTINTAS PARTES QUE LO

COMPONEN.

EL SISTEMA SE LLEVARA A CAE30 CON

UN

SISTEMA CELULAR, ES DECIR

PUDEN TENER MAS DE DOS NODO LAS BASES DE DATOS.

FUNCION DEL DBA(S0FWARE) SEGURIDAD DEL SISTEMA

0 INTEGRIDAD DE LA BASE DE DATOS

0 CONTROL DE CONCURRENCIA Y SINCRO NIZACION

FUNCION DEL DBA(PERS0NA)

DEFONE LOS ESQUEMAS DE LA B.D. DA MANTENIMIENTO DE LOS ESQUEMAS

0 DEFINE LOS NIVELES DE SEGURIDAD PARA CADA USUARIO

0 DEFINE LOS PROCEDIMIENTOS DE RESPALOD DE LA INFORMACION

CODIFICACION.

SE ANEXA EL PROGRAMA

CON

ALGUNAS DE LAS IMÁGENES

(25)

USO

Y MANTENIMIENTO.

PARA MINIMIZAR EL COSTO DEL CICLO DE VIDA DEL SOFWARE ES

NECESARIO

A) LAS PARTES DEL SISTEMA CORRESPONDAN CON LAS PARTES DEL PROBLEMA.

B) LA

FORMA

ESTRUCTURADA EN LA QUE SE RELACIONAN LAS PARTES

DEL SISTEMA SE CORRESPONDA CON LA FORMA EN QUE SE RELACIONA LAS PARTES DEL PROBLEMA

PARA LOGRAR ESTOS OBJETIVOS SE NECESITA TENER

UN

DISENO

LOGICO

Y

FISICO BIEN ELABORADO.

EL

DISEÑO LOGICO:

SE

DETERMINA

A UN NIVEL GENERAL

EXCLUSIVAMENTE A PARTIR DE LA ESTRUCTURA DEL PROBLEMA, DANDO EL MODELO LOGICO.

DISEÑO FISICO: SE SACA APARTIR DEL MODELO LOGICO EJEMPLO

PROBLEMA

LOGICO

DISEÑO FISICO

(26)

#”----

1

1

I

#

(27)
(28)

DATOS BEHERALES DEL PAUEHTE

(29)
(30)
(31)

3 3

3

3 3

3 3

(32)
(33)
(34)

6

8

1

3

H

cp

I

d -.

8

o

a

-.L w

N

(35)

1

(36)

I

f

f-

k

k

7

?

(37)

Y

11

" Y

I I g G

(38)

k

(39)
(40)

HOSPITAL.VBP

Código de modulo

uno.

Private Sub Abrir-Click() Form2.Show

End Sub

Private Sub Nuevo-Click()

'FRMLAB.Data1 .Recordset.MoveLast 'FRMLAFlDatal .Recordset.AddNew FRMLAB.Show 1

End Sub

Código datos personales.

Private Sub Textl-Change()

End Sub

Private Sub Commandl-Click()

folio = FRMLAB.Text5.Text

Form2.Text44.Enabled = False

Datal .Recordset.Update FRMLAB.Hide

'Call h-TipoExamen.inicia1iza1-2

b-TipoExamen.Show 1 End Sub

Private Sub Comand2_Click() End

End Sub

Private Sub Fom-Initialize0

FRMLAB.Data1.Recordset.MoveLast

(41)

End Sub

Private Sub Text2-LostFocus() Dim nombre As String

nombre = Text2.Text If nombre = "" Then

MsgBox "el nombre no ha sido llenado" Text2.SetFocus

End If

End Sub

Private Sub Text5-LostFocus() Dim folio As String, Y As Boolean folio = Text5.Text

Y = IsNumeric(fo1io) If Y = False Then

MsgBox "el numero de folio es incorrecto" Text5.SetFocus

End If End Sub

Public Sub inicializar()

FRMLAB.Data1 .Recordset.MoveLast FRMLAB.Data1 .Recordset.AddNew

End Sub

Código de examen de orina.

Private Sub Conunand-SI-Click() Datal .Recordset.Update

frm

- Ex-orina.Hide

End Sub

Public Sub inicio()

h-Ex-orina.Data1 .Recordset.MoveLast frm-Ex-orina.Data1 .Recordset.AddNew h-Ex-orina.Text1 .Enabled = True

k-Ex-orina.Text1 .Text = folio

(42)

Código tipo de examen.

Private Sub Commandl-Click() Dim respuesta As Integer

respuesta = MsgBox("¿Desea agregar otro registro?", vbYesNo)

If respuesta = 6 Then Me.Hide

Call FRML,AB.inicializar Unload fnn-TipoExamen FRMLAB.Visible = True Else

Unload h-TipoExamen Unload FEWLAB

End If End Sub

Private Sub Checkl-Click() Call Frm-Hematl .inicio

Frm-Hemat 1 .Show 1

Check1 .Enabled = False

End Sub

Private Sub Check2_Click() Call h-Hemat2.inicio frm-Hemat2.Show 1 Check2.Enabled = False End Sub

Private Sub Check3_Click() Call fm-Hemat3.inicio h-Hemat3 .Show 1 Check3 .Enabled = False

End Sub

Private Sub Check4_Click() Call fnn-Ex-orina.inicio h-Ex-orina.Show 1 Check4.Enabled = False

End Sub

(43)

Call h-q-clinica.inicio fi-m q_clinica.Show 1 Che<kS.Enabled = False

End Sub

Public Sub inicializar20

Checkl .Enabled = True Check2.Enabled = True

Check3.Enabled = True Check4.Enabled = True

Check5.Enabled = True

'Checkl .Value = O 'Check2.Value = O 'Check3.Value = O 'Check4.Value = O 'Check5.Value = O

End Sub

Private Sub Form-Initialize0 Checkl .Enabled = True

Check2.Enabled = True

Check3.Enabled = True Check4.Enabled = True Check5.Enabled = True Checkl .Value = O Check2.Value = O

Check3 .Value = O

Check4.Value = O

Check5.Value = O

End Sub

C6digo

de

biometria.

Private Sub Command-SI-Click() Datal .Recordset.Update

Unload Fm-Hemat 1 'Frm

-

Hemat 1 .Hide

End Sub

(44)

Text2.Enabled = True End Sub

Private Sub Check2_Click() Text3 .Enabled = True

Text4.Enabled = True

Text5 .Enabled = True

Text6.Enabled = True Text7.Enabled = True

Text8.Enabled = True Text9.Enabled = True TextlO.Enabled = True Textl 1 .Enabled = True

Textl2.Enabled = True

End Sub

Private Sub SSTabl-Click(PreviouTab As Integer) Dim X As Integer

X = SSTab1.Tab

I f X = l O r X = 2 O r X = 3 O r X = 4 T h e n Textl .Visible = False

Text2.Visible = False Text3.Visible = False Text4.Visible = False Text5.Visible = False Text6.Visible = False Text7.Visible = False Text8,Visible = False Text9.Visible = False Textl 0.Visible = False

Textl 1 .Visible = False

Textl2.Visible = False

End I f

If X = O Then

Textl .Visible = True Text2.VisibLe = True Text3 .Visible = True Text4.Visible = True Text5.Visible = True Text6.Visible = True Text7.Visible = True Text8.Visible = True Text9.Visible = True

TextlO.Visible = True Textl 1 .Visible = True

Textl2.Visible = True

(45)

End Sub

Private Sub Form_Initialize()

'

Frrn Hematl .Datal .Recordset.MoveLast ' FmIHematl .Datal .Recordset.AddNew ' Fm-Hematl .Text44.Enabled = True

'

Fm-Hematl .Text44.Text = folio 'Frrn-Hematl .Text44.Enabled = False End Sub

Public Sub inicio()

Fm-Hematl .Datal .Recordset.MoveLast Fm-Hematl .Datal .Recordset.AddNew Frm-Hematl .Text44.Enabled = True

Frm-Hematl .Text44.Text = folio

Fm-Hematl .Text44.Enabled = False

End Sub

Código química clínica.

Private Sub Command-SI-Click() Datal .Recordset.Update

frm_eclinica.Hide

End Sub

Public Sub inicio()

h-q_clinica.Datal .Recordset.MoveLast b-q_clinica.Datal .Recordset.AddNew h-q_clinica.Textl .Enabled = True h-q-clinica.Text1 .Text = folio h-q_clinica.Textl .Enabled = False End Sub

Código para transfuncionales.

Private Sub Command-SI-Click()

(46)

Public Sub inicio()

h-Hemat3.Datal .Recordset.MoveLast h-Hemat3.Datal .Recordset.AddNew h-Hemat3.Textl .Enabled = True

fm-Hemat3.Textl .Text = folio h-Hemat3.Textl .Enabled = False End Sub

Código

de prueba

de

hematología.

Private Sub Command-SI-Click() Datal .Recordset.Update

Unload h-Hemat2 'h-Hemat2.Hide

End Sub

Public Sub inicio()

h-Hemat2.Datal .Recordset.MoveLast h-Hemat2.Datal .Recordset,AddNew h-Hemat2.Textl .Enabled = True

h-Hemat2.Textl.Text = folio

fm-Hemat2.Textl .Enabled = False End Sub

(47)
(48)

ARCHIVOYBP

CODIGO DE HISTORIA CLINICA PERINATAL.

Option Explicit

Private Sub Fom-Load() 'NOTA: PARA CARGAR UNA FORMA NO SE REQUIERE SU

NOMBRE

If Not Conectar-Base-Datos Then

MsgBox "No se puede conectar a la base de datos. Verifique la ruta", -

Else

'El Datacontrol se enlaza a la consulta de selección Obste 'creada en la base de datos en Access

Set datHCP.Recordset = bdArchivo.OpenRecordset("SELECT

*

from HCP")

vbcritical

+

vbOKOnly, "ERROR

End If End Sub

Private Sub cmdNuevo-Exp-Click() 'El evento Click del control cmdAlta

End Sub 'en la base de datos

'Al crear un Nuevo Expediente se invoca a la Función que 'Limpia o reemplaza todos los campos del registro actual- 'por campos vacíos

Private Sub cmdNuevo-Click()

txtFolio.Enabled = False 'Deshabilita el cuadro de texto del folio

Limpia 'Se llama a la bnción que renova todos los cuadros de texto,

'los botones de opción y selección

End Sub

Private Sub cmdEliminar-Exp-Click()

If txtFolio =

'"'

Then 'No se puede eliminar un registro si se

MsgBox "Debe especificar un número de 'FOLIO"', vbCritical, "Error" Alta 'invoca la función que crea nuevos registros

'para evitar que el usuario lo pueda modificar

'desconoce su Folio

Else

Baja txtFolio.Text 'Llama a b c i ó n de eliminación de registros Exit Sub

End If End Sub

Private Sub cmdAbrir-Exp-Click()

If txtFolio = '"' Then 'No se puede elimiiar un registro si se

MsgBox "Debe especificar el número de 'FOLIO"', vbcritical

+

vbOKOnly, "Error" Exit Sub

Else

Consulta txtFolio.Text 'Llamada a la bnción Consulta Exit Sub

'desconoce su Folio

End If End Sub

'Guarda cualquier cambio realizado al registro actual Private Sub cmdGuardar-Exp-Click()

(49)

'desconoce su Folio

MsgBox "Debe especificar un número de 'FOLIO"', vbcritical, "Error" Else

Modificacion txtFolio.Text Exit Sub

End If End Sub

'Esta hnción solo es temporal ya que se utilizara

'Crystal Reports para imprimir los informes de las consultas Private Sub cmdlmprimir-Click()

On Error GoTo ErrorHandler Configura el controlador de errores. Debug.Print "Datos en la tabla actual antes de ejecutar la consulta 'I

Exit Sub ErrorHandler:

MsgBox "NO se puede Imprimir el expediente. Verifique conexiones y configuración de seu impresora" -

,

vbcritical

+

vbOKCance1, "Error de Impresión" Resume Next 'i?

End Sub

'Procedimiento que termina la ejecución del programa Private Sub cmdSalir-Click()

Dim Mensaje, Estilo, Título, Respuesta, MiCadena

Mensaje = "¿Desea Guardar los cambios realizados antes de salir?" Define el mensaje. Estilo = vbYesNoCance1

+

vbcritical + vbDefaultButton1 Defííe los botones. Título = "Importante" Define el título.

Respuesta = MsgBox(Mensaje, Estilo, Título)

If Respuesta = vbYes Then

MiCadena = "Sí"

Modificacion txtFolio.Text ElseIf Respuesta = vbNo Then

MiCadena = "No"

Unload fi-mHCP Base 'Descarga el formulario actual fimMenuFormas&how 'Muestra el formulario principal Else: Respuesta = vbCancel 'Regresa al formulario actual MiCadena = Tancelar"

Exit Sub End If End Sub

Private Sub datHCP-Reposition()

End Sub

'Esta función controla mediante el DATA CONTROL 'el despliegue del contenido de los campos del registro actual 'traidos desde alstablas específicas de este formulario. Sub Muestra-HCP()

If datHCP.Recordset.RecordCount <= O Then

datHCP.Caption = "No existe tal registro" MsgBox "No existe tal registro"

(50)

Exit Sub

End If

datHCP.Caption = I' Registro It &

datHCP.Recordset.Abso1utePosition

+ 1 & It de 'I & -

datHCP.Recordset.RecordCount

'Tabla 1 : Datos Generales (HCP-Dat-Gen)

txtFolio.Text = datHCP.Recordset("hcp-dat-gen.folio")

txtNom-Pac.Text = Format(datHCP.Recordset("Nomqac"), It>")

txtApe-Pat-Pac.Text = Format(datHCP.Recordset("apeqatgac"), 'I>")

txtApe-Matgac.Text = Format(datHCP.Recordset("ape_rnatgac"), If>'')

Msk-Fecha-Nac(O).Text = IIf(IsNull(datHCP.Recordset("Fecha--Nac")), -

'I " / /-I1, Format(datHCP.Recordset("Fecha-Nac"), "MM/DD/YYYY''))

txtCalle.Text =

IIf(IsNull(datHCP.Recordset("Cal1e-No")),

-

"'I, Format(datHCP.Recordset("Cal1e-No"), ">"))

txtCol.Text = IIf(IsNull(datHCP.Recordset("Col")), -

"",

Fonnat(datHCP.Recordset("Col"), ">"))

txtLoc.Text = IIf(IsNull(datHCP.Recordset("Loc")), -

"",

Fonnat(datHCP.Recordset("Loc"), Ir>"))

txtMun(l).Text = IIf(IsNull(datHCP.Recordset("Mun")),

-

"", Format(datHCP.Recordset("Mun"), ">"))

txtTel.Text = IIf(IsNull(datHCP.Recordset("Tel")), -

"",

datHCP.Recordset("Te1"))

comEst.Text = Fonnat(datHCP.Recordset("Est"), ">")

comEdo-Civ.Text = Format(datHCP.Recordset("Edo-Civ"), ">")

'Tabla 2: Antecedentes (HCP-Ante)

txtFam(O).Text = IIf(IsNull(datHCP.Recordset("F-otros")), -

txtPer(l).Text = IIf(IsNull(datHCP.Recordset("P-otros")), -

txt0 Ges.Text = IIf((IsNull(datHCP.Recordset("0-Ges")), -

txtO-Ab.Text = IIf(IsNull(datHCP.Recordset("O_Ab")), -

txt0 - Vag.Text = IIf(IsNull(datHCP.Recordset("O~Vag")), -

txtO_Nac-v.Text = IIf(IsNull(datHCP.Recordset("0-Nac-v")), _.

txtO-viv.Text = IIf(IsNull(datHCP.Recordset("0-Viv")), -

txtO-Par.Text = IIf(IsNull(datHCP.Recordset("0-Par")), -

txtO-Ces.Text = Ilf(IsNull(datHCP.Recordset("O_Ces")), -

txt0 - Nac-m.Text = IIf(IsNull(datHCP.Recordset("O-Nac_m")), -

cW-Diab.Value =

IIf(IsNull(datHCP.Recordset("F-Diab")),

O, 1)

cW-Gem.Value = IIf(IsNull(datHCP.Recordset("F-Gem")), O, 1)

"", datHCP.Recordset("F-otros"))

"",

datHCP.Recordset("p-otros"))

"",

datHCP.Recordset("0-Ges"))

"",

datHCP.Recordset("O_Ab"))

"", datHCP.Recordset("0-Vag"))

'"',

datHCP.Recordset("0-Nac-v"))

"", datHCP.Recordset("0-Viv"))

"", datHCP.Recordset("O_Par"))

"",

datHCP.Recordset("0-Ces"))

(51)

chkF-Hip.Value = IIf(IsNull(datHCP.Recordset("F_Hip")), O, 1)

chkF-TBC.Value = IIf(IsNull(datHCP.Recordset("F-TBCPulm")), O, 1) chW-CirPU.Value =

IIf(IsNull(datHCP.Recordset("P-Ck-PU")),

O, 1) cW-Diab.Value =

IIf(IsNull(datHCP.Recordset("P-Diab")),

O, 1) cW-1nf.Value =

IIf(IsNull(datHCP.Recordset("P-Inf')),

O, 1) chkP_TBC.Value =

IIf(IsNull(datHCP.Recordset("P-TBC")),

O, 1)

chkP-Hip.Value =

IIf(IsNull(datHCP.Recordset("P-Hip")),

O, 1) cW-Inf.Value =

IIf(IsNull(datHCP.Recordset("P-Id')),

O, 1)

chk0-nin-3p.Value = IIf(IsNull(datHCP.Recordset("O~nin~3p")), O, 1) chkO-rn2500.Value = IIf(IsNull(datHCP.Recordset("O_m2S00")), O, 1)

chkO_gem.Value =

IIf(IsNull(datHCP.Recordset(~'O~em")),

O, 1)

chk0-m-alsem.Value = IIf(IsNull(datHCP.Recordset("O~m~alsem")), O, 1)

chkO-m-dl sem.Value = IIf(IsNull(datHCP.Recordset("O~m~d1 sem")), O, 1) mskEmb-ant.Text =

IIf(IsNull(datHCP.Recordset("0-fin-aEmb")),

-

".A-/- 'I, Format(datHCP.Recordset("O_fin_aEmb"), "MM/DDNYYY"))

'Tabla 3: Embaraza Actual (HCP-Emb-Act)

txtP-Ant.Text = IIf(IsNull(datHCP.Recordset("P-Ant")), -

txtTalla.Text = IIflIsNull(datHCP.Recordset("Talla")), -

mskFUM(O).Text =

IIf(IsNull(datHCP.Recordset("FUM')),

-

mskFPP( l).Text =

IIf(IsNull(datHCP.Recordset("FPP")),

-

mskVDRL,(O).Text = IIf(IsNull(datHCP.Recordset("VDRL")), -

mskHb( l).Text = IIf(IsNull(datHCP.Recordset("Hb")), -

"",

datHCP.Recordset("P-Ant"))

"",

datHCP.Recordset("Tal1a"))

" / /-It,

Format(datHCP.Recordset("FUM"),

"MM/DDIYYYY")l)

"AL."

'I, Format(datHCP.Recordset("FPP"), "MM/DDRYYYI'))

'I " I /-'I, Format(datHCP.Recordset("VDRL"), "MMIDDNYYY"))

".-L!"

'I, Format(datHCP.Recordset("Hb"), "MM/DDNYYY"))

chkEx-cn.Value =

IIf(IsNull(datHCP.Recordset("Ex-cn")),

O, 1)

chkEx-mn.Value =

IIf(IsNull(datHCP.Recordset("Ex-mn")),

O, 1)

chkEx-0d.Value =

IIf(IsNull(datHCP.Recordset("Ex-od")),

O, 1) chkPelv-n.Value = IIfOsNull(datHCP.Recordset("Pelv_n")), O, 1) cWap-n.Value =

IIf(IsNull(datHCP.Recordset("Pap_n")),

O, 1) chkColp-n.Value = IIf(IsNull(datHCP.Recordset("Co1p-n")), O, 1) chkCerv-n.Value = IIf(IsNull(datHCP.Recordset("Cerv-n")), O, 1)

chkAntqre.Value =

IIf(IsNull(datHCP.Recordset("Ant~re")),

O, 1) chkSen.Value = IIf(IsNull(datHCP.Recordset("Sen")), O, 1)

chkFum.Value = IIf(IsNull(datHCP.Recordset("Fuma")), O, 1)

chkHosp(O).Value = IIqIsNull(datHCP.Recordset("Hosp")), O, 1)

chkTras(O).Value = IIf(IsNull(datHCP.Recordset("Tras't)), O, 1) comMes-la-ant(O).Text = IIf(IsNull(datHCP.Recordset("Ant-1 a")), -

comMes;?a-ant( l).Text = IIf(IsNull(datHCP.Recordset("Ant~2a")), -

comLug.Text = IIf(IsNull(datHCP.Recordset("Lug")),

"",

Format(datHCP.Recordset("Ant-la"), ' Y ) )

"", Format(datHCP.Recordset("Ant-2a"), '5"))

(52)

End Sub

'Esta función simplemente reemplaza todos los campos del registro 'actual por espacios vacios.

Public Sub Limpia()

'Tabla HCP-Dat-Gen (Datos Generales) txtFolio.Text =

'"'

txtNom-Pac.Text = ""

txtApe-Pat-Pac.Text = ""

txtApe-Matgac.Text = ""

txtCalle.Text = ""

txtCol.Text = ""

txtLoc.Text = ""

txtMun( l).Text = "I'

txtTel.Text = 'I"

comEst.Text = ""

comEdo-Civ.Text = ""

Msk-Fecha-Nac(O).Text = " / / "

'TabIa HCP Ante (Antecedentes) chkF-Diab.%alue = False

chkF-Gem.Value = False chkF-Hip.Value = False

chkF"I'J3C.Value = False

chkP_CirPU.Value = False chkP-Diab.Value = False

chkP-1nf.Value = False cW-Tl3C.Value = False chkP Hip.Value = False chkP-1nf.Value = False

chkO~nin-3p.Value = False

chkO-m2500.Value = False

chkO_gem.Value = False

chk0 - - m alsem.Value = False

chkO-m-dl sem.Value = False txtFam(O).Text = ""

txtPer(l).Text = ""

txt0 Ges.Text =

'"'

txtOIAb.Text = ""

txtO-Vag.Text = ""

txtO-Nac-v.Text = ""

txtO viv.Text = ""

txtOIPar.Text = ""

txtO-Ces.Text = ""

txtO-Nac-m.Text = ""

mskEmb-ant.Text = 'I / / "

'Limpia la tabla Embarazo Actual (HCP-Emb-Act) txtP-Ant.Text = ""

txtTalla.Text = '"'

(53)

mskFPP(l).Text = / /

mskVDRL(O).Text= " / / Ir

mskHb(l).Text = / / I'

chkEx-cn.Value = False chkEx-mn.Value = False

chkEx-0d.Value = False

chlcPelv-n.Value = False chkPap-n.Value = False chkColp-n.Value = False

chkAntJre.Value = False

chkSen.Value = False

chkFum.Value = False

chkHosp(O).Value = False

chkTras(O).Value = False comMes-la-ant(O).Text = ''"

comMes_2a_ant( l).Text = ""

comLug.Text = It''

End Sub

Function Alta() As Boolean

Dim SQL As String 'Variable de Texto para armar lasconsultas Dim RS As Recordset

Dim Folio As Integer On Error GoTo Cap-Error

'Antes de insertar los valores de los campos del nuevo registro 'en la tabla específica se obtiente el valor del último registro 'existente para que el nuevo registro tenga el último valor

Set RS = bdArchivo.OpenRecordset("se1ect max(foli0) as new-folio fiom HCP-DAT-GEN") Folio = RS("NEW-FOLIOtt)

+

1 'Incremento sobre el valor numérico del último registro

txtFolio.Text = Folio

RS.Close

'Validación de algunos campos nulos cuando se da de ALTA If IsNull(txtFolio.Text) Or IsNull(txtNom-Pac.Text) -

Or IsNull(txtApe-Pat-Pac.Text) Or IsNull(txtApe-Matgac.Text) Then

Ms@ox "Debe proporcionar el FOLIO, el NOMBRE y los APELLIDOS del paciente", -

vbInformation

+

vbOKOnly, "Error en de Actualización" Exit Function

Else

'Tabla1 (Datos Generales)

SQL = "Insert into HCP-DAT-GEN ('I 'Estos son los CAMPOS en los que SQL = SQL & "Folio 'I 'se incertarán los datos

SQL = SQL & I t 7 Nom-Pac"

SQL = SQL & 'I, Ape-Pat-Pac 'I

SQL = SQL & It, Ape-Mat-Pac I'

SQL = SQL & I t 7 Te1 I'

SQL = SQL & It, Est I'

SQL = SQL & It, Edo Civ SQL = SQL & It, FecGa-Nac "

SQL = SQL & 'I, Calle-No It

(54)

SQL = SQL & 'I, Mun ) 'I

SQL = SQL & I' VALUES ('I 'Datos proporcionados por el usuario

SQL = SQL & & Folio & 'I' I'

SQL = SQL & 'I , I" & fi-mHCPBase.txtNom-Pac & 'I' 'I

SQL = SQL &

,

&

fi-mHCP-Base.txtApe-Pat-Pac

& 'I

SQL = SQL & 'I

,

"' & fr-mHCP-Base.txtApe-Matqac & "' 'I

SQL = SQL & 'I

,

"' &

IIf(frmHCP-Base.txtTel.Text

=

"",

"null", frmHCP-Base.txtTel) &

"'

'I

SQL = SQL & 'I

,

'I' & fi-mHCP-Base.comEst.Text & 'I' 'I

SQL = SQL & 'I

,

'I1 & WCP-Base.comEdo-Civ.Text & 'I1

SQL = SQL & 'I , 'I1 &

IIf(frmHCP-Base.Msk-Fecha-Nac(0)

= / / 'I, -

SQL = SQL & It

,

I" & IIf(hnHCP-Base.txtCalle = -

SQL = SQL & ,

"'

& IIf(frmHCP-Base.txtCo1 =

"",

-

SQL = SQL & 'I , 'I' & IIf(fimHCP-Base.txtLoc =

"",

-

SQL = SQL & 'I , 'I1 & IIf(frmHCP-Base.txtMun( 1) = -

"NULL", Format(frmHCPBase.Msk-Fecha-Nac(O), "MM/DD¡YYYY")) & 'I

"Null", fi-mHCP-Base.txtCalle) & 'I1

"Null", frmHCPBase.txtCo1) & I" 'I

"Null", frmHCP-Base.txtLoc) &

'"

"Null", frmHCP-Base.txtMun( 1)) & "I )"

bdArchivo.Execute SQL, dbFailOnError

'Tabla2 HCP-Ante (Antecedentes)

SQL = "Insert into HCP-ANTE (I' 'Estos son los CAMPOS

en

los que

SQL = SQL & "Folio It

SQL = SQL & 'I, F-Diab 'I 'se incertarán los datos

SQL = SQL &

",

F-TBC-Pulm SQL = SQL &

,

F-Hip

SQL = SQL & ' I , F-Gem 'I

SQL = SQL & I'

,

P-Diab 'I

SQL = SQL & 'I

,

P-TBC

SQL = SQL & 'I , P-Hip 'I

SQL = SQL & , P-Ck-PU

SQL = SQL & , P-Inf 'I

SQL = SQL & I'

,

O-nin-3p 'I

SQL = SQL & , O-m2500 'I

SQL = SQL & 'I , O-gem 'I

SQL = SQL & 'I , O-m-alsem 'I

SQL = SQL & 'I y O-m-dl sem I'

SQL = SQL & 'I , F-otros I'

SQL = SQL & , P-otros I'

SQL = SQL & 'I , O-Ges It

SQL = SQL & 'I , O-Ab 'I

SQL = SQL & y O-Vag 'I

SQL = SQL &

,

O-Par" SQL = SQL & 'I , O-Ces

SQL = SQL & 'I , O-Nac-v 'I

SQL = SQL & It , O-viv 'I

SQL = SQL & I' , O-Nac-m 'I

(55)

SQL = SQL & 'I VALUES ('I 'Datos proporcionados por el usuario

SQL = SQL & Folio

SQL = SQL & I'

,

"'

& frmHCP-Base.chkF-Diab &

SQL = SQL & 'I

,

& frmHCP Base.chkF-TBC &

"'

I'

SQL = SQL & 'I

,

& frmHCPIBase.chkF-Hip & I" 'I

SQL = SQL &

,

It' & frmHCP-Base.chkF Gem & "' "

SQL = SQL & It

,"'

& frmHCP-Base.chkPIDiab & 'I1 'I

SQL = SQL & 'I

,

'I' & fmHCP-Base.chkP-TBC & "I I'

SQL = SQL &

,

'I' & frmHCP-Base.chkP-Hip & 'I' 'I

SQL = SQL & "

,

''I & fimHCP-Base.chkP-CirPU & "I I'

SQL = SQL & 'I , "I & hnHCP-Base.chkP-Inf & "' SQL = SQL & 'I

,

'I1 & frmHCP-Base.chkO-nin-3p & It' 'I SQL = SQL & 'I , & frmHCP-Base.chkO-rrl500 & 'Ir I'

SQL = SQL & 'I ,

"'

& frmHCPBase.chk0-gem & 'I' SQL = SQL & 'I ,

"'

& frmHCPBase.chk0-m-alsem & 'I

SQL = SQL & It

,

I" & WCP-Base.chk0-m-dlsem & I'

SQL = SQL & 'I , 'I1 & fimHCP-Base.txtFam(0) & "I It

SQL = SQL &

,

'"

& MCPBase.txtPer(1) &

"'

SQL = SQL & 'I

,

&

IIf(fimHCP-Base.txtO-Ges

=

"",

"null", frmHCP Base.txt0-Ges) & It 'I

SQL = SQL & 'I

,

'I & IIf(frmHCP-Base.txt0 Ab = "", "NULL", frmHC%-Base.txtO-Ab) & I' 'I SQL = SQL & 'I

,

&

IIf(frmHCP-Base.txtO~Vag

=

"",

"null", frmHCP-Base-txtO-Vag) & 'I

SQL = SQL & , I' & IIf(frmHCP-Base.txt0-Par = "", "null", fimHCP-13ase.txtO Par) & It I'

SQL = SQL &

,

'I & IIf(frmHCP-Base.tx@-Ces =

"",

"null", frmHCP-:Base.txtOICes) & 'I

SQL = SQL & I' , I' & IIf(fmHCP-Base.tx@-Nac-v = '"', "null", frmHCP-Base.txtO-Nac_v) & I' 'I

SQL = SQL &

,

'I & IIf(frmHCP-Base.txt0-viv = "", "null", frmHCP-Base.txtO-viv) & 'I I' SQL = SQL & 'I , If &

IIf(fimHCP-Base.tx~-Nac-m

= "", ''null", frmHCP-Base.txt0-Nac-m) & I' 0

bdArchivo.Execute SQL, dbFailOnError

'Tabla 3: Embarazo Actual (HCP Emb-Act) SQL = ll1nsex-t into HCP-Emb-Act ('I

SQL = SQL & 'I Folio 'I

SQL = SQL & 'I, P-Ant 'I SQL = SQL & 'I, Talla 'I

SQL = SQL & ' I , FUM

SQL = SQL &

,

FPP It

SQL = SQL & ' I ,

VDRL

'I

SQL = SQL & ' I , Hb 'I

SQL = SQL & I' , Ex-CN 'I

SQL = SQL & , Ex-MN"

SQL = SQL & ' I , Ex-Od I'

SQL = SQL &

,

Pelv-n 'I

SQL = SQL & 'I , Pap-n

SQL = SQL & 'I , Colp-n

SQL = SQL & 'I , Cerv-n It

SQL = SQL & ' I , Antqre 'I

(56)

SQL = SQL & 'I , Ant-2a

'SQL = SQL & 'I , VDK-Pos-Neg

'SQL = SQL & 'I , RH-Pos-Neg I'

SQL = SQL & 'I

,

Sen

SQL = SQL & I'

,

Fuma"

SQL = SQL & , Hosp 'I

SQL = SQL & It

,

Tras I'

SQL = SQL & 'I

,

Lug )I'

SQL = SQL & I' VALUES ('I 'Datos proporcionados por el usuario

SQL = SQL & Folio

SQL = SQL & , & IIf(fimHCP_Base.txP-Ant =

"",

"NULL", frmHCP-Base.txtP-Ant) & 'I

SQL = SQL & 'I , & IIf(frmHCP-Base.txtTa1la =

'"',

"NULL", fmHCP Base.txtTalla) & 'I

SQL = SQL & 'I , 'I & IIf(fbmHCP-Base.mskFUM(0) = I' / / , &

Format(frmHCP-Base.mskFUM(O), ""/DD/YYYY") & ""') &. I'

SQL = SQL & It

,

'I &

IIf(frmHCP-Base.mskFPP(1)

= I' / / 11 , llNullll, IIIII &

Format(fimHCP-Base.mskFPP(

l), ""IDDNYYY") & ""') & I' It

SQL = SQL & , 'I & IIf(frmHCP-Base.mskVDRL(0) = I' / / 11

,

llNullll, 111ll &

Format(fnnHCP-Base.rnskVDRL(O),

"MM/DD/YYYY") & ""') & 'I 'I

SQL = SQL & 'I , & IIf(hHCP-Base.mskHb(1) := / / 'I "Null",

'''"

&

Format(fmHCP-Base.mskHb( l), '"M/DD/YYYY") & '"") & 'I I'

SQL = SQL & 'I

,

'I1 & frmHCP-Base.chkEx-cn & "'

SQL = SQL & 'I

,

'I' & frmHCP-Base.chkEx mn & 'I1 'I

SQL = SQL & I'

,

'I' & frmHCP-Base.chkExIOd & "I

SQL = SQL & 'I , I" & MCP-Base.chkPelv-n & "' I'

SQL = SQL & It

,

"* & fi-mHCP-Base.chkPap-n & "'

SQL = SQL & I' , "' & frmHCP-Base.chkColp-n & I'

SQL = SQL & 'I

,

'" & UCP-Base.chkCerv-n & I'

SQL = SQL & 'I

,

'I1 & hnHCP-Base.chkAntgre & 'I' It

SQL = SQL & 'I , 'I & IIf(fhnHCP-Base.comMes-la-_ant(O) = 'I", "NULL", ''''' &

hHCP-Base.comMes-la-ant(0) & "'")

SQL = SQL & 'I

,

& IIf(frmHCP-Base.comMes-2a~-ant(l) = "", "NULL", 11111 &

frmHCP-Base.comMes-2a-ant( 1) & ""')

'SQL = SQL & 'I , 'I' & IIf(frmHCP-Base.optPos-VD=( l), False, True) &

'SQL = SQL & I'

,

'I1 & IIf(frmHCPBase.optPos-RH(O), False, True) & "'

SQL = SQL & 'I

,

& frmHCP-Base.chkSen & "'

SQL = SQL & I' , 'I1 & frmHCP-Base.chkFum &

"'

'I

SQL = SQL & I' , & frmHCP-Base.chkHosp(0) & 'I

SQL = SQL & ,

"'

& fimHCP-Base.chkTras(0) & 'I1

SQL = SQL & I'

,

I' & IIf(frmHCP-Base.comLug = 'I1', -

-

II llNullll, IIIII

"-.."-,

llNull)ll, 1111l & hHCP_Base.comLug & "')")

bdArchivo.Execute SQL, dbFailOnError 'Ejecuta instrucciones SQL de Acciones(Altas, Bajas)

MsgBox "Registro dado de ALTA", vbOKOnly, "Hoja Obstetrica" datHCP.Refresh 'Recupera el control el Datacontrol

Exit Function

IfNot Err = 3022 Then

MsgBox Err-Description, vbcritical, "ERROR@ Else

(57)

MsgBox "El Expediente ya existe (RECTIFIQUE...)", vbCritical, "ERROR" Exit Function

End If End If

End Function

'Recupera y muestra un registro

Function Consulta(Fo1io As Integer) As Boolean txtFolio.Enabled = True

'El Datacontrol recupera el valor de todos los campos contenidos 'en la consulta OBSTE disefíada en Access para el registro especificado 'por HCP-DAT-GEN-FOLIO

Set datHCP.Recordset = bdArchivo.OpenRecordset("SEL1ECT

*

from HCP WHERE HCP-BAT-GEN.FOLIO=" & Folio)

End Function

'Esta función actualiza (modifica) el registro actual Function Modificacion(Folio

As

Integer)

As

Boolean Dim resultado As Recordset

Dim bdkchivo As Database Dim SQL As String

'Validación de campos que no puede estar vacíos If IsNull(txtFo1io.Text) Or JsNull(txtNom-Pac.Text) -

Or IsNull(txtApe-Pat-Pac.Text) Or IsNull(txtApe-Mht~ac.Text) Then

MsgBox "Debe proporcionar el FOLIO, el NOMBRE y los APELLIDOS del paciente", -

Exit Function Else

vbhformation

+

vbOKOnly, "Error de Actualizacih"

'TABLA1 HCP-Dat-Gen (DATOS GENERALES) SQL = I' UPDATE HCP-DAT-GEN

SQL = SQL & I' SET Nom-Pac = "' & fimHCP-Base.txtNom-Pac &

"'

'I

SQL = SQL & ,Ape-Pat-Pac = 'I1 & smWCPBase.txtApe-Pat-Pac & "' I'

SQL = SQL & ,Ape-Mat-Pac = It' & fkmHCP-Base.txtApe-Matgac & 'I1

SQL = SQL & 'I ,Fecha-Nac = "' &

Format(fmHCP-Base.Msk-Fecha-Nac(O),

""/DD/YYY Y 'I) & 'I'

SQL = SQL & *I ,Calle-No = "' & fimHCPBase.txtCal1e & 'I' 'I

SQL = SQL & 'I ,Col = "I & frmHCP-Base.txtCol& It' 'I

SQL = SQL & It ,Loc = 'I1 & fimHCP-Base.txtLoc & "' 'I

SQL = SQL & 'I ,Mun = It' & frmHCP-Base.txtMun( 1) & I" 'I

SQL = SQL & 'I ,Te1 = "' & frmHCPBase.txtTel8 "'

SQL = SQL & 'I ,Est = 'I1 & fimHCP-Base.comEst & I" 'I

SQL = SQL & I' ,Edo-Civ = 'I' & fimHCP-Base.comEdo-Civ & '" I'

SQL = SQL & 'I Where HCP-DAT-GEN.Folio = 'I' & fknHCP-Base.txtFolio & I" I' 'Criterio de

actualización

bdArchivo.Execute SQL, dbFailOnError

'Tabla 2 HCP-ANTE (Antecedentes)

SQL = "UPDATE HCP-ANTE 'I

(58)

SQL = SQL & ",P Hip = "' & chkP-Hip-Value &

"'

I'

SQL = SQL & ",PICirPU = I" & chW-CirPU.Value &

'"

'I

SQL = SQL & ",P-Inf = I" & cW-1nf.Value & 'I1 I'

SQL = SQL & ",O_nin_3p = ''I & chkO-nin-3p.Value & 'I1 'I

SQL = SQL & ",O-m2500 = "' & chkO-m2500.Value & 'I1

SQL = SQL & ",O gem =

"'

& chkO-gem.Value &

SQL = SQL & vt,O~m-alsem = 111 & cW<O-m-alsem.\ralue 11t 1) SQL = SQL & ",O-m-dlsem = "' & chk0-m-dlsern.Value & "" 'I SQL = SQL & ",F-otros = & txtFam(O).Text &

"'

'I

SQL = SQL & ",P-otros = 'I1 & txtPer(l).Text & 'I1

SQL = SQL & ",O-Ges=

'"

& txtO-Ges.Text & 'I' "

SQL = SQL & ",O Ab= 'I1 & txtO-Ab.Text & 'I1 'I

SQL = SQL & '',OVag= & txtO-Vag.Text &

SQL = SQL & ",O-Par= & bctOPar.Text & "' 'I

SQL = SQL & ",O Ces= I" & txtO-Ces.Text & I'

SQL = SQL & ",OINac-v= 'I1 & txt0 Nac v.Text & 'I

SQL = SQL & ",O-viv= I" & txtO-viv.Text &

"'

'I

SQL = SQL & ",O-Nac-m=

"'

& txt0 Nac-m.Text & "' "

SQL = SQL & ",O-fm-aEmb=

"'

& Format(mskEmb ant.Text, ""/DD/YYYY") & "' 'I

SQL = SQL & "Where HCP - ANTE-Folio = " & txtF&o.Text &: 'I

"

bdArchivo.Execute SQL, dbFailOnError

SQL = "UPDATE HCP Emb Act

SQL = SQL & SET P-AnF'l' & txtP-Ant.Text & It 'I SQL = SQL & ",Talla="' & txtTalla.Text & "' I'

SQL = SQL & ",FUM= "' & Format(mskFUM(O).Text, " " D D N Y Y Y " ) &

SQL = SQL & ",FPP= & Format(mskFPP( l).Text, ""/DD/YYYY") & "' SQL = SQL & ",VDRL = "' & Format(mskVDRL(O).Text, "MhWDD/YYYY") & ''I

SQL = SQL &

",€I%

=

"'

& Format(mskHb( l).Text, %4M/DD/YYYY") & "I "

SQL = SQL & ",Ex-cn= 'I' & chkEx-cn.Value & '" 'I

SQL = SQL & ",Ex-mn = I" & chkEx-mn.Value & It

SQL = SQL & ",Ex-od = & chkEx 0d.Value & "' It

SQL = SQL & ",Pelv-n= 111 & c w e l v n.Value & 111 11

SQL = SQL & ",pap-n= & cWap-i.Value & 11

SQL = SQL & ",Colp-n= *" & chkColp-n.Value & "I 'I

SQL = SQL & ",Antqre= If' & chkAntgre.Value & "' 'I

SQL = SQL & ",Sen= & chkSen.Value &

"'

'I

SQL = SQL & ",Fum=

"'

& chkFum.Value & 'I

SQL = SQL & ",Hasp== 'I1 & chkHosp(O).Value & "' 'I

SQL = SQL & ",Tras= I" & chkTras(O).Value & 'I' I'

SQL = SQL & ",Ant-l a= ''I & comMes-1 a-ant(O).Text & ''I 'I

SQL = SQL & ",Ant-2a= ''I & comMes-2a-ant( l).Text & "' 'I

SQL = SQL & ",Lug= & comLug.Text & I" 'I

SQL = SQL & "Where HCP-EMB-ACT.Folio = I' & txtFolio.Text & I' 'I

bdArchivo.Execute SQL, dbFailOnError

MsgBox 'W'orme de Actualización: Registro Actualizado", vbInformation

+

vbOKOnly, -

(59)

Exit Function End I f

End Function

'Esta h c i ó n elimina permanentemente el registro actual Function Baja(Fo1io As Integer) As Boolean

Dim SQL As String 'Variable de Texto para armar las consultas Dim Mensaje, Estilo, Título, Respuesta, MiCadena

Mensaje = "Está seguro de querer ELIMINAR PERMANENTEMENTE este expediente" Defme el mensaje.

Estilo = vbYesNo

+

vbcritical

+

vbDefaultButton2 Define los botones. Título = "Confirme

..."

Define el título.

Respuesta = Ms@ox(Mensaje, Estilo, Título)

On Error GoTo Cap-Error

If Respuesta = vbYes Then El usuario eligid el b o t h Sí. MiCadena = "Sí" Ejecuta alsacciones siguientes

'Consultas de eliminación independientes para cada Tabla

SQL = "DELETE FROM HCP-DAT-GEN WHERE Folio = & txtFolio & It

bdArchivo.Execute SQL, dbFailOnError

SQL = "DELETE FROM HCP-ANTE WHERE Folio = 'I & txtFolio & 'I

bdArchivo.Execute SQL, dbFailOnError

SQL = "DELETE FROM HCP-EMB-ACT W E R E Folio = 'I & txtFolio & 'I

bdArchivo.Execute SQL, dbFailOnError

MsgI3ox "Expediente Eliminado", vbInfonnation

+

vbOKOnly, -

"Estado Actual del expediente"

datHCP.Refresh 'Recupera el control el Datacontrol Exit Function

Else El usuario eligió el botón No.

End If

MiCadena = "No"

Exit Function

Cap-Error:

If Not Err = 3022 Then

MsgBox Err.Description, vbcritical, "ERROR" Exit Function

Else

MsgBox "El Expediente no existe o ya fué eliminado (RECTIFIQUE...)", -

vbhformation

+

vbOKOnly, "Intento de eliminacih" Exit Function

End If End Function

Private Sub Fom-Unload(Cance1 As Integer)

(60)
(61)

HISTORIA OBTETRICIA

Option Explicit

Private Sub Fom-Load() 'NOTA: PARA CARGAR UNA IFORMA NO SE REQUIERE SU NOMBRE

If Not Conectar_Base-Datos Then

MsgBox "No se puede conectar a la base de datos. Verifique la ruta", -

vbcritical

+

vbOKOnly, "ERROR" Else

'El Datacontrol se enlaza a la consulta de selección Obste 'creada en la base de datos en Access

Set datObste.Recordset = bdArchivo.OpenRecordset("SELECT

*

from Obste") End If

End Sub

Private Sub cmdAlta-CLick() 'EL evento Click del control cmdAlta Alta 'invoca la función que crea nuevos registros End Sub 'en la base de datos

'Al crear un Nuevo Expediente se invoca a la Función que 'Limpia o reemplaza todos los campos del registro actual- 'por campos vacíos

Private Sub cmdNuevo-Exp-Click()

txtFolio.Enabled = False 'Deshabilita el cuadro de texto del folio

Limpia 'Se llama a la función que renova todos los cuadros de texto, 'los botones de opción y selección

End Sub

Private Sub cmdEliminar-Exp-Click()

If txtFolio = '"I Then 'No se puede eliminar un registro si se

MsgBox "Debe especificar un número de 'FOLIO"', vbcritical, "Error" 'para evitar que el usuario lo pueda modificar

'desconoce su Folio

Else

Baja txtFolio.Text 'Llama a función de eliminación de registros Exit Sub

End I f

End Sub

Private Sub cmdAbrir-Exp-Click()

If txtFolio = I"' Then 'No se puede eliminar un registro si se

MsgBox "Debe especificar el número de 'FOLIO"', vbcritical -t. vbOKOnly, "Error" 'desconoce su Folio

Exit Sub Else

Consulta txtFolio.Text 'Llamada a la función Consultas de registros Exit Sub

End I f End Sub

'Guarda cualquier cambio realizado al registro actual Private Sub cmdGuardar-Exp-Click()

(62)

'desconoce su Folio

MsgBox "Debe especificar un número de 'FOLIO"', vbcritical, "Error"

Modificacion txtFolio.Text Else

Exit Sub End I f End Sub

'Esta función solo es temporal ya que se puede utilizar

'Crystal Reports para crear e imprimir los informes de las consultas Private Sub cmdImprimir-Click()

On Error GoTo ErrorHandler Configura el controlador de errores. Debug.Print "Datos en la tabla actual antes de ejecutar la consulta

Exit Sub ErrorHandler:

MsgBox "No se puede Imprimir el expediente. Verifique conexiones y configuración de seu

impresora" -

,

vbcritical

+

vbOKCancel, "Error de Impresión" Resume Next

End Sub

'Procedimiento que termina la ejecución del programa Private Sub cmdSalir-Click()

Dim Mensaje, Estilo, Título, Respuesta, MiCadena

Mensaje = "¿Desea Guardar los cambios realizados antes de salir?" ' Define el mensaje. Estilo = vbYesNoCancel

+

vbcritical

+

vbDefaultButton1 ' Define los botones. Título = "Importante" Define el título.

Respuesta = MsgBox(Mensaje, Estilo, Título)

If Respuesta = vbY es Then

' Modificacion txtFolio.Text ElseIf Respuesta = vbNo Then

MiCadena = "Sí"

MiCadena = "NO"

Unload frm€Ioja-Obstetrica 'Descarga el formulario actual fimMenuFormas.Show 'Muestra el formulario principal

Else: Respuesta = vbCancel 'Regresa al formulario actual MiCadena = "Cancelar"

Exit Sub End I f End Sub

Private Sub datObste-Reposition0

End Sub

'Esta función es controla mediante el DATA CONTROL 'el despliegue del contenido de los campos del registro actual 'traidos desde las tablas específicas de este formulario. Sub Muestra-H-Obste()

If datObste.Recordset.RecordCount <= O Then datObste.Caption = "No existe tal registro" MsgBox "NO existe tal registro"

Limpia

(63)

Exit Sub End If

'Muestra el número de registro actual y el total existente

datObste.Caption = Registro & dat0bste.Recordset.AbsoluteI'osition

+

1 & -

de It & datObste.Recordset.RecordCount

'Tabla1 Obste-Dat-Gen (Datos Generales)

txtFolio.Text =

datObste.Recordset("OBSTE-DAT-GEN.folio")N

txtNom-Pac.Text = Format(datObste.Recordset("Nomqac"), ">")

txtApe-Pat-Pac.Text = Format(datObste.Recordset("apeqat_pac"), ">")

txtApe-Matgac.Text = Format(datObste.Recordset("ape-matgac"), 'I>")

Msk-Fec-Nac.Text = IIfTIsNull(datObste.Recordset("Fecha-Nac")), -

It " / I-",

Fomat(datObste.Recordset("Fecha-Nac"),

""/DDIYYYY"))

txtCalle.Text = IIf(IsNull(datObste.Recordset("Calle~No")), -

"", Format(datObste.Recordset("Cal1e-No"), ">"))

txtCol.Text = IIf(IsNull(datObste.Recordset("Col")), -

"",

Format(datObste.Recordset("Col"), ''>'I))

txtLoc.Text = IIfOsNull(datObste.Recordset("Loc")), -

"", Format(datObste.Recordset("loc"), Ir>"))

txtMun( l).Text = IIf(IsNull(datObste.Recordset("Mun")), -

"", Format(datObste.Recordset("Mun"), ">"))

'Tabla2 Obste-Exp-Urg (Exploraci6n en Urgencias)

Msk-FecExp( 1) = IIf(IsNull(datObste.Recordset("Fecha_Exp")), -

MskYHoraExp(2).Text = IIf(IsNull(datObste.Recordset("Hora_E:x")), -

'I, Format(datObste.Recordset("Fecha-Exp"), "MMDDNYYY"))

t L ~ L "

"- 'I, Format(datQbste.Recordset("Hora-Exp"), "hh:mn~ W P M " ) )

11

.

txtInf-Exp(O).Text = IIf(IsNull(datObste.Recordset("1nf-Exp")),, -

txtTA.Text = IIf(IsNull(datObste.Recordset("TA")), -

txtPulso.Text = IIf(IsNull(datObste.Recordset("Pulso")), -

txtTemp.Text = IIf(IsNull(datObste.Recordset("Temp")), -

txtGesta.Text = IIf(IsNull(datObste.Recordset("Gesta")), -

txtPara.Text = IIf(IsNull(datObste.Recordset("Para")), -

txtAbort.Text = IIf(IsNull(datObste.Recordset("ab")),

txtCesa.Text = IIf(IsNull(datObste.Recordset("Ces")), -

txtEdad.Text = IIf(IsNull(datObste.Recordset("Edad)), -

txtICD.Text = IIf(IsNull(datObste.Recordset("Cont-Dol")), -

"",

datObste.Recordset('Tnf-Exp"))

"", datObste.Recordset("TA"))

"", datObste.Recordset("Pu1so"))

"", datObste.Recordset("Temp"))

"",

datObste.Recordset("Gesta"))

"",

datObste.Recordset("Para"))

"", datObste.Recordset("Ab"))

"",

datObste.Recordset("Ces"))

"", datObste.Recordset("Edad"))

"", datObste.Recordset("Cont-Dol"))

Referencias

Documento similar

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

INGENIERIA CIVIL

Emisión de informe sobre la adecuación entre las competencias y conocimientos adquiridos de acuerdo con el plan de estu- dios del título de origen, o la experiencia laboral

A medida que las organizaciones evolucionan para responder a los cambios del ambiente tanto para sobrevivir como para crecer a partir de la innovación (Stacey, 1996), los

Plan de Estudios de las enseñanzas conducente a la obtención del Título Universitario Oficial de Graduado o Graduada en Ingeniería Mecánica por la Universidad

4.- Másteres del ámbito de la Biología Molecular y Biotecnología (9% de los títulos. Destaca el de Biotecnología Molecular de la UB con un 4% y se incluyen otros

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o