Sunday, December 10, 2006

De cualquier maya se escapa un ratón


Esperé hasta el último momento antes de inscribirme solo para ver como me sentía. Había estado lastimado. Había tratado de correr el 1/2 maratón de West Palm Beach la semana pasada donde tan solo había logrado lastimarme aún mas. Asi que hoy me levanté a las 5:45 a.m. y salí a trotar 800 metros. No sentí dolor. Sin perder tiempo comí algo y me monté con Nancy en el carro camino al maratón.

Inscripciones cerraban a las 6:45. Estacionamos y corrí hasta la carpa de inscripciones. A las 6:45 estaba inscrito de donde salí a hacer la fila de la letrina. Allí me encontré a Bert (un conocido que veo en todas las carreras). Le saludé. Se sorprendió de verme, pues a penas la semana anterior me vio llegar a la meta cojeando por lo que sabía que yo estaba lastimado. A las 6:55 salí de la letrina y de camino a la línea de salida volví a ver a Bert. Trotamos para tratar de llegar antes del disparo pautado para las 7:00am. A las 7:06 dieron el disparo y salieron los corredores.

El 1/2 maratón (21 kilómetros) de Weston es el mejor de todos los 1/2 maratones que yo jamás haya participado. Para mí es un evento muy importante. Entre otras amenidades, tienen un cronómetro en cada milla, carreteras perfectísimas y el más bello paisaje. Además es el maratón de mi ciudad que hasta pasa muy cerquita de mi casa. Por eso sufrí toda la semana lesionado, pensado que tendría que esperar todo un año antes de tener esta oportunidad nuevamente. No hice nada toda la semana. Descansé con la ilusión infantil de sanar milagrosamente en 7 días. Y es que, si Dios creó la tierra y todas las cosas que en ella habita en 7 días...

Primera milla -- 8:30. Me sentía bien, apreté el paso. Milla 2 a 7:30 exacto-- 16:00 minutos de carrera. Decidí montar paso estable por un rato. Milla 3 --24:00. Milla 4 --32:00. Parecía un relojito por la exactitud. Milla 5 --39:45. Muy rápido. ¿Que pasó? No me di cuenta. Pensé en controlarme; pero que va... Comencé a pasar las millas a 7:45. Veía a Bert 200 metros al frente mío hasta llegar a la milla 10. Entonces me volvió el dolor. No en el lado izquierdo que es el que tengo lastimado, si no que esta vez en los dos lados. Yeap --lado izquierdo y el derecho. Esto no tiene una explicación.

Solo quedan 5 kilómetros. Los sufrí. A parte del dolor en ambos "hip-flexors", no sentí ningún otro problema. Tenía aire, no estaba cansado, y no me dolían las piernas. Así que inspirado al pensar en la excelente carrera que traía hasta el momento, aunque corriendo un poco más lento y habiendo perdido un poco la forma, me aguanté como un machito y corrí con dolor. Me acordé de mi buen amigo Juan C. Padró a quien he visto correr con una cara que se me parece a la de una mujer pariendo.

Al final de los 21 kilómetros (13.1 millas) el tiempo total al cruzar la meta fue 1:44:30. No es mi mejor tiempo, pero considerando las circunstancias y las expectativas que tenía para ese día... not bad. Not bad at all.

Como dice la canción: "de cualquier maya" (pausa) "se escapa un ratón -- oyé"...




Reinaldo Crespo-Bazán

Sunday, November 26, 2006

El Modelo Mental

He observado que siempre que nos toca introducir un usuario nuevo a nuestro sistema, estos nunca llegan sin ideas preconcevidas. Siempre se crean ciertas expectativas sobre como es que el sistema debe de funcionar. Así es que eventualmente nos vemos con la pregunta, ¿y como se hace x proceso? Y muchas veces ese proceso al que hacen referencia y que estan acostumbrados por más incómodo y complicado que sea, ni siquiera tiene sentido dentro del diseño del nuevo sistema. Esto crea estrés para el nuevo usuario. Y es que aunque no haga sentido alguno dentro del diseño del nuevo sistema, dicho modelo es el único que existe en la mente del usuario. A este pradigma los programadores le llamamos el "modelo del usuario".

