Role & responsibilities
1.1 Analyzer Device Drivers
Write and maintain Python 3.11 device drivers for all supported analyzers using pySerial (RS-232), PyUSB / vendor HID SDK (USB), and socket (Ethernet TCP).
Implement ASTM E1381 / E1394 communication protocol for legacy serial analyzers frame formatting, checksum validation, ACK/NAK handling, timeout and retry logic.
Implement the Quidel QDDCP v3.1 USB HID interface for the Sofia 2 analyzer, including device enumeration, report parsing, and error recovery.
Implement TCP socket communication with the Cepheid GeneXpert Infinity LIS API (port 7788), including connection pooling, keep-alive management, and graceful reconnection.
Abstract all device-specific logic behind a common Device Driver interface so recent analyzer models can be added without changing the middleware core.
1.2 Data Parsing & Normalization
Parse and normalize raw analyzer output strings into structured Python dataclasses covering: test code, result value, unit, reference range bounds, and abnormal flags.
Apply reference range flag logic (H / L / POS / NEG) per LOINC-mapped test code, with configurable thresholds stored in the device configuration file.
Validate data completeness, unit consistency, and timestamp accuracy (NTP-synchronised) before passing results downstream reject and log malformed records.
1.3 HL7 v2.5 Message Construction-Essential
Build well-formed HL7 v2.5 ORU^R01 messages using hl7apy, covering all required segments:
MSH Message header with facility, application, timestamp, and message control ID
– PID — Patient identification from the patient registry (name, DOB, gender, MRN)
– OBR — Observation request block with LOINC code, ordering operator, and timestamp
– OBX — Observation result with value type (NM for numeric, CWE for qualitative), LOINC code, value, unit, reference range, and flag
– ZDS — Custom segment carrying device ID, QC status, encryption flag, and TLS version
Ensure MLLP framing (0x0B start block, 0x1C 0x0D end block) for messages routed via Mirth Connect on TCP port 2575.
Maintain and update the LOINC code mapping table (config/loinc_map.json) quarterly from the LOINC database release.
1.4 POCT1-A Bidirectional Communication-Essential
Implement POCT1-A (CLSI) protocol for devices that support it, enabling: operator ID transmission to the device, QC data retrieval, device status polling, and result download commands.
Log all QC data retrieved via POCT1-A into the CLIA audit trail with operator ID, QC level, expected tolerance, and pass/fail outcome.
1.1 Offline Queue & Resilience
Implement a SQLite-backed local result queue that buffers up to 10,000 records when the network or downstream API is unavailable.
Implement auto-sync logic: on connectivity restore, drain the queue in chronological order with configurable batch size and inter-batch delay to avoid API rate limit violations.
Raise an amber alert (via the REST API alert endpoint) when the queue depth exceeds 500 records.
Ensure the middleware restarts cleanly and resumes queue processing after a host reboot — use a systemd service unit on Linux or a Windows service wrapper.
1.2 Testing & Documentation
Write pytest unit tests for all parsers, flag logic, HL7 builders, and queue logic — minimum 80% line coverage on the middleware package.
Produce integration tests that simulate full analyzer-to-Mirth flows using mock serial ports (socat / Virtual Serial Port Driver) and captured analyzer output fixtures.
Maintain the Device Integration Guide: per-analyzer wiring diagrams, port settings, driver install steps, and known issues.
Preferred candidate profile
3+ years of professional Python development — not scripting; production-grade, tested, packaged Python.
Hands-on experience with serial port communication in Python (pySerial) — baud rate, parity, stop bits, flow control, read timeouts.
Solid understanding of HL7 v2.x message structure: segment identifiers, field delimiters, data types, and escape sequences.
Experience parsing structured binary or text protocol output from hardware devices (lab instruments, industrial sensors, embedded systems, or similar).
Working knowledge of TCP/IP socket programming in Python.
Familiarity with SQLite for local data persistence and queue management.
Experience writing pytest tests for a production codebase.
Linux command line proficiency: systemd service management, log inspection, cron, file permissions.
Highly Desirable
Direct experience with ASTM E1381/E1394 or POCT1-A (CLSI) communication protocols.
Prior integration work with any of: Abbott i-STAT, Abaxis Piccolo Xpress, Quidel Sofia, or Cepheid GeneXpert.
IEC 62304, ISO 13485 and ISO 14971 experience is desirable.
Experience with hl7apy or python-hl7 libraries.
Familiarity with Mirth Connect channel configuration and JavaScript transformers.
Exposure to USB HID communication (PyUSB, hidapi).
Knowledge of LOINC codes and clinical laboratory terminology.
Background in clinical laboratory operations, biomedical engineering, or medical device manufacturing.
Candidate can share the profile to
[email protected]
📌 Device Middleware Engineer (Healthcare / MedTech) (Visakhapatnam)
🏢 Virgil Healthcare Platforms
📍 Visakhapatnam