User Manual

VitalRecorder μ‚¬μš©μž 맀뉴얼 (Korean)

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 : BIS, Philips : 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 λ“±)μ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.

ν˜•μ‹

포트#ν‚€μ›Œλ“œ@IPμ£Όμ†Œ

포트λ₯Ό μ œμ™Έν•œ λͺ¨λ“  뢀뢄은 선택 μ‚¬ν•­μž…λ‹ˆλ‹€.

ν‚€μ›Œλ“œ ν•„ν„° (#)

μˆ˜μ‹  λ©”μ‹œμ§€ λ‚΄μ—μ„œ ν‚€μ›Œλ“œ λ¬Έμžμ—΄μ„ κ²€μƒ‰ν•˜μ—¬ ν•„ν„°λ§ν•©λ‹ˆλ‹€. ν‚€μ›Œλ“œκ°€ ν¬ν•¨λ˜μ§€ μ•Šμ€ λ©”μ‹œμ§€λŠ” λ¬΄μ‹œλ©λ‹ˆλ‹€.

2575#BED-001

포트 2575μ—μ„œ μˆ˜μ‹  λŒ€κΈ°ν•˜λ©°, BED-001이 ν¬ν•¨λœ λ©”μ‹œμ§€λ§Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. 단일 HL7 κ²Œμ΄νŠΈμ›¨μ΄(예: DoseLink, Mindray Gateway)κ°€ ν•˜λ‚˜μ˜ μ—°κ²°λ‘œ μ—¬λŸ¬ μΉ¨μƒμ˜ 데이터λ₯Ό 전솑할 λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

닀쀑 ν‚€μ›Œλ“œ

2575#BED-001 Propofol

2575#BED-001#BED-002

IP ν•„ν„° (@)

μˆ˜μ‹  TCP μ—°κ²°μ˜ μ†ŒμŠ€ IP μ£Όμ†Œλ‘œ ν•„ν„°λ§ν•©λ‹ˆλ‹€. λ‹€λ₯Έ 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 포트λ₯Ό 점유(primary)ν•˜κ³ , 같은 ν¬νŠΈΒ·κ°™μ€ μž₯λΉ„ νƒ€μž…μ˜ λ‚˜λ¨Έμ§€ 탭은 μžλ™μœΌλ‘œ passive subscriber둜 μ „ν™˜λ©λ‹ˆλ‹€. 이전 λ²„μ „μ—μ„œ μž¬μ‹œμž‘ μ‹œ μˆ˜λ™ "Add device"λ₯Ό μš”κ΅¬ν–ˆλ˜ Windows SO_REUSEADDR 경쟁 λ¬Έμ œκ°€ μ›μ²œμ μœΌλ‘œ ν•΄κ²°λ©λ‹ˆλ‹€.
  2. 침상λͺ… 기반 λΌμš°νŒ… (ꢌμž₯, ν‚€μ›Œλ“œ 필터보닀 μš°μ„ ) β€” 각 νƒ­μ˜ Bed Name을 κ²Œμ΄νŠΈμ›¨μ΄κ°€ λ³΄λ‚΄λŠ” μ‹λ³„μž 쀑 μ•„λ¬΄κ±°λ‚˜ ν•˜λ‚˜μ™€ μ •ν™•νžˆ μΌμΉ˜μ‹œν‚€λ©΄ ν•„ν„° μ„€μ • 없이 μžλ™ λ§€μΉ­λ©λ‹ˆλ‹€:

같은 ν”„λ ˆμž„μ— μ—¬λŸ¬ 탭이 λ§€μΉ­ κ°€λŠ₯ν•œ 경우(예: Forskning νƒ­κ³Ό Bord4 탭이 λͺ¨λ‘ 있고 ν”„λ ˆμž„μ˜ LOCATION이 Forskning~Operasjon~Bord4~Anilab~~~~~Bord4이면) 더 ꡬ체적인 토큰이 μš°μ„ ν•©λ‹ˆλ‹€. 토큰은 μ—­μˆœ(λ§ˆμ§€λ§‰λΆ€ν„°)으둜 κ²€μ‚¬λ˜λ―€λ‘œ Bord4(LOCATION 끝의 display short-name)κ°€ Forskning(μ•žμͺ½μ˜ λΆ€μ„œλͺ…)보닀 μš°μ„ ν•©λ‹ˆλ‹€. ν•˜λ‚˜μ˜ ν”„λ ˆμž„μ€ 였직 ν•˜λ‚˜μ˜ νƒ­μ—λ§Œ μ „λ‹¬λ©λ‹ˆλ‹€.

  1. ν‚€μ›Œλ“œ ν•„ν„° λΌμš°νŒ… (λŒ€μ²΄) β€” νƒ­ 이름을 κ²Œμ΄νŠΈμ›¨μ΄ μ‹λ³„μžμ™€ λ‹€λ₯΄κ²Œ μ§“κ³  싢을 λ•ŒλŠ” μœ„μ˜ 포트#ν‚€μ›Œλ“œ 문법을 μ‚¬μš©ν•©λ‹ˆλ‹€. 침상λͺ… 기반 λΌμš°νŒ…μ΄ μ‹€νŒ¨ν•œ κ²½μš°μ—λ§Œ μ μš©λ©λ‹ˆλ‹€.
  2. μžλ™ νƒ­ 생성 β€” κΈ°μ‘΄ μ–΄λ–€ 탭과도 λ§€μΉ­λ˜μ§€ μ•Šκ³  ν”„λ ˆμž„μ— 침상 μ‹λ³„μžκ°€ 있으면 κ°€μž₯ ꡬ체적인 토큰(λ§ˆμ§€λ§‰ non-empty)으둜 μƒˆ 탭이 μžλ™ μƒμ„±λ©λ‹ˆλ‹€. 초기 μ„€μ • λˆ„λ½ μ‹œ νŒ¨ν‚· 손싀을 λ§‰λŠ” μš©λ„μž…λ‹ˆλ‹€.
  3. μž¬μ‹œμž‘ μžλ™ 볡ꡬ β€” VitalRecorderλ₯Ό μž¬μ‹œμž‘ν•˜λ©΄ μ•½ 15초 이내에 λͺ¨λ“  탭이 primary/subscriber 관계λ₯Ό μžλ™μœΌλ‘œ μž¬μˆ˜λ¦½ν•©λ‹ˆλ‹€. "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 만 μ‹€ν—˜ 쀑 ν™”λ©΄ μ–΄μˆ˜μ„ ν•¨μ„ 쀄이도둝 curation ν•©λ‹ˆλ‹€.

지원 μž₯λΉ„: 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 μ‚¬μš©μž μ•ˆλ‚΄ β€” 이전 λ²„μ „μ—μ„œλŠ” ,λ₯Ό μ†Œμˆ˜μ  κ΅¬λΆ„μžλ‘œ μ“°λŠ” locale(λ…Έλ₯΄μ›¨μ΄μ–΄, 독일어, ν”„λž‘μŠ€μ–΄ λ“±) Windowsμ—μ„œ 1.0 mL/h 미만의 μ£Όμž… 속도가 0으둜 κΈ°λ‘λ˜λŠ” C λŸ°νƒ€μž„ μ΄μŠˆκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 1.18.23λΆ€ν„° Windows μ§€μ—­ μ„€μ •κ³Ό λ¬΄κ΄€ν•˜κ²Œ 항상 .을 μ†Œμˆ˜μ  κ΅¬λΆ„μžλ‘œ ν•΄μ„ν•©λ‹ˆλ‹€. BBraun νŽŒν”„ ν•œκ³„λ„ μž₯λΉ„λ‹Ή 8 β†’ 16개둜 ν™•μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


λ…Ήν™”

μžλ™ λ…Ήν™”

기본적으둜 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μ„œλ²„ μ—…λ‘œλ“œ ν™œμ„±ν™”/λΉ„ν™œμ„±ν™” (1 λ˜λŠ” 0)
CLOUD_UPLOADν΄λΌμš°λ“œ μ—…λ‘œλ“œ ν™œμ„±ν™”/λΉ„ν™œμ„±ν™” (1 λ˜λŠ” 0)
VRCODE이 VitalRecorder μΈμŠ€ν„΄μŠ€μ˜ 고유 μ‹λ³„μž

μ—…λ‘œλ“œ λ‚΄μš©

λ°μ΄ν„°λŠ” μ—…λ‘œλ“œ μ „ zlib으둜 μ••μΆ•λ©λ‹ˆλ‹€.

HL7 λͺ¨λ“œ

HL7 섀정이 ν™œμ„±ν™”λ˜λ©΄ VitalRecorderλŠ” JSON λŒ€μ‹  HL7 ν˜•μ‹μœΌλ‘œ λ°© 데이터λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€.


μ„€μ • 파일 (vr.conf)

VitalRecorderλŠ” λͺ¨λ“  섀정을 vr.confλΌλŠ” 단일 μ„€μ • νŒŒμΌμ— μ €μž₯ν•©λ‹ˆλ‹€. 이 νŒŒμΌμ€ INI와 μœ μ‚¬ν•œ ν˜•μ‹μ„ μ‚¬μš©ν•˜λ©°, ν—€λ“œλ¦¬μŠ€ λ°°ν¬λ‚˜ 일괄 섀정에 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

파일 μœ„μΉ˜

ν”Œλž«νΌκ²½λ‘œ
Windows%APPDATA%\VitalRecorder\vr.conf
Linux./vr.conf > ~/vr.conf > /boot/vr.conf (μˆœμ„œλŒ€λ‘œ 검색)

파일 ꡬ쑰

# μ „μ—­ μ„€μ • (μ„Ήμ…˜ μ‹œμž‘ μ „)
KEY=VALUE

# 침상(νƒ­) μ •μ˜
[BED/침상λͺ…]

# 이 침상에 μ†ν•˜λŠ” μž₯λΉ„
[DEV/μž₯λΉ„λͺ…]
type=μž₯λΉ„μœ ν˜•
port=ν¬νŠΈμ„€μ •

# 이 침상에 μ†ν•˜λŠ” ν•„ν„°
[FILT/ν•„ν„°λͺ¨λ“ˆλͺ…]

κ·œμΉ™:

μ „μ—­ μ„€μ •

일반

ν‚€κΈ°λ³Έκ°’μ„€λͺ…
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(μ—†μŒ)파일 λΆ„ν•  트리거 μ‹ ν˜Έ (예: spo2, hr, any)
PT_WAITING_TIME5ν™˜μž λŒ€κΈ° μ‹œκ°„ (λΆ„)

μ„œλ²„

ν‚€κΈ°λ³Έκ°’μ„€λͺ…
SERVER_IP(μ—†μŒ)VitalDB μ„œλ²„ μ£Όμ†Œ (IP:port)
UPLOAD_SERVER_IP(μ—†μŒ)파일 μ—…λ‘œλ“œ μ„œλ²„ μ£Όμ†Œ
MONITOR_SERVER_IP(μ—†μŒ)μ›Ή λͺ¨λ‹ˆν„°λ§ μ„œλ²„ μ£Όμ†Œ
SEND_WEB1μ›Ή μ„œλ²„λ‘œ 데이터 전솑 (0: 끔, 1: μΌ¬)
CLOUD_UPLOAD0ν΄λΌμš°λ“œ μ—…λ‘œλ“œ ν™œμ„±ν™” (0: 끔, 1: μΌ¬)

μ°½

ν‚€κΈ°λ³Έκ°’μ„€λͺ…
START_MAXIMIZED1μ΅œλŒ€ν™” μƒνƒœλ‘œ μ‹œμž‘
START_MINIMIZED0μ΅œμ†Œν™” μƒνƒœλ‘œ μ‹œμž‘
OPTION_MIN_TO_TRAY0μ‹œμŠ€ν…œ 트레이둜 μ΅œμ†Œν™”
OPTION_ALWAYS_ON_TOP0항상 μœ„μ— ν‘œμ‹œ
PLAY_SOUND1μ•ŒλžŒ μ†Œλ¦¬ μž¬μƒ

이벀트 프리셋

EVT_TEXT_0λΆ€ν„° EVT_TEXT_29κΉŒμ§€ μ΅œλŒ€ 30개의 이벀트 프리셋 라벨을 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

EVT_TEXT_0=Induction
EVT_TEXT_1=Intubation
EVT_TEXT_2=Incision

침상 μ„Ήμ…˜

침상(νƒ­)을 μ •μ˜ν•©λ‹ˆλ‹€. ν•˜λ‚˜μ˜ μ„€μ • νŒŒμΌμ— μ—¬λŸ¬ 침상을 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

[BED/OR1]

μž₯λΉ„ μ„Ήμ…˜

μž₯λΉ„λŠ” [BED/...] μ„Ήμ…˜ μ•„λž˜μ— μΆ”κ°€ν•©λ‹ˆλ‹€.

[DEV/μž₯λΉ„λͺ…]
type=μž₯λΉ„μœ ν˜•
port=ν¬νŠΈμ„€μ •
ν‚€ν•„μˆ˜μ„€λͺ…
type예μž₯λΉ„ μœ ν˜• (예: BIS, Intellivue, Solar8000)
portμ˜ˆμ—°κ²° 포트 (μ•„λž˜ 포트 ν˜•μ‹ μ°Έμ‘°)
companyμ•„λ‹ˆμ˜€μ œμ‘°μ‚¬ (예: Nihon Kohden)
readonlyμ•„λ‹ˆμ˜€μ½κΈ° μ „μš© λͺ¨λ“œ (0: 끔, 1: μΌ¬)

포트 ν˜•μ‹

ν˜•μ‹μ˜ˆμ‹œμ„€λͺ…
COM 포트COM1, COM3Windows μ‹œλ¦¬μ–Ό 포트
TCP/IP192.168.1.100:4343λ„€νŠΈμ›Œν¬ μž₯λΉ„ (IP:port)
포트 번호4343TCP μ„œλ²„ λͺ¨λ“œ (localhost)
RPi μ‹œλ¦¬μ–ΌF1-F4Raspberry Pi AMA 포트
RPi USBLU, LU1-LU4USB μ™Όμͺ½ μœ„
RPi USBRU, RU1-RU4USB 였λ₯Έμͺ½ μœ„

μ„€μ • νŒŒμΌμ—μ„œμ˜ 포트 필터링

포트 값에 ν‚€μ›Œλ“œ 및 IP ν•„ν„°λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (포트 필터링과 λ™μΌν•œ 문법):

port=포트#ν‚€μ›Œλ“œ1 ν‚€μ›Œλ“œ2#ν‚€μ›Œλ“œ3@IP접미사

ADC μž₯λΉ„ μ„€μ •

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

S5 / Datex μž₯λΉ„ μ„€μ • (GE Solar / Bx50 / B1x5M / Canvas)

Datex DRI ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λŠ” μž₯λΉ„ (S5, Solar8000, Bx50, B1x5M, Canvas) λŠ” λͺ¨λ‹ˆν„°μ—μ„œ μš”μ²­ν•  νŒŒν˜•μ„ μž₯λΉ„λ³„λ‘œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν‚€μ„€λͺ…
wavsμš”μ²­ν•  νŒŒν˜• λͺ©λ‘ (콀마 ꡬ뢄, μ΅œλŒ€ 8개)
waveonly1 = νŒŒν˜•λ§Œ, μˆ«μžκ°’ μ œμ™Έ; 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 / CanvasECG1, PLETH, IABP1, CO2, AWP

B1x5M μ—μ„œ μΆ”κ°€ νŒŒν˜• (예: 동λ§₯μ••) 이 ν•„μš”ν•˜λ©΄ λͺ…μ‹œμ μœΌλ‘œ λ‚˜μ—΄ν•©λ‹ˆλ‹€:

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

ν•„ν„° μ„Ήμ…˜

μ‹€μ‹œκ°„ μ‹ ν˜Έ 처리 ν•„ν„°λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. ν•„ν„° μ •μ˜λŠ” ν•„ν„° μ„œλ²„μ—μ„œ λ‘œλ“œλ©λ‹ˆλ‹€.

[FILT/ν•„ν„°λͺ¨λ“ˆλͺ…]

GUI μ—μ„œ ν•„ν„° μΆ”κ°€ β€” μΉ¨μƒμ˜ Filters λ©”λ‰΄μ—μ„œ Add λ₯Ό λˆ„λ₯΄λ©΄, 둜컬 Python ν•„ν„° μ„œλ²„μ— λ“±λ‘λœ λͺ¨λ“  ν•„ν„°κ°€ λ‹€μ΄μ–Όλ‘œκ·Έμ— λ‚˜μ—΄λ©λ‹ˆλ‹€. 1.18.37 λΆ€ν„°λŠ” ~27 MB 슬림 Python 3.11 λŸ°νƒ€μž„μ„ 첫 μ‚¬μš© μ‹œ VitalRecorder κ°€ μžλ™ λ‹€μš΄λ‘œλ“œν•˜λ©°, μ΄μ „μ˜ pyvital 기반 121 MB λ²ˆλ“€μ„ λŒ€μ²΄ν•©λ‹ˆλ‹€. κΈ°λ³Έ ECG / PPG / EEG ν•„ν„° (HRV, MTWA, QRS κ²€μΆœ, FFT λ“±) λŠ” 미리 μ„€μΉ˜λ˜μ–΄ μ¦‰μ‹œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€. λ”₯λŸ¬λ‹ λŸ°νƒ€μž„μ΄ ν•„μš”ν•œ ν•„ν„° (HPI, beat noise detector, 리듬 λΆ„λ₯˜κΈ°, 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 [μ˜΅μ…˜] [파일λͺ…]
μ˜΅μ…˜μ„€λͺ…
--version, -v버전 번호 ν‘œμ‹œ
--devtypes, -d지원 μž₯λΉ„ μœ ν˜• 전체 λͺ©λ‘ ν‘œμ‹œ
--console, -cμ½˜μ†” λͺ¨λ“œ μ‹€ν–‰ (GUI μ—†μŒ)
--debug [conf]디버그 λͺ¨λ“œ μ‹€ν–‰ (μ½˜μ†” λͺ¨λ“œ 포함, 선택적 μ„€μ • 파일 μ§€μ •)
--conf <경둜>μ„€μ • 파일 경둜 μ§€μ •
--upgrade, -uμ΅œμ‹  λ²„μ „μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œ
-u1.18.0νŠΉμ • λ²„μ „μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œ
--help, -h도움말 ν‘œμ‹œ
파일λͺ….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κΉŒμ§€ λ§€ν•‘ν•©λ‹ˆλ‹€.

νŽŒν”„κ°€ μ˜¬λ°”λ₯΄κ²Œ λΆ„λ¦¬λ˜μ§€ μ•ŠλŠ” 경우:

μ„œλ²„ μ—…λ‘œλ“œκ°€ λ™μž‘ν•˜μ§€ μ•ŠλŠ” 경우