-
Notifications
You must be signed in to change notification settings - Fork 61
Decision Proposal
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:
- User Decision Fulfillment
- System Only notifications
- Overrides
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.
Diagram below describes the solution:
- After EMR notification, CDS Service responds with a link card.
- EMR launches the CDS App in a container and with SMART Web Messaging enabled. The app can call
SMART.messaging.send()
using a message type offhir.update
,fhir.create
, orfhir.delete
to modify the orders in progress (either with individual calls per-action, or with a transaction bundle to ensure that multiple actions are performed as a block). - Once CDS App completes the interaction with the user, it calls
SMART.messaging.send()
again with a message type ofui.done
to return control to the EHR. - EMR does whatever is necessary internally to fulfill those actions.
- 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 launch the app in a container with SMART Web Messaging enabled.
“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"
}
}
]
}
]
}
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.
Allow CDS Service to return actions as a top level response. If actions are returned, the EMR should execute them without notifying the provider. Note that this solution uses the same approach as the one above (array of actions
to be executed by the EMR), just in a different context:
- After EMR notification, CDS Service responds with
actions
array. - EMR executes those actions without notifying the user.
- 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.
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"
}
]
}
}
]
}
Actions can also be returned concurrently with suggestion cards. Expanding on the example above, if a CDS Service wants to rate a currently proposed order as inappropriate AND propose two suggestions to the user (“switch order” and “remove order”), it would respond with the action to update the order + suggestion cards.
The EMR would execute the action immediately (thereby marking the currently proposed order as inappropriate) and present the suggestion 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 suggestions, the proposed order would go away.
{
"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"
}
}
]
}
]
}
]
}
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.
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:
- After EMR notification, CDS Service responds with a card that contains an
override
object. - EMR presents the card to the user with both actions and overrides. Note that there may be multiple overrides + free text comment.
- User selects an override reason.
- EMR notifies CDS service via analytics endpoint that an override reason was given by the user or POSTs back free text comment.
"card": {
"override": {
"freeTextAllowed": true,
"reasons": [
{"label": "Wrong / disagree", "uuid": "cebfbce4-41d1-11e8-842f-0ed5f89f718b"}
{"label": "Not applicable", "uuid": "d797b0b0-41d1-11e8-842f-0ed5f89f718b"}
]
},
suggestions: [...]
}
CDS Hooks extensions proposed above can be leveraged to implement a comprehensive 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 the proposed order with CDS Session Id, Appropriateness Score, and other details (ex. reason for exam)
# | Description | Action(s) | Requires user interaction |
---|---|---|---|
1 | CDSM can rate the proposed order based on available data and determines that the order is inappropriate. No alternatives are available. |
|
Yes |
2a | CDSM can rate the proposed order based on available data and determines that the order is inappropriate. CDSM can also recommend a valid alternative. |
|
Yes |
2b | CDSM can rate the proposed order based on available data and determines that the order is appropriate. CDSM can also recommend a valid alternative. |
|
Yes |
3 | CDSM cannot rate the proposed order based on available data. More information is needed from the provider before the order can be rated. | Launch App | Yes |
4 | CDSM can rate proposed order based on available data and determines that order is appropriate. No alternatives exist. | Update order (rated as appropriate) | No |
- Provider signs imaging order
- EMR triggers “sign-order” hook and invokes CDSM
- Request context contains the proposed order
- 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.
-
CDS Session Id (via
-
“update” action containing the resource for the proposed order with the following details:
- Suggestions
-
“Remove Order” with the following:
- “delete” action for the proposed order
- Overrides for “emergency scenario” and free text response
-
“Remove Order” with the following:
- Actions
- Provider accepts suggestion or overrides
- EMR notifies CDSM via analytics callback
- Provider signs imaging order
- EMR triggers “sign-order” hook and invokes CDSM
- Request context contains the proposed order
- 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.
-
CDS Session Id (via
-
“update” action containing the resource for the proposed order with the following details:
- 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)
-
CDS Session Id (via “
- Overrides for “emergency scenario” and free text response
- “Remove Order” with the following:
- Actions:
- EMR executes the “update” action
- Provider accepts suggestion or overrides
- EMR notifies CDSM via analytics callback
- Provider signs imaging order
- EMR triggers “sign-order” hook and invokes CDSM
- Request context contains the proposed order
- 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.
-
CDS Session Id (via
-
“update” action containing the resource for the proposed order with the following details:
- Suggestions:
- “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)
-
CDS Session Id (via “
- Overrides for “emergency scenario” and free text response
- “Switch Order” with the following:
- Actions:
- EMR executes the “update” action
- Provider accepts suggestion or overrides
- EMR notifies CDSM via analytics callback
- Provider signs imaging order
- EMR triggers “sign-order” hook and invokes CDSM
- Request context contains the proposed order
- CDSM responds with suggestion card containing:
- “launch-app” action
- EMR or provider launches CDSM app
- Provider is asked additional questions
- CDSM app presents a recommendation to the provider. Depending on the recommendation, provider may select one or more actions.
- CDSM app communicates provider decisions to EMR via
SMART.messaging.send()
, using a message type offhir.update
,fhir.create
, orfhir.delete
. - EMR notifies CDSM via analytics callback.
- Provider signs imaging order.
- EMR triggers “sign-order” hook and invokes CDSM
- Request context contains the proposed order
- 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.
-
CDS Session Id (via “
- “update” action containing the resource for the proposed order with the following details:
- EMR executes the “update” action.
- EMR notifies CDSM via analytics callback.