Webhooks allow you to build or set up integrations which subscribe to certain events on the Elation Platform without polling our API for changes. When one of those events is triggered, we'll send a HTTP POST payload to the webhook's configured URL.
Prevent Echo
Note that updates made by an application will not trigger webhook callbacks to the same application.
Supported models
At the moment, you will receive events for the following models:
Model | event name |
---|---|
Appointment | appointments |
Allergies | allergies |
Bill | bills |
Cardiac Orders | cardiac_orders |
Clinical Documents | clinical_documents |
Delegate Permissions | delegate_permissions |
Document Tags | document_tags |
Drug Intolerances | drug_intolerances |
Imaging Orders | imgaging_orders |
Immunizations | immunizations |
Incoming Files (fax) | incoming_files |
Insurance companies | insurance_companies |
Insurance plans | insurance_plans |
Lab Order Sets | lab_order_sets |
Lab Order Tests | lab_order_tests |
Lab Order | lab_orders |
Lab Vendor Patient Sites | lab_vendor_patient_sites |
Lab Vendors | lab_vendors |
Letters | letters |
Medications | medications |
Message Threads | message_threads |
Non-visit Notes | non_visit_notes |
Office Staff | office_staff |
Patient | patients |
Patient Photo | patient_photos |
Physicians | physicians |
Pulmonary Orders | pulmonary_orders |
Referral Orders | referral_orders |
Reports | reports |
Service Locations | service_locations |
Sleep Orders | sleep_orders |
Staff Groups | staff_groups |
Visit Notes | visit_notes |
Vitals | vitals |
History | histories |
Family History | family_histories |
Acknowledging events
We are expecting status code 200
when we POST
the event payload to your webhook URL. We will retry the POST
for up to 72 hours until we get a status code 200
response.
You can programmatically register your event listener (e.x. webhook URL) using The Event Subscription API.
Webhook Signatures
Elationβs webhook requests are signed using the Ed25519 digital signature scheme. The base64 encoded signature can be found in the El8-Ed25519-Signature
request header. The base64 encoded signing key for your webhook subscription can be in the signing_pub_key
field in the response from the Subscription
endpoint.
Libraries exist for all common programming languages that support the verification of Ed25519 signatures.
Example Implementation
The following is an example implementation, using Flask and PyNaCl.
from flask import Flask, request
from nacl.signing import VerifyKey
from nacl.encoding import Base64Encoder
# This base64 encoded value is obtained from the Subscription endpoint
verify_key = VerifyKey("8gUqjclkmFz6AFVB05RpWDYwTxR5MzsLzJnwZ9MlYCw=", encoder=Base64Encoder)
app = Flask(__name__)
@app.route("/", methods=["POST"])
def test_verification():
b64_signature = request.headers["El8-Ed25519-Signature"]
signature = Base64Encoder.decode(b64_signature)
message = request.get_data()
# verify() raises an exception if verification fails
verify_key.verify(message, signature)
return "Signature Verified"