Skip to end of metadata
Go to start of metadata


The official version of the OHIE workflows can be found in the OpenHIE Architecture Specification.


Description: The send alert workflow allows the infrastructure services to register alerts with an alert service. The alert service allows alert consumer to query for these alerts and send them out to health workers in whatever format is appropriate (sms, email, etc).

Sponsors: Eduardo JezierskiDykki Settle and Carl Leitner 

Status:  under development

Last Modified: 3 March 2016


An alert is intended as a largely one way communication to a health worker.  Use cases for alerts include:

  1. Crisis Response 

    In response to a crisis or emergency situation, such as the 2014 and 2015 outbreaks of Ebola in western Africa, it is critical to communicate to health workers within a particular health care network and to verify, to the extent possible, the receipt of such alert.

  2. Care Reminders
    A subject of care may receive care from multiple providers across multiple health care networks, and coordination of care across providers and networks is difficult. If an Electronic Medical Record or Longitudinal/Shared Health Record is present, Care Reminder alerts can be triggered through the examination of clinical records about the subject of care. Care Reminder alerts are sent either to the subject of care or a designated health worker.

Though the infrastructure of the alerting workflow indicated below would permit communication of many types of additional messages, alerts, or notifications,  it is not intended that these messages exceed the above use cases.  In particular these do not include "Critical Findings" or other types of alerts which require immediate action by a health worker.

The IHE mACM standard on which this workflow expects that additional IHE profiles utilizing mACM would be developed to address broader alerting workflows.


  • Alert Reporter - The point-of-service system that captures patient identifiers, is responsible for sending the identifiers to the HIE. 

    An Alert Reporter shall originate or relay alerts (an alarm, either physiological or technical, or an advisory) to the Alert Aggregator. 

    This actor can optionally query an Alert Aggregator Actor for statistics related to the dissemination of this alert to the intended recipient(s)

  • Alert Aggregator - A system responsible for distributing an alert to a health worker.  The alert aggregator  manage these alerts according to the required jurisdiction defined business context, for example dispatching them onto a communications platform for delivery to an intended recipient.

    The Alert Aggregator may optionally collect statistics related to the dissemination of the alert such as delivery status or the value of a SMS response or acknowledgment.

Non-Exhaustive Examples of Alert Reporters

In the workflow below, the Alert Report is presented as a generic actor.   Examples include:

  • An Health Management Information System (HMIS) notices that a threshold indicator on the number of cases of Cholera for a district.  An HMIS could act as an Alert Reporter by querying a health worker registry to determine a list of all Nurses in a district and generate an alert indicating that they should be advised of the increased number of cholera cases.
  • A Ministry of Health employee wishes to notify health workers of a delay in payment.  The employee would interacting with an Human Resource Information System (HRIS) could act as an Alert Reporter by initiating an alert to all formal sector paid employees to indicate that there will be a delay.
  • A Mediator in the Interoperability Layer could monitor a Shared Health Record  and notice that a child has missed a vaccination according to an established protocol of care. The Mediator would act as an Alert Reporter and issues an SMS reminder to send to the mother or other designated guardian.  In the case when a mother does not have access to a cell-phone or other electronic device, an alert should be generated and sent to the child’s caregiver. This caregiver could be a Community Health Worker, a village elder, or a sub-village chairman.
  • A Mediator can monitor a central Electronic Referral System and a Shared Health Record to detect if the patient has missed their referral by checking if an encounter has been received at the Longitudinal Health Record within the time frame indicated in the referral. If an encounter has not been received the Mediator acts as an Alert Reporter and sends out an out an alert of the missed appointment to inform the health worker that originally interfaced with that client.


RefInteractionTransaction SpecificationNotes
1Notice an alert condition
None: Defined by business rules of Alert Reporter
2Search for provider, organization and/or facility identifier(s)

FHIR DSTU2 search on Location, Provider or Patient resources

ITI-73 Find Matching Services CSD Request

Alert Report constructs query according to business rule under which alert was initiated

FHIR transactions are more aligned with the mACM ITI-84 transaction which has references to Organization, Location (e.g. facility), or Provider resources.
3Search for provider, organization and/or facility identifier(s)

FHIR DSTU2 search on Location, Provider or Patient resources

ITI-73 Find Matching Services CSD Request

4Return identifiersFHIR DSTU2 bundle search response
ITI-73 Find Matching Services response
Current reference implementation of ILR (OpenInfoMan) supports both of these transactions.

FHIR transactions are more aligned with the mACM ITI-84 transaction which has references to Organization, Location (e.g. facility)  or Provider resources
7Search for patient identifier(s)

