Skip to main content

Tài liệu ePOC Middleware

Tổng quan

ePOC Middleware là một ứng dụng Windows chạy dưới dạng system tray, được thiết kế để nhận và xử lý dữ liệu từ các thiết bị y tế ePOC. Ứng dụng hoạt động như một middleware, nhận dữ liệu qua TCP, lưu trữ cục bộ và có thể chuyển tiếp dữ liệu đã được phân tích sang hệ thống khác.

Kiến trúc hệ thống

Các thành phần chính

  1. TCP Server: Lắng nghe kết nối TCP trên port 9100 (có thể cấu hình)
  2. System Tray Interface: Giao diện người dùng trong system tray
  3. Database Layer: SQLite để lưu trữ dữ liệu có cấu trúc
  4. License System: Hệ thống bảo vệ bản quyền dựa trên machine fingerprint
  5. Forwarding Module: Chuyển tiếp dữ liệu JSON sang server khác
  6. Logging System: Ghi log dữ liệu thô và thông báo

Luồng dữ liệu

Thiết bị ePOC → TCP Connection → Data Sanitization → 
├── Raw Log (incoming_data.txt)
├── Database Storage (reports.db)
├── JSON Parsing
└── Optional Forwarding → External Server

Chức năng chi tiết

1. TCP Server

Cổng mặc định: 9100 (có thể cấu hình trong config.xml)

Quy trình xử lý kết nối:

  1. Chấp nhận kết nối TCP từ thiết bị ePOC
  2. Đọc dữ liệu từ kết nối (buffer 4KB)
  3. Sanitize dữ liệu (loại bỏ whitespace, chuẩn hóa line endings)
  4. Phân tích dữ liệu thành cấu trúc JSON
  5. Lưu trữ vào database và file log
  6. Chuyển tiếp JSON (nếu được bật)

Xử lý lỗi:

  • Kết nối tạm thời bị lá»—i: retry sau 200ms
  • Dữ liệu rá»—ng: bỏ qua
  • Lá»—i parsing: lưu dữ liệu thô

2. Data Parsing

Cấu trúc dữ liệu được phân tích:

{
"facility": "Tên cơ sở y tế",
"test_name": "Tên xét nghiệm",
"patient_id": "ID bệnh nhân",
"date_time": "Thời gian xét nghiệm",
"sections": [
{
"name": "Tên nhóm kết quả",
"entries": [
{
"parameter": "Tên chỉ số",
"value": "Giá trị",
"unit": "Đơn vị",
"flag": "Trạng thái (high/low/normal)"
}
]
}
],
"reference_ranges": [
{
"parameter": "Tên chỉ số",
"range": "Khoảng tham chiếu",
"unit": "Đơn vị"
}
]
}

Các trường metadata:

  • entered_using: Phương thức nhập liệu
  • sample_type: Loại mẫu
  • hemodilution: Độ pha loãng máu
  • comments: Ghi chú
  • operator: Người thá»±c hiện
  • card_lot: Lô thẻ
  • last_eqc: EQC cuối cùng
  • reader: Máy đọc
  • host: Host system
  • sensor_config: Cấu hình sensor
  • evad_version: Phiên bản EVAD
  • os_version: Phiên bản OS
  • os_security_patch_level: Mức patch bảo mật
  • qa_status: Trạng thái QA

3. Database Schema

Bảng reports:

CREATE TABLE reports (
id INTEGER PRIMARY KEY AUTOINCREMENT,
received_at TEXT NOT NULL, -- Thời gian nhận (RFC3339)
remote_addr TEXT NOT NULL, -- Địa chỉ IP nguồn
bytes INTEGER NOT NULL, -- Số byte dữ liệu
raw TEXT NOT NULL, -- Dữ liệu thô
json TEXT -- Dữ liệu JSON đã parse
)

Cấu hình SQLite:

  • Journal mode: WAL (Write-Ahead Logging)
  • Busy timeout: 5000ms
  • Max connections: 1

4. System Tray Interface

Menu items:

  • Valid until: Hiển thị ngày hết hạn license
  • IP: Danh sách địa chỉ IP cục bá»™
  • Forward target: Địa chỉ server chuyển tiếp
  • Forward JSON: Checkbox bật/tắt chuyển tiếp
  • Port: Cổng TCP Ä‘ang lắng nghe
  • About: Thông tin tác giả và dá»± án
  • Quit: Thoát ứng dụng

Thông báo desktop:

  • Khi có dữ liệu má»›i
  • Khi bật/tắt forwarding
  • Khi có lá»—i server
  • Khi server sẵn sàng

5. License System

6. Configuration

File config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<server>
<ip>192.168.0.10</ip> <!-- IP server chuyển tiếp -->
<port>3001</port> <!-- Port server chuyển tiếp -->
<timeout>5</timeout> <!-- Timeout kết nối (giây) -->
</server>
<listener>
<port>9100</port> <!-- Port TCP listener -->
</listener>
<logging>
<filename>incoming_data.txt</filename> <!-- Tên file log -->
</logging>
<license>
<key>LICENSE-KEY</key> <!-- License key -->
<type>premium</type> <!-- Loại license -->
</license>
</config>

7. Forwarding Module

Chức năng:

  • Chuyển tiếp dữ liệu JSON đã parse sang server khác
  • Sá»­ dụng TCP connection vá»›i timeout
  • Có thể bật/tắt qua system tray
  • Chỉ hoạt động khi có cấu hình server trong config

Protocol:

  • Gá»­i JSON data qua TCP
  • Má»—i message kết thúc bằng newline
  • Timeout mặc định: 5 giây

Yêu cầu hệ thống

  • Windows 10 trở lên
  • Quyền ghi file trong thư mục ứng dụng

Triển khai

  1. Copy tcptrayserver.exe vào thư mục cài đặt
  2. Tạo file config.xml với license key hợp lệ
  3. Chạy ứng dụng (sẽ tự động tạo reports.db và file log)
  4. Cấu hình thiết bị ePOC kết nối đến IP:Port của máy này

Monitoring và Troubleshooting

Log Files

  • incoming_data.txt: Chứa tất cả dữ liệu thô nhận được

Common Issues

License validation failed:

  • Kiểm tra license key có đúng format không
  • Verify machine fingerprint khá»›p vá»›i license
  • Kiểm tra ngày hết hạn

Forward JSON disabled:

  • Đảm bảo có cấu hình <server> trong config.xml
  • Kiểm tra IP và port server chuyển tiếp

No data received:

  • Verify thiết bị ePOC kết nối đúng IP:Port
  • Kiểm tra firewall settings
  • Xem log để debug connection issues

Database errors:

  • Kiểm tra quyền ghi file trong thư mục
  • Verify SQLite database không bị corrupt

Data Security

  • Dữ liệu được lưu trữ cục bá»™
  • Không có encryption cho dữ liệu trong database
  • Forwarding qua TCP không mã hóa

API Reference

Database Queries

-- Lấy tất cả reports
SELECT * FROM reports ORDER BY received_at DESC;

-- Lấy reports trong ngày
SELECT * FROM reports WHERE date(received_at) = date('now');

-- Lấy reports có JSON data
SELECT * FROM reports WHERE json IS NOT NULL;

Configuration Parameters

  • listenPort: Port TCP listener (default: 9100)
  • logFileName: Tên file log (default: "incoming_data.txt")
  • forwardDialTimeout: Timeout kết nối forwarding (default: 5s)

Liên hệ và hỗ trợ


Tài liệu này mô tả phiên bản hiện tại của ePOC Middleware. Để cập nhật thông tin mới nhất, vui lòng tham khảo README.md hoặc liên hệ tác giả.