User Manual

VitalRecorder 用户手册 (Chinese)

VitalRecorder 是一款适用于 Windows、Raspberry Pi 和 Ubuntu 的实时生命体征记录应用程序。它能从 80 多种医疗设备采集数据,并以 .vital 文件格式存储。


目录

  1. 安装
  2. 快速入门
  3. 用户界面
  4. 添加设备
  5. 连接方式
  6. 端口过滤
  7. 录制
  8. 服务器上传
  9. 配置文件 (vr.conf)
  10. 命令行选项
  11. 支持的设备
  12. 故障排除

安装

Windows

从 Microsoft Store 下载安装:

或从发布页面下载 MSI 安装程序或 MSIX 安装包。

Linux(桌面,AppImage)

从发布页面下载 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

注销后重新登录使组变更生效。

Raspberry Pi / 无头 Linux

如需在无 GUI 情况下以服务器方式进行无人值守录制,请从发布页面下载对应平台的控制台二进制文件(Raspberry Pi ARM64 用 pivr64,Ubuntu x64 用 ubuntu64),直接运行即可。


快速入门

  1. 启动 VitalRecorder。
  2. 点击 添加设备 按钮添加医疗设备。
  3. 选择设备类型(例如:Medtronic : BISPhilips : Intellivue)。
  4. 选择连接端口(COM 端口、IP 地址或端口号)。
  5. 点击 确定。VitalRecorder 将开始与设备通信。
  6. 点击 录制 开始记录数据。

用户界面

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

连接方式

RS-232(串口 / COM 端口)

大多数设备通过物理 COM 端口或 USB-to-Serial 适配器进行 RS-232 串口通信。

TCP(网络)

用于网络连接的设备。VitalRecorder 可以作为 TCP 客户端服务器

HL7 设备(Mindray HL7、Nihon Kohden HL7GW、BBraun HL7)通常使用带有 MLLP 帧封装的服务器模式。

UDP(网络)

部分设备通过 UDP 广播数据。

BLE (Bluetooth Low Energy)

