Protocol & Schedule


Example

Docson Documentation for aRMT Protocols https://radar-base.github.io/RADAR-aRMT-protocols/


Note: calculated times are based on local time, 00:00 is midnight on the phone.


protocol.json File Documentation

The protocol schedule is used to control the delivery of 1) the schedule of questionnaires or aRMT components and 2) the notifications schedule. There is also interactive schema documentation.

elementpurpose
version
increment this if either the version of the protocol changes or if the questionnaires change
schemaVersionthe version of the AVRO schema being used to post to the backend and Kafka
healthIssuesthe class of health area the protocol applies to
"repository": "https://raw.githubusercontent.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/master/questionnaires/"the github repository holding the versions of the questionnaires
"startText": language variants for the start text
estimatedCompletionTimesuggested completion time shown for the aRMT
"protocol": {
        "repeatProtocol": {
          "unit": "day",
          "amount": 14
        },
        "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            540
          ]
        },
        "reminders": {
          "unit": "day",
          "amount": 4,
          "repeat": 1
        }
      }
    }
The protocol block is the most important part of the configuration, it controls the regimen. The block consists of 3 main components the  "repeatProtcol", "repeatQuestionnaire", "reminders"; and an optional clinicalProtocols component in this block.

e.g. repeat the repeatQuestionnaire regimen every 1 day

"repeatProtocol": {
"unit": "day",
"amount": 1
}


e.g. repeat the repeatQuestionnaire regimen every 14 days

"repeatProtocol": {
"unit": "day",
"amount": 14
}

The frequency at which to repeat the "repeatQuestionnaire" regimen is provided by 

repeatProtocol: 

unit: unit of time e.g. day

amount: how often to repeat the whole repeatQuestionnaire block

e.g. schedule the questionnaire after 480 mins from midnight

"repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            480
          ]
        }


e.g. set of offsets at these minutes past midnight of the set day:

 "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            480,
            540,
            600,
            660,
            720,
            780,
            840,
            900,
            960,
            1020,
            1080,
            1140,
            1200
          ]
        },


       

This is important as it controls the schedule of the particular questionnaire and subsequent push notifications 

i) schedule the questionnaire on the app and

ii) schedule the notifications 

offsets are in the given units and start from midnight of the protocol repeating i.e. repeatProtocol e.g. above would be every 14 days, and 480th minute from the start of that 14 day period. 

Arrays of offsets can provided for a repeating regimen for example with ESM is delivered at several time points withing the repeatProtocol period.

480,
540,
600,
660,
720,
780,
840,
900,
960,
1020,
1080,
1140,
1200 

It is set from the Enrolment Date on the Management Portal,

the given units are configurable.

repeatQuestionnaire:

unit: the unit of time e.g. minuite

unitsFromZero: set of offsets to repeat the questionnaire




"reminders": {
          "unit": "day",
          "amount": 4,
          "repeat": 1
        }

The numbers of reminder notifications to issue for that questionnaire

unit: of time the amount is measured in e.g day

amount:  the number of unit time over which "repeat" number of reminders are delivered

repeat:  the number of times to repeat the reminder 



"clinicalProtocol": {
                    "requiresInClinicCompletion": true,
                    "repeatAfterClinicVisit": {
                        "unit": "min",
                        "unitsFromZero": [
                            10080
                        ]
                    }
                }

This is a special case implemented for the Multiple Sclerosis walking and balance tests which require to be repeated 1 week after the initial test in the clinic. in clinic test is selected by clicking on the  icon in the app 

requiresInClinicCompletion: flag set by the clinician in the app

repeatAfterClinicVisit:

unit: e.g. min

unitsFromZero: the offset time after the in-clinic test

completionWindow

"completionWindow": {
          "unit": "min",
          "amount": 5
        }

The amount of time the questionnaire is available for completion after it's scheduled time. If this block is not specified in the protocol, then the default completion window in the app is 15 mins for ESM and 1 Day for all other tasks.

It is recommended to specify this block in the protocol.


unit: unit of time e.g. day

amount: The time for which the questionnaire is available for completion.







Example protocol.json File

