You are on page 1of 97

EQUIPO DE MEDICIN Y VISUALIZACIN DEL

FLUJO RESPIRATORIO












JOHN ALEXANDER GMEZ SNCHEZ







UNIVERSIDAD NACIONAL DE COLOMBIA
SEDE MANIZALES
FACULTAD DE INGENIERA Y ARQUITECTURA
INGENIERA ELCTRICA


MANIZALES, ABRIL DE 1996





EQUIPO DE MEDICIN Y VISUALIZACIN DEL
FLUJO RESPIRATORIO








JOHN ALEXANDER GMEZ SNCHEZ



Trabajo de grado para optar al ttulo de

Ingeniero Electricista




Director Jurado:

JORGE HERNAN ESTRADA ESTRADA
Ingenierio Electrnico







UNIVERSIDAD NACIONAL DE COLOMBIA
SEDE MANIZALES
FACULTAD DE INGENIERA Y ARQUITECTURA
INGENIERA ELCTRICA


MANIZALES, ABRIL DE 1996
Indice general

Pgina


Introduccin 1

1. Un vistazo a la electromedicina 3

2. Medidas del flujo respiratorio 7


2.1 Pruebas de funcin pulmonar 8
2.2 Algunos test de mecnica pulmonar 10
2.3 Exmenes de la mecnica pulmonar 11
2.4 Sistemas de respiracin mecnica 13
2.5 Medidas de presin en en sistema respiratorio 14
2.6 Medidas de cambios de flujo en el aparato respiratorio 14


3. Instrumentacin en electromedicina 16


3.1 Sensores 17
3.2 Acondicionadores de seal 20
3.2.1 Amplificadores 20
3.2.2 Filtros 22
3.2.3 Conversores A/D y D/A 23
3.3 Visualizador 23
3.4 Control, almacenamiento y transmisin de datos 23



4. Diseo general del sistema 24

4.1 Medicin del flujo respiratorio 25
4.1.1Anemmetro de hilo caliente 25
4.1.2 Amplificador 26
4.1.3 Filtro 27
4.1.4 Conexin con el computador 28
4.2 Diseo de un filtro digital IIR 28



5. Modelo matemtico 30

5.1 Descripcin del proceso 31
5.2 Modelo matemtico 32
5.2.1 El pulmn 33
5.2.2 El sensor 34
5.2.3 Sistema amplificador y filtro anlogo 38
5.3 Anlisis del sistema 39

6. Diseo de software y simulacin 44

6.1 El software 44
6.1.1 Men principal 46
6.1.2 Componentes del sub-men 46
6.1.3 Diagramas de flujo 48
6.2 La simulacin 51


7. Actividades desarrolladas, conclusiones y recomendaciones 53

7.1 Actividades desarrolladas 53
7.2 Conclusiones 55
7.3 Recomendaciones 56



Bibliografa 57

Anexos 60


INTRODUCCIN



Por el aumento de la cantidad de instrumentos mdicos disponibles en el mercado, existe hoy la
necesidad de disear equipos confiables, eficientes y amigables para que el mdico, la enfermera
el auxiliar de hospital puedan manejarlo fcilmente sin ser indispensable que se conozca muy
detalladamente el sistema. Es decir, que la electromedicina se acerca ms a sus clientes
potenciales, sin distanciarse de la tcnica.

La idea que se tiene de construir equipos electrnicos de adecuado desempeo en la medicina
hace que ellos se desarrollen con buena tecnologa, y en el pas es necesario tener instrumentos
mdicos con caractersticas tcnicas adecuadas, de alto rendimiento , de fcil reemplazo de las
piezas deterioradas y por supuesto de bajo costo. Ello permite que los centros asistenciales
pblicos tengan una alternativa tecnolgicamente buena y barata, lo cual se lograr cuando la
ingeniera nacional brinde perspectivas adecuadas en este ramo a la medicina.

El presente trabajo muestra ideas que se deben tener en cuenta al hacer un diseo en
electromedicina, y a la vez que desarrolla un prototipo llamado Unidad de Medida del Flujo
Respiratorio (UMFRESP). Las perspectivas de la posible construccin del dispositivo son
grandes, su costo es relativamente bajo y requiere poco tiempo de desarrollo. El diseo
presentado permite que:
- Se pueda realizar su produccin en serie.
- Obtenga curvas de caudal contra tiempo que ayuden al mdico en el diagnstico de
las enfermedades pulmonares.
- Optimice el consumo de gas Oxgeno , ya que solo suministra gas en la fase de
inspiracin.
2

Aunque la investigacin realizada por el equipo de trabajo del Centro de Instrumentacin
Electrnica de la sede no ha concluido an, es suficiente con lo que se tiene ahora para construir
el UMFRESP.

Con respecto al texto, los primeros tres captulos son una puerta al complejo mundo de la
electromedicina; all se hace una somera descripcin de los sistemas empleados en esta rama de la
ingeniera. Se continua con el diseo general del sistema, de donde se hace el desarrollo del
modelo matemtico, por medio del cual se describen las leyes fsicas que rigen las funciones del
pulmn, del sensor y del sistema de adquisicin de datos. Ello permite elaborar un anlisis del
control a implementar en un futuro, de donde queda abierto el camino para que un grupo
investigativo trate de desarrollar un sistema de control de funciones pulmonares.

Adems se da una explicacin del funcionamiento del software, una simulacin del pulmn para
conocer los posibles patrones de obstruccin, restriccin y normalidad. Por ltimo las
conclusiones y recomendaciones a ser tenidas encuenta ms adelante. El autor espera que este
trabajo ayude a las ingenieras elctrica y electrnica a desarrollar nuevos elementos de juicio para
construir instrumentos en el rea de la salud.


Gracias a todos los que de una u otra forma hicieron posible la realizacin de este trabajo, sin
vuestra ayuda no lo habra logrado.


John Alexander Gmez Snchez.
CAPTULO 1


UN VISTAZO A LA
ELECTROMEDICINA



El hombre a lo largo de la historia, se ha dedicado a evolucionar y mejorar su tecnologa. El
desarrollo alcanzado en el ltimo siglo es notorio, haciendo posibles grandes avances en las
diversas reas del conocimiento, entre ellas se puede mencionar : la informtica, la electrnica, la
medicina, y por consiguiente la electromedicina. En esta ltima se han desarrollado instrumentos
para ayudar al mdico en el diagnstico de las enfermedades. Estos elementos son eficientes,
seguros y actualmente autnomos.

La electromedicina viene avanzando desde la invencin del electrocardigrafo; fue Willem
Einthoven quien en 1903 pudo medir la actividad elctrica del corazn, pues algn tiempo atrs se
haba descubierto que la funcin caracterstica de los rganos del cuerpo es la excitacin elctrica
de las clulas. Este fenmeno se explica por la actividad electroqumica de algunas clases de ellas,
es as, como muchos de los tejidos que conforman el cuerpo humano pueden ser modelados por
medio de circuitos elctricos.

La actividad elctrica del cuerpo es llamada potencial bioelctrico; esta clase de potenciales son
medibles en el ser humano, su amplitud es baja. Ver tabla 1. Por ello cuando se estn tomando
4
los datos es necesario tener buenos amplificadores y filtros capaces de adecuar la seal
convenientemente y que permitan obtener datos confiables en las lecturas. De otra parte, se hace
necesario que el instrumento conectado al paciente cumpla con las reglas generales de
construccin de tales elementos, y por dems que las corrientes generadas no excedan los limites
permitidos para tal efecto, es decir, pueden existir potenciales inducidos al cuerpo humano que
pueden causar daos en tejidos, molestias y/o dolor. Ver tabla 2.
TABLA 1 : Amplitudes y frecuencia tpicas de las seales fisiolgicas
Seales Rango de frecuencia Rango de seal

Electroencefalograma dc - 100 Hz 15 - 100 V
(EEG)

Electromiograma 10 - 200 Hz Depende de posicin
(EMG) de los electrodos.

Electrocardiograma 0.05-100 Hz 10 V (fetal) (ECG)
5 mV (adultos)

Frecuencia cardiaca 45 - 200 latidos/min -

Presin en la sangre dc - 200 Hz 40 - 300 (arterias)
( 10 - 400 mmHg ) 0 - 15 (venas)

Frecuencia respiratoria 0.1 - 10 Hz -
( 2 - 50 resp./min )

Flujo respiratorio dc - 40 Hz -
( 0 -600 litros/seg )

Volumen corriente 0.1 -10 Hz -
( 50 - 1000 ml/resp. )

Fuente : Medical Instrumentation, 1978.

5
En los hospitales existen salas con elementos especializados para medir los potenciales elctricos,
all se realizan exmenes, monitoreos; son llamadas unidades de cuidado intensivo (ICU: Intensive
Care Units), estas requieren tener constantemente energa elctrica para realizar correctamente su
funcin, lo tpico es tener una fuente de poder lo suficientemente buena como para proveer de
energa elctrica al centro asistencial cuando este no recibe la electricidad de una red de
alimentacin general, adems de esto, los equipos de la ICU no pueden generar las corrientes que
se mencionaron anteriormente y que causan daos irreversibles al paciente.
TABLA 2 : Efectos de corrientes elctricas sobre el cuerpo humano
Rango (m A) efecto

1 - 5 Sensacin de Hormigueo

5 - 8 Dolor intenso

8 - 20 Umbral de movimientos involuntarios y
contraccin de msculos.

> 20 Parlisis respiratoria y dolor

80 - 1000 Paro cardiaco

1000 - 10000 Contraccin del miocardio y posibles
daos en los tejidos.

Fuente : Biomedial Digital Signal Processing, 1993
Los equipos que realizan los exmenes, generan datos que son inmediatamente analizados por el
mdico o por el mismo equipo. Si es el mdico, este aplicara todo su conocimiento para tratar de
ayudar al enfermo (Terapia), pero algunas de las decisiones que tome el mdico en ese instante
pueden ser equivocadas, para ello seria interesante consultar una segunda opinin. Con esto el
6
medico hara un diagnostico mas acertado de lo que le sucede a su paciente, el cual mejorara
rpidamente. Un sistema como este, es un sistema experto; hoy da en hospitales con tecnologa
moderna los poseen, esta clase de dispositivos hacen un control en lazo cerrado de funciones
fisiolgicas en pacientes que no las pueden realizar bien. La figura 1 muestra un diagrama de
bloques de tales dispositivos.


Figura 1.

La lnea punteada ha de ser un sistema dedicado o un computador conectado o no a una red
LAN (Local Area Network) en la cual los mdicos analicen las historias clnicas de sus pacientes
y desde su consultorio, examinar al enfermo sin necesidad de estar a su lado, esto es
Automatizar la medicina. Sistemas como este, funcionan actualmente en hospitales
Norteamericanos y Europeos (Tompkins, 1993).

CAPTULO 2

MEDIDAS DEL
FLUJO RESPIRATORIO

El pulmn es un complejo rgano que hace parte del aparato respiratorio, all se realiza un
intercambio gaseoso, entran a la sangre altas cantidades de Oxgeno y salen de ella compuestos
carbonados principalmente Dixido de Carbono; esto como resultado de la transformacin de la
energa. Este proceso involucra las vas respiratorias mayores y menores y la medula Oblongata.
Ver figura 2.

Figura 2. Fuente : Principles of Biomedical Instrumentation and Measurement, 1990

El volumen promedio manejado por los pulmones es de 500 ml de aire, la diferencia de presin
alrededor de ellos (dentro de la cavidad torxica) est entre 2 y 10 cm de agua. El flujo de gas
promedio es de 0 a 600 litros por segundos, el volumen corriente va de 50 a 1000 ml por
respiracin.

8
Las vas areas conducen el aire hacia y desde los pulmones, ellas poseen un coeficiente de
friccin que genera un flujo turbulento dentro de estas cavidades y puede ser medible utilizando
sondas especiales que penetren hasta los alvolos. Cada parmetro es analizado por el
Neumlogo para dar un diagnstico de su paciente. Generalmente existen equipos para pruebas
de funcin pulmonar y sistemas de respiracin mecnica.

2.1 Pruebas de funcin pulmonar
Son tiles cuando el mdico necesita diagnosticar al enfermo del pulmn, adems se hacen
necesarias para verificar si un paciente esta en condiciones de ir a ciruga, para valorar riesgos
industriales; permiten seguir el proceso de un paciente con enfermedad pulmonar crnica y
evaluar su tratamiento, los siguientes son los datos obtenidos por las pruebas :
Capacidad vital forzada (FVC) : Capacidad vital ejecutada espirando tan rpida y fuertemente
como sea posible.
Volumen espiratorio forzado (FEV
t
): Volumen de gas exhalado en un determinado periodo
durante la prueba de la capacidad vital forzada. Es calificado con un subndice que indica la
cantidad de tiempo en que se realiza. Se puede expresar en porcentajes.
Flujo espiratorio forzado (FEF
t
) : Velocidad promedio del flujo en una parte especifica de la
prueba de volumen espiratorio forzado. Esta entre 200 y 1200 ml.
Ventilacin mxima voluntaria (VMV
t
) : Volumen de aire que un sujeto puede respirar con un
esfuerzo voluntario mximo durante un tiempo determinado.

9

Los volmenes para el diagnstico clnico se muestran en la siguiente figura :

Figura 3. Fuente: Principles of Biomedical Intrumentation and Measurements, 1990

Volumen corriente (TV) : El volumen de aire intercambiado cuando el pulmn esta relajado;
nominalmente son 0.6 litros.
Volumen de reserva inspiratoria (IRV) : Es el aire adicional que se puede inhalar con una
mxima inspiracin, despus de una inspiracin relajada . Nominalmente 3 litros.
Volumen de reserva espiratoria (ERV) : Aire adicional que se puede exhalar con una mxima
espiracin, luego de un ciclo de espiracin. Nominalmente 1.2 litros.
Capacidad vital (VC) : Mximo volumen medido al hacer una espiracin completa despus de
una inspiracin lo ms profunda posible, sin esfuerzo rpido o forzado. Nominalmente 5 litros.
10
Volumen residual (RV) : La cantidad de aire que permanece dentro del pulmn despus de un
esfuerzo espiratorio. Nominalmente 1 litro.
Capacidad residual pulmonar (FRC) : Cantidad de aire que est en el pulmn despus de una
espiracin relajada. Normalmente 2.2 litros.
Capacidad total del pulmn (TLC) : Normalmente 6 litros.


