On-prem agent #2012
Replies: 6 comments 3 replies
-
Curious how this interacts with our current subscription/bot paradigm. How would we use Bots and Subscriptions to handle / send XMPP messages? Would we make a new subscription channel type? And in the other direction, would we have some kind of representation of an XMPP connection that we could subscribe to? |
Beta Was this translation helpful? Give feedback.
-
I think the way to think about this is by environment. If there is remote access to the host that the agent lives on, then the simple adapter, like above seems sufficient and probably the right amount of surface area. For the true edge hosts (those running in a lab or warehouse etc.) this will be problematic, but for managed hosts simple seems appropriate. |
Beta Was this translation helpful? Give feedback.
-
Notes on "HL7 over XMPP" from the Direct project: |
Beta Was this translation helpful? Give feedback.
-
Notes on "XMPP for bioinformatics": "XMPP for cloud computing in bioinformatics supporting discovery and invocation of asynchronous web services" |
Beta Was this translation helpful? Give feedback.
-
Considerations for building a standalone binary:
|
Beta Was this translation helpful? Give feedback.
-
To follow |
Beta Was this translation helpful? Give feedback.
-
For non-HTTP communication such as HL7, DICOM, or ASTM, Medplum requires an agent to run and convert to HTTP API calls.
Medplum has done this as custom projects on multiple occasions, but currently does not have an official general purpose agent.
Other projects such as Mirth can play this role. Mirth is widely deployed and battle tested. Mirth natively supports HL7 and DICOM. Mirth supports ASTM via paid plugin on Mirth Platinum.
However, we do hear objections from customers about why they do not want to use Mirth:
The idea for exploration is a Medplum agent that provides this edge connection capability.
Desired features:
The minimal version would simply be an HL7 MLLP to HL7 over HTTPS adapter. However, that would have many of the same disadvantages as Mirth, because it would not support remote push. (A suboptimal implementation could be achieved with polling, but that has a bunch of problems)
The more comprehensive version would include a bidirectional network protocol such as XMPP or Matrix. Other IoT network protocols could be considered (AMQP, MQTT) but would require an additional layer on top.
The advantage of a bidirectional network protocol would be a natural story for remote management, remote health checks, and server initiated messages. I.e., the ability to "push" a message to a remote device.
The disadvantage is increased complexity and the necessity of running a server to manage the centralized communication. There are popular and battle tested servers for XMPP (ejabberd, OpenFire, Prosody) and Matrix (Synapse). We would need to recognize the long term commitment to managing such a service.
Beta Was this translation helpful? Give feedback.
All reactions