FHIR search on Patient resources (PDQm) request


PIX/PDQ request

8Return identifiersFHIR DSTU2 bundle search response


PIX/PDQ response

FHIR transactions are more aligned with the mACM ITI-84 transaction which has references to Patient resources
9Return identifiersFHIR DSTU2 bundle search response


PIX/PDQ response

10Report AlertMobile Report Alert ITI-84 (mACM)

Identifiers of recipients passed either by reference to appropriate FHIR resource (requires FHIR server for those resources)

Identifiers of recipients passed as embedded reference to appropriate FHIR resources (does not require FHIR server)

11Report AlertMobile Report Alert ITI-84 (mACM)
12Disseminate Alert

Disseminate alert(s) via appropriate communication mechanisms available to the HIE (SMS, email, POC system, etc).  Transactions depend on the communication channel.

13Update dissemination status
Transactions are not specified (currently) by mACM standard.  

Note: RapidPro uses custom FHIR compliant endpoint "Communication/$response" and "Communication/$sent" for this.  We can submit a Change Proposal to standardize this

Request for Alert Status

Query for Alert Status ITI-85 (mACM) Request

Request for Alert Status

Query for Alert Status ITI-85 (mACM) Request
16Return Alert StatusQuery for Alert Status ITI-85 (mACM) Response
17Return Alert StatusQuery for Alert Status ITI-85 (mACM) Response
  • No labels



    In the architecture call today, Ed J. raised the idea of changing step 7 from a push to a pull to allow for intermittent connectivity of SMS senders.  I think this is one good option.  However, I also think that it requires a registered POS system and some mechanism to restrict the scope of records available to that system.  Also I'd like to see some sort of an ACK to know that the alert has been delivered.  Perhaps there could be a combination of pull and push – a pull request would be a request to subscribe with a last-record-received parameter.  The IL will reply with all messages newer than the last-record-received, including newly created messages as they are created, sent one at a time with an ACK.  NAK or failure to ACK unsubscribes. 

  2. Hi all.

    I'm very sorry to have missed the architecture call yesterday, especially since there was a discussion of one of my favourite topics: alerts.

    As is sometimes the case, I think I'm going to be a bit of a contrarian on this topic. At a quite basic level, I really do not believe it should be the role of the SHR to "raise alerts". The SHR is a repository and that is, in my view, the only job it has. Even if we think of SHR as denoting a "virtual database" of health observations, prescriptions and dispenses, lab orders and results, DI orders and images – it doesn't change the fact that it is a repository, not a logic engine. Alerts rely on a logic engine. As another side comment, I can't see why the Interoperability Layer will have to resolve all the IDs. Content that is stored in our registries and repositories is already resolved to our cardinal code sets / terminologies and is indexed by the ECID, EPID, ELID, etc. Inside the datacentre, we should not have to do message massage. 

    What I believe we will need is a "service" that is dedicated to being the logic engine for OpenHIE. This is the ICP (integrated care pathways) service that I have been advocating for, lo these many months – and which we are now starting to draw into our workflow discussions. As Roger correctly noted (on the Google Group thread, I think) – we seem, in the present example, to be raising an alert on something that didn't happen. That is a key role of the ICP service – to understand what are the guideline-based care pathways so that, when something that should have happened has NOT happened, we can raise an alert. Another key role is to be able to raise an alert when something that did happen should NOT have happened (e.g. prescribing Derek penicillin when he is allergic to it).

    Arising out of the RHEA status call last week, I was invited to prepare a discussion document describing an alert logic that we could use on the implementation in Rwanda as well as for our OpenHIE work. The approach that I proposed was based on the following:

    • The “save encounter” transaction will leave a client’s SHR record in a specific STATE
    • Generically, we want to be able to associate a particular ACTION with client SHR records that are in a particular STATE
    • Periodically, we will:
      1. Query for all the SHR records in STATE(x)
      2. For each query result, take ACTION(x); optionally, we may then also update STATE(x)
    I believe the ICP service is where we should define and associate STATEs and ACTIONs.
    I have posted the PPT deck describing this generic alert logic to the Google Group. It is a good idea, I think, to get comments, discussion and feedback on these ideas before altering our architecture diagrams to start introducing the ICP service as an actor in our workflows. I do anticipate, however, that a standards-based ICP service (I am favouring BPMN) will afford us a useful way to "program" the HIE. Happily, there is an IHE profile (RPE – retrieve process for execution) that gives us a ready way to support the concept of "HIE as state machine".
    Warmest regards,