Real Time Messaging API (RTM API)
The Real Time Messaging API is SignalR based, allowing you to receive events from Noah in real-time. SignalR includes retry functionality. Data is not encrypted but contains only ids enabling you to look up the actual data via the API.
If your integration requires your app to receive all events - even those generated while your app is not running - you should use the Events API to be able to catch up. This feature have not been implemented yet
Subscribing to event types
You can set up events via the API.
Important!:
Your Request URL might receive many events and requests. Consider decoupling your ingestion of events from the processing and reaction to them.
Connecting
Connect to the /rtm path on the API URL.
Invoke the hub method “SubscribeTenant” method with tenant id and event subscription id
Listen for events on the “OnEvent” hub method
When disconnecting, invoke the hub method “LeaveTenant”
Events
Almost everything that happens in Noah will result in an event being sent to all clients.
{ "TenantId": "730388bc-af11-468d-bd2e-cec0f273a822", "NotificationEventSubscriptionId": "19efd771-f3f7-4287-a4da-f9f16adc0552", "NotificationEventId": "6e665039-b4ec-41b8-96ac-614b53eeea10", "CorrelationId": "66861d3f-37b9-441b-9f00-f60181fa49d2", "EventType": "PatientCreated", "TransmissionDate": "2017-03-02T14:37:07.9395339Z", "Event": { "ResourceId": "b93009e0-07b9-4260-bf2a-a2c02cb230c8", "EventDate": "2017-03-02T14:37:07.9395339Z", "References":[{ "Rel": "self", "Href": "https://.../730388bc-af11-468d-bd2e-cec0f273a822/api/patients/b93009e0-07b9-4260-bf2a-a2c02cb230c8", "ResourceId": "b93009e0-07b9-4260-bf2a-a2c02cb230c8" }] }
New event types will be added in the future. Clients should be able to handle unexpected event types.
Suggested client: SignalR
We suggest using SignalR which handles retries etc. It is also able to fall back to other transports if necessary.
RtmClient
We provide a .NET client that can be downloaded here: https://www.himsa.com/members-2/noah-es-development/ (Log-in required)