morphos / bridge /README.md
Jose Salazar
Añadir el stack nuevo: Vite/TypeScript + FastAPI
70e641d
|
Raw
History Blame Contribute Delete
3.12 kB

Puente local Morphos (bridge)

Lee los analizadores de laboratorio en la LAN de la clínica y reenvía los resultados normalizados a la API de Morphos (que corre en HF Spaces) por HTTPS autenticado. Es un proyecto uv independiente del backend: sus dependencias de serie/HL7 no entran en la imagen desplegada.

analizador → transporte (serie/MLLP) → parser (ASTM/HL7) → normalizador → reenviador → POST /api/lab/ingesta

Instalar y ejecutar

cd bridge
uv sync
cp .env.example .env      # edita MORPHOS_BRIDGE_URL, API_KEY y el transporte
uv run python -m bridge.main

La API_KEY debe ser una de las claves configuradas en el backend (MORPHOS_LAB_API_KEYS).

Ejecutar como servicio: envuelve uv run python -m bridge.main en una unidad systemd (o un contenedor) en un equipo de la clínica que esté en la misma red que el analizador.

Conectar varios equipos a la vez

Declara MORPHOS_BRIDGE_INSTRUMENTOS como una lista JSON (una línea) — un puente atiende a todos en paralelo, cada uno con su parser por fabricante:

MORPHOS_BRIDGE_INSTRUMENTOS=[
  {"fabricante":"bionote","transporte":"mllp","instrumento_id":"vcheck-1","puerto":2575},
  {"fabricante":"abaxis","transporte":"serie","instrumento_id":"vetscan-1","serie_puerto":"/dev/ttyUSB0"},
  {"fabricante":"horiba","transporte":"serie","instrumento_id":"micros-1","serie_puerto":"/dev/ttyUSB1"}
]

El fabricante selecciona automáticamente el adaptador (Bionote→HL7, Abaxis/Horiba→ASTM) y, en el backend, la tabla data/lab_mapeos/<fabricante>.json. En el analizador, configura el destino: los de MLLP apuntan a IP-del-puente:puerto; los de serie se cablean al puerto USB/RS-232.

Equipos soportados (alcance actual)

Equipo Protocolo Transporte Adaptador
Bionote Vcheck V200 HL7 v2.6 PCD-01 MLLP/TCP adaptadores/hl7v2.py
Abaxis VetScan (VS2) ASTM E1394 (configurar salida ASTM, no ASCII/XML) serie adaptadores/astm_generico.py
Scil / Horiba ASTM E1394 serie adaptadores/astm_generico.py

IDEXX queda fuera de alcance por ahora.

Checklist de validación con el equipo real (por analizador)

El parseo genérico y las tablas de mapeo se finalizan con capturas reales — no se puede cerrar sólo desde código:

  1. Capturar 3–5 corridas reales (log del puerto serie, o pcap del MLLP).
  2. Confirmar los parámetros: serie → baudios/paridad/bits; MLLP → IP/puerto y que el equipo espera ACK.
  3. Confirmar qué campo lleva el ID de muestra (OBR-3 en HL7; O-3 en ASTM) y que coincide con lo que el veterinario teclea/escanea en Morphos.
  4. Confirmar las unidades reportadas y los códigos de prueba (OBX-3 / R-3); añadir los que falten a data/lab_mapeos/<fabricante>.json en el backend (mira los no_mapeados que devuelve la ingesta).

Pruebas

uv run pytest        # parsers (HL7/ASTM) + fiabilidad del reenviador (spool/retry)

Las pruebas usan fixtures capturadas; la corrección final contra el hardware es manual (ver checklist).