Por otro lado, el nuevo programa también tiene su "modelo mental". Es el modelo que ha sido codificado en "bits & bytes" y que es fielmente ejecutado por el CPU. A este modelo, que viene a ser ley por ser inflexíble, le llamamos "el modelo del programa". Cuando el modelo del usuario es el mismo que el modelo del programa, obtenemos una transición exitosa, con poco estrés y hasta divertida.

En un mundo perfecto lo ideal sería conocer de antemano el modelo del usurio y diseñar de acuerdo a este modelo. Pero el nuestro no es ni remotamente un mundo ideal. Y la verdad es que nuestros usuarios vienen de usar sistemas muy incómodos y hasta de mal diseño. La mayoría nunca ha usado un sistema de interface gráfico (GUI). Mas bien estan acostumbrados a pantallas monocromáticas de texto trabajando en "batch mode". Como hasta ahora han podido navegar por el laberinto de opciones numeradas entre tantos menús indenticos, es todo una azaña para mí. Además, por lo general el usuario se concentra tanto en "los procesos" y los defiende con tal vehemencia que olvida "el problema". Por lo tanto diseñar procesos basados en dicha herencia sería perpetuar mediocridad.

Logar reconciliar estos dos mundos se ha convertido en una de nuestras metas.



Reinaldo Crespo-Bazán.

Saturday, November 25, 2006

Cuidado del paciente


Recientemente vi uno de esos documentales en la televisión que te hacen meditar. Como cuando tienes una pesadilla en la que luego no puedes dejar de pensar. Mostraron caso tras caso donde se pierde la vida del paciente en las condiciones más absurdas dentro del hospital o sala de urgencias. En uno de los casos se muestra la madre de una niñita de 9 años narrando como a su hija la trataban en una sala de urgencias por la condición equivocada. La madre sospecha todo el tiempo que a su hija la tratan equivocadamente y a pesar de lo crítico de la situación no tubo nadie que le escuchase. Ante la vulnerabilidad e impotencia de la madre, finalmente la niña perdió la vida por las acciones bien intencionadas pero equivocadas de los expertos.

Recordé una mañana mientras llevaba a cabo un servicio en una oficina de anestesiólogos dentro del área de recuperación próximo al área de cirugías de un hospital. Recuerdo haber visto un niño de cinco años recuperando de una adenoctomía (extracción de adenoides). Dormía tranquilamente. Mientras las enfermeras y doctores charlaban casualmente y los padres, con la típica reverencia que caracteriza estos cuadros, esperaban en una sala adyacente; alguien se dio cuenta que el niño profundamente anestesiado se había ahogado en sus propias secreciones y reflujo. Y pensar que era una operación de rutina...

La madre de la niña de cinco años, sobre cuya historia se trata la base del documental, ha comenzado un movimiento en Estados Unidos que lleva por nombre "Rapid Response Team". La idea es promover que las facilidades de cuidado médico tenga un equipo de "acción rápida" que pueden ser invocados vía una llamada telefónica para cuadros clínicos mortales donde no se logra encontrar una razón aparente para la crisis de salud del paciente. El equipo se compone de especialistas en ciertas áreas específicas y especialmente adiestrados para este tipo de situación.

Normalmente los hospitales vehementemente resisten la admisión de error u omisión en el cuidado médico. El costo financiero que representa tal admisión es tan enormemente alto que los hospitales recurren a ocultar lo sucedido. Esto patrocina una cultura de mediocridad y estancamiento en el cuidado del paciente. Sin embargo, poco a poco la entidad sin fines de lucro que promueve la creación del RRT está logrando "evangelizar" la industria del cuidado médico. Una vez un hospital acepta, ellos llegan con un "RV" y comienzan a organizar y a llevar a cabo una serie de adiestramientos hasta lograr el objetivo. De paso, se sustentan con donaciones.

En uno de estos hospitales una mujer narra su caso como paciente de cáncer que en medio de su quimioterapia comenzó a perder el pulso. Inicialmente la reacción de las enfermeras fue suspender la quimio y esperar que el paciente regresara por cuenta propia. Sin embargo, el cuadro cada vez se hacía más negro. Finalmente se llamó el RRT quienes encontraron que el paciente sufría en ese preciso momento de un ataque cardiaco. La mujer sobrevivió la experiencia para poder narrar lo sucedido gracias al RRT.

