-
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move features training into index file (#1642)
* Move features training into index file * Remove duplicated line * Move intro line * Remove alias
- Loading branch information
1 parent
9990b05
commit 3a60fe1
Showing
11 changed files
with
170 additions
and
170 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,141 +1,47 @@ | ||
--- | ||
title: "Training Cards" | ||
linkTitle: "Training Cards" | ||
weight: 15 | ||
weight: 2 | ||
description: > | ||
Deploy in-app training cards for remote training. | ||
Remotely train health workers | ||
keyword: training | ||
relatedContent: > | ||
building/features/training | ||
building/training/training-cards-resources/ | ||
building/training/training-cards-resources | ||
building/examples/training | ||
building/examples/learning-care/ | ||
aliases: | ||
- /building/guides/training/training-cards/ | ||
- /apps/guides/training/training-cards/ | ||
- /building/features/training/ | ||
- /apps/features/training/ | ||
--- | ||
_Introduced in 4.2.0_ | ||
|
||
[Training Cards]({{< relref "building/features/training" >}}) enable remote training from within the CHT by showing a sequence of "cards" containing content provided by App Developers. The content might include information about a newly deployed feature, changes to a [care guide]({{< relref "building/concepts/care-guides" >}}), or simply a reminder about an underused feature or workflow. Enketo forms are used to display the content, and App Developers can specify a start date, duration, and to which [user roles]({{< relref "building/reference/app-settings/user-roles" >}}) the cards should be shown. Like [app forms]({{< relref "building/reference/forms/app" >}}), forms used by training cards will automatically be downloaded to the user’s devices. | ||
|
||
{{% alert title="Note" %}} Example training forms are available [here]({{< relref "building/training/training-cards-resources" >}}) and provide a good starting point. {{% /alert %}} | ||
|
||
# Step 1: Create the training form | ||
|
||
Create an [XLS Form]({{< relref "building/reference/forms/app#xlsform" >}}). In the following example, the training form is called `my_new_feature`, it has some text in the `label::en` column, and some images in the column `media::images` to illustrate the feature. | ||
|
||
{{< figure src="step-1-xls-form.png" link="step-1-xls-form.png" class="left col-10" >}} | ||
|
||
<br clear="all"> | ||
|
||
# Step 2: Add the form’s ID | ||
|
||
Important, define the `form_id` located in the `settings` sheet with the prefix `training:` and add the form name, otherwise the training card won't display. In our example, the `form_id` should be `training:my_new_feature`. | ||
|
||
{{< figure src="step-2-xls-form-id.png" link="step-2-xls-form-id.png" class="left col-10" >}} | ||
|
||
<br clear="all"> | ||
|
||
# Step 3: Configure the training form | ||
|
||
Create a [properties file]({{< relref "building/tutorials/form-properties#3-define-the-forms-context" >}}) to define the starting date of the training, the number of days it will be active, and the user roles that can access the training. In our example, the file name is `my_new_feature.properties.json` and contains the following properties: | ||
|
||
``` | ||
{ | ||
"title": "", | ||
"context": { | ||
"start_date": "2023-07-13", | ||
"duration": 60, | ||
"user_roles": [ "nurse" ] | ||
} | ||
} | ||
``` | ||
|
||
In the example above, the training cards could be shown to any user with the "nurse" role between July 13, 2023 and September 11, 2023 (inclusive). See more information about these configuration settings below: | ||
| Property | Description | | ||
|---|----| | ||
| "title" | Optional. Enketo’s form title that is displayed under the modal’s header section. Leave this property empty if you don’t need to display a title. | | ||
| "start_date" | Optional. Define the training start day using `yyyy-mm-dd` format. If not defined then the training will start immediately. | | ||
| "duration" | Optional. Number of days this training should be active. If not defined then the training will never expire. | | ||
| "user_roles" | Optional. List of user roles that can access this training. If not defined then all users can access the training. | | ||
|
||
{{% alert title="Note" %}} Users with an admin role can access training cards but they need to have a contact associated in the `org.couchdb.user:[user-name]` document from CouchDB. {{% /alert %}} | ||
|
||
# Step 4: Add multimedia to the training form | ||
|
||
If your training form has images, create a folder with the same name as the form and add `-media` suffix. In our example, the form name is `my_new_feature`, then the folder name should be `my_new_feature-media`. | ||
|
||
Inside that new folder, make another one called images and put inside all the `images` that your form needs. See more about [multimedia in forms]({{< relref "building/guides/forms/multimedia" >}}). | ||
|
||
# Step 5: Put everything in the right place | ||
|
||
In your project configuration folder, place the XLS form, the properties file, and the media folder inside `/forms/training/`. The file structure should look like this: | ||
|
||
{{< figure src="step-5-file-structure.png" link="step-5-file-structure.png" class="left col-10" >}} | ||
|
||
<br clear="all"> | ||
|
||
# Step 6: Convert and upload the training form | ||
|
||
Open the terminal and use the latest version of the `cht` command line tool to convert and upload the training form: | ||
|
||
Convert the form by running this command: | ||
|
||
``` | ||
cht --url=[instance_url] convert-training-forms -- [form_name] | ||
``` | ||
|
||
Example: | ||
_Introduced in 4.2.0_ | ||
|
||
``` | ||
cht --url=http://admin-user:[email protected] convert-training-forms -- my_new_feature | ||
``` | ||
*Training Cards* help health workers learn about changes to CHT apps remotely, directly in their app. Training content might include information about a newly deployed feature, changes to a [care guide]({{< relref "building/concepts/care-guides" >}}), or simply a reminder about an underused feature or workflow. They are perfect for training on a very specific topic and are not meant to replace a comprehensive onboarding program. | ||
|
||
Upload the form by running this command: | ||
[Template training content]({{< relref "building/training/training-cards-resources" >}}) for new CHT features is made available from time to time. These templates can be customized to the local context. | ||
|
||
``` | ||
cht --url=[instance_url] upload-training-forms -- [form_name] | ||
``` | ||
{{< figure src="training-deck.png" link="training-deck.png" class="col-12 col-lg-10" >}} | ||
|
||
|
||
Example: | ||
``` | ||
cht --url=http://admin-user:[email protected] upload-training-forms -- my_new_feature | ||
``` | ||
## Accessing | ||
|
||
# Step 7: Verify and monitor | ||
When health workers open or reload their app, configured training cards will automatically show on top of all other content in the app. If it is not a convenient time to complete the training, they can cancel out at any time and will be prompted again the next day they open their app (training will start from the beginning). | ||
|
||
At this point the training cards are ready to use. You can verify by logging in with a user that has a valid role assigned for the training card, on the day that the training starts. Remember, to sync the app to see the results (the uncompleted training will display once a day). | ||
{{% alert title="Note" %}} If there are multiple training sets configured to start on the same day, the CHT will determine the order alphabetically based on the form ID. Subsequent training sets will only be displayed once the previous ones are either completed or no longer valid the next day the app is opened. {{% /alert %}} | ||
|
||
Using [telemetry]({{< relref "building/guides/performance/telemetry" >}}) you can monitor user interaction with each training card "set". Some key metrics you can view include: | ||
## Completing | ||
|
||
1. Number of times each user was presented with training cards | ||
2. The date(s) each user was presented with training cards | ||
3. Number of times each user completed a training card set* | ||
4. The min/max amount of time each user spent viewing the training cards | ||
5. The device_id of any device from which the user saw the training cards | ||
Health workers read through each card one by one in a predefined sequence, tapping “Next” on each card. When they are finished reading all cards, they tap “Submit” on the last card. The training set is now considered complete and they can continue using their app. Completed training sets show up on the [main list]({{< relref "building/features/reports/#main-list" >}}) of the Reports tab and they won’t be asked to complete this set again. If there are additional training sets to complete, they will be shown the next day the app is opened. | ||
|
||
_* Training Cards are designed to only be viewed once so this should normally only ever be 0 or 1. It is possible that a user deletes the training "report", in which case they would be presented with training cards again._ | ||
## Monitoring | ||
|
||
Example SQL: | ||
As mentioned above, completed training sets will show up on the [main list]({{< relref "building/features/reports/#main-list" >}}) of the Reports tab. These reports are available in [analytics]({{< relref "building/features/supervision/#supervisor-dashboards" >}}), [aggregate targets]({{< relref "building/features/supervision/#chw-aggregate-targets" >}}) , and can trigger supervision workflows and [tasks]({{< relref "building/features/supervision/#supervisor-tasks" >}}). | ||
|
||
``` | ||
SELECT | ||
doc#>>'{metadata,user}' AS cht_user, | ||
doc#>>'{metadata,deviceId}' AS device_id, | ||
concat(doc#>>'{metadata,year}', '-', doc#>>'{metadata,month}', '-',doc#>>'{metadata,day}')::date AS telemetry_date, | ||
COALESCE(doc#>>'{metrics,enketo:training:<my_new_feature>:add:render,count}','0')::int AS count_render_training, | ||
COALESCE(doc#>>'{metrics,enketo:training:<my_new_feature>:add:user_edit_time,count}','0')::int AS count_submit_training, | ||
COALESCE(doc#>>'{metrics,enketo:training:<my_new_feature>:add:user_edit_time,max}','0')::int/1000 AS max_seconds_on_form, | ||
COALESCE(doc#>>'{metrics,enketo:training:<my_new_feature>:add:user_edit_time,min}','0')::int/1000 AS min_seconds_on_form | ||
FROM | ||
couchdb_users_meta | ||
WHERE | ||
doc->>'type'='telemetry' | ||
AND doc#>'{metadata}' ? 'day' | ||
AND doc#>'{metrics}' ? 'enketo:training:<my_new_feature>:add:render' | ||
## Configurability | ||
Training cards can be shown to any user associated to a contact. A “set” of training cards represents a collection of individual training cards, generally covering a single training topic. The list below highlights some of the key areas of customization: | ||
|
||
ORDER BY | ||
telemetry_date DESC | ||
``` | ||
- Number of sets | ||
- Number of cards in a set | ||
- Content of each individual card (text, images, etc…) | ||
- When health workers will start seeing a set (specific start date) | ||
- How long the set will be available (# of days, relative to the start date) | ||
- Which users will see the set (based on user roles) |
Oops, something went wrong.