Skip to content
Alex Tatiyants edited this page Apr 17, 2018 · 16 revisions

This document describes a set of extensions to CDS Hooks, which enable complex interactions between the provider, the CDS Service, and the EMR. The following items are covered:

  1. User Decision Fulfillment
  2. System Only notifications
  3. Overrides

1. User Decision Fulfillment

Currently, there is no way for the CDS Service to ask the EMR to execute actions selected by the user through the CDS App. However, it’s very likely that in some situations the CDS Service will want the provider to interact with their app (to ask questions, present more options, etc) and that those interactions will result in provider decisions. Therefore, CDS Service needs a way to communicate provider choices back to the EMR.

Related to this issue, CDS apps are currently linked to in the same way any other reference link may be linked to, via an entry in the Links section. And though specific links can be tagged as “smart” (which prompts the EMR to provide SMART context to the app), CDS Service can't tell the EMR that a valid action to a given suggestion card is launching a CDS app.

Proposed solution

Diagram below describes the solution:

  1. 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 request 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]) and the EMR does whatever is necessary internally to fulfill those actions.

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 know to 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"
          }
        }
      ]
    }
  ]
}

2. System-Only actions

Currently, there is no way for a CDS Service to signal to the EMR that a given action should be executed immediately, without having to prompt the provider.

Proposed solution

Allow CDS Service return actions as a top level response. If actions are returned, the EMR would execute them without notifying the provider.

For example, a Radiology appropriateness CDS Service may decide that a given imaging order is appropriate. It needs to mark the order as such, but does not need to interrupt the provider. It can return an action to update the order with necessary metadata and have the EMR execute the update automatically:

{
  "actions": [
    {
      "type": "update",
      "description": "Rate proposed imaging order as appropriate",
      "resource": {
        "resourceType": "ProcedureRequest",
        "identifier": [
          {
            "value": "C7ACB00D-C3B6-45E8-B469-CDCDABF905F6"
          }
        ],
        "extension": [
          {
            "url": "procedureRequest-authorizationId",
            "valueCode": "12310112310"
          },
          {
            "url": "procedureRequest-appropriatenessRating",
            "valueCode": "appropriate"
          }
        ]
      }
    }
  ]
}

Note that actions can be returned concurrently with suggestion cards. In this example, if a CDS Service wants to rate a currently proposed order as inappropriate AND propose two actions (“switch order” and “remove order”), it would respond with the action to update the order + suggestion cards to give the user additional recommendations.

The EMR would execute the action immediately (thereby marking the currently proposed order as inappropriate) and present other cards to the user. If the user decides to ignore all cards, currently proposed order would remain marked as inappropriate. Alternatively, if the user decides to follow one of the other recommendations, the proposed order would go away, thereby eliminating the update already executed.

{
  "actions": [
    {
      "type": "update",
      "description": "Rate proposed imaging order as inappropriate",
      "resource": {
        "resourceType": "ProcedureRequest",
        "identifier": [
          {
            "value": "C7ACB00D-C3B6-45E8-B469-CDCDABF905F6"
          }
        ],
        "extension": [
          {
            "url": "procedureRequest-authorizationId",
            "valueCode": "12310112310"
          },
          {
            "url": "procedureRequest-appropriatenessRating",
            "valueCode": "inappropriate"
          }
        ]
      }
    }
  ],
  "cards": [
    {
      "summary": "CTPA is the primary recommendation for suspected pulmonary embolism, non-pregnant, PERC > 0, and RGS >= 11.",
      "indicator": "warning",
      "detail": "...",
      "source": {
        "label": "CMS Authorized CDSM",
        "url": "https://cdsm.com",
        "icon": "https://cdsm.com/img/icon-100px.png"
      },
      "suggestions": [
        {
          "label": "Switch Order",
          "uuid": "bbfd53d6-f8e2-4f52-b6d8-77cad72d6e99",
          "actions": [
            {
              "type": "create",
              "description": "CTA Chest",
              "resource": {
                "resourceType": "ProcedureRequest",
                "id": "cta-chest",
                "extension": [
                  {
                    "url": "procedureRequest-authorizationId",
                    "valueCode": "12310112310"
                  },
                  {
                    "url": "procedureRequest-appropriatenessRating",
                    "valueCode": "appropriate"
                  }
                ],
              }
            },
            {
              "type": "delete",
              "resource": {
                "resourceType": "ProcedureRequest"
              }
            }
          ]
        },
        {
         "label": "Remove Order",
          "uuid": "bbfd53d6-f8e2-4f52-b6d8-77cad72d6e99",
          "actions": [
            {
              "type": "delete",
              "resource": {
                "resourceType": "ProcedureRequest"
              }
            }
          ] 
        }
      ]
    }
  ]
}

