Skip to content
LambogeniusDocs

HL7 MLLP Connector for Azure Logic Apps

Quick start: gateway

Receive MLLP into a Logic App on App Service or Consumption through the MLLP gateway.

Service provider/serviceProviders/lamboHl7MllpLicensed together with the HL7 v2 Codec. One token covers both.

Receive MLLP into the Logic Apps you already run

HL7 sender ──MLLP──▶ gateway listener ──HTTPS POST (JSON)──▶ workflow: When an HTTP request is received
           ◀──ACK──                    ◀──HTTP response──────
  1. 1
    Create the receiving workflow.

    Start it with “When an HTTP request is received” and decode triggerBody()?['message'] with the codec. Save it and copy the trigger's URL.

    {
      "definition": {
        "triggers": {
          "When_an_HL7_message_arrives": { "type": "Request", "kind": "Http", "inputs": {} }
        },
        "actions": {
          "Decode_HL7": {
            "type": "ServiceProvider",
            "inputs": {
              "parameters": { "message": "@{triggerBody()?['message']}" },
              "serviceProviderConfiguration": {
                "connectionName": "lamboHl7Codec",
                "operationId": "decode",
                "serviceProviderId": "/serviceProviders/lamboHl7Codec"
              }
            },
            "runAfter": {}
          }
        }
      },
      "kind": "Stateful"
    }
  2. 2
    Run the gateway.

    Locally or on a VM with Docker, configured through environment variables. Port 8080 serves /healthz and the HTTP API.

    docker run -d --name mllp-gateway -p 2575:2575 -p 8080:8080 \
      -e LAMBOGENIUS_LICENSE="<your license token>" \
      -e Gateway__ApiKeys__0="<a long random key>" \
      -e Gateway__Listeners__0__Name=adt \
      -e Gateway__Listeners__0__Port=2575 \
      -e Gateway__Listeners__0__AcknowledgementMode=Auto \
      -e Gateway__Listeners__0__TargetUrl="<the workflow's HTTP trigger URL>" \
      <registry>/lambogenius-mllp-gateway:<version>
    
    curl http://localhost:8080/healthz

    In Azure, deploy to Container Apps with the Bicep template. The trigger URL goes into Key Vault (targetUrlSecretName), and the environment is VNet-internal by default:

    az deployment group create -g rg-hl7-gateway -f deploy/gateway/main.bicep -p \
      image=<registry>.azurecr.io/lambogenius-mllp-gateway:<version> \
      containerRegistryName=<registry> \
      keyVaultName=kv-hl7-gateway \
      listeners='[{"name":"adt","port":2575,"acknowledgementMode":"Auto","acknowledgementType":"Original","targetUrlSecretName":"adt-target-url"}]' \
      allowedDestinations='["emr.hospital.internal:2575"]'
  3. 3
    Send a test message.

    Point the sending system, or the mllp test tool, at the gateway's host and listener port. With Auto acknowledgement the sender gets AA as soon as the Logic App accepts the request.

Next: return your own ACK from the workflow (see Acknowledgements), or read the full gateway reference.