2.2 Algunos test de mecnica respiratoria
Pueden ser divididos en dos grupos :
Test de transporte de gases
Se realizan para ver el movimiento de molculas de gas entre la atmsfera y la sangre, son
desarrollados para determinar el intercambio gaseoso entre los conductos abiertos y los alvolos,
adems, el transporte de gas entre el alvolo y el tejido capilar de la sangre cerca a los pulmones.
Las pruebas dan como resultado:
- Homogeneidad del gas inspirado (ventilacin).
- Relacin de ventilacin a perfusin.
- Evaluar la habilidad de la membrana alveolar para la transferencia de gas.
En el sistema respiratorio no se pueden hacer directamente lecturas en algunos sitios de inters, el
acceso es solamente disponible cerca a los lmites del sistema (el conducto abierto) y el sistema
circulatorio. El transporte de gas por los pulmones puede ser obtenido desde la medida de
presiones parciales de Oxgeno y gas Carbnico en una muestra de la sangre arterial. La suma de
11
presiones parciales , es aproximadamente 140 mm; si el resultado es menor de 120 mm, esto se
considera anormal. Esta clase de test requieren de otros gases para evaluar el volumen del
pulmn, algunos de ellos son el Helio, el Nitrgeno, el Argn, el Nen, el Xenn.


2.3 Exmenes de la mecnica pulmonar :
Son los que se realizan generalmente para observar la cantidad de volumen dentro del pulmn,
los flujos inspiratorios y espiratorios y las diferencias de presin. Tambin determinan los defectos
que producen las presiones, los flujos y los volmenes anormales. Al realizar los exmenes, el
Neumlogo puede determinar si se trata de una obstruccin o de una restriccin, la primera es de
tipo dinmico y la segunda de tipo esttico, esto quiere decir que la obstruccin esta asociada con
los cambios de volumen, de flujo de gas, mientras que la restriccin es el anlisis de volmenes y
el comportamiento como tal de las funciones pulmonares.
- Pruebas estticas: Esta clase de pruebas pueden ser obtenidas mediante la medida de la
cantidad de volumen en los pulmones y la diferencia de presin transpulmonar para varios
volmenes mientras no existen movimientos en el sistema. Los sistemas pulmonares exhiben una
histresis plstica, la relacin P-V puede hacer que se observe en la fibrosis pulmonar, la
Neumona, el enfisema pulmonar, todo esto de acuerdo con los datos obtenidos.

12
- Pruebas dinmicas: El cambio de la presin transpulmonar expresada en funcin de los
cambios de volumen en el pulmn y el cambio del flujo de volumen es la caracterstica de estas
pruebas.
Como el comportamiento de los alvolos es puramente elstico, los parmetros de obstruccin en
los grandes conductos abiertos puede ser descrito por: el mximo flujo espiratorio (PEF) y la
mxima capacidad respiratoria (MBC).

PEF : El mayor flujo instantneo para el conducto abierto que el paciente puede producir durante
una mxima espiracin forzada .

MBC : El promedio del flujo espiratorio producido cuando se inhala y exhala rpidamente.

El desempeo del sistema respiratorio es no lineal cuando existe un pequeo volumen y una alta
frecuencia, pero cuando se tiene gran cantidad de volumen, se comporta linealmente. Dos
mtodos alternativos para visualizar los eventos dentro de la espiracin forzada son :
- El cambio de volumen en el espirmetro.
- La integral del flujo del volumen espirado.
La siguiente grfica muestra las curvas tpicas de obstruccin y restriccin pulmonar.
13

Figura 4. Fuente : Medical Instrumentation, 1978

2.4 Sistemas de respiracin mecnica
Se requieren en las ICU, cuando el paciente no puede realizar de manera aceptable las funciones
pulmonares, este equipo facilita al enfermo la cantidad necesaria de gas Oxgeno para realizar sus
funciones vitales. Existen dos clases de dispositivos reguladores de flujo suministrado al paciente,
uno de flujo constante y otro de solo flujo inspiratorio. El primero no requiere instrumentacin,
mientras el segundo es un sistema de control en lazo cerrado que necesita sensores, unidad de
procesamiento de seales y actuadores.

14
2.5 Medidas de presin en el sistema respiratorio.
En el sistema respiratorio se requieren leer presiones tanto dentro como fuera del pulmn, para
ello es necesario tener instrumentos capaces de hacer dichas lecturas. En la diferencia de presin
transpulmonar, se tienen dos componentes:
- Diferencia de presin transpulmonar esttica, ella es funcin de los cambios de volumen en el
sistema.
- Diferencia de presin transpulmonar dinmica, se relaciona con los cambios de flujo.
Los trasductores utilizados para esta clase de medidas contienen galgas extensiomtricas (strain-
gage), ya que usar otra clase de sensores puede ser perjudicial para la salud del paciente. Una
de las lecturas que comnmente se realiza es la de la presin intraesfaga, este tipo de medida
requiere de sensores de presin diferencial de muy alto desempeo, puesto que los cambios solo
deben de ser detectados en el rgano especifico, es este caso el esfago.


2.6 Medidas de cambios de flujo en el aparato respiratorio.
Cuando se realiza el proceso de respiracin, los pulmones hacen un cambio convectivo en el flujo,
puesto que realizan una transferencia de aire y masa. Las principales caractersticas de los
flujmetros, es que sean sensibles, seguros y no se vean afectados por la composicin del gas que
se mide, ni por su temperatura de operacin. Muchas partculas inhaladas de la atmsfera que
luego son espiradas por los pulmones pueden posarse sobre partes delicadas de los sensores y
15
contaminarlos. Uno de los mayores contaminantes de tales dispositivos es el vapor de agua, este
es condensado por el equipo y puede causar una falla en las lecturas.
Los flujmetros mas utilizados para hacer las medidas son:
- De aspas rotatorias: Son muy similares a pequeas turbinas, la rotacin de ella es
proporcional al flujo que circula, tienen coeficientes de friccin altos para tratar de prevenir los
movimientos en altas frecuencias; esto impide el uso de este sensor como elemento bidireccional.
- Ultrasnicos : Esta clase de instrumentos utilizan el efecto Doppler para hacer sus medidas, los
materiales que reciben las ondas que chocan son piezoelctricos, el emisor y el receptor son
diametralmente opuestos. Son muy usados en equipos de ICU, pues son seguros, lineales y
bidireccionales.
- De conveccin trmica : Utilizan sensores como pelculas metlicas, hilos metlicos,
termistores y otros. Su principio de operacin se basa en el cambio de su resistencia con la
temperatura, el principal problema que poseen es la contaminacin debido a la humedad del gas
que estn sensando.
- De presin diferencial : Se basan en la aplicacin de la ecuacin de continuidad de Bernoulli,
producen una diferencia de presin en el conducto de medida, son lineales, sensibles, seguros y
de inmejorable respuesta a las frecuencias respiratorias.



CAPTULO 3


INSTRUMENTACIN
EN ELECTROMEDICINA

El desarrollo en la tecnologa electrnica ha alcanzado niveles insospechables desde el
descubrimiento del transistor, hoy da los circuitos integrados VLSI y los sistemas de
procesamiento permiten que las diferentes ciencias sean beneficiadas de alguna manera por tales
avances, a ello no escapa la electromedicina. En esta rea del saber se encuentran sistemas de
instrumentacin, algunos de ellos sencillos, otros complejos; en fin. Algunos de ellos poseen una
estructura similar a la presentada en la siguiente figura.

17

Las seales que son constantemente ledas en los instrumentos poseen valores pequeos, por ello
se requiere que los diferentes equipos utilizados sean confiables, que no introduzcan ruido dentro
del sistema y que cumplan con las caractersticas estticas y dinmicas usadas para tal propsito.

3.1 SENSORES
Los trasductores o sensores son dispositivos que convierten una variable en otra, generalmente
una de las dos es elctrica. Su funcin es medir parmetros fsicos tales como movimiento,
temperatura, fuerza, posicin, presin, flujo, etc. En algunos casos, la conversin entre variables
se realiza en etapas, con una variable intermedia. De acuerdo con ISA transducer compendium,
algunos de los modelos ms comerciales de trasductores son los de resistencia variable,
inductancia variable, capacitancia variable, generadores de electricidad, en la tabla 3 se pueden
observar algunos de ellos.
Los sensores en electromedicina son clasificados de acuerdo a:
1- Variable a ser medida:
Presin, temperatura, volumen, flujo.
2- Principio de funcionamiento del trasductor :
Resistivo, inductivo, ultrasnico, electromecnico.
3- La especialidad mdica:
Pediatra, Neurologa, Obstetricia, Neumologa, Cardiologa.
4- El sistema fisiolgico analizado:
Respiratorio, nervioso, cardaco, digestivo.
18
La seleccin de un trasductor se realiza por medio de unos parmetros fsicos de operacin, ocho
de ellos son:
1. Rango de operacin.
2. Sensibilidad.
3. Respuesta en frecuencia y frecuencia resonante.
4. Mnima sensibilidad.
5. Seguridad.
6. Robustez.
7. Parmetros elctricos.
8. Compatibilidad con el ambiente.
TABLA 3 : Tipos de trasductores comerciales ms usados
Sensor Naturaleza del dispositivo Cantidad medida


Resistencia variable:
- Deslizante Vara la resistencia por el Dimensin,
deslizamiento, restatos, desplazamiento.
potencimetros.

- Galga Cambia su resistencia por Fuerza, torque,
extensiomtrica la deformacin. presin.

- Termistor Vara con la temperatura. Temperatura, calor
radiante.

- De hilo caliente Modifica su resistencia Cambios de flujo,
de acuerdo con el paso de turbulencias, densidad
aire. de gases.



19

TABLA 3 : Tipos de trasductores comerciales ms usados (cont.)
Sensor Naturaleza del dispositivo Cantidad medida


Inductancia variable:
- Galga con intervalo Cambia por la variacin de Espesor, presin,
de aire. trayectoria. desplazamiento.

- Reluctancia La reluctancia vara con la Posicin, vibracin,
posicin del material desplazamiento.

- Tranformador Vara con la posicin del Desplazamiento,
diferencial. ncleo de hierro presin, fuerza.


Capacitancia variable:
- Capacitor ajustable Vara la capacitancia Desplazamiento,
por la variacin del rea presin.
entre las placas.

- Galga dielctrica Vara por los cambios del Nivel de liquido,
dielctrico. espesor.


Generadores de
de electricidad:
- Generador de ncleo Movimiento relativo del Velocidad de vibracin.
mvil ncleo produce voltaje.

- Material piezoelctrico Cristales, generan voltaje Vibracin, sonidos,
por medio de presin. aceleracin, presin.

- Celda fotovoltaica. Generan voltaje a partir de Medicin de intensidad
la luz . lumnica, bateras
solares.

Fuente: Electronic Instrumentation and Measurements, 1983

20

3.2 Acondicionadores de seal
Usualmente la lectura realizada por el trasductor no puede ser enviada directamente al sistema
visualizador, para ello existen elementos que mejoran la calidad de la seal adquirida
(amplificadores y filtros), y luego son convertidas a forma digital para ser procesadas por sistemas
discretos. Durante este proceso se distinguen dos clases de seales, la anloga, que varia a travs
del tiempo y posee un infinito nmero de valores, y la digital que es tomada peridicamente ; su
procesamiento exige de conversores de seales continuas a peridicas, pues las variables fsicas
generalmente son anlogas. Se observa que los sistemas digitales tienen ventajas como por
ejemplo la seguridad, repetibilidad, inmunidad al ruido y rapidez.

La influencia que tiene el ruido en las seales o potenciales biolgicos medidos es fuerte., ya que
al introducirse este en el sistema, altera la seal leda de manera notable. La precaucin a tomar
en esta clase de sistemas es la de colocar drenadores de ruido o filtros como generalmente se
conocen.


3.2.1 Amplificadores:

Su misin dentro del sistema es adecuar la pequea seal adquirida por el trasductor, son usados
como enlace por los sensores que detectan movimientos del cuerpo, temperatura,
concentraciones qumicas u otras variables fsicas. Mediante ellos se altera la seal benficamente,
21
adems, se producen efectos indeseados que modifican las lecturas. Dentro de las caractersticas
tpicas de estos dispositivos cuando van a ser usados en instrumentacin mdica se encuentran:
1. Seguridad.
2. Precisin.
3. Pequea histresis.
4. Linealidad.
5. Banda muerta relativamente corta.
6. Buen ajuste de cero.
7. Relacin de rechazo en modo comn elevada (CMRR > 80 dB).
El siguiente esquema muestra alguna de las configuraciones usadas frecuentemente.

22
Tambin son empleados en los filtros activos anlogos (Pasa altos, pasa bajos, etc), sus esquemas
se presentan a continuacin .