{
  "version": "0.2.0",
  "schemaVersion": "0.0.2",
  "name": "RADAR MDD KCL s1",
  "healthIssues": [
    "depression"
  ],
  "protocols": [
    {
      "name": "THINC-IT",
      "showIntroduction": "false",
      "questionnaire": {
        "repository": "https://raw.githubusercontent.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/master/questionnaires/",
        "name": "thinc_it",
        "avsc": "notification"
      },
      "startText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "endText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "warn": {
        "en": "Requires a quiet space.",
        "it": "Richiede uno spazio tranquillo.",
        "nl": "Vereist een rustige ruimte.",
        "da": "Kræver et stille rum.",
        "de": "Benötigt einen ruhigen Platz.",
        "es": "Requiere un espacio tranquilo."
      },
      "estimatedCompletionTime": 1,
      "protocol": {
        "repeatProtocol": {
          "unit": "day",
          "amount": 42
        },
        "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            600
          ]
        },
        "reminders": {
          "unit": "day",
          "amount": 0,
          "repeat": 0
        }
      }
    },
    {
      "name": "PHQ8",
      "showIntroduction": "false",
      "questionnaire": {
        "repository": "https://raw.githubusercontent.com/RADAR-CNS/RADAR-REDCap-aRMT-Definitions/master/questionnaires/",
        "name": "phq8",
        "avsc": "questionnaire"
      },
      "startText": {
        "en": "This questionnaire is known as the PHQ8. Clinicians use it to assess current depression in patients. Please note that none of your answers will be collected today. Thank you for taking part in this focus group.",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "endText": {
        "en": "Thank you for taking the time today.",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "warn": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "estimatedCompletionTime": 3,
      "protocol": {
        "repeatProtocol": {
          "unit": "day",
          "amount": 14
        },
        "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            510
          ]
        },
        "reminders": {
          "unit": "day",
          "amount": 4,
          "repeat": 1
        },
        "completionWindow": {
          "unit": "day",
          "amount": 3
        }
      }
    }, {
      "name": "RSES",
      "showIntroduction": "false",
      "questionnaire": {
        "repository": "https://raw.githubusercontent.com/RADAR-CNS/RADAR-REDCap-aRMT-Definitions/master/questionnaires/",
        "name": "rses",
        "avsc": "questionnaire"
      },
      "startText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "endText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "warn": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "estimatedCompletionTime": 3,
      "protocol": {
        "repeatProtocol": {
          "unit": "day",
          "amount": 14
        },
        "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            540
          ]
        },
        "reminders": {
          "unit": "day",
          "amount": 4,
          "repeat": 1
        }
      }
    }, {
      "name": "ESM",
      "showIntroduction": "false",
      "questionnaire": {
        "repository": "https://raw.githubusercontent.com/RADAR-CNS/RADAR-REDCap-aRMT-Definitions/master/questionnaires/",
        "name": "esm",
        "avsc": "questionnaire"
      },
      "startText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "endText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "warn": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "estimatedCompletionTime": 3,
      "protocol": {
        "repeatProtocol": {
          "unit": "day",
          "amount": 42
        },
        "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            1890,
            1985,
            2073,
            2160,
            2253,
            2385,
            2440,
            2543,
            2612,
            3337,
            3456,
            3560,
            3602,
            3695,
            3780,
            3870,
            3968,
            4075,
            4784,
            4863,
            4950,
            5040,
            5130,
            5220,
            5310,
            5400,
            5490,
            6210,
            6300,
            6390,
            6480,
            6570,
            6660,
            6750,
            6840,
            6930,
            7650,
            7745,
            7862,
            7923,
            8055,
            8113,
            8199,
            8287,
            8376,
            9143,
            9183,
            9297,
            9374,
            9450,
            9544,
            9646,
            9732,
            9823
          ]
        },
        "reminders": {
          "unit": "day",
          "amount": 0,
          "repeat": 0
        }
      }
    },
    {
      "name": "DEMO",
      "showIntroduction": "true",
      "questionnaire": {
        "repository": "https://raw.githubusercontent.com/RADAR-CNS/RADAR-REDCap-aRMT-Definitions/master/questionnaires/",
        "name": "esm-demo",
        "avsc": "questionnaire"
      },
      "startText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "endText": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "warn": {
        "en": "",
        "it": "",
        "nl": "",
        "da": "",
        "de": "",
        "es": ""
      },
      "estimatedCompletionTime": 3,
      "protocol": {
        "repeatProtocol": {
          "unit": "day",
          "amount": 42
        },
        "repeatQuestionnaire": {
          "unit": "min",
          "unitsFromZero": [
            480
          ]
        },
        "reminders": {
          "unit": "day",
          "amount": 0,
          "repeat": 0
        }
      }
    }
  ]
}




Questionnaire Display Prioritisation

This depends on the order property in the protocol.

Nonclinical Tasks / Regular Questionnaires

This is mainly applicable for cases when the user has multiple pending tasks to complete at the time of opening the app.  On clicking on a aRMT notification, the ordering of the questions presented upon opening the app (and pressing the Start button) depends on two properties: task time and order, with order taking higher precedence. For example, if a user has a questionnaire at 9AM and a questionnaire at 10AM, then he opens the app at 10AM, he now has 2 questionnaires pending. The first questionnaire presented upon pressing the Start button would depend on which questionnaire has a the lower order number (higher priority). If the two questionnaires have the same order, the task times will then be compared.

Clinical Tasks

For clinical tasks, the order in which the tasks are displayed on the list (in the clinical tasks page) depends on the order property (lower order means higher position in the list).


*Regular tasks or nonclinical tasks are the tasks that have a specific start time and expiry, that can be filled out by tapping 'Start' on the home page or by tapping the task on the task calendar. Clinical tasks are tasks that can be filled out on demand by tapping the stethoscope icon on the home page.