3. Overrides

Currently, CDS Service cannot give the provider an option to override a recommendation, either from a list of options or with a free text comment.

Proposed Solution

Introduce a top level object in the Card called override. This object would have an array of reason objects with a label and a uuid (to be used for analytics post-backs). Furthermore, the object would have a freeTextAllowed flag which would signal to the EMR that the user should be given the option of entering a comment as a valid override.

"card": {
  "override": {
	"freeTextAllowed": true,
	"reasons": [
  		{"label": "Wrong / disagree", "uuid": "cebfbce4-41d1-11e8-842f-0ed5f89f718b"}
  		{"label": "Not applicable", "uuid": "d797b0b0-41d1-11e8-842f-0ed5f89f718b"}
	]
  },
  suggestions: [...]
}

Use Case: Radiology Appropriateness

CDS Hooks extensions proposed above can be leveraged to implement a valid Radiology Appropriateness solution.

As part of Protecting Access to Medicare Act (PAMA), Center for Medicare and Medicaid Services (CMS) will require all advanced imaging orders to be rated for appropriateness by a certified CDS Mechanism (CDSM) before submitting for payment to Medicare. Guidelines used for this purpose are known as Appropriateness Use Criteria (AUCs) and are provided by a CMS-approved organization called Provider Led Entity (PLE).

A PAMA compliant solution has to support the following requirements:

  • Imaging orders must be rated before the order is signed
  • CDSM recommendations cannot be ignored by the provider
  • CDSM can recommend both removal and switching of orders (from inappropriate to appropriate)
  • Provider must be able to override the recommendation in emergency scenarios or when the clinical scenario for the proposed imaging order is not covered by the AUCs implemented by the CDSM
  • CDSM must annotate order as a result with CDS Session Id, Appropriateness Score, and other details (ex. reason for exam)

PAMA Use Cases

# Description Action(s) Requires user interaction
1 CDSM can rate proposed order based on available data and determines that the order is inappropriate. No alternatives are available.
  • Remove order
  • Update order (rated as inappropriate)
Yes
2a CDSM can rate proposed order based on available data and determines that the order is inappropriate. CDSM can also recommend a valid alternative.
  • Remove order
  • Switch (add + remove) order
  • Update order (rated as inappropriate)
Yes
2b CDSM can rate proposed order based on available data and determines that the order is appropriate. CDSM can also recommend a valid alternative.
  • Remove order
  • Switch (add + remove) order
  • Update order (rated as appropriate)
Yes
3 CDSM cannot rate proposed order based on available data. More information is needed from the provider before rating can be done Launch App Yes
4 CDSM can rate proposed order based on available data and determines that order is appropriate. Update order (rated as appropriate) No

