# connectors/pump_icu_med.py
from hl7.parser import parse
from connector_base import BaseConnector, connector
import socket, ssl, json

@connector
class ICUMedPump(BaseConnector):
    vendor = "ICU Medical Plum"
    version = ">=8.5"

    def _run(self):
        ctx = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)
        ctx.load_cert_chain("/certs/connector.pem", "/certs/key.pem")
        sock = ctx.wrap_socket(socket.socket(), server_hostname=None)
        sock.connect((self.config["pump_host"], 2576))

        while not self.stop_flag.is_set():
            msg = sock.recv(4096).decode()
            hl7 = parse(msg)
            ev = {
                "source": "pump.icu_med",
                "org_id": self.org_id,
                "event_type": "MedicationSafety",
                "timestamp": hl7["OBR"][7].value,       # infusion start time
                "severity": int(hl7["NTE"][3].value),  # 0-9 hard/soft hit
                "payload": hl7.to_dict(),
            }
            self.emit(ev)