Muchos de los errores suceden por la administración de medicamentos a los que el paciente es alérgico y/o por la misma interacción entre los mismos. Con esto en mente tomé la decisión de proveer a nuestros clientes la posibilidad de integrar el cotejo de interacciones, reacciones adversas, y efectos alérgicos de una manera automatizada. Finalmente, tenemos una actualización del sistema de farmacia para hospitalizados (IPD), que provee la opción para el cotejo de interacciones.

Esperando que de alguna manera esto ayude a mejorar el cuidado al paciente, ponemos este centavo en la alcancía como nuestra aportación.



Reinaldo Crespo-Bazán

Friday, November 03, 2006

Agapito


Admiro mucho el talento y casi todo lo que escribe Manuel Rivera. Un jíbaro de Naranjito. Para mí, uno de los mejores escritores de estos tiempos. Sabiendo que un mismo tema no apela a todas las personas, he pasado un buen rato tratando de escoger cual de todos los que tanto me gustan, compartir. Finalmente escojí el tema de Agapito, el individuo que existe en toda sociedad y que seguro reconocerán. Disfruten.

Agapito --basta ya,
no seas tan embustero,
tan canalla y majadero,
anda y dime la verdad.
Donde está la dignidad
que te enseñaron tus viejos,
se perdieron los consejos,
vaya que barbaridad.

Cuando me encuentro ocupado
es como una maldición,
trae una conversación
con un suceso inventado.
Camina de lado a lado
con el ceño muy fruncido,
tal parece que ha creído
la mentira que ha cuajado.

Vaya el entretenimiento
que se inventa ese maldito,
sabe de todo un poquito
desperdiciando el talento.
Se desplaza tan contento
como un perro con dos rabos,
un maestro atando cabos
repitiendo el mismo cuento.

Ya me tiene abacorao
y eso no se lo perdono,
porque tiene tanto tono,
mas tonos que un seis chorreao.
El cerebro saturado
de paquetes sin residuo,
estoy a ley de intensivo
de la pela que me ha dado.

Posee tantos recursos,
se evade de tanta maña
y ataca como piraña
para emprender su discurso.
Yo pienso que en un concurso
de oratoria y resistencia,
se muere la competencia
a la vez que toma impulso.

Y cuando habla de religión
es un acontecimiento
mezcla el viejo testamento
con esta generación.
Inventa historias que son
un verdadero quebranto
y le cambia el nombre a los santos
sin ninguna compasión.

Y si le mencionan el arte
y logra montar tribuna,
jamás ha perdido una,
el hombre es un caso a parte.
Casi logra hipnotizarte
aunque tiene poca escuela,
dale un buche de tachuelas
para que puedas safarte.

Amante del juramento
poniendo a Dios por testigo,
llega a un acuerdo contigo
y se le olvida al momento.
Falla a cada ofrecimiento
sin importar un comino,
un fracaso del destino
que merece un escarmiento.

Y cuando ocurre un accidente,
la realidad exajera
y la cambia de tal manera
que condena un inocente.
Y al llegar cada pariente
se torna tan afligido,
el rostro mas confundido
que la cara del paciente.

El le a anunciado la muerte
a la gente saludable.
Con frialdad incomparable
en difunto lo convierte.
"Se le terminó la suerte,
al hospital lo llevaron,
lo abrieron y lo cerraron,
y ya está de cuerpo presente".

Y en las noches de velorio,
él toma la iniciativa
y de esta manera cautiva
la atención del auditorio.
Cuando llega a un consultorio
llama al médico "pariente"
y marea a los pacientes
con el mismo repertorio.

Y el hijo por inocencia
repite lo que él proclama
adquiriendo así la fama
que le han dado por herencia,
agotando la paciencia
del abuelo y de la abuela,
los compañeros de escuela
no soportan su imprudencia.

No comprendo a mucha gente,
se alimentan de mentiras,
descargan toda su ira
con el que encuentran de frente.
Y al ser humano decente
lo tienen acorralado,
maltrecho, desesperado,
una víctima inocente.

