Skip to content

User Decision Fulfillment

Alex Tatiyants edited this page Oct 8, 2018 · 2 revisions

This document describes a proposed extension to CDS Hooks (for 1.1 release). One of the use cases this is designed to support is Radiology Appropriateness Rating.


In some situations, the CDS Service wants the provider to interact with its app before giving guidance (ex. to ask clarifying questions, present more options, etc). Furthermore, those interactions can result in provider decisions (ex. provider chooses to add an order). Therefore, CDS Service needs a way to communicate provider decisions back to the EMR and have those decisions be executed.

Related to this issue, CDS Service cannot tell the EMR that a valid action to a given suggestion card is launching a CDS app. This is especially true if launching the app is not the only choice (ex. "remove order" OR "provide more information"). This is because apps are currently linked to in the same way any reference links are, via an entry in the Links section.

Proposed solution

Diagram below describes the solution:

User Decision Fulfillment Flow

  1. After EMR notification, CDS Service responds with a link card.
  2. EMR launches the CDS App in a container and provides it a JavaScript object (CdsHooks). This object implements a special method done([actions]) which allows the CDS Service to ask the EMR to execute a set of actions (ex. “Remove order”).
  3. Once CDS App completes the interaction with the user, it calls CdsHooks.done([actions])
  4. EMR does whatever is necessary internally to fulfill those actions.
  5. EMR notifies CDS service via analytics endpoint that actions were executed. If CDS service does not receive a pingback, it will assume that actions were not executed.

In order to support an app launch as an action, a new type of action called launch-app is defined. If a link marked with this type is launched, the EMR will supply the CdsHooks object to the container for that link.

“card”: {
  “summary”: "Need more information to rate advanced imaging order",
  “suggestions”: [
    {
      “label”: "We need more information to rate your imaging order",
      “uuid”: "89shdfh92jrj2r23r",
      “actions”: [
        {
          “type”: "launch-app",
          “resource”: {
            “type”: "smart",
            “url”: "https://...",
            “appContext”: "my special app context"
          }
        }
      ]
    }
  ]
}