Channel routing
Default inbound routing
Each MLLP port maps to a single message type and Camel route. The routing is determined by the port number — there is no message-type inspection at the TCP level.
:2575 → ADT route → [RECEIVE → ENRICH → TRANSFORM → GOVERN → PERSIST → DISPATCH → ACK]
:2576 → ORU route → [same pipeline, ORU-specific mapping in TRANSFORM]
:2580 → RDE route → [same pipeline, GOVERN also checks JamGuard DDI before PERSIST]
Outbound subscription channels
JamBridge dispatches outbound messages via FHIR subscriptions. Three channel types are supported:
MLLP outbound
{
"resourceType": "Subscription",
"criteria": "Patient?",
"channel": {
"type": "message",
"endpoint": "mllp://lis.branch03.internal:2575",
"payload": "application/hl7-v2"
}
}
FHIR REST outbound
{
"resourceType": "Subscription",
"criteria": "Observation?code=http://loinc.org|2089-1",
"channel": {
"type": "rest-hook",
"endpoint": "http://cds.branch01.internal/fhir/Observation",
"payload": "application/fhir+json"
}
}
SMS outbound (via JamConnect)
{
"resourceType": "Subscription",
"criteria": "Observation?_has:Observation:subject:interpretation=HH",
"channel": {
"type": "message",
"endpoint": "jamconnect://sms/chw-alert",
"payload": "application/json"
}
}
Adding custom subscriptions
POST /fhir/Subscription
Host: hapi:8080
Authorization: Bearer {token}
Content-Type: application/fhir+json
{...Subscription resource...}
JamBridge picks up new subscriptions within 30 seconds (configurable: subscriptions.refresh-interval-s).