3.2.2 Filtros:
Esta clase de elementos separan seales de acuerdo a sus componentes en frecuencias, esto se
hace siguiendo un criterio especifico. Su ubicacin dentro del sistema de adquisicin de datos es a
la entrada del instrumento de medida o despus de la etapa de amplificacin. Para el primer caso
se utilizan compensadores de tipo mecnico, hidrulico, neumtico, trmico o elctrico. Cuando
estn a la salida, son usados para filtrar de la seal deseada el ruido generado por el circuito
electrnico y el ambiente, su implementacin se logra con elementos anlogos (resistor, capacitor,
amplificador operacional ) y/o digitales (circuitos discretos, programa en computador, en la figura
se pueden observar algunos filtros anlogos.

23
3.2.3 Conversores A/D y D/A
La funcin es transformar la seal desde un sistema al otro, para manejar la informacin de una
forma adecuada. Los mtodos empleados para tal conversin son diversos, algunos de los ms
usados son el de rampas sucesivas, la conversin paralela y las aproximaciones sucesivas.

3.3 Visualizador
Los resultados del proceso de medida deben ser visualizados de tal forma que el encargado de
manejar el sistema pueda observarlos en cualquier instante. la mejor forma puede ser grfica o
numrica, continua o discreta, permanente o temporal, La escogencia de cualquiera de ellas
depende directamente de la clase de informacin que se este manejando. Algunas veces se
acompaan por seales audibles.
En la actualidad el medio mas eficiente para la observacin de los datos es el Tubo de Rayos
Catdicos (CRT), aunque si las grficas no son necesarias se pueden utilizar display de cristal
liquido (LCD).

3.4 Control, almacenamiento y transmisin de datos.
Estas tres operaciones son opcionales en los sistemas de medicin; el control de variables
humanas se realiza con elementos altamente seguros y confiables, pues de ello depende
generalmente la vida del paciente. El almacenamiento y transmisin de datos se implementa
usando sistemas con microprocesadores que manejan la informacin del individuo
estadsticamente, para luego ser analizada por el equipo o por el personal medico.
CAPTULO 4

DISEO GENERAL DEL EQUIPO

La arquitectura del sistema de medicin general estuvo basada en el computador. Se decidi as,
pues es bien conocido que el microcomputador se ha configurado como un instrumento ideal para
manejar informacin generada por variables fsicas del mundo real, gracias a la presencia de una
tarjeta de interfase.

Es necesario apoyarse en un trasductor para convertir la naturaleza de las variables en
electricidad, es as como para el caso de medicin del flujo respiratorio se requiere un trasductor
que sea capaz de convertir el caudal circulante en corriente elctrica. Como su seal de salida es
baja en magnitud (unos cuantos milivoltios), se necesita amplificar la seal y adems filtrarla.

Una vez la seal ha sido amplificada es posible digitalizarla mediante un conversor anlogo/digital
presente en la tarjeta de interfase (DASH8); finalmente el microcomputador lee, memoriza y
procesa. Esto gracias a un programa especial denominado UMFRESP.
25

4.1 Medicin del flujo respiratorio
4.1.1 El anemmetro de hilo caliente
Aparecen dos formas bsicas de anemmetros de hilo caliente :
- Corriente constante
- Temperatura constante
Ambos tipos utilizan el mismo principio, pero en forma diferente. El sistema empleado aqu es el
de corriente constante.

4.1.1.1 Principio de funcionamiento:
Un alambre fino se calienta al paso de una corriente elctrica. Al exponerse al flujo tiende a
enfriarse. El hilo puede alcanzar una temperatura de equilibrio cuando el calor generado se iguala
con lo perdido por conveccin.

Se diseo el circuito electrnico de manera que la cantidad de calor producida sea constante as,
debe suministrarse un mecanismo de control que permita el autoajuste con el fin de alcanzar el
equilibrio. El equilibrio de temperatura se vuelve una funcin de la variable de la velocidad del
fluido ya que el coeficiente de conveccin depende tambin de la velocidad.


26
4.1.1.2 Diagrama bsico del anemmetro de corriente constante:
4.1.1.2.1 Excitacin del hilo
Esto se logr mediante una fuente de corriente constante basada en un regulador de voltaje el
LM7805 tal como se muestra en el siguiente diagrama :

Basndose en investigaciones realizadas anteriormente en el laboratorio de Hidrulica de la sede
(Estrada, 1992), se decidi utilizar el filamento de tungsteno presente en las bombillas de linterna ,
en una configuracin en paralelo para ampliar el rango del sensor; y evitar su fcil deterioro; el hilo
es ms resistente que el utilizado por el grupo investigativo de la Universidad en el estudio de los
modelos hidrulicos de Miel (1989).
27

4.1.2 Amplificador
Ya que el voltaje de salida del hilo presenta un desfase de 180 con respecto a la velocidad del
fluido, es necesario efectuar un cambio de fase adicional de 180 y as logra que los cambios
estn en fase a la entrada del filtro, la ganancia del amplificador es de 56.

4.1.3 Filtro anlogo
Es necesario adecuar la seal amplificada y eliminar de ella los componentes de frecuencia
elevada, un filtro pasa-bajos como el descrito anteriormente para un frecuencia de corte de 30
Hz, pues las seales generadas por el flujo respiratorio generalmente son de baja frecuencia.
28
4.1.4 Conexin con el computador
Se realiza mediante una interfase basada en la tarjeta de adquisicin de datos DASH8 diseada
por Metrabyte Corporation, el siguiente esquema muestra su funcionamiento:

4.2 Diseo de un filtro digital IIR
Para la adecuada visualizacin de las grficas en el computador se utiliza un filtro digital IIR
(Tompkins, 1993), esto ayuda a que no se presenten distorsiones en las curvas registradas. Este
no es incluido en el modelo matemtico del sistema, ya que solo se utiliza para visualizar la lectura
de la tarjeta.



29
El diseo se realiza de acuerdo al mtodo de r y q para un filtro digital de dos polos, su
descripcin es hecha por medio de la transformada Z, la frmula que a continuacin se presenta
es su forma cannica:
F z
a z a z
b z b z
I
( )
+ +
+


1
1
1
1
2
2
1
1
2
2

Para los filtros pasa-bajos los a
1
, a
2
coeficientes son determinados por tablas (Tompkins, 1993),
para este caso son :
a
1
= 2
a
2
= 1
Los coeficientes b
1
, b
2
se determinan por medio de la siguiente frmula :
b r b r
1 2
2
2 cos( )

donde :

_
,

2
f
f
c
s

Como se requiere un filtro para frecuencias mayores de 20 Hz, y teniendo una frecuencia de
muestreo de 200 Hz en promedio, es necesario seleccionar un valor de r apropiado, para este
caso (r = 0.5), aplicando la frmula se tiene que : b
1
= 0.809 b
2
= 0.25
Entonces la ecuacin del filtro pasa bajos, que ayuda a la correcta visualizacin de la curva es :
F z
z z
z z
20
1 2
1 2
1 2
1 0 809 0 25
( )
. .

+ +
+



El diseo de este filtro digital se realiza por software.
CAPTULO 5


MODELO MATEMTICO

En ingeniera, el modelado de un sistema es una representacin del comportamiento fsico ;
generalmente contiene informacin necesaria para desarrollar un diseo satisfactorio. La dinmica
de muchos sistemas fsicos resulta por la prdida, almacenamiento y/o la transferencia de energa.
Para un sistema dado, se deben de escoger las leyes fsicas apropiadas y de acuerdo a ellas
encontrar la descripcin adecuada del sistema, las leyes mas usadas son:
1. Conservacin de masa.
2. Conservacin de energa.
3. Leyes de Newton.

5.1 Descripcin del proceso
El proceso de la respiracin humana es desarrollado por un rgano llamado pulmn, su funcin es
hacer el intercambio gaseoso para que todo el organismo (Cuerpo humano) pueda realizar cada
tarea. Al respirar, el pulmn genera un flujo de aire que puede ser positivo (inhalacin) o negativo
(espiracin). El sistema de medida (sensor), debe cambiar su resistencia cuando aparezca el flujo
en cualquiera de las direcciones, este cambio es proporcional a la circulacin de aire que aparece
en los alrededores del hilo caliente. Cuando se detecta esta seal, los cambios producidos por el
trasductor deben ser amplificados, adems de ello filtrados y finalmente graficados.


31

5.2 Modelo matemtico
5.2.1 El pulmn:
A continuacin se describe el fenmeno dinmico de los pulmones (Webster, 1978), este proceso
puede ser explicado de una manera macroscpica o microscpica de acuerdo a las mismas
condiciones de comportamiento de l. Cuando los flujos son altos, el comportamiento del sistema
respiratorio es no lineal, pero la mayora de las veces, los flujos son pequeos, por ello es
conveniente aplicar parmetros de linealizacin de sistemas para analizarlos sencillamente.
El sistema puede ser descrito por la siguiente ecuacin:
P P P P P P p AWO PL AWO PL L L
L

_
,

_
,

donde:
P AWO

: Presin en el conducto abierto


PPL

: Promedio de fuerza por unidad de rea actuando en la regin Pleural.


P AWO

: Valor de referencia en el conducto abierto.


PPL

: Valor de referencia en la regin Pleural.


pL
: Diferencia de presiones en el pulmn.


32

Dentro de el pulmn existen pequeos componentes fundamentales, ellos son los alvolos; su
desempeo es elstico, se describen por medio de ecuaciones lineales:
p p R q
p p
C
v
p p p
C
v
AWO A AW AWO
A PL
STL
L
MUS PL BS
STW
L



( )
( )
( ) ( )
1
1
2
1
3

De donde cada componente de la ecuacin es:
pA
: Presin representativa dentro del pulmn
RAWO
: Resistencia del conducto.
p
MUS
: Representacin del promedio de fuerza por unidad de rea de los msculos en la
respiracin.
CSTL
: Compliance esttica del pulmn.
CSTW
: Compliance esttica de las paredes de la cavidad pulmonar.
Las letras cursivas identifican los cambios de la variable en un punto especfico, es decir, las
ecuaciones se evalan en cada alvolo. Los elementos que constituyen esta frmula son
parmetros definidos por medio de determinadas caractersticas.

La resistencia al paso del aire es definida como la variacin de la presin con respecto al caudal
circulante, de otro lado los cambios de volumen para una diferencia de presin dada, determinan
la Compliance esttica. A partir de esto se obtiene:


33

R
P
Q
R
P P
Q
C
V
P
C
V t V t
P t P t
C
V t V t
P t P t
AWO
AWO A
AWO
ST STL
L L
L L
STW
L L
W W



( ) ( )
( )
( ) ( )
( ) ( )
( ) ( )
( ) ( )



de donde :
de aqui :

2 1
2 1
4 3
4 3

t
1
,t
2
: Instantes en los cuales el sistema esta inmvil.
t
3
,t
4
: Tiempos con el sistema relajado.
Tanto el comportamiento esttico del pulmn, como el de las paredes se basa en el equilibrio del
sistema, para ello, la siguiente frmula describe esta situacin:

P P P
P P P
L AWO PL
W PL BS


( )
( )
(4)
(5)

En donde :
PBS
: Presin hidrosttica sobre la superficie del cuerpo.
Ahora se aplica una nueva descripcin del sistema en donde se relacionan la presin en el
conducto y la regin Pleural.
p p
C
v R v
p p p
C
v
AWO PL
STL
L AW L
MUS PL BS
STW
L
+
+

1
1


(6)
(7) ( )

Es necesario expresar las presiones dentro del pulmn con respecto a las variables para analizar
el sistema, si de (7) se despeja
pPL
y reemplaza en (6) se obtiene :
p
C
v p p
C
v R v
AWO
STW
L BS MUS
STL
L AWO L
+

1
]
1
+

1 1
(8)


34

Como v q dt L AWO
t

0
y
v q L AWO

entonces (8) queda:


p p p
C C
q dt R q
AWO BS MUS
STL STW
AWO AW AWO
t
+ +

1
]
1
+

1 1
0
(9)
Realizando la suma de (4) y (5) se encuentra que :
P P P P L W AWO BS +

P P p p L W AWO BS +


Ahora en (9) se puede escribir con respecto a la diferencia de presiones propias del pulmn:
P P P
C C
q dt R q p
L W MUS
STL STW
AWO
t
AW AWO TL
+ + +

1
]
1
+

1 1
0

Hallando la transformada de Laplace y encontrando la funcin de transferencia se tiene :
p s
s C C
R q s
TL
STL STW
AW AWO
( ) ( ) +

1
]
1
+

'

1 1 1

q s
p s
C s
R C s
AWO
TL
STR
AW STR
( )
( )

+ 1
(10)
Donde :
1 1 1
C C C STR STL STW
+


5.2.2 El sensor :
En la respiracin, el flujo inspirado o exhalado transfiere calor al hilo, es decir se produce un
intercambio por conveccin. El modelo lineal de circulacin de calor es funcin de la diferencia de
temperatura y dada por la ley de intercambio de calor de Newton.


35

q T h

Esto implica que:

: Resistencia trmica .

qh
: Energa trmica.

T
: Diferencia de temperatura.
La resistencia trmica por conveccin es determinada de acuerdo a :

1
h A


Donde:
h
: Coeficiente de transferencia.
A
: rea efectiva.
Si se expresa la energa trmica transmitida al cable, de acuerdo a esta ltima ecuacin, se tiene:
q h A T h

La energa trmica puede ser relacionada con la energa elctrica, para ello es indispensable usar
un coeficiente de conversin.
P K q
P K h A T
E
C
h
E
C



El coeficiente de transferencia (h) es definido cuando se realizan intercambios trmicos por
conveccin, su comportamiento es lineal en ciertos rangos de operacin, las variaciones de
temperatura producidas por el flujo respiratorio estn dentro del margen de funcionamiento lineal
del sensor, ello se relaciona de la siguiente manera :


36

h C C V + 0 1
(11)
Donde :
V
: Velocidad del fluido.
C C 0 1 ,
: Coeficiente de Linealidad, depende del material.
A continuacin se modela un anemmetro de hilo caliente de corriente constante (Doebelin,
1976), el cual va ha ser utilizado en el sistema de lectura del flujo respiratorio. Para ello es
necesario conocer las condiciones de equilibrio trmico; en este caso la siguiente frmula lo define
como:
( )
I R K h A T T
W C W F
2
(12)
De hecho :
I
: Corriente del hilo
RW
: Resistencia del hilo.
KC
: Factor de conversin (potencia trmica a elctrica).
TW
: Temperatura del cable.
TF
: Temperatura del fluido.
El desempeo de hilo se desarrolla de acuerdo a la ley de conservacin de energa, en donde:
E
SW
= E
EG
- E
LC
(13)


37

All :
E
SW
: Energa almacenada por el hilo.
E
EG
: Energa elctrica generada.
E
LC
: Energa perdida por conveccin.
La energa perdida por conveccin es definida por :
( )
E K h A T T
LC C W F

Adems, la temperatura del cable puede ser hallada en funcin de la resistencia inicial del cable
R
WO
, la resistencia de variacin
r
W
y un coeficiente de temperatura recproca en la resistencia
KTR ; como se mencion anteriormente, los cambios inducidos al hilo son proporcionales a la
variacin del flujo:
( )
T K R r
W TR WO W
+
El coeficiente de transferencia de calor puede ser linealizado de la siguiente forma:
( ) h V C C V C C V
h
V
V V
V V
( ) + + +

0 1 0 1 0 0
0


Definiendo
( )


h
V
K V V
V V
V


0
0 ,

Se tiene que la energa perdida por conveccin en el hilo es:
( ) ( ) ( )
E K A K R r T C C V K
LC C TR WO W F V
+ + + 0 1 0 (14)
La energa elctrica para este caso, es definida como:
( ) E I R I R r
EG W WO W
+
2 2
(15)


38

La capacidad que posee el cable para almacenar energa internamente , es dada en virtud de los
cambios de temperatura cuando recibe un flujo neto de calor.
E mC
d T
d t
SW
p
W
(16)

Agrupando (14), (15), (16) en (13) para aplicar la ley de conservacin de la energa se tiene:
( ) ( ) ( ) ( )
m C
d T
d t
I R r K A K R r T C C V K p
W
WO W C TR WO W F V
+ + + +
2
0 1 0

Como
( )
T K R r
W TR WO W
+ puede ser definida en funcin de la resistencia inicial y la variacin
de ella con respecto al flujo, entonces esta ltima ecuacin ser:
( ) ( ) ( ) ( )
m K C
d r
d t
I R r K A K R r T C C V K
TR
p
W
WO W C TR WO W F V
+ + + +
2
0 1 0

En equilibrio inicial se tiene que :
( )
( )
I R K A K R T C C V
K A K K r
WO C TR WO F
C TR V W
2
0 1 0 0
0
+


Finalmente, el anemmetro de hilo caliente y corriente constante es definido como :
( ) ( ) m K C
d r
d t
I r K AK C C V r K A K R T K
TR
p
W
W C TR W C TR WO F V
+
2
0 1 0
Buscando la transformada de Laplace y la funcin de transferencia se encuentra que :
( )
( )
r s
s
K A K R T K
m K C s K K A C C V I
r s
s
K
s
W C TR WO F V
TR P C TR
W
( )
( )
( )
( )


+ +

+
0 1 0
2
1
(17)


donde:


39

( )
( )
( )
K
K A K R T K
K K A C C V I
m K C
K K A C C V I
C TR WO F V
C TR
TR P
C TR

+
0 1 0
2
0 1 0
2