Este virus venenoso
es tan viejo como el hombre.
Muchos le han cambiado el nombre
de embustero a mentiroso.
Como el SIDA es contagioso
el síndrome del engaño
y su punzada hace mas daño
que el escorpión ponsoñozo.

La verdad es cristalina
como el agua de la fuente.
No sé porqué tanta gente
sin piedad la contamina.
Se cuadran en una esquina
a pelar un semejante.
Al decente, al maleante,
al vecino, a la vecina.

Perdonen que sea tan franco,
pero el mal es tan severo
que llegó del jornalero
al hombre de cuello blanco.
Dá un satánico espanto
y a la damas, por respeto,
no digo el cuento completo,
de la verguenza me aguanto.

Sepan todos a conciencia
que de haber un parecido
con algún ser conocido
es por pura coincidencia.
Se me agota la paciencia,
no soporto mas allá.
¡Agapito! --basta yá,
al Diablo con tu imprudencia.



Reinaldo Crespo-Bazán.

Wednesday, October 25, 2006

Grata Sorpresa



Simple Query Language (SQL) es uno de los pocos estándares en el que la industria en servidores de bancos de información parece estar de acuerdo. Desde la versión 8(beta) nuestros sistemas pueden ser operados contra un servidor SQL o contra tablas sueltas (free tables). Ambos métodos funcionan muy bien. La segunda opción resulta menos ágil pero también menos costosa. En cambio, la primera resulta más robusta y con mayor ligereza. El poder ejecutar el sistema con y sin el motor de datos SQL nos otorga gran flexibilidad y amplitud de rango en el mercado.

Junto con el servidor SQL, siempre instalamos la herramienta Data Architect (DA) que es la razón por la hoy elijo escribir este tema. Y es que me ha sucedido que precisamente luego de mostrar como usar el DA a un usuario hace unos pocos días, me he llevado una grata sorpresa que me ha servido de inspiración.

En uno de los hospitales un usuario movió por error todos los cargos de una cuenta a otra usando el "drag-n-drop". El problema llega al departamento de MIS quienes se vieron en la necesidad de cambiar todos los números de cuenta de estos cargos recién movidos a otra cuenta con el fin de recuperarlos de vuelta a su cuenta original. Esto, sin afectar los cargos que legítimamente tenía la cuenta antes de que se le añadiesen los cargos de la otra. Reconozco que existen varias maneras de hacer esto utilizando el DA, pero la forma en que este usuario, lo llevó acabo --y sobre todo, con lo muy poco que le he mostrado; es lo que me ha dejado totalmente sorprendido e inspirado. Me tardé un rato en reconocer lo que él solito había alcanzado.

Luego de conectarse con DA al diccionario de datos (data dictionary --DD), ejecutó este mando SQL:

SELECT adm_num, date, recno FROM ptechrgs WHERE
recno = ' 34323' AND date > '10/03/2006' AND date < '10/14/2006'


Al ejecutar este mando SQL se obtiene una lista de récords mostrando el número de admisión, la fecha del cargo y el número de récord médico de todos los cargos que cumplen con la condición de que el número de record médico sea igual a 34323 y que el cargo haya sido creado entre Oct 03 a oct 14 del 2006. Observe en la parte superior el mando y la inferior la lista en la imagen que muestro abajo:




Una vez se obtiene la lista, el operador simplemente cambió los números de cuenta de regreso al número que originalmente tenían sobre-escribiendo sobre los números de cuenta en esa misma lista y así movió esos cargos a la cuenta a la que pertenecen. Sencillo. Elegante. Totalmente por su cuenta y sin pedir ayuda.

Son muchas las posibilidades que tiene el director de MIS tanto de manipular datos como de crear informes. Reconociendo ahora más que nunca la necesidad de ofrecer mayores posibilidades de adiestramiento a estas personas, he colocado en el directorio de /documentation un par de cursos animados sobre el tema de mandos SQL y el uso de la herramienta data architect. El primero de estos cursos ya está disponible y se titula SQLScript.exe. Tómese el tiempo de accesarlo de nuestra página y déle una miradita.

Le ruego que cualquier uso de utilidad que le encuentre como parte de su trabajo cotidiano, me lo informe enviando un corto resumen del problema y el mando SQL que se usó para solucionarlo.



