VitalRecorder 是一款适用于 Windows、Raspberry Pi 和 Ubuntu 的实时生命体征记录应用程序。它能从 80 多种医疗设备采集数据,并以 .vital 文件格式存储。
从 Microsoft Store 下载安装:
或从发布页面下载 MSI 安装程序或 MSIX 安装包。
从发布页面下载 AppImage(VitalRecorder-*-x86_64.AppImage),赋予执行权限后运行:
chmod +x VitalRecorder-*-x86_64.AppImage
./VitalRecorder-*-x86_64.AppImage
已在 Ubuntu 22.04 及以上版本验证,可在大多数现代 Linux 发行版(Fedora、Debian 12+ 等)上免额外配置直接运行——Qt6 运行库已打包在 AppImage 内部。
如需访问串口/USB 设备(/dev/ttyUSB*、/dev/ttyACM*),请将您的用户加入 dialout 组(仅需一次):
sudo usermod -aG dialout $USER
注销后重新登录使组变更生效。
如需在无 GUI 情况下以服务器方式进行无人值守录制,请从发布页面下载对应平台的控制台二进制文件(Raspberry Pi ARM64 用 pivr64,Ubuntu x64 用 ubuntu64),直接运行即可。
Medtronic : BIS、Philips : Intellivue)。VitalRecorder 采用选项卡式界面。每个选项卡代表一个"房间"或"床位",一个选项卡可以连接多个设备。
每个选项卡可以指定一个 床位名称。其用途包括:
在 添加设备 中选择设备分组:
| 分组 | 示例 |
|---|---|
| VitalDB 设备 | SNUADC, SNUADCM, BUTTON, VitalBOLUS |
| 模数转换器 | DataQ DI-149, DI-155, DI-245, DI-1100, DI-1120 |
| 患者监护仪 | Philips Intellivue, GE Solar/Dash/Bx50, Nihon Kohden, Mindray HL7, MEKICS |
| 多功能监护仪 | Masimo Radical-7/Root, Sentec SDM |
| 麻醉机 | Draeger Primus/Zeus/Fabius, GE Datex-Ohmeda Aisys/Avance |
| 呼吸机 | Maquet SERVO-i/s/U, Hamilton MR1/C2/C6/T1 |
| 药物注射泵 | Fresenius Agilia/Primea/PCBM, BBraun SpaceCom/HL7, Daiwha, Pion |
| 脑监护仪 | Medtronic BIS/VISTA/INVOS, Fresenius Conox, OBELAB NirsitON |
| 肌松监测仪 | TwitchView, TOFScan, TOFcuff |
| 液体加温器 | Belmont FMS 2000 |
| 心输出量监护仪 | Edwards Hemosphere/Vigilance/EV1000/Vigileo, Getinge PulsioFlex |
| 胎儿监护仪 | GE Corometrics 250cx |
大多数设备通过物理 COM 端口或 USB-to-Serial 适配器进行 RS-232 串口通信。
COM3)。用于网络连接的设备。VitalRecorder 可以作为 TCP 客户端或服务器。
IP:PORT(例如:192.168.1.100:9001)。2575)。VitalRecorder 监听并等待设备连接。HL7 设备(Mindray HL7、Nihon Kohden HL7GW、BBraun HL7)通常使用带有 MLLP 帧封装的服务器模式。
部分设备通过 UDP 广播数据。
用于 Movesense 等无线传感器。
连接 TCP/UDP 设备时,可以在端口字符串中添加过滤器,以选择性地接受连接或消息。仅在基于分隔符的帧通信(如 HL7)中有效。
PORT#KEYWORD@IP_ADDRESS
除端口外,所有部分均为可选。
#)通过在消息内容中搜索关键字字符串进行过滤。不包含该关键字的消息将被静默丢弃。
2575#BED-001
在端口 2575 上监听,仅处理包含 BED-001 的消息。当单个 HL7 网关(例如 DoseLink、Mindray Gateway)通过一个连接发送多个床位的数据时非常有用。
2575#BED-001 Propofol
#,处理包含任一关键字的消息。 2575#BED-001#BED-002
@)按源 IP 地址过滤传入的 TCP 连接。来自其他 IP 地址的连接将在 TCP accept 阶段被拒绝。IP 过滤仅在 UDP 和 TCP 服务器模式下有效。
[email protected]
在端口 2575 上监听,仅接受来自 192.168.100.22 的连接。
支持以点(.)为分隔符的后缀匹配。无需输入完整 IP 地址,只需指定后半部分即可。
[email protected]
此设置允许来自 xxx.xxx.100.22 格式的所有 IP 的连接。
2575#[email protected]
在端口 2575 上监听,仅接受来自 192.168.100.22 的连接,且仅处理包含 BED-001 的消息。
# 按泵序列号或床位标识符进行过滤。@ 区分哪台 DoseLink 服务器连接到哪个 VitalRecorder 选项卡。当单个 HL7 网关(Mindray eGateway、BBraun DoseLink、Nihon Kohden HL7GW)通过一条 TCP 连接传送多个床位的数据时,VitalRecorder 会自动将每帧数据路由到正确的选项卡:
SO_REUSEADDR 竞争问题。PV1-3 床位 ID(例如 SU-1、BED-001)deviceId JSON 字段或 12 字节 MFER 前缀MDC_ATTR_LOCATION OBX 中 ~ 分隔的任一非空令牌(例如 Forskning、Bord4、Anilab、Operasjon) 如果同一帧可匹配多个选项卡(例如同时存在 Forskning 和 Bord4 选项卡,帧的 LOCATION 为 Forskning~Operasjon~Bord4~Anilab~~~~~Bord4),更具体的令牌优先。令牌按倒序检测,因此 Bord4(LOCATION 末尾的显示短名)优先于 Forskning(前面的部门名)。同一帧只会被一个选项卡接收。
端口#关键字 语法。仅在床位名称路由未命中时生效。对于 BBraun DoseLink,一个 HL7 帧代表一个 rack(即一个床位);rack 内的多个泵以 VMD 块形式包含在帧中,并被记录到同一选项卡的不同轨道(PUMP1 … PUMP16)。
Monitor View 现可同时显示 最多 8 个泵(此前为 4 个)。每个泵槽显示药物名称和一个大值:
CE + 药物名称(行为不变)。RATE(mL/h)+ 药物名称,累计注射量 (VOL, mL) 以小号灰色文本显示在槽位右上角。所有其他泵字段(压力、浓度、剂量速率、注射器、bolus、注射时间、患者体重、drug library、care area 等)仍然 记录到 .vital 文件并在默认轨道视图中可见 — 只有 Monitor View 做精简,用于保持运行中实验的简洁显示。
支持的设备:BBraun SpaceCom/HL7, Fresenius Agilia/Primea/PCBM, Daiwha, Pion。无需配置 — 这是默认布局。
1.18.29 引入的
minimal=1vr.conf 选项在 1.18.30 中移除:该选项也会从.vital文件中跳过额外字段(无法事后恢复)。1.18.30 的 Monitor View 重新设计保留了所有记录数据。
1.18.23 非英文 Windows 用户提示 — 旧版本在
,作为小数点分隔符的地区(挪威语、德语、法语等)的 Windows 上,低于 1.0 mL/h 的注射速度会被记录为 0(C 运行时问题)。1.18.23 起强制数字解析始终使用.作为小数点分隔符,不受 Windows 区域设置影响。BBraun 每台设备的泵数量上限也从 8 提升至 16。
当接收到与关键字过滤不匹配的消息时,VitalRecorder 会自动将其转发给在同一端口上监听的其他选项卡的设备。如果没有匹配的选项卡,且消息中包含床位标识符(例如 HL7 PV1 段),则会自动创建以该床位名称命名的新选项卡。
默认情况下,VitalRecorder 启动时自动开始录制(RECORD_WHEN_START 设置)。
录制内容保存为 .vital 文件,这是一种基于轨道的压缩二进制格式。
在设置中配置保存目录。默认为用户的"文档"文件夹。
文件名由模板生成。默认值:%r_%y%m%d_%h%i%s
| 代码 | 含义 |
|---|---|
%r | 房间/床位名称 |
%y | 年(4 位) |
%m | 月(2 位) |
%d | 日(2 位) |
%h | 时(2 位) |
%i | 分(2 位) |
%s | 秒(2 位) |
VitalRecorder 可通过 WebSocket 实时上传数据到 VitalServer 实例。
| 设置项 | 说明 |
|---|---|
SERVER_IP | VitalServer IP 地址或主机名 |
SEND_WEB | 启用/禁用服务器上传(1 或 0) |
CLOUD_UPLOAD | 启用/禁用云端上传(1 或 0) |
VRCODE | 此 VitalRecorder 实例的唯一标识符 |
数据在上传前使用 zlib 压缩。
当 HL7 设置启用时,VitalRecorder 以 HL7 格式而非 JSON 格式发送房间数据。
VitalRecorder 将所有设置存储在名为 vr.conf 的单一配置文件中。该文件使用类似 INI 的格式,可手动编辑以用于无头部署或批量配置。
| 平台 | 路径 |
|---|---|
| Windows | %APPDATA%\VitalRecorder\vr.conf |
| Linux | ./vr.conf > ~/vr.conf > /boot/vr.conf(按顺序搜索) |
--conf <path> 指定替代配置文件。# 全局设置(在任何节之前)
KEY=VALUE
# 床位(选项卡)定义
[BED/bedname]
# 此床位下的设备
[DEV/devicename]
type=DeviceType
port=PortSpec
# 此床位下的过滤器
[FILT/filter_module_name]
规则:
KEY=VALUE 键值对。[ 开头。[DEV/...] 和 [FILT/...] 节属于其前面的 [BED/...]。[BED/...] 可以包含多个设备和过滤器。| 键 | 默认值 | 说明 |
|---|---|---|
SAVEDIR | (系统默认) | 录制文件保存目录 |
VRCODE | (自动生成) | VitalRecorder 唯一识别码 |
FILENAME_TEMPLATE | %r_%y%m%d_%h%i%s | 录制文件名模板 |
| 键 | 默认值 | 说明 |
|---|---|---|
RECORD_WHEN_START | 1 | 启动时自动录制(0:关闭,1:开启) |
CUT_FILE | 1 | 在患者边界处分割文件(0:关闭,1:开启) |
CUT_HOURLY | 0 | 每小时分割文件(0:关闭,1:开启) |
CUT_BY | (无) | 文件分割触发信号(例如:spo2、hr、any) |
PT_WAITING_TIME | 5 | 患者等待时间(分钟) |
| 键 | 默认值 | 说明 |
|---|---|---|
SERVER_IP | (无) | VitalDB 服务器地址(IP:port) |
UPLOAD_SERVER_IP | (无) | 文件上传服务器地址 |
MONITOR_SERVER_IP | (无) | Web 监控服务器地址 |
SEND_WEB | 1 | 向 Web 服务器发送数据(0:关闭,1:开启) |
CLOUD_UPLOAD | 0 | 启用云端上传(0:关闭,1:开启) |
| 键 | 默认值 | 说明 |
|---|---|---|
START_MAXIMIZED | 1 | 以最大化窗口启动 |
START_MINIMIZED | 0 | 以最小化窗口启动 |
OPTION_MIN_TO_TRAY | 0 | 最小化到系统托盘 |
OPTION_ALWAYS_ON_TOP | 0 | 窗口始终置顶 |
PLAY_SOUND | 1 | 播放报警声音 |
可通过 EVT_TEXT_0 至 EVT_TEXT_29 定义最多 30 个事件预设标签。
EVT_TEXT_0=Induction
EVT_TEXT_1=Intubation
EVT_TEXT_2=Incision
定义一个床位(选项卡)。一个配置文件中可以定义多个床位。
[BED/OR1]
BED/ 之后(例如:OR1、ICU_BED3)。设备添加在 [BED/...] 节下。
[DEV/devicename]
type=DeviceType
port=PortSpec
| 键 | 必填 | 说明 |
|---|---|---|
type | 是 | 设备类型(例如:BIS、Intellivue、Solar8000) |
port | 是 | 连接端口(参见下方端口格式) |
company | 否 | 制造商(例如:Nihon Kohden) |
readonly | 否 | 只读模式(0:关闭,1:开启) |
| 格式 | 示例 | 说明 |
|---|---|---|
| COM 端口 | COM1、COM3 | Windows 串口 |
| TCP/IP | 192.168.1.100:4343 | 网络设备(IP:port) |
| 端口号 | 4343 | TCP 服务器模式(localhost) |
| RPi 串口 | F1-F4 | Raspberry Pi AMA 端口 |
| RPi USB | LU、LU1-LU4 | USB 左上 |
| RPi USB | RU、RU1-RU4 | USB 右上 |
端口值支持关键字和 IP 过滤(语法与端口过滤相同):
port=PORT#keyword1 keyword2#keyword3@IP_SUFFIX
ADC(模数转换器)设备有额外的通道级设置:
| 键 | 说明 |
|---|---|
srate | 采样率(Hz) |
parname1、parname2、... | 各通道的参数名称 |
gain1、gain2、... | 各通道的电压到物理单位转换增益 |
[DEV/SNUADC]
type=SNUADC
port=COM3
srate=500
parname1=ECG
gain1=1.0
parname2=ART
gain2=100.0
使用 Datex DRI 协议的设备(S5、Solar8000、Bx50、B1x5M、Canvas)支持按设备选择要从监护仪请求的波形。
| 键 | 说明 |
|---|---|
wavs | 要请求的波形列表(逗号分隔,最多 8 个) |
waveonly | 1 = 仅波形,无数值;0 = 两者都有(默认) |
可用波形名称:ECG1、ECG2、PLETH(别名 PPG)、CO2、O2、N2O、AWP、IABP1–IABP8、EEG1、EEG2、EEGBIS、EEGENT、EEGENT400。
有创动脉压(ART)波形: 请使用
IABP1—ART和INVP1不被识别。监护仪屏幕上显示为 ART 的第一个有创压力通道映射为IABP1。
未设置 wavs 时的默认波形:
| 设备 | 默认波形 |
|---|---|
B1x5M(B105M / B115M / B125M) | 仅 ECG1, PLETH — B1x5M 系列无法处理完整的 S5 数据流,因此默认值经过有意减少 |
| 其他 S5 / Solar8000 / Bx50 / Canvas | ECG1, PLETH, IABP1, CO2, AWP |
如需在 B1x5M 上获取额外波形(例如有创动脉压),请显式列出:
[DEV/B1x5M]
type=B1x5M
port=LU
wavs=ECG1,PLETH,IABP1,CO2,AWP
添加实时信号处理过滤器。过滤器定义从过滤器服务器加载。
[FILT/filter_module_name]
modname 一致。通过 GUI 添加过滤器 — 在床位的 Filters 菜单中选择 Add,对话框会列出本地 Python 过滤器服务器中所有可用的过滤器。从 1.18.37 起,VitalRecorder 在首次使用时自动下载约 27 MB 的精简 Python 3.11 运行时,取代之前基于 pyvital 的 121 MB 包。基础 ECG / PPG / EEG 过滤器(HRV、MTWA、QRS 检测、FFT 等)已预装并可立即使用。需要深度学习运行时的过滤器(HPI、心搏噪声检测器、节律分类器、dlapco SV)位于 Install ML filters 按钮之后——点击该按钮会在不显示命令窗口的情况下静默执行 pip install openvital[all],仅在需要时下载 PyTorch / TensorFlow。安装完成后请重启 VitalRecorder,新过滤器会出现在列表中。
SAVEDIR=D:\VitalData
[BED/OR1]
[DEV/Solar8000]
type=Solar8000
port=COM1
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
SAVEDIR=D:\VitalData
[BED/OR1]
[DEV/Solar8000]
type=Solar8000
port=COM1
[BED/OR2]
[DEV/Philips]
type=Intellivue
port=192.168.1.101:4343
SAVEDIR=C:\Users\lucid\Desktop
[BED/test]
[DEV/NK EGA]
type=EGA
company=Nihon Kohden
port=9001
[BED/OR1]
[DEV/Solar8000]
type=Solar8000
port=COM1
[FILT/pleth_spi]
vital.exe [options] [filename]
| 选项 | 说明 |
|---|---|
--version、-v | 显示版本号 |
--devtypes、-d | 列出所有支持的设备类型 |
--console、-c | 以控制台模式运行(无 GUI) |
--debug [conf] | 以调试模式运行(包含控制台模式,可选择指定配置文件) |
--conf <path> | 指定配置文件路径 |
--upgrade、-u | 升级到最新版本 |
-u1.18.0 | 升级到指定版本 |
--help、-h | 显示帮助信息 |
filename.vital | 打开 .vital 文件进行回放 |
控制台模式(--console 或 -c)在无 GUI 的情况下运行 VitalRecorder。适用于 Raspberry Pi 或 Ubuntu 服务器的无头部署。设备从已保存的配置中加载。
调试模式(--debug)包含控制台模式,并将设备打开/关闭、帧转发等详细日志输出到标准输出。在调试模式下不会生成实际的 .vital 文件。
# 使用默认配置运行调试模式
vital.exe --debug
# 使用指定配置文件运行调试模式
vital.exe --debug test_mindray.conf
有关支持设备的完整列表、连接详情和参数,请参阅 Supported Devices。
| 设备 | 连接方式 | 端口设置 |
|---|---|---|
| Philips Intellivue | RS-232 | COM 端口,115200 baud |
| GE Solar 8000 | RS-232 | COM 端口,9600 baud |
| Nihon Kohden(串口) | RS-232 | COM 端口,9600 baud |
| Nihon Kohden (HL7GW) | TCP 服务器 | 端口 9001 |
| Nihon Kohden (EGA) | UDP | 端口号 |
| Mindray (HL7) | TCP 服务器 | 端口 10000 |
| Draeger (Medibus) | RS-232 | COM 端口,9600 baud (8N2) |
| GE Datex-Ohmeda | RS-232 | COM 端口,19200 baud (7E1) |
| Medtronic BIS | RS-232 | COM 端口,57600 baud |
| BBraun SpaceCom | RS-232 | COM 端口,9600 baud |
| BBraun HL7 (DoseLink) | TCP 服务器 | 端口 2575 |
| Masimo Radical-7 | RS-232 | COM 端口,9600 baud |
| Edwards Hemosphere | RS-232 | COM 端口,9600 baud |
| Hamilton 呼吸机 | RS-232 | COM 端口,38400 baud |
ping 测试)。--debug 模式确认通信状态。对于共享单个网关端口的 HL7 设备,使用端口过滤功能中的 # 关键字来分离床位。
BBraun DoseLink 通过单个 TCP 连接发送多个泵的数据。VitalRecorder 使用 OBX-18(设备实例标识符)中的序列号自动识别每个泵,并将其映射到 PUMP1 至 PUMP8。
如果泵未被正确分离:
--debug 模式查看日志。# 关键字过滤。SERVER_IP 设置正确。SEND_WEB 是否设置为 1。