5.2.3 Sistema amplificador y filtro anlogo :
Para el procesamiento de la seal, se hace necesario, amplificar la seal y por supuesto, filtrarla;
es as como con las frmulas descritas anteriormente (Capitulo 3), tomamos las correspondientes
al amplificador inversor y al filtro pasa-bajos, la funcin de transferencia que lo define es:
G
K
s
AF
A
F

+ 1

donde:
KA : Ganancia del amplificador.

F
: Constante de tiempo del filtro.
5.3 Anlisis del sistema
El sistema de adquisicin de datos anlogo es determinado por la siguiente funcin :
( ) ( ) ( )
G
A s
s s s
AS
T
F W L

+ + + 1 1 1

Desarrollando el polinomio del denominador, se obtiene que :
( ) ( ) ( )
L W F W F L W F F W L
s s s
3 2
1 + + + + + + +
Ms simple :
b s b s b s b 0
3
1
2
2 3 + + +

Ahora la funcin del sistema es :
G s
a s
b s b s b s b
AS ( )
+ + +
2
0
3
1
2
2 3



40

Como: G
V s
p
AS
O
TL

( )


Entonces :
V s
p
a s
b b s b s b s
O
TL
( )


+ + +


2
2
0 1
1
2
2
3
3
(18)
Luego de hallar la funcin que describe el sistema se busca transformarla en ecuaciones de estado
para hacer un anlisis de la posible controlabilidad y observabilidad del sistema (Chan, 1972;
Kuo, 1991). La conversin es:
X s
b
p
b
b
s X s
b
b
s X s
b
b
s X s
TL
( ) ( ) ( ) ( )

1
0
1
0
1 2
0
2 3
0
3


La forma cannica de las variables de estado son:
X AX BU
Y CX DU

+
+

Entonces :
[ ]
X
X
X
b
b
b
b
b
b
X
X
X
b
a
X
X
X
1
2
3
3
0
2
0
1
0
1
2
3
0
2
1
2
3
0 1 0
0 0 1
0
0
1
0 0

1
]
1
1
1
1

1
]
1
1
1
1
1

1
]
1
1
1
+

1
]
1
1
1
1
1

1
]
1
1
1
U
Y

Al tener ya esta representacin, se busca la controlabilidad del sistema, dada por:
[ ]
B AB A B
2




41

donde:

1
]
1
1
1
1
1
1
1

0 0
1
0
1
1
1
0
0
1
0
2
0
1
0
2
0 2 1
2
0
3
0
3
b
b
b
b
b
b
b
b b b
b
b
; det
Entonces, el sistema es controlable.
Ahora la observabilidad del sistema se define con la siguiente formula:
( )
[ ]
C A C A C
T T T T T
2

De donde,

1
]
1
1
1
1
a
b
b
a b
b
2
3
0
2 3
0
0 1 1
0 0
1 0 0
; det

Por consiguiente el sistema descrito por (18) es observable.
Luego de investigar la probable controlabilidad del sistema de adquisicin de datos, y de
acuerdo al anlisis anterior se puede decir que:
El sistema respiratorio, el sensor y sus acondicionadores de seal se describen por medio de
ecuaciones de estado de tercer orden, si se desea aplicar un proceso de control sobre el sistema,
este ser el desplazamiento de polos que es apropiado para ello . La teora de control
convencional se aplica a sistemas lineales, invariantes en el tiempo y de una entrada y una salida,
en nuestro caso el sistema modelado es una idealizacin de cada uno de los componentes que lo
conforman, por ello es mejor utilizar mtodos para el control ptimo basados en la reubicacin de
polos (Ogata, 1993; Avendao, 1995), el cual consiste bsicamente en determinar una seal de
control que sirva como retroalimentacin de estado, de tal modo que:


42

U kX

Donde
k : Matriz de ganancia de retroalimentacin de estado.
Entonces el sistema definido por la ecuacin cannica de las variables de estado quedar:
X A Bk X

( )

Para hacer un desarrollo apropiado al desempeo del sistema, se requieren definir los nuevos
polos as:
P s s s
d n
( ) ( ) . . . ( )
1 2

Donde el valor de n esta definido como el rango de la matriz A. Luego de apreciar las nuevas
condiciones del sistema, se necesita hallar la matriz de retroalimentacin k para la cual el sistema
funcionar satisfactoriamente. (Frmula de Ackermann).
k e A
1


n D
( )
De donde:
e
n
: Ultima fila de la matriz de identidad
: Matriz de controlabilidad.

D
(A) : Matriz de coeficiente de polos deseados, es definida por:

D
( ) A A A A I
3 2
0
+ + +
2 1

De esta ultima ecuacin

n
es el coeficiente de
s
n
en el desarrollo del polinomio de polos
deseables.


Para nuestro caso:


43

[ ]
k
+

1
]
1
1
1
1
1
1
1

1
]
1
1
1
0 0 1
1
1
0
1
0 0
0 2 1
0
4
1
0
3
0
2
1
0
3
0
2
0
2
11 12 13
21 22 23
31 32 33
b b b
b
b
b b
b
b b
b
D D D
D D D
D D D




Desarrollando se obtiene que :
[ ]
k
1
0
2 11 12 13
b
D D D


A simple vista este resultado nos da a pensar que el sistema respiratorio, el sensor y el
acondicionador pueden ser controlados; el control del primero vale la pena que sea estudiado con
mayor detalle para permitir construir un sistema ptimo de control pulmonar.
CAPTULO 6


DISEO DE SOFTWARE
Y SIMULACIN

Un sistema de adquisicin de datos como el diseado, requiere un elemento visualizador, y poseer
un mtodo de procesamiento de datos en tiempo real que ayude a analizar el flujo respiratorio.
Adems de ello que permita un monitoreo constante del paciente de una ICU y porque no un
control sobre el aparato respiratorio que puede servir para asistir al enfermo o como elemento de
terapia, aqu se puede pensar en un equipo dedicado o en un computador personal; este ltimo
es mas fcil de implementar y tiene una ventaja con respecto al sistema dedicado, ya que requiere
de un menor tiempo de desarrollo del sistema. A continuacin, se observan algunas pautas
seguidas a lo largo de la realizacin del programa de medida del flujo respiratorio.

6.1 El software
En esta parte, se explican algunos de los ms importantes procedimientos y funciones del
software; son realizados en Turbo Pascal 7.0, sus ventajas son grandes con respecto a otros
lenguajes de programacin, aunque tiene restricciones de manejo en hardware.

A continuacin se muestra un esquema simplificado del men de la Unidad de Medida del Flujo
Respiratorio (UMFRESP), diseada en el Centro de Instrumentacin Electrnica de la
Universidad Nacional de Colombia, sede Manizales.
45

El manejo de interfases grficas agradables al usuario se hace necesario para brindarle un entorno
amigable y que permita una presentacin adecuada del programa, los movimientos en el men se
realizan con las flechas del teclado, ms adelante se puede pensar en implementarlo con mouse.
46

6.1.1 Men principal:

Se tienen dispuestas cuatro funciones principales dentro de este men, ellas son:
- PRUEBAS: En esta opcin, se realizan las pruebas de funcin pulmonar.
- MONITOREO: Ayuda al seguimiento peridico del paciente, sus funciones son:
- Abrir o cerrar una vlvula en el proceso de inspiracin o espiracin respectivamente.
- Obtener informacin sobre el promedio de tiempo inspiratorio.
- ESTADSTICA: Brinda al equipo mdico informacin sobre pruebas y monitoreos
realizados. Muestra grficas, permite la impresin.
- SALIR: Da por terminado el programa.

6.1.2 Componentes del sub-men:

6.1.2.1 Sub-men Pruebas:
Para visualizar las funciones respiratorias basta con graficar la seal de flujo que estn generando
los pulmones, para analizarlas se requiere hacer unos clculos propios del sistema; es as, como
adems de los datos del paciente (nombre-apellido), se requiere de su edad, estatura y peso, ya
que son elementos que los mdicos tienen encuenta al hacer su diagnstico. Los siguientes tem
permiten hacer esas operaciones:
- Entrar datos: Ingresa los datos del paciente a ser evaluado.
- Cambiar datos: Ayuda a corregir los datos equivocados antes de realizar una prueba.
47
- Ver datos: Permite conocer la totalidad de las personas a las cuales se les han realizado
pruebas de funcin pulmonar.
- Realizar pruebas: Desarrolla las siguientes pruebas:
- Volumen espiratorio forzado.
- Capacidad vital.
- Flujo espiratorio mximo e inspiratorio mximo.

6.1.2.2 Sub-men Monitoreo:
De manera semejante al anterior sub-men, tiene elementos de entrada, visualizacin y
modificacin de datos, lo diferente de esta parte es el monitoreo constante del paciente, no se
requieren hacer pruebas de funcin pulmonar, sino solo un segimiento del enfermo.

6.1.2.3 Sub-men estadstica:
Presta gran ayuda a los mdicos encargados, puesto que visualiza e imprime las curvas obtenidas
en las pruebas de funcin pulmonar y en el monitoreo, ello permite hacer un diagnstico del
paciente.
48

6.1.3 Diagramas de flujo

Los siguientes son los diagramas de flujo de los ms importantes procedimientos del programa
UMFRESP.

Cada uno de los flujogramas muestra la secuencia lgica del programa, por ejemplo el diagrama
correspondiente a la funcin LEER TARJETA se describe de la siguiente manera:
Para desarrollar la lectura de la tarjeta de adquisicin de datos DASH 8 con la cual se esta
implementando este sistema, es necesario cumplir ciertas condiciones de manejo de informacin
a travs del bus de datos del computador para inicializar la tarjeta, luego se debe habilitar el
conversor anlogo digital AD574, despus de haber enviado en cdigo de mquina (nmeros
49
binarios) la informacin pertinente, se espera hasta que el conversor devuelva un bit (EOC) de
final de conversin. Cuando esto se hace, el computador almacena el dato leido y luego este es
utilizado para graficar o para ejecutar una accin de control sobre una vlvula.
A continuacin se muestra el cdigo fuente de este procedimiento:
PROCEDURE LEERDASH8;

{Este procedimiento ejecuta la lectura de la tarjeta de adquisicion de datos DASH8, su implementacion esta de
acuerdo con el listado de instrucciones suministrado por el fabricante}

VAR { Se definen las variables que van a ser usadas en el programa}
ADRESS,B : INTEGER;
AD : STRING;
DATOH,
DATOL,A : BYTE;
CONV : REAL;

BEGIN
REPEAT
BEGIN
PORT[ADRESS+1]:=$0; {Habilita la tarjeta}
PORT[ADRESS+2]:=$0; {Habilita el conversor, se escoge conversion de 12 bits}
DELAY(1); {Realiza un retardo de 1 milisegundo}
REPEAT
BEGIN
B:=PORT[ADRESS+2]; {Lee el registro de estado}
A:=B XOR $7F; {Busca el valor de EOC}
END;
UNTIL A<$FF; {Repite hasta obtener el valor de EOC}
DATOL:=PORT[ADRESS+0]; {Registra el dato bajo del valor leido}
DATOH:=PORT[ADRESS+1]; {Almacena el dato alto leido}
CONV:=(DATOL SHR 4 + DATOH SHL 4);{ Realiza la combinacin de los bytes}
CONV:=(CONV/2048)*5-5; {Calcula el dato de acuerdo a los valores reales}
WRITELN(CONV:8:4) {Escribe el resultado en pantalla}
END;
UNTIL KEYPRESSED; {Repite hasta oprimir una tecla}
END;


El otro diagrama de flujo muestra como se hace el seguimiento del paciente en el monitoreo de la
ICU, es necesario ingresar correctamente los datos del paciente, luego se procede a ejecutar la
subrutina Leer tarjeta, se filtran los datos digitalmente, usando un filtro de Respuesta Infinita al
50
Impulso (IIR), el cual ser descrito ms adelante. Se debe de comparar el dato leido para
conocer si el paciente esta inspirando o se encuentra espirando, si realiza lo primero se abre una
vlvula, de lo contrario la deja cerrada. El computador visualiza el momento en el cual el paciente
se inhala o exhala, va almacenando el promedio o variaciones de espiracin - inspiracin, que
colabora en el diagnostico mdico.
PROCEDURE IIR_FILTER (signal:Real);

{Aqui se filtran los datos que son ledos por la tarjeta DASH8 con un filtro de respuesta infinita al impulso
(IIR) pasa-bajos. Se utiliza el mtodo de filtros de dos polos y seleccionando un valor de r y q apropiado para
la respuesta deseada, r = 0.5 y q = 36, la ecuacin diferencia es :

y(nT) = 0.809*y(nT-T) - 0.25*y(nT-2T) + x[0] + 2*x(nT-T) + x(nT-2T)
Y[nT]:= 0.809*Y[1] - 0.25*Y[2] + X[0] + 2*X[1] + X[2]
}

VAR { Se definen las variables que van a ser usadas en el
procedimiento}
COUNT : INTEGER;
X,Y : ARRAY [0..2 ] OF REAL;

BEGIN
FOR COUNT:= 2 DOWNTO 0 DO
X[COUNT]:=X[COUNT-1];
X[0]:=SIGNAL;
Y[0]:= 0.809*Y[1] - 0.25*Y[2] + X[0] + 2*X[1] + X[2];
FOR COUNT:= 2 DOWNTO 0 DO
Y[COUNT]:=Y[COUNT-1];
READDAT:=Y[0];
END;

Los procedimientos diseados en Turbo Pascal 7.0 se encuentran al final, all se comenta lo que
cada uno realiza.
51

6.2 La simulacin
La simulacin del pulmn se realiza en MATLAB. Este paquete por medio de sus toolbox
especialmente el de control, produce datos de acuerdo a ciertos parmetros requeridos por el
sistema. La ayuda que presta a la ingeniera es grande, pues sin necesidad de construir el
dispositivo, predice el comportamiento del sistema, evidentemente esto es una ventaja significativa
para el diseo de cualquier elemento. A continuacin se transcribe el programa de simulacin.
%
% Pulmn.m hace la simulacin de las curvas de obstruccin, restriccin
% y normalidad en los volumenes pulmonares , los valores de la grfica
% son arbitrarios , pero su similitud con las curvas reales hace que
% lo dibujado sea vlido.
%
% John Alexander Gmez Snchez
% Universidad Nacional de Colombia
% Manizales, 1996.
% Copyrigth (R).
%

hold off; % Retira todos los elementos de la pantalla anterior
subplot(1,1,1); % Describe el nuevo vector de pantalla
numn=[3.3 2]; % Numerador de normalidad
denn=[1 2.5]; % Denominador de normalidad
step(numn,denn); % Respuesta al escaln
hold on; % Retiene la grfica
numo=[2.2 1]; % Numerador de obstruccin
deno=[1 2.5]; % Denominador de obstruccin
step(numo,deno); % Respuesta al escaln
hold on;
numr=[4 4]; % Numerador de restriccin
denr=[1 2.19]; % Denominador de restriccin
step(numr,denr); % respuesta al escaln

%
% Pone un ttulo a la grfica
%

