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
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.
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 UNACOMPUTADORA, DESDE ENTONCES, ESTAS COMPLEJAS MAQUINAS
(CONSTRUIDAS CON SILICIO, METAL Y PLASTICO)
HAN
VENIDO A INFLUIREN CASI TODOS LOS ASPECTOS DE NUESTRAS VIDAS.EN DONDE QUIERA QUE
COINCIDAN EL INTELECTO HUMANO Y LA TECNOLOGIA,
AHI
ENCONTRASCOMPUTADORAS.
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 CONTROLPERMENENTE 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
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 PODRAUTILIZAR 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ÍTALESLAS 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
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 PARTESY
SUMINISTROS.
EN EL HOSPITAL EVANSTON COW, EN EVANSTON, ILLINOIS, EL ED1 A
CAMBIADO LA MANERA EN QUE ESTE HOSPITAL ORDENA SUMISTROS
Y
ENEL PROCESO,
HA
DEFINIDO NUEVAMENTE LA FORMA EN QUE LA COMPAÑÍAMANEJA SUS INVENTARIOS
Y
LA COMUNICACIóN CON SUS PROVEEDORES.LOS CAMBIOS SON TAN DRAMATICOS QUE, EN
UN
SOLO AÑO, ELHOSPITAL AHORRO MÁS
2
MILLLONES DE DOLARES. EL ED1 PERMIT10 A LASCOMPUTADORAS DEL HOSPITAL ORDENAR Y PROGRAMAR LA ENTREGA
DE
UN
AMPLIO GRUPO DE SUMISTROS EN FORMA AUTOMATICA, CONFORME SENECESITABAN ESOS PRODUCTOS.
DESCRIPCION DEL PROYECTO.
EL OBJETIVO DE ESTE PROYECTO SERÁ EL
DE
AUTOMATIZAR UNHOSPITAL,
Y
GENERAR LAS CITAS DE PACIENTES, EL LABORATORIO Y ELCARNET DEL PACIENTE EN
FORMA
AUTOMÁTICA, EL SISTEMA DEBE TENERLA CAPACIDAD DE MANEJAR TODO TIPO DE CONSULTAS EN CUANTO A LOS
PACIENTES
Y
QUIMICOS, REALIZAR las INSCRIPCIONES, BAJASY
REGISTRO DE LOS PACIENTES EN EXISTENCIA ASÍ COMO EL
MANTENIMIENTO SOBRE ESTOS.
EL SISTEMA DEBE DE
PROPORCIONAR LASSIGUIENTES
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
SUBSISTEMADE
AYUDA EN LÍNEAY
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ÁSENTREVISTAS.
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
DESARROLLO
DEL
PROYECTO
EL
DESARROLLODE
UN SISTEMADE
COMPUTACI~NIMPLICA
VARIAS ETAPAS Y DIVERSOS ESPECIALISTASPARA
CADA UNA DE ESTAS, S E N D 0 EL ESTABLECIMIENTODE
LOS TIEMPOSDE TERMINO
POSTERIORAL
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
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 ELUSUARIO. 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
LOS FLUJOS
SE
MUESTRAN POR MEDIO DE FLECHAS CURVAS. SON LASCONEXIONES 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 SPARALELAS 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 LASQUE
EL SISTEMA SE COMUNICA.
A CONTINUACIóN SE MUESTRAN LOS DIAGRAMAS DE FLUJOS DE DATOS
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
HOSPITAL.
Informacion de Pacientes
Informacion de Doctores
Informacion de Reactivos
altas
Inf. Eouino ~
Bodega
-
BodegaCambios
altas
Inf. Doctores
.
Base doc. ___L Base doc.
Cambios ~
Nuevo Paciente
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
-
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.
-
-
Nuevos Datos
.
Hodificacih-
(-)
(
carnet ArchivoDel Paciente
\ -
Paciente
7.
N Folio
Apellido b- Búsquedas
Buscar Reactivos
Por ultimo tenemos las consultas, que tienen el siguiente diagrama
N
FolioBusqueda
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.
Para el caso del mantenimiento del laboratorio tenemos el siguiente diagrama.
Infomacion del Reactivo
__I_____)
Eliminar
Laboratorio
Infomacion del Reactivo Reactivo
___)
t
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
-
DoctoresPara 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
PacienteN-Folio ___)
Infonnacion del paciente
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 las2
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
f
S
c.
- ,
L
f
f
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 yHUMANOS.
ESTUDIOS DE FACTIBILIDAD.
SE LLEVO A CABO UN ESTUDIO DE LAS POSIBILIDADES TANTO DE
RECURSOS HUMANOS (QUE TANTO CONOCIMIENTO
SÉ
TENIA CONCOMPUTADORAS. QUE TANFACTIBLE ES QUE LA GENTE SE PRESTARA PARA
ENSEÑARLE
Y
NO BIERAN CON MIEDO EL CAMBIO)Y
MATERIALES(C0NQUEEQUIPOS
SE
CONTABA QUE PRESUPUESTOSÉ
HIV ADESIGNAR), POR LOQUE
SE LLEGO A LA CONCLUSION QUE SÉ COLOCARIA UNA RED EN TODO EL
HOSPITAL
UN
SISTEMA BASADO EN VISUAL BASIC.ANALISIS Y DISEÑO
SÉ ANALISO LAS PARTES DEL SISTEMA
Y
COMO SE RELACIONAN ENTRESIPOR LO QUE; EL SISTEMA ESTA COMPUESTO POR UN CONJUNTO DE
SUBSISTEMAS, LOS CUALES ESTARAN CONTROLANDO CADA AREA COMO
POR EJEMPLO LABORATORIO, CITAS, ARCHIVO
Y
CONTROLDE
REACTIVOS;AVIENDO DENTRO DE ESTOS SUBSISTEMAS OTROS SUBSISTEMAS. POR
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 DECIRPUDEN 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ÁGENESUSO
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 PARTESDEL 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 GENERALEXCLUSIVAMENTE 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
#”----
1
1
I#
DATOS BEHERALES DEL PAUEHTE
3 3
3
3 3
3 3
6
8
1
3H
cp
I
d -.
8
o
a
-.L w
N
1
I
f
f-
k
k
7
?
Y
11
" Y
I I g G
k
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
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.HideEnd 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
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
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 .HideEnd Sub
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
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 SubPublic 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()
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
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, "ERROREnd 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 seMsgBox "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 SubElse
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()
'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"
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"))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"))
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 = '"'
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 registrotxtFolio.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 FunctionElse
'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
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
& 'ISQL = SQL & 'I
,
"' & fr-mHCP-Base.txtApe-Matqac & "' 'ISQL = SQL & 'I
,
"' &IIf(frmHCP-Base.txtTel.Text
="",
"null", frmHCP-Base.txtTel) &"'
'ISQL = SQL & 'I
,
'I' & fi-mHCP-Base.comEst.Text & 'I' 'ISQL = SQL & 'I
,
'I1 & WCP-Base.comEdo-Civ.Text & 'I1SQL = 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 queSQL = SQL & "Folio It
SQL = SQL & 'I, F-Diab 'I 'se incertarán los datos
SQL = SQL &
",
F-TBC-Pulm SQL = SQL &,
F-HipSQL = SQL & ' I , F-Gem 'I
SQL = SQL & I'
,
P-Diab 'ISQL = SQL & 'I
,
P-TBCSQL = SQL & 'I , P-Hip 'I
SQL = SQL & , P-Ck-PU
SQL = SQL & , P-Inf 'I
SQL = SQL & I'
,
O-nin-3p 'ISQL = 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-CesSQL = SQL & 'I , O-Nac-v 'I
SQL = SQL & It , O-viv 'I
SQL = SQL & I' , O-Nac-m 'I
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" 'ISQL = SQL &
,
It' & frmHCP-Base.chkF Gem & "' "SQL = SQL & It
,"'
& frmHCP-Base.chkPIDiab & 'I1 'ISQL = SQL & 'I
,
'I' & fmHCP-Base.chkP-TBC & "I I'SQL = SQL &
,
'I' & frmHCP-Base.chkP-Hip & 'I' 'ISQL = 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 & 'ISQL = 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 'ISQL = 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) & 'ISQL = 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) & 'ISQL = 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' 0bdArchivo.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 ItSQL = SQL & ' I ,
VDRL
'ISQL = SQL & ' I , Hb 'I
SQL = SQL & I' , Ex-CN 'I
SQL = SQL & , Ex-MN"
SQL = SQL & ' I , Ex-Od I'
SQL = SQL &
,
Pelv-n 'ISQL = SQL & 'I , Pap-n
SQL = SQL & 'I , Colp-n
SQL = SQL & 'I , Cerv-n It
SQL = SQL & ' I , Antqre 'I
SQL = SQL & 'I , Ant-2a
'SQL = SQL & 'I , VDK-Pos-Neg
'SQL = SQL & 'I , RH-Pos-Neg I'
SQL = SQL & 'I
,
SenSQL = 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) & 'ISQL = SQL & 'I , & IIf(frmHCP-Base.txtTa1la =
'"',
"NULL", fmHCP Base.txtTalla) & 'ISQL = 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' ItSQL = SQL & , 'I & IIf(frmHCP-Base.mskVDRL(0) = I' / / 11
,
llNullll, 111ll &Format(fnnHCP-Base.rnskVDRL(O),
"MM/DD/YYYY") & ""') & 'I 'ISQL = 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 'ISQL = SQL & I'
,
'I' & frmHCP-Base.chkExIOd & "ISQL = 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' ItSQL = 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 &
"'
'ISQL = SQL & I' , & frmHCP-Base.chkHosp(0) & 'I
SQL = SQL & ,
"'
& fimHCP-Base.chkTras(0) & 'I1SQL = 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
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 RecordsetDim 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 &
"'
'ISQL = 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
SQL = SQL & ",P Hip = "' & chkP-Hip-Value &
"'
I'SQL = SQL & ",PICirPU = I" & chW-CirPU.Value &
'"
'ISQL = 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 &
"'
'ISQL = 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 &
"'
'ISQL = SQL & ",O-Nac-m=
"'
& txt0 Nac-m.Text & "' "SQL = SQL & ",O-fm-aEmb=
"'
& Format(mskEmb ant.Text, ""/DD/YYYY") & "' 'ISQL = 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 &
"'
'ISQL = SQL & ",Fum=
"'
& chkFum.Value & 'ISQL = 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, -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 FunctionEnd If End Function
Private Sub Fom-Unload(Cance1 As Integer)
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 IfEnd 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()
'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 NextEnd 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
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"))