Reinaldo Crespo-Bazán

Friday, October 20, 2006

Interacción: ¿ser o no ser?


En un pricipio mi objetivo primordial fue crear y mantener un sistema capaz de manejar la facturación y cobro a planes médicos por servicios otorgados a pacientes.

Muchas cosas han cambiado en estos últimos veinte años. Para lograr este objetivo, siempre me preocupé especialmente de mirar las cosas desde otro punto de vista. Un punto de vista más sencillo (KISS -keep it simple stupid) y crear un interface fácil de entender, directo, y evitando la sobre inteacción con el usuario. Eso nunca ha cambiado.

Siempre observo otros sistemas que con el fin de llevar a cabo casi cualquier tarea, hacen al usuario responder a una pregunta --pantalla tras pantalla tras pantalla. Confirmaciones, si o no, etc... Otros obligan al usuario a llevar a cabo cierres y procedimientos lentos, tediosos, y que consumen muchísimo tiempo. En cambio yo siempre busco que el sistema pueda tomar las decisiones sin interacción del usuario tanto como sea posible. Prefiero darle "inteligencia" al sistema con el fin de que el mismo pueda tomar desiciones sin necesidad de estar interrumpiendo el usuario o haciendole hacer 20 clicks para lograr cualquier cosa. Prefiero crear y mantener índices y archivos ini que permiten velocidad, configuración, flexibilidad, y la auto-ciber-inteligencia (el término mio no lo busque en el diccionario).

A este principio yo le he puesto nombre. Le llamo el principio de "evitar la sobre interacción". Y es curioso porque para ser fiel a este principio muchas veces tengo que luchar con algunos usuarios. Porque siempre hay usuarios (una minoría pero los hay) que conocen el problema y por ende piensan que conocen la solución. Entonces quieren convertirse en diseñadores y comienzan a pedir cambios y a proponer cosas que van en ruta directa a una violenta colisión con el principio de evitar la sobre interacción.

Hoy dia el sistema es mucho más que facturación y cobro de las pruebas, uso de facilidades, y los servicios médicos ofrecidos a pacientes. Ahora el sistema meneja todos los documentos del paciente digitalmente, maneja las ordenes y resultados de laboratorios, rayos x, medicamentos, y cualquier otro servicio ordenable a algún departamento dentro de la institución hospitalaria. Así mismo maneja el triage en la sala de emergencia, la farmacia, el almacen, las estaciones de enfermería, y hasta lee directamente de los instrumentos los resultados de laboratorios. Crea y descifra los documentos ANSI X12 837p, 837i, 835, 270, 271, 275, 276 y 997. Crea informes en combinaciones y permutaciones de parámetros pertinentes al informe que se pueden ver en la pantalla tal cual van a quedar en la impresora laser (WYSIWYG -- what you see is what you get) y que puedes guardar para enviar por email o exportar a MS-Excel para hacer con ellos lo que se quiera. Contiene un módulo para el manejo del departamento de récord médico, records incompletos, "DRG" y "APC grouper" y optimizador, buscador de códigos ICD, CPT, ICD V3, fármacos, y HIV. Tiene módulo para la entrada de pagos de pacientes y miscellaneos en ventanilla de cobro centralizada y módulo para la transcripción y reporte de resultados de patología y/o rayos x.

Sin embargo, algo no ha cambiado: -el principio de evitar la sobre interacción.




Reinaldo Crespo-Bazán.

Thursday, October 19, 2006

Bienvenido


Bienvenido.

Hoy comienzo este blog con el fin de documentar y mantener notas sobre los planes, el progreso, las modificaciones, y motivaciones detrás de los cambios del sistema que escribo y que mantengo para administración de la información en centros de cuidado médico.

De igual manera espero compartir algunas de las ideas que nada tienen que ver con sistemas de computadoras. Ideas que muchas veces he querido plasmar por escrito por el hecho de ser contradictorias y que van en contra de la corriente o porque pienso que encierran verdades que deseo compatir. Tal vez de esta manera yo logre entenderlas mejor.

Espero sea útil para mí y para el lector de este blog.


Reinaldo Crespo-Bazán