User Manual

Manual de Usuario de VitalRecorder (Spanish)

VitalRecorder es una aplicacion de registro de signos vitales en tiempo real para Windows, Raspberry Pi y Ubuntu. Captura datos de mas de 80 dispositivos medicos y los almacena en formato de archivo .vital.


Tabla de Contenidos

  1. Instalacion
  2. Inicio Rapido
  3. Interfaz de Usuario
  4. Agregar Dispositivos
  5. Tipos de Conexion
  6. Filtrado de Puertos
  7. Grabacion
  8. Carga al Servidor
  9. Archivo de Configuracion (vr.conf)
  10. Opciones de Linea de Comandos
  11. Dispositivos Compatibles
  12. Solucion de Problemas

Instalacion

Windows

Descargue e instale desde Microsoft Store:

O descargue el instalador MSI o el paquete MSIX desde la pagina de versiones.

Linux (Escritorio, AppImage)

Descargue el AppImage (VitalRecorder-*-x86_64.AppImage) desde la pagina de versiones, marquelo como ejecutable y ejecutelo:

chmod +x VitalRecorder-*-x86_64.AppImage
./VitalRecorder-*-x86_64.AppImage

Probado en Ubuntu 22.04 y posteriores. Funciona en la mayoria de distribuciones Linux modernas (Fedora, Debian 12+) sin configuracion adicional — Qt6 esta incluido dentro del AppImage.

Para acceso a dispositivos serie / USB (/dev/ttyUSB*, /dev/ttyACM*), anada su usuario al grupo dialout una sola vez:

sudo usermod -aG dialout $USER

Cierre sesion y vuelva a iniciarla para que el cambio de grupo surta efecto.

Raspberry Pi / Linux sin Cabecera (Headless)

Para grabacion desatendida en modo servidor sin GUI, descargue el binario de consola especifico de la plataforma (pivr64 para Raspberry Pi ARM64 o ubuntu64 para Ubuntu x64) desde la pagina de versiones y ejecutelo directamente.


Inicio Rapido

  1. Inicie VitalRecorder.
  2. Haga clic en el boton Agregar Dispositivo para agregar un dispositivo medico.
  3. Seleccione el tipo de dispositivo (por ejemplo, Medtronic : BIS, Philips : Intellivue).
  4. Elija el puerto de conexion (COM port, direccion IP o numero de puerto).
  5. Haga clic en Aceptar. VitalRecorder comenzara a comunicarse con el dispositivo.
  6. Haga clic en Grabar para iniciar la grabacion de datos.

Interfaz de Usuario

VitalRecorder utiliza una interfaz basada en pestanas. Cada pestana representa una "sala" o "cama" y puede tener multiples dispositivos conectados.

Nombre de Cama

A cada pestana se le puede asignar un nombre de cama. Este se utiliza para:


Agregar Dispositivos

Vaya a Agregar Dispositivo y seleccione entre los grupos de dispositivos:

GrupoEjemplos
Dispositivos VitalDBSNUADC, SNUADCM, BUTTON, VitalBOLUS
Convertidor analogico-digitalDataQ DI-149, DI-155, DI-245, DI-1100, DI-1120
Monitor de pacientePhilips Intellivue, GE Solar/Dash/Bx50, Nihon Kohden, Mindray HL7, MEKICS
Monitor multifuncionMasimo Radical-7/Root, Sentec SDM
Maquina de anestesiaDraeger Primus/Zeus/Fabius, GE Datex-Ohmeda Aisys/Avance
Ventilador mecanicoMaquet SERVO-i/s/U, Hamilton MR1/C2/C6/T1
Bomba de infusion de farmacosFresenius Agilia/Primea/PCBM, BBraun SpaceCom/HL7, Daiwha, Pion
Monitor cerebralMedtronic BIS/VISTA/INVOS, Fresenius Conox, OBELAB NirsitON
Monitor neuromuscularTwitchView, TOFScan, TOFcuff
Calentador de fluidosBelmont FMS 2000
Monitor de gasto cardiacoEdwards Hemosphere/Vigilance/EV1000/Vigileo, Getinge PulsioFlex
Monitor fetalGE Corometrics 250cx