title('CURVAS DE OBSTRUCCIN, RESTRICCIN Y NORMALIDAD');

%
% Renombra el eje Y
%

52
ylabel('Volumen del pulmn');
%
% Coloca el texto respectivo a cada curva
%

text(1,2.5,'Obstruccin');
text(0.7,1.5,'Normalidad');
text(0.1,0.7,'Restriccin');

% FIN.

CAPTULO 7


ACTIVIDADES DESARROLLADAS,
CONCLUSIONES Y RECOMENDACIONES


El presente trabajo de grado realizado bajo la modalidad de participacin en proyectos de
investigacin ha sido de gran ayuda personal, puesto que hizo posible la prctica de los
conocimientos adquiridos a lo largo de la carrera en diferentes reas del saber, adems de ello
mejor notablemente las capacidades en el anlisis de sistemas dinmicos, esto ayuda a
comprender mejor los comportamientos fsicos del sistema y a optimizar el diseo.


7.1 Actividades desarrolladas:

Luego de ser aprobada la investigacin, fueron desarrolladas las siguientes actividades:

- DOCUMENTACIN SOBRE EL APARATO RESPIRATORIO:
En un principio se requera conocer el sistema que se iba a disear, por ello se hizo necesario
investigar a cerca de la fisiologa del aparato respiratorio, encontrar las ecuaciones que describen
el desempeo de cada uno de los elementos constitutivos; el tiempo dedicado a esta actividad fue
grande, todava hoy, sin haber terminado la investigacin, se est buscando nueva informacin
para realizar un diseo satisfactorio.

54
- PARTICIPACIN EN EL DISEO DEL EQUIPO:
Esta tarea se fue desarrollando desde un comienzo, se analizaron posibles soluciones para
encontrar la caracterstica adecuada del sensor a utilizar, buscando siempre las condiciones
ptimas de funcionamiento; se discuta junto con el grupo investigativo la disposicin del sensor
dentro del sistema de medida, tambin el diseo del circuito acondicionador de seal (el
amplificador y el filtro), y cmo deba ser el software para la visualizacin de las grficas .

- DESARROLLO DE SOFTWARE
Luego de conocer el diseo del prototipo para el equipo de medicin del flujo respiratorio, se fue
desarrollando el programa para manejar la informacin y visualizar las curvas , este requiere
medir en tiempo real el flujo respiratorio. La caracterstica del programa es el entorno grfico
amigable que lo constituye.

- SIMULACIN DE LAS FUNCIONES PULMONARES CON MATLAB
Luego de describir el pulmn por medio de un modelo matemtico apropiado, se hizo una
simulacin del comportamiento del volumen del pulmn en el tiempo, all se analizaron las curvas
tpicas de obstruccin, restriccin y normalidad pulmonar, esto se hizo por medio del
desplazamiento de polos y ceros de la ecuacin descriptiva del sistema.

55
7.2 Conclusiones:
De la participacin en esta investigacin se concluye que :

1. El desarrollo de un prototipo cualquiera que este sea, debe adelantarse de acuerdo a ciertas
pautas, cumplir cabalmente sus objetivos de diseo, ser eficiente, seguro y confiable para permitir
una comercializacin del equipo, que es finalmente lo que se busca.

2. El buen anlisis del modelo matemtico por medio de la simulacin de un sistema, puede
ayudar al ingeniero de diseo a encontrar las caractersticas adecuadas de funcionamiento del
dispositivo, las posibles causas de deterioro de los materiales que lo constituyen, y la durabilidad
del equipo en condiciones adversas.

3. En el diseo, anlisis y construccin de un equipo usado en electromedicina se forma un grupo
interdisciplinario, en el cual cada uno de sus miembros ayuda a fortalecer y mejorar las
caractersticas de funcionamiento del sistema. Esto acrecenta an ms la importancia de participar
activamente de investigaciones en esta rea.

4. Es la Universidad la que nos brinda oportunidades para el desarrollo de nuestra formacin
acadmica, y funcin del ingeniero crear elementos propicios para desarrollar estas capacidades
innatas, colaborar en el surgimiento de nuevas tecnologas y mejorar las existentes.

56
5. El modelo general del sistema puede llegar a ser controlable, es decir, la respiracin humana
puede ceirse a parmetros preestablecidos de normalidad fisiolgica. Para llegar a la eventual
automatizacin del aparato respiratorio se necesita un gran avance tecnolgico, claro est si la
tica del hombre lo permite.


7.3 Recomendaciones:
Solo una es aceptable para tratar de describir el pensamiento de este autor. Bastara con decir
que es importante, interesante y necesario que la Universidad colabore junto con sus estudiantes
en el diseo de equipos para el rea de la salud, no solo buscando un inters econmico sino
tambin un objetivo social. Este ideal o utopa como lo llamaran algunos, permite desarrollar
nuevos elementos para la ingeniera elctrica y electrnica que todava en nuestra regin no se han
desarrollado al mximo.
BIBLIOGRAFIA

[1] Miller, Richard W. , Flow Measurement Engineering Handbook. 2nd Edition. Mc
Graw Hill, Newyork ,1989.

[2] Aston, Richard , Principles of Biomedical Instrumentation and Measurement. Merril
Publishing Co. , Columbus, 1990.

[3] Doebelin, Ernest O. , Measurement Systems; Application and Desing. Mc Graw Hill, USA,
1976.

[4] Salinas, Carlos , Fundamentos y Aplicaciones de Terapia Respiratoria. Celsus, Bogot,
1992.

[5] West, John , Respiratory Physiology. 2nd Edition. Williams & Wilkins Co., Baltimore, 1981.

[6] Tompkins, Willis J. , Biomedical Digital Signal Procesing. Prentice Hall, New Jersey, 1993.

[7] Intel Corporation , Embedded Controler Handbook. Santa Clara, California, 1988.

[8] Borland International , Turbo Pascal ; Programers Reference and Language Guide.
USA, 1992.

[9] Webster, John G. , Medical Instrumentation; Application and Desing. Hougton Mifflin
Company, Boston, 1978.

[10] Helfrick, Albert D. ; Cooper, William D. , Modern Electronic; Instrumentation and
Measurement Techniques. Prentice Hall, Singapore, 1990.

[11] Tompkins, Willis; Thakor, Nitish, A Lecture Laboratory Course on Micro-Computer;
Based Medical Instrumentation. En: IEEE (TE) Vol. E-24. Febrero 1981 Pp 96-101.

[12] Cook, Peter , Nonlinear Dinamical Systems. Prentice Hall, United Kingdom, 1986.

[13] Kays, W. H. , Convective Heat and Mass Transfer. Mc Graw Hill, New York, 1966.

[14] Jacob, J. Michel , Industrial Control Electronics; Applications and Desing. Prentice Hall,
New Jersey, 1986.

[15] Mann, Charles K. , Basic Concepts in Electronic Instrumentation. Harper & Row
Publishers, USA, 1974.

58
[16] Streeter; Wylie , Mecanica de Fluidos. Mc Graw Hill , Mexico, 1979.

[17] Normann, Richard A. , Principles of Bioinstrumentation. John Willey & Sons , New York,
1990.

[18] Estrada E. , Jorge Hernan , Proyectos de Instrumentacin Desarrollados en el
Laboratorio de Modelos Hidrulicos. Universidad Nacional de Colombia, Manizales, 1992.

[19] Metrabyte Corporation , DASH-8 Manual. Stoughton, Mass, 1984.

[20] Universidad Nacional de Colombia , Proyecto Hidroelctrico Miel ; Modelos
Hidrulicos; Informe Final ; Volumen , Tomo 1 ; Informe Tcnico. Manizales, 1989.

[21] Considine, Douglas M. , Manual de Instrumentacin Aplicada. Editorial Continental,
Mexico, 1981.

[22] Villate Mora, Adolfo , Tecnologa del Control de Procesos Industriales. Universidad
Nacional de Colombia, Bogota, 1987.

[23] Davidse, Jan , Analogue Electronic Circuit Desing. Prentice Hall, United Kingdom, 1991.

[24] Savant; Roden; Carpenter , Diseo Electrnico ; Circuitos y Sistemas. Addison Wesley,
USA, 1992.

[25] Jones, Larry D.; Chin Foster , Electronic Instruments and Measurements. John Willey &
Sons Inc. , USA, 1983.

[26] Palm , William , Control Systems Engineering. John Willey & Sons, USA, 1986.

[27] Micro Switch , Specifiers Guide for Pressure and Airflow Sensors. Honeywell Division,
USA, 1986

[28] Kuo, Benjamin C. , Automatic Control Systems. 6th Edition. Prentice Hall, USA, 1991.

[29] Barbu, V. , Differential Equations and Control Theory. Longman Scientific & Technical,
USA, 1991.

[30] Shenck, Hilbert Jr. , Theories of Engineering Experimentation. 2nd Edition. Mc Graw Hill,
New York , 1968.

[31] Chan, Shu-Park; Chan, Shu-Yun; Chan Shu-Gar, Analysis of Linear Networks and
Systems; A Matrix-Oriented Approach with Computer Applications. Addison Wesley Publishing
Company, Reading, Mass, 1972.
59

[32] Christensen, G. S. ; El- Hawary, M. E. ; Soliman, S. A. , Optimal Control; Applications
in Electric Power Systems. Plenum Press, Newyork, 1987.

[33] Harrison, Howard L. ; Bollinger, John G. , Controles Automticos. 2da Edicion.
Editorial Trillas, Mexico, 1976.

[34] Math Works, Simulink; Dynamic System Simulation, Users Guide. 4th Edition. The Math
Works Inc. , Massachusets, 1995.

[35] Ogata, Katsuhiko, Ingenieria de Control Moderna. 2da Edicion. Prentice Hall, Mexico,
1993.

[36] Grace, A. ; Laub, A. J. ; Little, J. N. ; Thompson, C. M., Control System Toolbox for
Use with MATLAB. The Math Works Inc. , Massachusets, 1995.

[37] Rohsenow, Warren M. ; Hartnett, James P. , Handbook of Heat Transfer. Mac Graw
Hill, USA, 1973.

[38] Incropera, Frank P. ; De Witt, David P. , Fundamentals of Heat and Mass Transfer. 3th
edition. John Wiley and Sons, Singapure, 1990.

[39 ] Wilson, Archie F. ; Pulmonary Function Testing ; Indications and Interpretations. Grune &
Stanton, Orlando, 1985.

[40] Avendao, Luis Enrique, Apuntes sobre Metodo Lineal Algebraico. No editado,
Manizales, 1995.

























ANEXOS
61
PROGRAMA DE SIMULACIN EN MATLAB (POSIBLE CONTROL).

%
% Umfresp.m 'SIMULACION DE CONTROL DEL SISTEMA DE ADQUISICION DE DATOS
% DE LA UNIDAD DE MEDIDA DEL FLUJO RESPIRATORIO'
%
% Este programa encuentra los valores del sistema (planta) para un
% control optimo basandose en los estimadores de estado.
%
% John Alexander Gmez Snchez
% Universidad Nacional de Colombia
% Manizales, 1996.
% Copyrigth (R).
%

hold off;
% Para la simulacin el sistema, las constantes que se tienen encuenta
% son algo arbitrarias, pero se acercan en algo al comportamiento de l.
% Las constantes son:
%
% At = 8.99
% Tl = 12.4
% Tw = 0.07
% Tf = 0.52
%
% El sistema que describe la planta es el siguiente:
%
% 200 s
% G(s) = ---------------------------
% (s + 20)(s + 2.2)(s + 6.4)
%
%
num=[0 0 200 0];
den1=[1 20];
den2=[1 2.2];
den3=[1 6.4];
con1=conv(den1,den2);
con2=conv(con1,den3);
raic=roots(con2);
%
% Se necesita las variables de estado del sistema
%
[a,b,c,d]=tf2ss(num,con2);
%
% Ahora la controlabilidad y los posibles estados no controlables.
%
U=ctrb(a,b);
nco=length(a)-rank(U);
%
% La observabilidad y los estados no observables.
%
O=obsv(a,c);
nob=length(a)-rank(O);
%
62
% Visualiza los posibles estados no controlables, y no observables.
%
if nco == 0
disp ('SISTEMA CONTROLABLE');
else
disp ('SISTEMA NO CONTROLABLE');
end
if nob == 0
disp ('SISTEMA OBSERVABLE');
else
disp ('SISTEMA NO OBSERVABLE');
end
%
% Se requiere hallar los estados deseados; el algoritmo utilizado se
% describe en el capitulo 5 del trabajo de grado . Para ello es
% necesario conocer la matriz U (nuevo sistema de controlabilidad) o
% aplicar la frmula de Ackermann para hallar K (controlador).
%
% Los polos deseados son :
% p1=-2.5 p2=-1.5 p3=-10
%
p= [-10 -1.5 -2.5];
%
% Frmula de Ackermann segn MATLAB.
%
ka=acker(a,b,p);
%
% adicional la salida del sistema como una entrada ms
%
[aa,ba,ca,da]=augstate(a,b,c,d);
%
% Se hace la retroalimentacin
%
[fa,fb,fc,fd]=feedback(aa,ba,ca,da,[],[],[],-ka,1,[2:4]);
%
% Se han obtenido las nuevas matrices del espacio de
% estado para el sistema realimentado y se compara antes
% y despues de la retroalimentacin.
%
subplot(1,1,1);
subplot(2,1,1);
rlocus(a,b,c,d);
title('LUGAR DE LAS RAICES (inicial)');
subplot(2,1,2);
rlocus(fa,fb,fc(1,:),fd(1,:));
title('LUGAR DE LAS RAICES (controlado)');
figure (2);
subplot(1,1,1);
step(num,con2);
hold on;
axis([0 7 0 6.5]);
step(fa,fb,fc(1,:),fd(1,:),1);
axis([0 7 0 6.5]);
xlabel('Volumen (L)');
63
ylabel('Flujo (L/s)');
grid;
text(1,3.5,'Sistema controlado (Normalidad)');
text(0.9,0.6,'Sistema real (restriccin)');

PROGRAMA SIMULACIN MATLAB (CURVA DEL SOFTWARE).

t=1:1:71;
V=[0,-25,-55,-75,-85,-95,-102,-105,-110,-112,-111,-111,-112,-111,-111,-109,-111,-109,-108,-113,-110,-109,-109,-108,-
109,-114,-108,-111,-108,-109,-110,-110,-110,-108,-108,-108,-108,-108,-108,-108,-108,-108,-108,-106,-105,-106,-107,-
108,-107,-106,-100,-85,-70,-55,-40,-33,-25,-22,-20,-18,-16,-11,-9,-8,-7,-2,0,0];
for i=1:68,
Y1(i)=6.5*exp(5.159*t(i)./V(i))
end
plot(Y1(1:68));
line([0,2],[0,Y1(2)]);
title('Curva de Variacin del Flujo contra Volumen en Pruebas de funcin pulmonar');
xlabel('Volumen (L)');
ylabel('Flujo (L/seg)');
grid;
64
PROGRAMA PRINCIPAL TURBO PASCAL 7.0

