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