How the Decision Support System fits together
There are two sets of linked tables that support Mirah’s decision support functionality.
The first is the setup instructions:
Entity Decision Algorithm supplies the configuration for what decision support is going to trigger, including what dates and the population of patients it applies to, and other settings.
Workflow is a specific action that an algorithm can trigger. For example, ‘if the patient endorses a self harm item…”.
Workflow Action is a specific action, either taken by the system or instructing the provider. For example:
“Add the patient to a given treatment track” (system)
“Complete a safety planning exercise for the patient” (instruction to provider)
These combine as follows:
Configure an algorithm to run on all patients currently in outpatient treatment… (Entity Decision Algorithm).
Which triggers a workflow whenever a patient endorses a self harm item…(Workflow).
That prompts them to do a safety plan (Workflow Action).
Whenever the triggering event occurs, an additional set of tables include information about what steps have happened for that particular patient:
Triggered Decision Algorithm links to Entity Decision Algorithm and a particular Episode of Care to show that this episode of care has been triggered by the algorithm.
Triggered Workflow shows that a particular workflow has been triggered for this patient, and is linked to the Triggered Decision Algorithm.
Triggered Workflow Action shows the actions that are available for this patient.
Triggered Workflow Action Log shows which actions were actually taken by the system or by a provider.
Provider Notification shows the inbox notifications and emails sent to a provider.
Entity Decision Algorithm
The Entity Decision Algorithm represents at a top level a Decision Support algorithm that is in use.
Column | Name | Format | Nullable | Description | Notes |
id | ID | uuid | false | The Mirah internal identifier of the algorithm | |
name | Name | string | false | The visible name of the algorithm | |
notes | Notes | string | true | Additional notes displayed as context for the algorithm | |
params | Params | json | true | Additional configuration params | This is Mirah internal and is not well documented for external use but is provided as context |
sendNotifications | Send Notifications? | boolean | false | Whether notifications will be sent for this algorithm | Providers will receive alerts in their inbox either way but this governs if emails will be sent |
startDate | Start Date | datetime | true | The first date for which this algorithm will process data | |
status | Status | Active | paused | hidden | disabled | false | Is this algorithm active | Paused = algorithm will not trigger but existing alerts will be visible Hidden = algorithm triggers but alerts will not be generated Disabled = algorithm will not be triggered and alerts are hidden |
workflowNote | Workflow Note | string | false | Additional information surfaced to the provider when the workflow triggers | This can be used to customize instructions etc |
Workflow
A set of potential decisions and actions that can be triggered by an event. Generally only one workflow is active per algorithm per episode of care at a time. The highest priority algorithm will take precedence.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
callToAction | Call To Action | string | false | The top description of the workflow designed to spur action | E.g. “Patient has reported self harm” |
defaultPriority | Default Priority | integer | false | The priority of this workflow | |
description | Description | string | true | An optional description of this workflow | |
emailBody | Email Body | string | false | The body of the email that is constructed when the workflow triggers | |
emailSubject | Email Subject | string | false | The subject of the email that is constructed when the workflow triggers | |
instructions | Instructions | markdown | true | The set of instructions that will be displayed to users when this workflow triggers | |
notificationMode | Notification Mode | Send_email | no_email | false | Whether emails will be sent | |
title | Title | string | false | The name of the workflow | |
createdAt | Created At | datetime | false | ||
updatedAt | Updated At | Datetime | false |
Workflow Action
An action that can be taken as part of a workflow, either by the system or as a prompt for a provider. For example - ‘add a patient to a treatment track’, or ‘complete safety planning with a patient’.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
phase | Phase | Manual | before | after | false | When this action occurs | Manual: this action can only be triggered by a user. Before: this action will automatically trigger when the workflow starts After: this action will automatically trigger when the workflow completes |
reusable | Reusable | boolean | false | Whether this action can be used multiple times | |
sideEffectParams | Side Effects | json | true | This is an internal column which includes state on how to trigger parameters | |
text | Text | string | false | The text to display for this action | |
createdAt | Created At | datetime | false | ||
updatedAt | Updated At | Datetime | false | ||
workflowId | Workflow Id | uuid | false | The workflow this action is associated with |
Triggered Decision Algorithm
This table represents the triggering of an algorithm for a particular patient’s episode of care.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
context | Context | json | true | An internal blob of information containing useful additional context on how the algorithm was triggered | |
status | Status | Active | complete | canceled | false | The status of this algorithm | |
triggeredAt | Triggered At | datetime | false | When the algorithm was triggered | |
careEpisodeId | Care Episode Id | uuid | false | The episode of care this algorithm has been triggered for | |
entityDecisionAlgorithmId | Entity Decision Algorithm Id | uuid | false | The algorithm triggered |
Triggered Workflow
An active workflow for an episode of care.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
activeSince | Active Since | datetime | false | When this workflow became active | |
isCurrentlyTriggered | Currently Triggered | boolean | false | Is this workflow currently active | |
priority | Priority | integer | false | The priority of this workflow | Only one workflow can be active for the same algorithm at the same time |
reasons | Reasons | string | true | A text based summary of why this workflow was triggered | E.g. “The patient scored a 14 on the PHQ-9 which is above the threshold of 7” |
snoozedUntil | Snoozed Until | datetime | true | This item is snoozed until this time | |
status | Status | Active | snoozed | complete | canceled | false | The status of this item | |
triggeredAt | Triggered At | datetime | false | When this item was triggered | |
statusUpdatedById | Status Updated By Id | uuid | true | The user id who updated the status last | |
triggeredDecisionAlgorithmId | Triggered Decision Algorithm Id | uuid | false | The reference to Triggered Algorithm Decision | |
workflowId | Workflow Id | uuid | false | The reference to Workflow |
Triggered Workflow Action
An action for a particular Triggered Workflow that may be taken.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
status | Status | Available | used | false | The status of the action | Available: this action can be taken Used: this action has already been taken |
createdAt | Created At | Datetime | false | ||
updatedAt | Updated At | Datetime | false | ||
triggeredWorkflowId | Triggered Workflow Id | uuid | false | Which Triggered Workflow this refers to | |
workflowActionId | Workflow Action Id | uuid | false | Which Workflow Action this refers to |
Triggered Workflow Action Log
A log of the actions taken for a workflow.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
triggeredWorkflowActionId | Triggered Workflow Action Id | uuid | false | The Triggered Workflow Action used | |
userId | User Id | uuid | false | The user taking the action | |
usedAt | Used At | Datetime | false | When the action was taken |
Provider Notification
A notification sent to an individual provider regarding a triggered workflow.
Column | Name | Format | Nullable | Description | Notes |
id | Id | uuid | false | The Mirah identifier | |
sentAt | Sent At | datetime | true | If a notification was sent, when it was emailed | |
createdAt | Created At | datetime | false | ||
updatedAt | Updated At | datetime | false | ||
providerId | ProviderId | uuid | false | The provider receiving the notification | |
triggeredWorkflowId | Triggered Workflow Id | uuid | false | The triggered workflow requiring notification |