Program umfresp;

{ Este es el programa principal del UMFRESP, su funcin es manejar todas las rutinas corespondientes, aqu
se deben almacenar los datos obtenidos un archivo de datos. Estos datos est n en el formato descrito por el
registro inicial en UMVAR.PAS }

Uses Crt,graph,dos,printer,umvar,umpal,ummenu,ummenu21;

Begin
nosound;
Clrscr;
{ Swapvectors;
Exec('c:\dos\graphics.com','graphics');
Swapvectors;}
Assign(Arch,'c:\tp\umfresp.dat'); { Da el nombre al registro de datos }
Activar(Arch);
Init;
repeat
Menus_2; { Men principal }
until x=-90; { Registro centinela de control }
End.
65
SUB-RUTINA UMMEN

unit ummenu;

{ Unidad para cada uno de los mens del programa}

interface

uses crt,dos,graph,umvar,umpal,printer,ummenu1;


Procedure init; { Inicializa el modo grafico }
Procedure logo; { Pone el logo principal }
Procedure Menu_pal; { Menu inicial }
Procedure Prueba(Var F:Fichero); { Realiza las pruebas }
Procedure Entmon(Var f:Fichero); { Entrada de datos }

implementation


Procedure init; { Inicializa el modo grafico }

begin { Inicio del procedimiento }
Gd := Detect;
InitGraph(Gd, Gm, 'c:\tp\BGI');
if GraphResult <> grOk then
writeln('ERROR GRAFICO : No se han encontrado los archivos necesarios...');
end; { Fin del procedimiento init}


Procedure logo; { Pone el logo principal }