Use Case 1: Order Inappropriate, No Alternatives

  1. Provider signs imaging order
  2. EMR triggers “sign-order” hook and invokes CDSM
    • Request context contains the proposed order
  3. CDSM responds with the following:
    • Actions
      • “update” action containing the resource for the proposed order with the following details:
        • CDS Session Id (via “procedureRequest-authorizationId” extension)
        • Appropriateness Rating (via “procedureRequest-appropriatenessRating” extension). The value will indicate that the order is rated as inappropriate.
    • Suggestions
      • “Remove Order” with the following:
        • “delete” action for the proposed order
      • Overrides for “emergency scenario” and free text response
  4. Provider accepts suggestion or overrides
  5. EMR notifies CDSM via analytics callback

Use Case 2a: Order Inappropriate, Alternative Available

  1. Provider signs imaging order
  2. EMR triggers “sign-order” hook and invokes CDSM
    • Request context contains the proposed order
  3. CDSM responds with the following
    • Actions:
      • “update” action containing the resource for the proposed order with the following details:
        • CDS Session Id (via “procedureRequest-authorizationId” extension)
        • Appropriateness Rating (via “procedureRequest-appropriatenessRating” extension). The value will indicate that the order is rated as inappropriate.
    • Suggestions:
      • Remove Order” with the following:
        • delete” action for the proposed order
      • Switch Order” with the following:
        • delete” action for the proposed order
        • create” action containing a resource for a new order with the following details:
          • CDS Session Id (via “procedureRequest-authorizationId” extension)
          • Appropriateness Rating (via “procedureRequest-appropriatenessRating” extension). The value will indicate that the order is rated as appropriate.
          • Other relevant information (ex. “procedureRequest.note“ containing the reason for exam)
      • Overrides for “emergency scenario” and free text response
  4. EMR executes the “update” action
  5. Provider accepts suggestion or overrides
  6. EMR notifies CDSM via analytics callback

Use Case 2b: Order Appropriate, Alternative Available

  1. Provider signs imaging order
  2. EMR triggers “sign-order” hook and invokes CDSM
    • Request context contains the proposed order
  3. CDSM responds with the following
    • Actions:
      • “update” action containing the resource for the proposed order with the following details:
        • CDS Session Id (via “procedureRequest-authorizationId” extension)
        • Appropriateness Rating (via “procedureRequest-appropriatenessRating” extension). The value will indicate that the order is rated as appropriate.
    • Suggestions:
      • Remove Order” with the following:
        • delete” action for the proposed order
      • Switch Order” with the following:
        • delete” action for the proposed order
        • create” action containing a resource for a new order with the following details:
          • CDS Session Id (via “procedureRequest-authorizationId” extension)
          • Appropriateness Rating (via “procedureRequest-appropriatenessRating” extension). The value will indicate that the order is rated as appropriate.
          • Other relevant information (ex. “procedureRequest.note“ containing the reason for exam)
      • Overrides for “emergency scenario” and free text response
  4. EMR executes the “update” action
  5. Provider accepts suggestion or overrides
  6. EMR notifies CDSM via analytics callback

Use Case 3: Order Cannot Be Rated, More Info Required From Provider

  1. Provider signs imaging order
  2. EMR triggers “sign-order” hook and invokes CDSM
    • Request context contains the proposed order
  3. CDSM responds with suggestion card containing:
    • launchApp” action
  4. EMR or provider launches CDSM app
  5. Provider is asked additional questions
  6. CDSM app presents a recommendation to the provider. Depending on the recommendation, provider may select one or more actions.
  7. CDSM app communicates provider decisions to EMR via CdsHooks.done([actions]) callback.

Use Case 4: Order Appropriate

  1. Provider signs imaging order
  2. EMR triggers “sign-order” hook and invokes CDSM
    • Request context contains the proposed order
  3. CDSM responds with card containing:
    • update” action containing the resource for the proposed order with the following details:
      • CDS Session Id (via “procedureRequest-authorizationId” extension)
      • Appropriateness Rating (via “procedureRequest-appropriatenessRating” extension). The value will indicate that the order is rated as appropriate.
  4. EMR executes the “update” action
  5. EMR notifies CDSM via analytics callback
Clone this wiki locally