用于 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 过滤(@

按源 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 的消息。

使用场景

多床位 HL7 网关路由

当单个 HL7 网关(Mindray eGateway、BBraun DoseLink、Nihon Kohden HL7GW)通过一条 TCP 连接传送多个床位的数据时,VitalRecorder 会自动将每帧数据路由到正确的选项卡:

  1. 只有一个选项卡绑定 TCP 端口(主选项卡),使用同一端口和同一设备类型的其他选项卡会自动成为被动订阅者。这从根本上消除了之前重启时需要手动点击 "Add device" 的 Windows SO_REUSEADDR 竞争问题。
  2. 基于床位名称的路由(推荐,优先级高于关键字过滤) — 将每个选项卡的床位名称设置为与网关发送的任一标识符完全一致,无需端口过滤设置:

如果同一帧可匹配多个选项卡(例如同时存在 ForskningBord4 选项卡,帧的 LOCATION 为 Forskning~Operasjon~Bord4~Anilab~~~~~Bord4),更具体的令牌优先。令牌按倒序检测,因此 Bord4(LOCATION 末尾的显示短名)优先于 Forskning(前面的部门名)。同一帧只会被一个选项卡接收。

  1. 关键字过滤路由(备用) — 当床位名称无法直接匹配网关标识符时,使用上述 端口#关键字 语法。仅在床位名称路由未命中时生效。
  2. 自动创建选项卡 — 若没有选项卡匹配且帧中含床位标识符,则以最具体的令牌(最后一个非空)自动新建选项卡,以防止初始配置不全时的数据丢失。
  3. 重启自动恢复 — 重启 VitalRecorder 后约 15 秒内,所有选项卡自动重新建立主/订阅者关系,无需手动点击 "Add device" 或 "Recording"。

对于 BBraun DoseLink,一个 HL7 帧代表一个 rack(即一个床位);rack 内的多个泵以 VMD 块形式包含在帧中,并被记录到同一选项卡的不同轨道(PUMP1 … PUMP16)。

Monitor View 的泵显示(1.18.30+)

Monitor View 现可同时显示 最多 8 个泵(此前为 4 个)。每个泵槽显示药物名称和一个大值:

所有其他泵字段(压力、浓度、剂量速率、注射器、bolus、注射时间、患者体重、drug library、care area 等)仍然 记录到 .vital 文件并在默认轨道视图中可见 — 只有 Monitor View 做精简,用于保持运行中实验的简洁显示。

支持的设备:BBraun SpaceCom/HL7, Fresenius Agilia/Primea/PCBM, Daiwha, Pion。无需配置 — 这是默认布局。

1.18.29 引入的 minimal=1 vr.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_IPVitalServer IP 地址或主机名
SEND_WEB启用/禁用服务器上传(10
CLOUD_UPLOAD启用/禁用云端上传(10
VRCODE此 VitalRecorder 实例的唯一标识符

上传内容

数据在上传前使用 zlib 压缩。

HL7 模式

HL7 设置启用时,VitalRecorder 以 HL7 格式而非 JSON 格式发送房间数据。


配置文件 (vr.conf)

VitalRecorder 将所有设置存储在名为 vr.conf 的单一配置文件中。该文件使用类似 INI 的格式,可手动编辑以用于无头部署或批量配置。

文件位置

平台路径
Windows%APPDATA%\VitalRecorder\vr.conf
Linux./vr.conf > ~/vr.conf > /boot/vr.conf(按顺序搜索)

文件结构

# 全局设置(在任何节之前)
KEY=VALUE

# 床位(选项卡)定义
[BED/bedname]

# 此床位下的设备
[DEV/devicename]
type=DeviceType
port=PortSpec

# 此床位下的过滤器
[FILT/filter_module_name]

规则:

全局设置

常规

默认值说明
SAVEDIR(系统默认)录制文件保存目录
VRCODE(自动生成)VitalRecorder 唯一识别码
FILENAME_TEMPLATE%r_%y%m%d_%h%i%s录制文件名模板

录制

默认值说明
RECORD_WHEN_START1启动时自动录制(0:关闭,1:开启)
CUT_FILE1在患者边界处分割文件(0:关闭,1:开启)
CUT_HOURLY0每小时分割文件(0:关闭,1:开启)
CUT_BY(无)文件分割触发信号(例如:spo2hrany
PT_WAITING_TIME5患者等待时间(分钟)

服务器

默认值说明
SERVER_IP(无)VitalDB 服务器地址(IP:port)
UPLOAD_SERVER_IP(无)文件上传服务器地址
MONITOR_SERVER_IP(无)Web 监控服务器地址
SEND_WEB1向 Web 服务器发送数据(0:关闭,1:开启)
CLOUD_UPLOAD0启用云端上传(0:关闭,1:开启)

窗口

默认值说明
START_MAXIMIZED1以最大化窗口启动
START_MINIMIZED0以最小化窗口启动
OPTION_MIN_TO_TRAY0最小化到系统托盘
OPTION_ALWAYS_ON_TOP0窗口始终置顶
PLAY_SOUND1播放报警声音

事件预设

可通过 EVT_TEXT_0EVT_TEXT_29 定义最多 30 个事件预设标签。

EVT_TEXT_0=Induction
EVT_TEXT_1=Intubation
EVT_TEXT_2=Incision

床位节

定义一个床位(选项卡)。一个配置文件中可以定义多个床位。

[BED/OR1]

设备节

设备添加在 [BED/...] 节下。

[DEV/devicename]
type=DeviceType
port=PortSpec
必填说明
type设备类型(例如:BISIntellivueSolar8000
port连接端口(参见下方端口格式)
company制造商(例如:Nihon Kohden
readonly只读模式(0:关闭,1:开启)

端口格式

格式示例说明
COM 端口COM1COM3Windows 串口
TCP/IP192.168.1.100:4343网络设备(IP:port)
端口号4343TCP 服务器模式(localhost)
RPi 串口F1-F4Raspberry Pi AMA 端口
RPi USBLULU1-LU4USB 左上
RPi USBRURU1-RU4USB 右上

配置文件中的端口过滤

端口值支持关键字和 IP 过滤(语法与端口过滤相同):

port=PORT#keyword1 keyword2#keyword3@IP_SUFFIX

ADC 设备设置

ADC(模数转换器)设备有额外的通道级设置:

说明
srate采样率(Hz)
parname1parname2、...各通道的参数名称
gain1gain2、...各通道的电压到物理单位转换增益
[DEV/SNUADC]
type=SNUADC
port=COM3
srate=500
parname1=ECG
gain1=1.0
parname2=ART
gain2=100.0

S5 / Datex 设备设置(GE Solar / Bx50 / B1x5M / Canvas)

使用 Datex DRI 协议的设备(S5Solar8000Bx50B1x5MCanvas)支持按设备选择要从监护仪请求的波形。

说明
wavs要请求的波形列表(逗号分隔,最多 8 个)
waveonly1 = 仅波形,无数值;0 = 两者都有(默认)

可用波形名称:ECG1ECG2PLETH(别名 PPG)、CO2O2N2OAWPIABP1IABP8EEG1EEG2EEGBISEEGENTEEGENT400

有创动脉压(ART)波形: 请使用 IABP1ARTINVP1 不被识别。监护仪屏幕上显示为 ART 的第一个有创压力通道映射为 IABP1

未设置 wavs 时的默认波形:

设备默认波形
B1x5M(B105M / B115M / B125M)ECG1, PLETH — B1x5M 系列无法处理完整的 S5 数据流,因此默认值经过有意减少
其他 S5 / Solar8000 / Bx50 / CanvasECG1, PLETH, IABP1, CO2, AWP

如需在 B1x5M 上获取额外波形(例如有创动脉压),请显式列出:

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

过滤器节

添加实时信号处理过滤器。过滤器定义从过滤器服务器加载。

[FILT/filter_module_name]

通过 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 IntellivueRS-232COM 端口,115200 baud
GE Solar 8000RS-232COM 端口,9600 baud
Nihon Kohden(串口)RS-232COM 端口,9600 baud
Nihon Kohden (HL7GW)TCP 服务器端口 9001
Nihon Kohden (EGA)UDP端口号
Mindray (HL7)TCP 服务器端口 10000
Draeger (Medibus)RS-232COM 端口,9600 baud (8N2)
GE Datex-OhmedaRS-232COM 端口,19200 baud (7E1)
Medtronic BISRS-232COM 端口,57600 baud
BBraun SpaceComRS-232COM 端口,9600 baud
BBraun HL7 (DoseLink)TCP 服务器端口 2575
Masimo Radical-7RS-232COM 端口,9600 baud
Edwards HemosphereRS-232COM 端口,9600 baud
Hamilton 呼吸机RS-232COM 端口,38400 baud

故障排除

设备无法连接

  1. RS-232:确认选择了正确的 COM 端口。在设备管理器中查看端口号。确认已安装 USB-to-Serial 驱动程序。
  2. TCP 服务器模式:检查防火墙是否允许指定端口的传入连接。
  3. TCP 客户端模式:确认设备 IP 地址可达(使用 ping 测试)。

无数据显示

同一端口上的多个设备

对于共享单个网关端口的 HL7 设备,使用端口过滤功能中的 # 关键字来分离床位。

BBraun HL7 多泵

BBraun DoseLink 通过单个 TCP 连接发送多个泵的数据。VitalRecorder 使用 OBX-18(设备实例标识符)中的序列号自动识别每个泵,并将其映射到 PUMP1 至 PUMP8。

如果泵未被正确分离:

服务器上传不工作