begin { Inicio del procedimiento }
mtecla(getmaxx div 6,Getmaxy div 12,5*Getmaxx div 6+15,Getmaxy div 3-20);
Settextstyle(0,0,2);
texto(4,getmaxx div 5-5,getmaxy div 12+20,'UNIDAD DE MEDIDA DEL FLUJO');
texto(4,getmaxx div 5-15,getmaxy div 12+40,' Y VOLUMENES RESPIRATORIOS');
Settextstyle(0,0,1);
texto(1,getmaxx div 4-30,getmaxy div 5+15,'UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE
MANIZALES');
texto(1,getmaxx div 4+22,getmaxy div 5+25,'CENTRO DE INSTRUMENTACION ELECTRONICA');
setcolor(0);
end; { Fin del procedimiento logo}



Procedure Menu_pal; { Menu inicial }

Begin { Inicio del procedimiento }
setcolor(0);
setfillstyle(1,cyan);
bar(0,0,getmaxx,getmaxy);
logo;
Setfillstyle(1,lightcyan);
66
Bar(Getmaxx div 4-10,Getmaxy div 3-6,3*Getmaxx div 4+25,Getmaxy div 3+15);
Rectangle(Getmaxx div 4-10,Getmaxy div 3-6,3*Getmaxx div 4+25,Getmaxy div 3+15);
outtextxy(Getmaxx div 4+5,Getmaxy div 3+2,menupal[1]);
setfillstyle (1,black);
setviewport (0,0,Getmaxx,getmaxy,Clipoff);
outtextxy(Getmaxx div 4+85,Getmaxy div 3+2,(menupal[2]));
outtextxy(Getmaxx div 4+185,Getmaxy div 3+2,(menupal[3]));
outtextxy(Getmaxx div 4+285,Getmaxy div 3+2,(menupal[4]));
new(punt);
End; { Fin del procedimiento Menu_pal }


Procedure graficaa; { Grafica los datos }

Begin { Inicio del procedimiento }
Yl:=Trunc(50*conv);
Setcolor (white);
If (abs(Yl-Yll)>=3) then Line(Xr-1,Yr-Yll,Xr,Yr-Yl)
else putpixel(Xr,Yr-Yl,white);
Str(Yl,d);
Setcolor(black);
Bar(100,200,120,220);
Outtextxy(100,200,d);
Yll:=Yl;
Inc(Xr);
Dif[0]:=Yl;
For i:=10 downto 1 do
Dif[i]:=dif[i-1];
if (dif[5]-dif[1]>15) and (m1=0) then
begin
If (Dif[5]>Dif[1]) then
If (Dif[2]>Dif[1]) then
Begin
m1:=1;
setcolor(green);
Line(Xr-1,Yr-Yll,Xr,Yr-Yl);
sound(200);
delay(100);
End;
End;
If m1=1 then inc(l);
if (dif[0]-dif[10]>50) and (m1=1) and (abs(dif[1]-dif[2])<3) then
Begin
setcolor(red);
Line(Xr-1,Yr-Yll+1,Xr,Yr-Yl+1);
Line(Xr-1,Yr-Yll+2,Xr,Yr-Yl+2);
Line(Xr-1,Yr-Yll,Xr,Yr-Yl);
sound(220);
delay(100);
nosound;
m1:=0;
End;
If (Xr=19*Getmaxx div 20) Then
Begin
67
Cleardevice;
Xr:=Getmaxx div 20;
End;
End; { Fin del procedimiento Graficaa }
68
Procedure prueba(Var F: fichero); { Realiza las pruebas }

Var A:paciente;
Res:Integer;
Begin { Inicio del procedimiento }
Res:=0;
If Y3<>1 then
Begin
setcolor(black);
Outtextxy(Getmaxx div 4,Getmaxy-30,'NO EXISTEN DATOS DIGITADOS, PULSE ENTER');
Readln
End
Else
Begin
Reset(f);
Xr:=Getmaxx div 20;
Yr:=Getmaxy div 2;
Cleardevice;
l:=1;
Posi:=3;
Posi3:=0;
setcolor(white);
Visualizar(A,y);
repeat
RDash8;
Graficaa;
Vectcam[l]:=Yl;
until Keypressed;
If A.SW Then
Begin
With a do
Begin
longitug:=l-1;
For i:=1 to l-1 do
Vectdat[i]:=Vectcam[i];
end;
Seek(F,col);
Write(F,A);
End;
Readln;
Setcolor(white);
Outtextxy(Getmaxx div 4-15,Getmaxy -30,'DESEA REALIZAR UNA PRUEBA CON BRONCODILATADOR
(Y/N)');
Ch:=readkey;
If Upcase(Ch)='Y' then
Begin
Xr:=Getmaxx div 20;
Yr:=Getmaxy div 2;
L:=1;
Cleardevice;
Setcolor(white);
Visualizar(A,y);
repeat
RDash8;
69
Graficaa;
Vectcam[l]:=Yl;
Res:=1;
until Keypressed;
If (A.SW) and (Res=1) Then
Begin
With a do
Begin
long2:=l-1;
For i:=1 to l-1 do
Vectdat2[i]:=Vectcam[i];
end;
Seek(F,col);
Write(F,A);
End;
End;
Close(F);
End;
Posi:=1;
Y3:=0;
End; { Fin del procedimiento Prueba }

Procedure Entmon(Var F:Fichero); { Entrada de datos }

Var
A : paciente;
I,Y,inn : Integer;
Begin { Inicio del procedimiento }
Y2:=0;
caso:=8;
Reset(F);
Repeat
Setfillstyle(1,black);
Bar(0,0,Getmaxx,Getmaxy);
Setcolor(White);
If posi=1 then
Begin
Observar('PACIENTE A REALIZAR LAS PRUEBAS');
End;
If posi=2 then Observar('DATOS DEL PACIENTE A MONITOREAR');
ver:=8;
IF caso<>1 Then
Begin
Outtextxy(Getmaxx div 15,Getmaxy div 3-40,'CEDULA NUMERO ');
C:=leertodo(8*Getmaxx div 15-23,Getmaxy div 3-40,20);
I:= Posicion(C,F);
End
Else
Begin
Outtextxy(Getmaxx div 15,Getmaxy div 3-40,'CEDULA NUMERO ');
With a do
Outtextxy(Getmaxx div 2,Getmaxy div 3-40,cedula);
End;
e:=I+1;
70
T:=Filesize(F);
If I= -1 then
Begin
Outtextxy(Getmaxx div 3+15,Getmaxy-30,'NO EXISTE CEDULA DIGITADA');
Outtextxy(Getmaxx div 4,Getmaxy-20,'PRESIONE [ENTER] PARA SUMINISTRAR LOS DATOS');
Readln;
Ampliar(arch);
Y2:=1;
End
Else
Begin
col:=I;
Seek(F,I);
Read(F,A);
Bar(0,Getmaxy div 3-40,Getmaxx,Getmaxy div 3-32);
Visualizar(a,Y);
y3:=1;
End;
bar(0,Getmaxy-50,Getmaxx,Getmaxy);
Outtextxy(Getmaxx div 4+50,Getmaxy -20,'Pulse "S" para volver al menu');
Until (Upcase (Readkey) = 'S') or (Y2=1) or (Y2=0);
If Y2<>1 then Close(F);
End; { Fin del procedimiento Entmon }
end.
71
SUB-RUTINA UMMEN1

unit ummenu1;

{ Unidad para cada uno de los mens del programa}

interface

uses crt,dos,graph,umvar,umpal,printer;

{ Lista de procedimientos }

Procedure Imprepru(Var F:Fichero);
Procedure Imprime;
Procedure Listar(Var F:Fichero);
Procedure ampliar(Var F : Fichero);
Procedure Cambiar(Var F:Fichero);
Procedure Final;

implementation

Procedure Listar(Var F:Fichero);
Var
A : paciente;
I,Y,inn : Integer;
Begin
Ver:=8;
Reset(F);
ver:=1;
I:=0;
T:=Filesize(f);
for inn := 0 to T-1 do
Begin
E:=I+1;
Setfillstyle(1,black);
Bar(0,0,Getmaxx,Getmaxy);
Setcolor(White);
Observar(' DATOS PACIENTES REGISTRADOS');
ver:=1;
Seek(F,I);
Read(F,A);
{Dato(Getmaxy div 3);}
Visualizar(a,Y);
Outtextxy(Getmaxx div 4,Getmaxy -30,'Pulse [enter] para observar otros los datos');
readln;
inc(I);
End;
repeat
Outtextxy(Getmaxx div 3,Getmaxy-20,'Pulse "S" para regresar al menu');
ch:=readkey;
until (ch='s') or (ch='S');
Close(F);
End;

72

Procedure ampliar(Var F : Fichero);
Var
R,A : paciente;
I : Integer;
pens : string;
Begin
k:=10;
Reset(F);
Begin
Nombres(A);
I:=Posicion(A.cedula,F);
lugar:=I;
If I = -1 then
Begin
I:= Filesize (F);
Seek(F,I);
write(F,A);
End
Else
Begin
Seek (F,I);
Read (F,R);
If (R.SW) then
Begin
Repeat
Outtextxy(getmaxx div 3,Getmaxy-40,' LA CEDULA YA EXISTE');
Outtextxy(getmaxx div 3,Getmaxy-20,'PRESIONE (S) PARA CONTINUAR');
Ch:=Readkey;
Until (Ch='s') or (Ch='S');
End
Else
Write(F,A);
Caso:=0;
End;
End;
Inc(k);
Col:=I;
Close(F);
Y3:=1;
End;


Procedure Imprepru(Var F:Fichero);
Var
A : paciente;
I,Y,inn : Integer;
Begin
caso:=8;
Reset(F);
Repeat
Setfills tyle(1,black);
Bar(0,0,Getmaxx,Getmaxy);
Setcolor(White);
73
Outtextxy(Getmaxx div 3+40,Getmaxy div 5,'DATOS DE LAS PRUEBAS');
ver:=8;
IF caso<>1 Then
Begin
Outtextxy(Getmaxx div 15,Getmaxy div 3-40,'CEDULA NUMERO ');
C:=leertodo(8*Getmaxx div 15,Getmaxy div 3-40,20);
I:= Posicion(C,F);
End
Else
Begin
Outtextxy(Getmaxx div 15,Getmaxy div 3-40,'CEDULA NUMERO ');
With a do
Outtextxy(Getmaxx div 2,Getmaxy div 3-40,cedula);
End;
e:=I;
T:=Filesize(F);
If I= -1 then
Begin
Outtextxy(Getmaxx div 3+15,Getmaxy-30,'NO EXISTE CEDULA DIGITADA');
End
Else
Begin
Seek(F,I);
Read(F,A);
{Dato(Getmaxy div 3);}
Visualizar(a,Y);
Imprime;
End;
Outtextxy(Getmaxx div 4+50,Getmaxy -20,'Pulse "S" para volver al menu');
Until Upcase (Readkey) = 'S';
Close(F);
End;




Procedure Cambiar(Var F:Fichero);
Var
A : paciente;
I,Y,inn : Integer;
Begin
caso:=8;
Reset(F);
Repeat
Setfillstyle(1,black);
Bar(0,0,Getmaxx,Getmaxy);
Setcolor(White);
Observar(' CAMBIO DATOS DEL PACIENTE');
ver:=8;
IF caso<>1 Then
Begin
Outtextxy(Getmaxx div 15,Getmaxy div 3-40,'CEDULA NUMERO ');
C:=leertodo(8*Getmaxx div 15,Getmaxy div 3-40,20);
I:= Posicion(C,F);
74
End
Else
Begin
Outtextxy(Getmaxx div 15,Getmaxy div 3-40,'CEDULA NUMERO ');
With a do
Outtextxy(Getmaxx div 2,Getmaxy div 3-40,cedula);
End;
e:=I;
T:=Filesize(F);
If I= -1 then
Begin
Outtextxy(Getmaxx div 3+15,Getmaxy-30,'NO EXISTE CEDULA DIGITADA');
End
Else
Begin
Seek(F,I);
Read(F,A);
{Dato(Getmaxy div 3);}
Visualizar(a,Y);
Caso:=1;
If A.SW Then
Begin
With A do
If A.SW then
Begin
End;
Cambionom(A);
I:= Filepos(F) -1;
Seek(F,I);
Write(F,A);
End;
End;
Outtextxy(Getmaxx div 4+50,Getmaxy -20,'Pulse "S" para volver al menu');
Until Upcase (Readkey) = 'S';
Close(F);
End;

Procedure Final;
Begin
Closegraph;
Clrscr;
TextColor(14);
WriteLn(' Released by: ');
Writeln(' Ing. John Alexander Gmez S nchez.');
Writeln(' Tel.(968) 824861. Manizales(Colombia).');
Writeln(' CopyRight 1995.');
Normvideo;
End;

Procedure Imprime;
Begin
Inline($cd);
Inline($05);
End;
75

End.
76
SUB-RUTINA UMMENU21

unit ummenu21;
interface
uses crt,graph,umvar,ummenu,ummenu1,printer;
Procedure Menus_2;
Implementation
Procedure Menus_2;
Var
Ch : Char;
Begin
Posi:=1;
Menu_pal;
y:=getmaxy div 3;
repeat
Menu_pal;
Repeat
if posi>4 then posi:=1;
if posi<1 then posi:=4;
If posi=1 then x:=getmaxx div 4;
if posi=2 then x:=getmaxx div 4+80;
If posi=3 then x:=getmaxx div 4+180;
If posi=4 then x:=getmaxx div 4+280;
getimage(x,y,x+8*(length(menupal[posi])+1),y+10,punt^);
putimage(x,y,punt^,notput);
repeat
Ch:= readkey;
until (ch='M') or (ch='K') or (ch=#13) or (ch=#27) or (ch='P');
putimage(x,y,punt^,0);
Case Ch of
'M':Posi:=posi+1;
'P':if posi<>4 then ch:=#13;
'K':posi:=posi-1;
#27:Begin
Final;
Halt;
End;
end;
x:=getmaxx div 4;
until (ch=#13);
repeat
case Posi of
1: Begin
Setfillstyle(1,lightcyan);
bar(x-8,y+20,x+128,y+82);
Rectangle(x-8,y+20,x+128,y+82);
Outtextxy(x,y+25,menu1[1]);
Setfillstyle (1,black);
Posi1:=1;
Outtextxy(x,y+40,(menu1[2]));
Outtextxy(x,y+55,(menu1[3]));
Outtextxy(x,y+70,(menu1[4]));
Repeat
If posi1=1 then y1:=y+25;
77
if posi1=2 then y1:=y+40;
If Posi1=3 Then Y1:=Y+55;
If Posi1=4 Then Y1:=Y+70;
Getimage(x,y1-3,x+8*(length(menu1[posi1])),y1+10,punt^);
Putimage(x,y1-3,punt^,notput);
repeat
Ch:= readkey;
until (ch='M') or (ch='K') or (ch=#13) or (ch=#27) or (ch='P') or (Ch='H');
putimage(x,y1-3,punt^,0);
if Ch=#13 Then
Begin
Case Posi1 of
1: Begin
Entmon(arch);
End;
2: Begin
Cambiar(arch);
End;
3: Begin
Listar(arch);
End;
4: Begin
Prueba(arch);
End;
End;

End;
Case Ch of
'P':Posi1:=posi1+1;
'H':posi1:=posi1-1;
'M':POSI:=POSI+1;
'K':Posi:=Posi-1;
#27:Begin
Final;
halt;
End;
end;
if posi1>4 then posi1:=1;
if posi1<1 then ch:=#15;
Until (Ch=#13) or (Ch='M') or (Ch='K') or (ch=#15);
End;
2: Begin
Setfillstyle(1,lightcyan);
bar(80+x-8,y+20,x+188,y+82);
Rectangle(80+x-8,y+20,x+188,y+82);
Outtextxy(80+x,y+25,menu2[1]);
Setfillstyle (1,black);
Posi2:=1;
Outtextxy(80+x,y+40,(menu2[2]));
Outtextxy(80+x,y+55,(menu2[3]));
Outtextxy(80+x,y+70,(menu2[4]));
Repeat
If posi2=1 then y1:=y+25;
if posi2=2 then y1:=y+40;
78
if posi2=3 then y1:=y+55;
if posi2=4 then y1:=y+70;
Getimage(80+x,y1-3,80+x+8*(length(menu2[posi2])),y1+10,punt^);
Putimage(80+x,y1-3,punt^,notput);
repeat
Ch:= readkey;
until (ch='M') or (ch='K') or (ch=#13) or (ch=#27) or (ch='P') or (Ch='H');
putimage(80+x,y1-3,punt^,0);
Case Ch of
'P':Posi2:=posi2+1;
'H':posi2:=posi2-1;
'M':posi:=posi+1;
'K':posi:=posi-1;
#27:Begin
Final;
halt;
End;
end;
if posi2>4 then posi2:=1;
if posi2<1 then ch:=#15;
Until (Ch=#13) or (ch=#15) or (ch='M') or (ch='K');
if Ch=#13 Then
Begin
Case Posi2 of
1:Begin
Entmon(arch);
End;
{ 2:Begin
Cambiar(arch);
End;
3:Begin
Listar(arch);
End;
4:Begin
{Vermon;
End; }
End;
End;
Case Ch of
'P':Posi2:=posi2+1;
'H':posi2:=posi2-1;
'M':Begin
Posi:=3;
Posi3:=1;
End;
'K':Begin
Posi:=1;
Posi1:=1;
End;
#27:Begin
final;
halt;
End;
end;
79
if posi2>2 then posi1:=1;
if posi2<1 then ch:=#15;
End;
3: Begin
Setfillstyle(1,lightcyan);
bar(180+x-8,y+20,x+305,y+52);
Rectangle(180+x-8,y+20,x+305,y+52);
Outtextxy(180+x,y+25,menu3[1]);
Setfillstyle (1,black);
Posi3:=1;
Outtextxy(180+x,y+40,(menu3[2]));
Repeat
If posi3=1 then y1:=y+25;
if posi3=2 then y1:=y+40;
Getimage(180+x,y1-3,180+x+8*(length(menu3[posi3])),y1+10,punt^);
Putimage(180+x,y1-3,punt^,notput);
repeat
Ch:= readkey;
until (ch='M') or (ch='K') or (ch=#13) or (ch=#27) or (ch='P') or (Ch='H');
putimage(180+x,y1-3,punt^,0);
Case Ch of
'P':Posi3:=posi3+1;
'H':posi3:=posi3-1;
'M':posi:=posi+1;
'K':posi:=posi-1;
#27:Begin
Final;
halt;
End;
end;
if posi3>2 then posi3:=1;
if posi3<1 then ch:=#15;
Until (Ch=#13) or (ch=#15) or (ch='M') or (ch='K');
if Ch=#13 Then
Begin
Case Posi3 of
1:Begin
Imprepru(arch);
End;
2:Begin
{ Uno(arch);
Vismon;
Imprime; }
End;
3: Begin
Write(lst,chr(27)+chr(64));
End;
End;
End;
Case Ch of
'P':Posi3:=posi3+1;
'H':posi3:=posi3-1;
'M':Posi:=4;
'K':Begin
80
Posi:=2;
Posi2:=1;
End;
#27:Begin
final;
halt;
End;
end;
if posi3>2 then posi1:=1;
if posi3<1 then ch:=#15;
End;
4: Begin
final;
halt;
End;
End;
if posi>4 then posi:=1;
if posi<1 then posi:=4;
Setfillstyle(1,cyan);
Bar(40,Getmaxy div 3+20,Getmaxx-20,Getmaxy-20);
until (ch=#15) or (posi=4) or (ch=#13);
Dispose(punt);
Until (Ch=#27);
End;
End.

81
unit umpal;

{ Para esta unidad se tienen los principales procedimientos usados en el
programa, su funcin es ayudar a el enlace de todas las rutinas. }

interface

uses crt,dos,graph,umvar,printer;

Const gris:fillpatterntype=($0F,$F0,$0F,$F0,$0F,$F0,$0F,$F0);

Var W:word;
FillInfo: FillSettingsType;
I1,I2:Integer;

{ Procedimientos de la unidad }

Procedure dia;
Procedure mtecla(a,b,c,d:Integer);
Procedure texto(color,x,y:Integer;S: String);
Procedure Estima(Age,Ht,sex:String);
Procedure Visualizar(A : paciente;Var Yi:integer);
Function Leertodo(x,y,numleer:integer):string;
Procedure Observar(Casi:String);
Procedure Activar(var F : Fichero);
Function Posicion (C : cadena40;var f : Fichero ) : longInt;
Procedure Nombres (Var A : paciente);
Procedure cambioNom (Var A : paciente);
procedure rdash8;

implementation


Procedure mtecla(a,b,c,d:Integer);
Begin
W:=getcolor;
Getfillsettings(FillInfo);
Setcolor(0);
Rectangle(a,b,c,d);
Setfillstyle(1,15);
Bar(a,b,c-1,d-1);
Moveto(a,d);
Lineto(a+3,d-3);
Lineto(c-3,d-3);
Lineto(c-3,b+3);
Lineto(c,b);
Setfillstyle(1,0);
Floodfill(c-1,d-1,0);
Setfillstyle(1,7);
Bar(A+3,B+3,C-3,D-3);
Setcolor(W);
Setfillstyle(fillinfo.pattern,fillinfo.color);
End;

82

Procedure texto(color,x,y:Integer;S:String);
Begin
Setcolor(yellow);
Outtextxy(X+1,Y+1,S);
Setcolor(color);
Outtextxy(X,Y,S);
End;

Procedure dia;
var fr: string;
begin
Getdate(an,me,dias1,ds);
Str(dias1,fr);
Outtextxy(10,10,fr);
Str(me,fr);
Outtextxy(30,10,fr);
Str(an,fr);
Outtextxy(50,10,fr);
End;



Procedure Estima(Age,Ht,sex:String);
Var aos,altu,code : Integer;
Begin
Val(Age,aos,code);
Val(Ht,altu,code);
If (sex='m') or (sex='M') Then
If aos>=18 Then
Begin
Fvcc:=0.148*(altu/2.54)-0.025*aos-4.241;
Fev1c:=0.092*(altu/2.54)-0.032*aos-1.26;
FevFvcc:=Fev1c/fvcc*100;
Mmfc:=0.047*(altu/2.54)-0.045*aos+2.513;
Fef25c:=3.689-0.39*aos;
Fef50c:=7.012-0.33*aos;
Fef75c:=8.170-0.009*aos;
Tlc:=0.239*(altu/2.54)-0.15*aos-9.167;
Rv:=0.6858*(altu/2.54)+0.15*aos-3.447;
Mvvc:=0.048*(altu/2.54)-0.03*aos+7.167;
End
Else
Begin
Fvcc:=4.4/1000000*exp(2.6727*ln(altu));
Fev1c:=0.86*fvcc;
FevFvcc:=86;
Mmfc:=0.0447*(altu/2.54)-0.067;
Tlc:=5.6/1000000*exp(2.6691*ln(altu));
Rv:=4.41/1000000*exp(2.4101*ln(altu));
Mvvc:=0.054*(altu/2.54);
End
Else
If (sex='f') or (sex='F') Then
83
If aos>=18 Then
Begin
Fvcc:=0.115*altu-0.024*aos-2.852;
Fev1c:=0.089*(altu/2.54)-0.024*aos-1.932;
FevFvcc:=Fev1c/fvcc*100;
Mmfc:=0.06*(altu/2.54)-0.03*aos+0.551;
Fef25c:=2.413-0.022*aos;
Fef50c:=5.049-0.026*aos;
Fef75c:=6.646-0.035*aos;
Tlc:=0.20066*(altu/2.54)-0.008*aos-7.49;
Rv:=0.08128*(altu/2.54)+0.009*aos-3.9;
Mvvc:=0.019*(altu/2.54)-0.0093*aos+1.08;
End
Else
Begin
Fvcc:=3.3/1000000*exp(2.7294*ln(altu));
Fev1c:=0.86*Fvcc;
FevFvcc:=86;
Mmfc:=0.055*(altu/2.54)-0.367;
Tlc:=4/1000000*exp(2.7302*ln(altu));
Rv:=4.41/1000000*exp(2.4101*ln(altu));
Mvvc:=0.054*(altu/2.54)-1.67;
End;
End;


Procedure Visualizar(A : paciente;Var Yi:integer);
Var j,m,Xj : Integer;
st : String;
Begin
If (Posi=1) or (Posi=2) then
Begin
m:=15;
J:=1;
Xj:=0;
End
else
Begin
Cleardevice;
m:=0;
Xj:=100;
j:=4;
End;
With A do
if A.SW Then
Begin
Outtextxy(getmaxx div (2*j)+8*Xj div 10, Getmaxy div (3*j)-m+5*Xj div 10-5*Xj div 100,nombres);
Outtextxy(getmaxx div (2*j)+2*Xj, Getmaxy div (3*j)+5*Xj div 10-5*Xj div 100,apellidos);
Outtextxy(getmaxx div (2*j)+4*Xj, Getmaxy div (3*j)+m+5*Xj div 10-5*Xj div 100,cedula);
Outtextxy(getmaxx div (2*j)+4*Xj div 10, Getmaxy div (3*j)+2*m+7*xj div 10-3*Xj div 100,edad);
Outtextxy(getmaxx div (2*j)+21*Xj div 10, Getmaxy div (3*j)+3*m+7*Xj div 10-3*Xj div 100,estatura);
Outtextxy(getmaxx div (2*j)+7*Xj div 2, Getmaxy div (3*j)+4*m+7*xj div 10-3*Xj div 100,sexo);
Outtextxy(getmaxx div (2*j)+5*Xj-Xj div 4, Getmaxy div (3*j)+5*m+7*xj div 10-3*Xj div 100,Peso);
Str(tiempo:4:2,d);
84
Str(T,d);
str(longitug,d);
Outtextxy(100,340,d);
If m=0 then
begin
If Posi3=1 then
Begin
Xr:=Getmaxx div 20+1;
Yr:=Getmaxy div 2;
Line(2*Xr-5,Yr+5,2*Xr-5,Getmaxy div 4+20);
Line(2*Xr-5,Yr+5,2*Xr+2*Longitug,Yr+5);
for i:= 2 to longitug-5 do
Begin
If Vectdat[i]=0 then Vectdat[i]:=1;
Yl:=Trunc(-20*6.5*exp(5.129*i/Vectdat[i]));
{If (abs(Yl-Yll)>=1) then} Line(2*Xr-2,Yr+Yll,2*Xr,Yr+Yl);
{else lineputpixel(2*Xr,Yr+Yl,white);}
Yll:=Yl;
inc(Xr);
End;
Xr:=Getmaxx div 5+1;
Yr:=Getmaxy div 2;
Str(long2,d);
Outtextxy(150,340,d);
Line(3*Xr-5,Yr+5,3*Xr-5,Getmaxy div 4+20);
Line(3*Xr-5,Yr+5,3*Xr+3*Long2,Yr+5);
for i:= 2 to long2-5 do
Begin
Yl:=Trunc(-20*6.5*exp(5.129*i/Vectdat2[i]));
{If (abs(Yl-Yll)>=1) then} Line(3*Xr-3,Yr+Yll,3*Xr,Yr+Yl);
{else putpixel(Xr,Yr+Yl,white);}
Yll:=Yl;
inc(Xr);
End;
Outtextxy(Getmaxx div 2-60,Getmaxy -17*Xj div 10,'VALORES DE LA PRUEBA');
Outtextxy(getmaxx div 3+Xj div 10, Getmaxy -14*Xj div 10,'ESTIMADOS');
Outtextxy(2*getmaxx div 3-2*Xj div 10, Getmaxy -15*Xj div 10,'OBSERVADOS');
Outtextxy(2*getmaxx div 3-7*Xj div 10, Getmaxy -14*Xj div 10,'SIN BD');
Outtextxy(2*getmaxx div 3+6*Xj div 10, Getmaxy -14*Xj div 10,'CON BD');
Outtextxy(getmaxx-8*Xj div 10, Getmaxy -14*Xj div 10,'(%) PRED');
Estima(edad,estatura,sexo);
Str(Fvcc:4:1,d);
Outtextxy(getmaxx div (2*j)-2*Xj div 10, Getmaxy -12*Xj div 10,'FVC (L)');
Outtextxy(getmaxx div 3+2*Xj div 10, Getmaxy -12*Xj div 10,d);
Str(Fev1c:4:1,d);
Outtextxy(getmaxx div (2*j)-2*Xj div 10, Getmaxy -11*Xj div 10,'FEV1 (L/s)');
Outtextxy(getmaxx div 3+2*Xj div 10, Getmaxy -11*Xj div 10,d);
Str(Fevfvcc:3:1,d);
Outtextxy(getmaxx div (2*j)-2*Xj div 10, Getmaxy -10*Xj div 10,'FEV/FVC (%)');
Outtextxy(getmaxx div 3+2*Xj div 10, Getmaxy -10*Xj div 10,d);
Str(Mmfc:4:1,d);
Outtextxy(getmaxx div (2*j)-2*Xj div 10, Getmaxy -9*Xj div 10,'MMF (L/s)');
Outtextxy(getmaxx div 3+2*Xj div 10, Getmaxy -9*Xj div 10,d);
Str(Mvvc:4:1,d);
85
Outtextxy(getmaxx div (2*j)-2*Xj div 10, Getmaxy -8*Xj div 10,'MVV (L)');
Outtextxy(getmaxx div 3+2*Xj div 10, Getmaxy -8*Xj div 10,d);
End;
Outtextxy(getmaxx div (2*j)+8*Xj div 10, Getmaxy -m+5*Xj div 10-5*Xj div 100,nombres);
Rectangle(Getmaxx div 14,Getmaxy div 20,13*getmaxx div 14,5*getmaxy div 20);
line(getmaxx div 14,3*getmaxy div 20,13*getmaxx div 14,3*getmaxy div 20);
line(getmaxx div 14,4*getmaxy div 20,13*getmaxx div 14,4*getmaxy div 20);
Outtextxy(Getmaxx div 2-56,Getmaxy div 20+15,'UMFRESP - UNAL');
Outtextxy(Getmaxx div 2-157,Getmaxy div 20+25, 'PRUEBAS DE FUNCION PULMONAR - RESULTADOS');
End
Else
Begin
Rectangle(3*Getmaxx div 4+10,Getmaxy div 3-30,3*Getmaxx div 4+110,Getmaxy div 3);
Outtextxy(3*Getmaxx div 4+30,Getmaxy div 3-25,'PACIENTE');
Outtextxy(3*Getmaxx div 4+75,Getmaxy div 3-15,d);
Outtextxy(3*Getmaxx div 4+50,Getmaxy div 3-15,'de');
Str(E,d);
Outtextxy(3*Getmaxx div 4+20,Getmaxy div 3-15,d);
End;
End;
Outtextxy(getmaxx div abs(M-2*j), Getmaxy div (3*j)-m+5*Xj div 10-5*Xj div 100,'NOMBRE:');
If m=15 Then Outtextxy(getmaxx div (M-2*j), Getmaxy div (3*j)+5*Xj div 10-5*Xj div 100,'APELLIDO:');
Outtextxy(getmaxx div abs(M-2*j)+7*Xj div 2, Getmaxy div (3*j)+m+5*Xj div 10-5*Xj div 100,'C.C.:');
Outtextxy(getmaxx div abs(M-2*j), Getmaxy div (3*j)+2*m+7*xj div 10-3*Xj div 100,'EDAD:');
Outtextxy(getmaxx div abs(M-2*j)+Xj, Getmaxy div (3*j)+3*m+7*Xj div 10-3*Xj div 100,'ESTATURA(cm):');
Outtextxy(getmaxx div abs(M-2*j)+6*Xj div 2, Getmaxy div (3*j)+4*m+7*xj div 10-3*Xj div 100,'SEXO:');
Outtextxy(getmaxx div abs(M-2*j)+4*Xj, Getmaxy div (3*j)+5*m+7*xj div 10-3*Xj div 100,'PESO(kg):');
End;


Function Leertodo(x,y,numleer:integer):string;

Var
W1 : string;
Ch : char;
f : integer;


Begin
W1:='';
I:=0;
Repeat
Repeat
setfillstyle(1,15);
bar(x+I*8,Y+6,x+i*8+5,y+5);
delay(10);
setfillstyle(1,0);
bar(x+I*8,Y+6,x+i*8+5,y+5);
delay(10);
Until Keypressed;
Repeat
Ch:=Readkey;
If Ch=#0 Then
Begin
86
Ch:=Readkey;
Ch:=#2;
End;
Until ch<>#2;
If (ch in ['a'..'z','A'..'Z','.','-','0'..'9','/',#8,' ','#','','']) then
Begin
If Ch <> #8 Then
Begin
Outtextxy(x+I*8,y,ch);
W1:=w1 + ch;
I:=1+i;
End
Else
Begin
F := X + (I-1)*8;
If F >= X Then
Begin
bar(X+(I-1)*8,Y,X+I*8,Y+8);
Delete (W1,I,1);
I := I-1;
End;
End;
End
Else
Until (ch=#13)and(w1<>'');
Leertodo:=w1;
End;

Procedure Observar(Casi:String);
Begin
mtecla(getmaxx div 6,Getmaxy div 12-40,5*Getmaxx div 6+15,Getmaxy div 3-65);
Settextstyle(0,0,2);
texto(4,getmaxx div 5-5,getmaxy div 12-30,'UNIDAD DE MEDIDA DEL FLUJO');
texto(4,getmaxx div 5-15,getmaxy div 12-10,' Y VOLUMENES RESPIRATORIOS');
Settextstyle(0,0,1);
texto(1,getmaxx div 3-10,getmaxy div 3-80,'UNIVERSIDAD NACIONAL DE COLOMBIA');
setcolor(0);
Setcolor(15);
Rectangle(getmaxx div 6,Getmaxy div 12-40,5*Getmaxx div 6+15,Getmaxy div 3-65);
Settextstyle(0,0,1);
Outtextxy(getmaxx div 4+40,Getmaxy div 3-60,casi);
Setfillstyle(1,0);
Settextstyle(0,0,1);
End;

Procedure Activar(var F : Fichero);
var
Resultado : Integer;
Begin
clrscr;
{$I-}
Reset(f);
Resultado:= IOresult;
{$I+}
87
If Resultado <> 0 then
Rewrite(F);
Close (F);
End;



Function Posicion (C : cadena40;var f : Fichero ) : longInt;
Var
Reg : paciente;
Hal : Boolean;
Begin
Hal:= False;
Seek(F,0);
While not Eof(F) And not Hal do
Begin
Read (F,Reg);
Hal:= Reg.cedula =C
end;
If Hal Then
Posicion:= Filepos(F) - 1
Else
Posicion:= -1
end;


Procedure Nombres (Var A : paciente);
Var
Xi,Yi,h : Integer;
Di : String;
Begin
with A do
Begin
Xi:=50; Yi:=Getmaxy div 3;
Setfillstyle(1,black);
bar(0,0,getmaxx,getmaxy);
Observar(' DATOS DEL NUEVO PACIENTE ');
Outtextxy(xi,yi,'NOMBRES');
Nombres:=leertodo(xi+210,yi,0);
Nomb1:=Nombres;
Outtextxy(xi,yi+10,'APELLIDOS');
Apellidos:=leertodo(xi+210,yi+10,20);
Apell1:=Apellidos;
Outtextxy(xi,yi+20,'EDAD (aos)');
Edad:=leertodo(xi+210,yi+20,20);
Edad1:=Edad;
Outtextxy(xi,yi+30,'CEDULA');
Cedula:=leertodo(xi+210,yi+30,20);
C:=cedula;
Cedula1:=cedula;
Outtextxy(xi,yi+40,'DIRECCION');
Direccion:=leertodo(xi+210,yi+40,20);
Direcc1:=Direccion;
Outtextxy(xi,yi+50,'ESTATURA (cm)');
88
Estatura:=leertodo(xi+210,yi+50,20);
Estat1:=Estatura;
Outtextxy(xi,yi+60,'SEXO (M/F)');
Sexo:=leertodo(xi+210,yi+60,20);
Sexo1:=Sexo;
Outtextxy(xi,yi+70,'PESO (Kg)');
Peso:=leertodo(xi+210,yi+70,20);
peso1:=peso;
Longitug:=0;
Datprueba:='NINGUNA';
dia;
diario.year1:=y;
diario.mes1:=me;
diario.dias1:=dias1;
For k:=1 to 500 do Vectdat[k]:=0;
For k:=1 to 500 do Vectdat2[k]:=0;
Sw:=True
End;
End;


Procedure cambioNom (Var A : paciente);
Var
Xi,Yi,h : Integer;
Di,B : String;
Posic : Integer;

Begin
with A do
Begin
Xi:=Getmaxx div 2; Yi:=Getmaxy div 3;
Setfillstyle(1,black);
bar(xi-8,yi+20,xi+108,yi+70);
Visualizar(a,Yi);
Setfillstyle (1,black);
Posic:=1;
Repeat
If posic=1 then
Begin
yi:=Getmaxy div 3-15;
B:=nombres;
End;
If posic=2 then
Begin
yi:=Getmaxy div 3;
B:=apellidos;
End;
If posic=3 then
Begin
yi:=Getmaxy div 3+15;
B:=Cedula;
End;
If posic=4 then
Begin
89
yi:=Getmaxy div 3+30;
B:=edad;
End;
If posic=5 then
Begin
yi:=Getmaxy div 3+45;
B:=Estatura;
End;
If posic=6 then
Begin
yi:=Getmaxy div 3+60;
B:=sexo;
End;
If posic=7 then
Begin
yi:=Getmaxy div 3+75;
B:=peso;
End;
Getimage(xi,yi-3,xi+8*(length(b)),yi+10,punt^);
Putimage(xi,yi-3,punt^,notput);
repeat
Ch:= readkey;
until (ch='M') or (ch='K')
or (ch=#13) or (ch=#27) or (ch='P') or (Ch='H');
putimage(xi,yi-3,punt^,0);
if Ch=#13 Then
Begin
Case Posic of
1: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
Nombres:=leertodo(xi,yi,20);
End;
2: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
Apellidos:=leertodo(xi,yi,20);
End;
3: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
Cedula:=leertodo(xi,yi,20);
End;
4: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
Edad:=leertodo(xi,yi,20);
End;
5: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
Estatura:=leertodo(xi,yi,20);
End;
6: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
Sexo:=leertodo(xi,yi,20);
End;
7: Begin
Bar(Xi,yi,Xi+8*(length(b)),yi+10);
90
Peso:=leertodo(xi,yi,20);
End;
End;
End;
Case Ch of
'P':Posic:=posic+1;
'H':posic:=posic-1;
#27:Begin
halt;
End;
end;
if posic>7 then posic:=1;
if posic<1 then Posic:=7;
Until (Ch=#13) or (ch=#15);
End;
End;


Procedure rdash8;

Begin
Adress:=$300;
Begin
Port[Adress+1]:=$0;
Port[Adress+2]:=$0;
Delay(50);
Repeat
Begin
B:=Port[Adress+2];
A:=B xor $7F;
End;
Until A<$FF;
DatoL:=Port[Adress+0];
DatoH:=Port[Adress+1];
Conv:=(DatoL shr 4 + DatoH shl 4);
Conv:=(Conv/2048)*5-5;
End;
End;
end.

91
unit umvar;

{ En esta unidad del programa UMFRESP , se guardan las variables globales a ser utilizadas en cada una de
las unidades componentes y en el mismo programa principal. Esto ayuda a que si se requiere variable para
cualquier unidad no se incurra en el error de tener variables gemelas. }

Interface

uses crt,dos,graph,printer;

Type
punto=array[1..100] of string;
pantalla=Array [1..100] of string;
paciente = Record
Nombres : String[40];
Apellidos: String[40];
Edad : String[5];
Estatura : String[10];
Sexo : String[2];
Cedula : String[40];
Direccion: String[100];
Peso : String[10];
datprueba: String[10];
Numprueba: String[2];
Fev1est : String[4];
Fvcest : String[4];
Fevfvcest: String[4];
Mmfest : String[4];
Mvfest : String[4];
longitug,
long2 : Integer;
Prom : Real;
tiempo : Real;
vectdat : Array [1..500] of integer;
vectdat2 : Array [1..500] of integer;
diario : Record
year1 : word;
mes1 : word;
dias1 : word;
End;
diario2 : Record
year2 : word;
mes2 : word;
dias2 : word;
End;
Sw : Boolean;
End;


Fichero = File of paciente;
Frase = String[40];
Cadena40 = String[40];
Cadena6 = String[6];
menpal = Array [1..4] of string;
92
Elemento_de_datos = Array [1..3] of integer;

Const
menupal : menpal=('PRUEBA','MONITOREO','ESTADISTICA','SALIR');
menu1 : menpal=('ENTRAR DATOS','CAMBIAR DATOS','VER DATOS','REALIZAR PRUEBA');
menu2 : menpal=('ENTRAR DATOS','CAMBIAR DATOS','VER DATOS','MONITOREO');
menu3 : menpal=('DATOS PRUEBAS','DATOS MONITOREO','','');

Var
Nomb1 : String[40];
Apell1 : String[40];
Edad1 : String[5];
Estat1 : String[10];
Sexo1 : String[2];
Cedula1 : String[40];
Direcc1 : String[100];
Peso1 : String[10];
datprueba: String[10];

Dif : Array [0..10] of real;
Vectcam : Array [1..500] of integer;
Vector1 : Elemento_de_datos;
Size : Word;
Punt : ^punto;
Pant : ^Pantalla;
GD,GM,suma,Lugar,
m1 : Integer;
Arch : Fichero;
x,y,i,caso,T,E,ver: Integer;
Incremento,Fila : Byte;
Titulos1 : Array[1..73] of frase;
Col,l : Integer;
Titul : Frase;
Y1,Y2,Y3,paso : Integer;
Fi : String[12];
G,I_ten,C_int,hi : Integer;
Posi,Posi1,Posi2,
Posi3,k : Integer;
hora,min,seg,mile : Longint;
C : cadena40;
h,m,s,hund,d,Chce,
Canint,inten : string;
Predial,Morad : Real;
Ch : Char;
Imp1,imp2 : Real;
an,me,dias1,ds : Word;
Deutot,deupag : Real;
Xr, Yr, Yy : Integer;
Yl,Yll : Integer;
Conv : Real;
Adress,b : Integer;
Ad : String;
DatoH,DatoL,A : Byte;
Count : Integer;
93
Xiir,Yiir : Array [0..2] of real;
Fvcc,fev1c,Fevfvcc,
Mmfc,Fef25c,Fef50c,
Fef75c,Tlc,Rv,
Mvvc : Real;



Implementation

End.

You might also like