Tipos de Conexion

RS-232 (Serial / COM Port)

La mayoria de los dispositivos utilizan comunicacion serial RS-232 a traves de un COM port fisico o un adaptador USB-to-Serial.

TCP (Red)

Para dispositivos conectados por red. VitalRecorder puede actuar como cliente o servidor TCP.

Los dispositivos HL7 (Mindray HL7, Nihon Kohden HL7GW, BBraun HL7) generalmente usan el modo servidor con encapsulamiento MLLP.

UDP (Red)

Algunos dispositivos transmiten datos por UDP.

BLE (Bluetooth Low Energy)

Para sensores inalambricos como Movesense.


Filtrado de Puertos

Al conectar dispositivos TCP/UDP, puede agregar filtros a la cadena de puerto para aceptar selectivamente conexiones o mensajes. Solo funciona con comunicaciones basadas en tramas con delimitadores (como HL7).

Formato

PORT#KEYWORD@IP_ADDRESS

Todas las partes excepto PORT son opcionales.

Filtro de Palabra Clave (#)

Filtra los mensajes entrantes buscando una cadena de palabra clave dentro del contenido del mensaje. Los mensajes que no contienen la palabra clave se descartan silenciosamente.

2575#BED-001

Esto escucha en el puerto 2575 y solo procesa mensajes que contienen BED-001. Esto es util cuando un unico gateway HL7 (por ejemplo, DoseLink, Mindray Gateway) envia datos de multiples camas a traves de una sola conexion.

Multiples Palabras Clave

2575#BED-001 Propofol

2575#BED-001#BED-002

Filtro de IP (@)

Filtra las conexiones TCP entrantes por la direccion IP de origen. Las conexiones desde otras direcciones IP se rechazan en la etapa de aceptacion TCP. El filtro de IP solo funciona en modo servidor TCP y UDP.

[email protected]

Esto escucha en el puerto 2575 y solo acepta conexiones desde 192.168.100.22.

Coincidencia por Sufijo

Se admite la coincidencia por sufijo separado por puntos (.). No es necesario introducir la direccion IP completa; basta con especificar la parte final.

[email protected]

Esta configuracion permite conexiones desde todas las IPs con el formato xxx.xxx.100.22.

Combinacion

2575#[email protected]

Esto escucha en el puerto 2575, solo acepta conexiones desde 192.168.100.22 y solo procesa mensajes que contienen BED-001.

Casos de Uso

Enrutamiento Multicama para Pasarelas HL7

Cuando una unica pasarela HL7 (Mindray eGateway, BBraun DoseLink, Nihon Kohden HL7GW) envia datos de varias camas por una sola conexion TCP, VitalRecorder enruta automaticamente cada trama a la pestana correcta:

  1. Solo una pestana vincula el puerto TCP (la pestana primaria); las demas pestanas que usan el mismo puerto y tipo de dispositivo pasan automaticamente a ser suscriptoras pasivas. Esto elimina la carrera de Windows SO_REUSEADDR que antes obligaba a hacer clic en "Add device" tras cada reinicio.
  2. Enrutamiento por nombre de cama (recomendado, tiene prioridad sobre el filtro por palabra clave) — establezca el Nombre de Cama de cada pestana igual a cualquier identificador que envia la pasarela; no hace falta configurar ningun filtro de puerto:

Si varias pestanas pudieran coincidir con la misma trama (p. ej. existen tanto Forskning como Bord4 y la LOCATION de la trama es Forskning~Operasjon~Bord4~Anilab~~~~~Bord4), gana el token mas especifico. Los tokens se comprueban en orden inverso, de modo que Bord4 (el nombre corto al final de LOCATION) prevalece sobre Forskning (la etiqueta departamental al inicio). Cada trama se entrega a una sola pestana.

  1. Enrutamiento por palabra clave (alternativa) — cuando el Nombre de Cama no puede coincidir directamente con el identificador de la pasarela, use la sintaxis puerto#palabra_clave descrita arriba. Solo se aplica si no hay coincidencia por nombre de cama.
  2. Creacion automatica de pestana — si ninguna pestana coincide y la trama trae un identificador de cama, se crea una pestana nueva con el token mas especifico (el ultimo no vacio). Esto evita la perdida de paquetes durante la configuracion inicial.
  3. Recuperacion automatica tras reinicio — al reiniciar VitalRecorder, todas las pestanas restablecen la relacion primario/suscriptor en unos 15 segundos sin intervencion manual.

En BBraun DoseLink una trama HL7 representa un rack (una cama); las multiples bombas del rack se envian como bloques VMD dentro de la trama y se registran en pistas separadas (PUMP1 ... PUMP16) de la misma pestana.

Visualizacion de bombas en Monitor View (1.18.30+)

Monitor View ahora muestra hasta 8 bombas simultaneamente (antes 4). Cada ranura de bomba muestra el nombre del farmaco y un valor grande:

Todos los demas campos de la bomba (presion, concentracion, velocidad de dosis, jeringa, bolo, tiempo de infusion, peso del paciente, drug library, care area, etc.) siguen siendo grabados en el archivo .vital y visibles en la vista de pistas predeterminada — solo Monitor View hace curacion para mantener la pantalla despejada durante los experimentos en curso.

Dispositivos soportados: BBraun SpaceCom/HL7, Fresenius Agilia/Primea/PCBM, Daiwha, Pion. Sin configuracion requerida — este es el diseno por defecto.

La opcion minimal=1 de vr.conf introducida en 1.18.29 se elimino en 1.18.30: tambien omitia los campos adicionales del archivo .vital (irrecuperable). El rediseno de Monitor View de 1.18.30 preserva todos los datos grabados.

Aviso 1.18.23 para Windows no ingles — las versiones anteriores sufrian un problema del C runtime de Windows: en idiomas con , como separador decimal (noruego, aleman, frances, etc.) las velocidades de infusion menores que 1.0 mL/h se registraban como 0. Desde 1.18.23 el parseo numerico siempre usa . como separador decimal, independientemente de la configuracion regional de Windows. El limite de bombas BBraun por dispositivo se amplio de 8 a 16.

Reenvio de Tramas

Cuando se recibe un mensaje que no coincide con el filtro de palabras clave, VitalRecorder lo reenvia automaticamente a otros dispositivos en otras pestanas que estan escuchando en el mismo puerto. Si no hay ninguna pestana coincidente y el mensaje contiene un identificador de cama (por ejemplo, un segmento PV1 de HL7), se crea automaticamente una nueva pestana con ese nombre de cama.


Grabacion

Grabacion Automatica

Por defecto, VitalRecorder inicia la grabacion automaticamente al ejecutarse (configuracion RECORD_WHEN_START).

Formato de Archivo

Las grabaciones se guardan como archivos .vital, un formato binario comprimido con organizacion basada en pistas.

Directorio de Guardado

Configure el directorio de guardado en la Configuracion. El valor predeterminado es la carpeta Documentos del usuario.

Plantilla de Nombre de Archivo

El nombre de archivo se genera a partir de una plantilla. Valor predeterminado: %r_%y%m%d_%h%i%s

CodigoSignificado
%rNombre de sala/cama
%yAno (4 digitos)
%mMes (2 digitos)
%dDia (2 digitos)
%hHora (2 digitos)
%iMinuto (2 digitos)
%sSegundo (2 digitos)

Carga al Servidor

VitalRecorder puede cargar datos en tiempo real a una instancia de VitalServer a traves de WebSocket.

Configuracion

ConfiguracionDescripcion
SERVER_IPDireccion IP o nombre de host de VitalServer
SEND_WEBHabilitar/deshabilitar la carga al servidor (1 o 0)
CLOUD_UPLOADHabilitar/deshabilitar la carga a la nube (1 o 0)
VRCODEIdentificador unico de esta instancia de VitalRecorder

Que se Carga

Los datos se comprimen con zlib antes de la carga.

Modo HL7

Cuando la configuracion HL7 esta habilitada, VitalRecorder envia los datos de sala en formato HL7 en lugar de JSON.


Archivo de Configuracion (vr.conf)

VitalRecorder almacena todas las configuraciones en un unico archivo de configuracion llamado vr.conf. Este archivo utiliza un formato similar a INI y puede editarse manualmente para implementaciones sin interfaz grafica o aprovisionamiento por lotes.

Ubicacion del Archivo

PlataformaRuta
Windows%APPDATA%\VitalRecorder\vr.conf
Linux./vr.conf > ~/vr.conf > /boot/vr.conf (se buscan en orden)

Estructura del Archivo

# Configuracion global (antes de cualquier seccion)
KEY=VALUE

# Definicion de cama (pestana)
[BED/nombre_cama]

# Dispositivo bajo esta cama
[DEV/nombre_dispositivo]
type=TipoDispositivo
port=EspecPuerto

# Filtro bajo esta cama
[FILT/nombre_modulo_filtro]

Reglas:

Configuracion Global

General

ClaveValor PredeterminadoDescripcion
SAVEDIR(predeterminado del sistema)Directorio de guardado de archivos de grabacion
VRCODE(generado automaticamente)Codigo de identificacion unico de VitalRecorder
FILENAME_TEMPLATE%r_%y%m%d_%h%i%sPlantilla de nombre de archivo de grabacion

Grabacion

ClaveValor PredeterminadoDescripcion
RECORD_WHEN_START1Grabar automaticamente al iniciar (0: desactivado, 1: activado)
CUT_FILE1Dividir archivo en los limites de paciente (0: desactivado, 1: activado)
CUT_HOURLY0Dividir archivo cada hora (0: desactivado, 1: activado)
CUT_BY(ninguno)Senal de activacion para la division de archivo (por ejemplo, spo2, hr, any)
PT_WAITING_TIME5Tiempo de espera del paciente en minutos

Servidor

ClaveValor PredeterminadoDescripcion
SERVER_IP(ninguno)Direccion del servidor VitalDB (IP:port)
UPLOAD_SERVER_IP(ninguno)Direccion del servidor de carga de archivos
MONITOR_SERVER_IP(ninguno)Direccion del servidor de monitoreo web
SEND_WEB1Enviar datos al servidor web (0: desactivado, 1: activado)
CLOUD_UPLOAD0Habilitar carga a la nube (0: desactivado, 1: activado)

Ventana

ClaveValor PredeterminadoDescripcion
START_MAXIMIZED1Iniciar maximizado
START_MINIMIZED0Iniciar minimizado
OPTION_MIN_TO_TRAY0Minimizar a la bandeja del sistema
OPTION_ALWAYS_ON_TOP0Siempre visible encima
PLAY_SOUND1Reproducir sonidos de alarma

Preajustes de Eventos

Se pueden definir hasta 30 etiquetas de preajustes de eventos con EVT_TEXT_0 a EVT_TEXT_29.

EVT_TEXT_0=Induction
EVT_TEXT_1=Intubation
EVT_TEXT_2=Incision

Seccion de Cama

Define una cama (pestana). Se pueden definir multiples camas en un unico archivo de configuracion.

[BED/OR1]

Seccion de Dispositivo

Los dispositivos se agregan bajo una seccion [BED/...].

[DEV/nombre_dispositivo]
type=TipoDispositivo
port=EspecPuerto
ClaveObligatorioDescripcion
typeSiTipo de dispositivo (por ejemplo, BIS, Intellivue, Solar8000)
portSiPuerto de conexion (ver Formatos de Puerto a continuacion)
companyNoFabricante (por ejemplo, Nihon Kohden)
readonlyNoModo solo lectura (0: desactivado, 1: activado)

Formatos de Puerto

FormatoEjemploDescripcion
COM portCOM1, COM3Puerto serial de Windows
TCP/IP192.168.1.100:4343Dispositivo de red (IP:port)
Numero de puerto4343Modo servidor TCP en localhost
RPi serialF1-F4Puertos AMA de Raspberry Pi
RPi USBLU, LU1-LU4USB superior izquierdo
RPi USBRU, RU1-RU4USB superior derecho

Filtrado de Puertos en la Configuracion

El valor del puerto admite filtros de palabra clave e IP (misma sintaxis descrita en Filtrado de Puertos):

port=PORT#keyword1 keyword2#keyword3@IP_SUFFIX

Configuracion de Dispositivos ADC

Para dispositivos ADC (Convertidor Analogico-Digital), estan disponibles configuraciones adicionales por canal:

ClaveDescripcion
srateFrecuencia de muestreo en Hz
parname1, parname2, ...Nombre del parametro para cada canal
gain1, gain2, ...Ganancia de conversion de voltaje a unidad fisica para cada canal
[DEV/SNUADC]
type=SNUADC
port=COM3
srate=500
parname1=ECG
gain1=1.0
parname2=ART
gain2=100.0

Configuracion de Dispositivos S5 / Datex (GE Solar / Bx50 / B1x5M / Canvas)

Los dispositivos que usan el protocolo Datex DRI (S5, Solar8000, Bx50, B1x5M, Canvas) admiten opciones por dispositivo para seleccionar que formas de onda solicitar al monitor.

ClaveDescripcion
wavsLista de formas de onda a solicitar (separadas por coma, hasta 8)
waveonly1 = solo formas de onda, sin valores numericos; 0 = ambos (predeterminado)

Nombres de forma de onda disponibles: ECG1, ECG2, PLETH (alias PPG), CO2, O2, N2O, AWP, IABP1–IABP8, EEG1, EEG2, EEGBIS, EEGENT, EEGENT400.

Forma de onda de presion arterial invasiva (ART): Use IABP1 — ART e INVP1 no se reconocen. El primer canal de presion invasiva (etiquetado normalmente como ART en la pantalla del monitor) se mapea a IABP1.

Formas de onda predeterminadas cuando wavs no esta definido:

DispositivoFormas de onda predeterminadas
B1x5M (B105M / B115M / B125M)Solo ECG1, PLETH — la familia B1x5M no puede mantener el ritmo del flujo S5 completo, por lo que el valor predeterminado se reduce intencionalmente
Resto de S5 / Solar8000 / Bx50 / CanvasECG1, PLETH, IABP1, CO2, AWP

Si necesita formas de onda adicionales en un B1x5M (por ejemplo, presion arterial invasiva), listelas explicitamente:

[DEV/B1x5M]
type=B1x5M
port=LU
wavs=ECG1,PLETH,IABP1,CO2,AWP

Seccion de Filtro

Agrega un filtro de procesamiento de senales en tiempo real. Las definiciones de filtros se cargan desde el servidor de filtros.

[FILT/nombre_modulo_filtro]

Agregar filtros mediante la GUI — En el menu Filters de una cama, elija Add. El cuadro de dialogo muestra todos los filtros disponibles en el servidor de filtros local de Python. Desde la version 1.18.37, VitalRecorder descarga automaticamente en el primer uso un runtime reducido de Python 3.11 (~27 MB), reemplazando el paquete de 121 MB basado en pyvital. Los filtros basicos de ECG / PPG / EEG (HRV, MTWA, deteccion de QRS, FFT, etc.) vienen preinstalados y funcionan de inmediato. Los filtros que requieren runtimes de aprendizaje profundo (HPI, detector de ruido de latidos, clasificador de ritmo, SV dlapco) estan detras de un boton Install ML filters — al pulsarlo se ejecuta pip install openvital[all] de forma silenciosa (sin ventana de comandos) y descarga PyTorch / TensorFlow solo cuando es necesario. Reinicie VitalRecorder despues de la instalacion para que los nuevos filtros aparezcan en la lista.

Ejemplos de Configuracion

Monitor de Paciente Unico

SAVEDIR=D:\VitalData

[BED/OR1]

[DEV/Solar8000]
type=Solar8000
port=COM1

Multiples Dispositivos

SAVEDIR=D:\VitalData
VRCODE=OR1_PC

[BED/OR1]

[DEV/Intellivue]
type=Intellivue
port=192.168.1.100:4343

[DEV/BIS]
type=BIS
port=COM3

[DEV/Primus]
type=Primus
port=COM4

Multiples Camas

SAVEDIR=D:\VitalData

[BED/OR1]

[DEV/Solar8000]
type=Solar8000
port=COM1

[BED/OR2]

[DEV/Philips]
type=Intellivue
port=192.168.1.101:4343

Depuracion / Prueba

SAVEDIR=C:\Users\lucid\Desktop

[BED/test]

[DEV/NK EGA]
type=EGA
company=Nihon Kohden
port=9001

Con Filtro

[BED/OR1]

[DEV/Solar8000]
type=Solar8000
port=COM1

[FILT/pleth_spi]

Opciones de Linea de Comandos

vital.exe [opciones] [nombre_archivo]
OpcionDescripcion
--version, -vMostrar numero de version
--devtypes, -dListar todos los tipos de dispositivos compatibles
--console, -cEjecutar en modo consola (sin GUI)
--debug [conf]Ejecutar en modo depuracion (incluye modo consola, archivo de configuracion opcional)
--conf <ruta>Especificar la ruta del archivo de configuracion
--upgrade, -uActualizar a la ultima version
-u1.18.0Actualizar a una version especifica
--help, -hMostrar ayuda
nombre_archivo.vitalAbrir un archivo .vital para reproduccion

Modo Consola

El modo consola (--console o -c) ejecuta VitalRecorder sin la GUI. Esto es util para implementaciones sin interfaz grafica en Raspberry Pi o servidores Ubuntu. Los dispositivos se cargan desde la configuracion guardada.

Modo Depuracion

El modo depuracion (--debug) incluye el modo consola y muestra registros detallados en la salida estandar, incluyendo apertura/cierre de dispositivos, reenvio de tramas, etc. En modo depuracion no se generan archivos .vital reales.

# Ejecutar en modo depuracion con la configuracion predeterminada
vital.exe --debug

# Ejecutar en modo depuracion con un archivo de configuracion especifico
vital.exe --debug test_mindray.conf

Dispositivos Compatibles

Para la lista completa de dispositivos compatibles con detalles de conexion y parametros, consulte Supported Devices.

Referencia Rapida: Dispositivos Comunes

DispositivoConexionConfiguracion de Puerto
Philips IntellivueRS-232COM port, 115200 baud
GE Solar 8000RS-232COM port, 9600 baud
Nihon Kohden (Serial)RS-232COM port, 9600 baud
Nihon Kohden (HL7GW)TCP ServerPort 9001
Nihon Kohden (EGA)UDPPort number
Mindray (HL7)TCP ServerPort 10000
Draeger (Medibus)RS-232COM port, 9600 baud (8N2)
GE Datex-OhmedaRS-232COM port, 19200 baud (7E1)
Medtronic BISRS-232COM port, 57600 baud
BBraun SpaceComRS-232COM port, 9600 baud
BBraun HL7 (DoseLink)TCP ServerPort 2575
Masimo Radical-7RS-232COM port, 9600 baud
Edwards HemosphereRS-232COM port, 9600 baud
Hamilton ventilatorRS-232COM port, 38400 baud

Solucion de Problemas

El Dispositivo No Se Conecta

  1. RS-232: Verifique que se ha seleccionado el COM port correcto. Compruebe el numero de puerto en el Administrador de Dispositivos. Asegurese de que el controlador USB-to-Serial esta instalado.
  2. Modo servidor TCP: Compruebe que el firewall permite conexiones entrantes en el puerto especificado.
  3. Modo cliente TCP: Verifique que la direccion IP del dispositivo es accesible (prueba con ping).

No Se Muestran Datos

Multiples Dispositivos en el Mismo Puerto

Para dispositivos HL7 que comparten un unico puerto de gateway, use la funcion de Filtrado de Puertos con la palabra clave # para separar las camas.

BBraun HL7 Multi-Bomba

BBraun DoseLink envia datos de multiples bombas a traves de una unica conexion TCP. VitalRecorder identifica automaticamente cada bomba usando el numero de serie en OBX-18 (Equipment Instance Identifier) y las asigna de PUMP1 a PUMP8.

Si las bombas no se separan correctamente:

La Carga al Servidor No Funciona