diff --git a/commons/active/notification/notification.avsc b/commons/active/notification/notification.avsc new file mode 100644 index 00000000..6d451e14 --- /dev/null +++ b/commons/active/notification/notification.avsc @@ -0,0 +1,24 @@ +{ + "namespace": "org.radarcns.active.notification", + "type": "record", + "name": "Notification", + "doc": "General schema for notifications. Check the specification folder to see how the notification has been defined. For each NotificationType there is a JSON file reporting the questions set and possible answers if available.", + "fields": [ + { "name": "time", "type": "double", "doc": "Timestamp in UTC (s) when the notification is submitted to the subject." }, + { "name": "timeCompleted", "type": "double", "doc": "Timestamp in UTC (s) when subject marks the notification as complete." }, + { "name": "name", "type": "string", "doc": "Notifications names." }, + { "name": "version", "type": "string", "doc": "It reports the notification version stated in the JSON specification." }, + { "name": "answers", "type": { + "type": "array", + "items": { + "name": "Answer", + "type": "record", + "doc": "Notification answer.", + "fields": [ + { "name": "value", "type": ["int", "string", "double"], "doc": "Subject answer." }, + { "name": "startTime", "type": "double", "doc": "Timestamp in UTC (s) when the notification is shown." }, + { "name": "endTime", "type": "double", "doc": "Timestamp in UTC (s) when the notification is answered." } + ] + }}, "doc": "Answers list. The answers order must follow the notification order."} + ] +} diff --git a/commons/active/opensmile/open_smile_2_audio_analysis.avsc b/commons/active/opensmile/open_smile_2_audio_analysis.avsc new file mode 100644 index 00000000..4f19f325 --- /dev/null +++ b/commons/active/opensmile/open_smile_2_audio_analysis.avsc @@ -0,0 +1,13 @@ +{ + "namespace": "org.radarcns.active.opensmile", + "type": "record", + "name": "OpenSmile2AudioAnalysis", + "doc": "Audio data collected by aRMT app and processed using openSMILE.", + "fields": [ + {"name": "time", "type": "double", "doc": "Device timestamp in UTC (s)."}, + { "name": "timeCompleted", "type": "double", "doc": "Timestamp in UTC (s) when subject completed the audio questionnaire." }, + {"name": "config", "type": "string", "doc": "Contents of an OpenSMILE configuration file." }, + {"name": "data", "type": ["null", "string"], "doc": "Audio features computed by openSMILE in plain text.", "default": null}, + { "name": "reciteText", "type": ["null", "string"], "doc": "Text that was supposed to be recited as part of the recording.", "default": null } + ] +} diff --git a/commons/active/opensmile/open_smile_2_audio_recording.avsc b/commons/active/opensmile/open_smile_2_audio_recording.avsc new file mode 100644 index 00000000..7ef37e5d --- /dev/null +++ b/commons/active/opensmile/open_smile_2_audio_recording.avsc @@ -0,0 +1,13 @@ +{ + "namespace": "org.radarcns.active.opensmile", + "name": "OpenSmile2AudioRecording", + "type": "record", + "doc": "Audio recording part of the RADAR aRMT app.", + "fields": [ + { "name": "time", "type": "double", "doc": "Device timestamp when the audio recording was started (s since the Unix Epoch)." }, + { "name": "timeCompleted", "type": "double", "doc": "Device timestamp when the audio recording was completed (s since the Unix Epoch)." }, + { "name": "mediaType", "type": "string", "doc": "Media type of the audio recording format. For example, audio/wav for a WAV recording. See https://www.iana.org/assignments/media-types/media-types.xhtml#audio for the list of standardized audio media types."}, + { "name": "data", "type": "string", "doc": "Base64 encoded contents of the recorded audio file." }, + { "name": "reciteText", "type": ["null", "string"], "doc": "Text that was supposed to be recited as part of the recording.", "default": null } + ] +} diff --git a/commons/active/task/task.avsc b/commons/active/task/task.avsc new file mode 100644 index 00000000..76151131 --- /dev/null +++ b/commons/active/task/task.avsc @@ -0,0 +1,24 @@ +{ + "namespace": "org.radarcns.active.task", + "type": "record", + "name": "Task", + "doc": "General schema for tasks. Check the specification folder to see how the task has been defined. For each TaskType there is a JSON file reporting the tasks set and possible answers if available.", + "fields": [ + { "name": "time", "type": "double", "doc": "Timestamp in UTC (s) when the task is submitted to the subject." }, + { "name": "timeCompleted", "type": "double", "doc": "Timestamp in UTC (s) when subject marks the task as complete." }, + { "name": "name", "type": "string", "doc": "Task names." }, + { "name": "version", "type": "string", "doc": "It reports the task version stated in the JSON specification." }, + { "name": "answers", "type": { + "type": "array", + "items": { + "name": "Answer", + "type": "record", + "doc": "Task answer.", + "fields": [ + { "name": "value", "type": ["int", "string", "double"], "doc": "Subject answer." }, + { "name": "startTime", "type": "double", "doc": "Timestamp in UTC (s) when the task is shown." }, + { "name": "endTime", "type": "double", "doc": "Timestamp in UTC (s) when the task is answered." } + ] + }}, "doc": "Answers list. The answers order must follow the task order."} + ] +} diff --git a/commons/catalogue/radar_widget.avsc b/commons/catalogue/radar_widget.avsc deleted file mode 100644 index a68ff6b6..00000000 --- a/commons/catalogue/radar_widget.avsc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "namespace": "org.radarcns.catalogue", - "type": "enum", - "name": "RadarWidget", - "doc": "User interface widget used in the Active Remote Monitor Technology to submit assessments to subjects.", - "symbols": [ - "RADIO" , - "SLIDER", - "NONE", - "RANGE" - ] -} diff --git a/commons/monitor/application/application_time_zone.avsc b/commons/monitor/application/application_time_zone.avsc new file mode 100644 index 00000000..022fe9ab --- /dev/null +++ b/commons/monitor/application/application_time_zone.avsc @@ -0,0 +1,10 @@ +{ + "namespace": "org.radarcns.monitor.application", + "name": "ApplicationTimeZone", + "type": "record", + "doc": "Local time zone that the device is running in.", + "fields": [ + { "name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, + { "name": "offset", "type": "int", "doc": "Offset from UTC (s)." } + ] +} diff --git a/commons/passive/emotion/emotion_faros_acceleration.avsc b/commons/passive/bittium/bittium_faros_acceleration.avsc similarity index 76% rename from commons/passive/emotion/emotion_faros_acceleration.avsc rename to commons/passive/bittium/bittium_faros_acceleration.avsc index cbea1f09..190dcf05 100644 --- a/commons/passive/emotion/emotion_faros_acceleration.avsc +++ b/commons/passive/bittium/bittium_faros_acceleration.avsc @@ -1,8 +1,8 @@ { - "namespace": "org.radarcns.passive.emotion", + "namespace": "org.radarcns.passive.bittium", "type": "record", - "name": "EmotionFarosAcceleration", - "doc": "Data from 3-axis accelerometer sensor of a eMotion Faros device.", + "name": "BittiumFarosAcceleration", + "doc": "Data from 3-axis accelerometer sensor of a Bittium Faros device.", "fields": [ { "name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." } , diff --git a/commons/passive/bittium/bittium_faros_battery_level.avsc b/commons/passive/bittium/bittium_faros_battery_level.avsc new file mode 100644 index 00000000..606ea042 --- /dev/null +++ b/commons/passive/bittium/bittium_faros_battery_level.avsc @@ -0,0 +1,12 @@ +{ + "namespace": "org.radarcns.passive.bittium", + "type": "record", + "name": "BittiumFarosBatteryLevel", + "doc": "Battery level of a Bittium Faros device.", + "fields": [ + { "name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, + { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, + { "name": "batteryLevel", "type": "float", "doc": "Battery level from 0 to 1. Note that the battery level is a rough estimate." }, + { "name": "exact", "type": "boolean", "doc": "Whether the batteryLevel can be taken as an exact value. True if the battery level is an exact representation, false if it is just an estimate based on the battery status (CRITICAL/LOW/MEDIUM/HIGH)." } + ] +} diff --git a/commons/passive/emotion/emotion_faros_ecg.avsc b/commons/passive/bittium/bittium_faros_ecg.avsc similarity index 85% rename from commons/passive/emotion/emotion_faros_ecg.avsc rename to commons/passive/bittium/bittium_faros_ecg.avsc index 23100a2e..6035195b 100644 --- a/commons/passive/emotion/emotion_faros_ecg.avsc +++ b/commons/passive/bittium/bittium_faros_ecg.avsc @@ -1,8 +1,8 @@ { - "namespace": "org.radarcns.passive.emotion", + "namespace": "org.radarcns.passive.bittium", "type": "record", - "name": "EmotionFarosEcg", - "doc": "Data from eMotion Faros' multi-channel electrocardiography electrodes. Not all Faros models possess the same number of channels, so the second and third channels are optional.", + "name": "BittiumFarosEcg", + "doc": "Data from Bittium Faros' multi-channel electrocardiography electrodes. Not all Faros models possess the same number of channels, so the second and third channels are optional.", "fields": [ { "name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." } , diff --git a/commons/passive/emotion/emotion_faros_inter_beat_interval.avsc b/commons/passive/bittium/bittium_faros_inter_beat_interval.avsc similarity index 73% rename from commons/passive/emotion/emotion_faros_inter_beat_interval.avsc rename to commons/passive/bittium/bittium_faros_inter_beat_interval.avsc index addbd4f1..752a5f01 100644 --- a/commons/passive/emotion/emotion_faros_inter_beat_interval.avsc +++ b/commons/passive/bittium/bittium_faros_inter_beat_interval.avsc @@ -1,8 +1,8 @@ { - "namespace": "org.radarcns.passive.emotion", + "namespace": "org.radarcns.passive.bittium", "type": "record", - "name": "EmotionFarosInterBeatInterval", - "doc": "Time between two successive R-peaks (RR-interval), as calculated by a eMotion Faros device from the ECG signal. You can compute the heart rate as (60 / ibi).", + "name": "BittiumFarosInterBeatInterval", + "doc": "Time between two successive R-peaks (RR-interval), as calculated by a Bittium Faros device from the ECG signal. You can compute the heart rate as (60 / ibi).", "fields": [ {"name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, {"name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, diff --git a/commons/passive/emotion/emotion_faros_temperature.avsc b/commons/passive/bittium/bittium_faros_temperature.avsc similarity index 74% rename from commons/passive/emotion/emotion_faros_temperature.avsc rename to commons/passive/bittium/bittium_faros_temperature.avsc index d81574cf..10ffa876 100644 --- a/commons/passive/emotion/emotion_faros_temperature.avsc +++ b/commons/passive/bittium/bittium_faros_temperature.avsc @@ -1,8 +1,8 @@ { - "namespace": "org.radarcns.passive.emotion", + "namespace": "org.radarcns.passive.bittium", "type": "record", - "name": "EmotionFarosTemperature", - "doc": "Data from an eMotion Faros' temperature sensor.", + "name": "BittiumFarosTemperature", + "doc": "Data from an Bittium Faros' temperature sensor.", "fields": [ {"name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, {"name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, diff --git a/commons/passive/emotion/emotion_faros_battery_level.avsc b/commons/passive/emotion/emotion_faros_battery_level.avsc deleted file mode 100644 index 1280946f..00000000 --- a/commons/passive/emotion/emotion_faros_battery_level.avsc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "namespace": "org.radarcns.passive.emotion", - "type": "record", - "name": "EmotionFarosBatteryLevel", - "doc": "Battery level of a eMotion Faros device.", - "fields": [ - { "name": "time", "type": "double", "doc": "Device timestamp in UTC (s)." }, - { "name": "timeReceived", "type": "double", "doc": "Device receiver timestamp in UTC (s)." }, - { "name": "batteryLevel", "type": "float", "doc": "Battery level from 0 to 1. Note that the battery level is a rough estimate." } - ] -} diff --git a/java-sdk/README.md b/java-sdk/README.md index 525278f7..e451063a 100644 --- a/java-sdk/README.md +++ b/java-sdk/README.md @@ -9,13 +9,13 @@ repositories { dependencies { // Commons schemas (backend, passive remote monitoring app) - compile 'org.radarcns:radar-schemas-commons:0.3.1' + compile 'org.radarcns:radar-schemas-commons:0.3.2' // REST API schemas (REST API, testing) - compile 'org.radarcns:radar-schemas-restapi:0.3.1' + compile 'org.radarcns:radar-schemas-restapi:0.3.2' // Questionnaire schemas (active remote monitoring app) - compile 'org.radarcns:radar-schemas-tools:0.3.1' + compile 'org.radarcns:radar-schemas-tools:0.3.2' } ``` Usually, you only need to include the schemas you actually need in your dependencies. diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index 777812ae..a837dc4a 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -17,7 +17,7 @@ subprojects { apply plugin: 'idea' // Configuration - version = '0.3.1' + version = '0.3.2' group = 'org.radarcns' ext.githubRepoName = 'RADAR-CNS/RADAR-Schemas' diff --git a/java-sdk/radar-schemas-commons/src/main/java/org/radarcns/stream/TimeWindowMetadata.java b/java-sdk/radar-schemas-commons/src/main/java/org/radarcns/stream/TimeWindowMetadata.java index 985bdcb1..b9f32977 100644 --- a/java-sdk/radar-schemas-commons/src/main/java/org/radarcns/stream/TimeWindowMetadata.java +++ b/java-sdk/radar-schemas-commons/src/main/java/org/radarcns/stream/TimeWindowMetadata.java @@ -1,8 +1,7 @@ package org.radarcns.stream; -import org.radarcns.catalogue.TimeWindow; - import java.util.concurrent.TimeUnit; +import org.radarcns.catalogue.TimeWindow; /** TimeWindow labels and window time period. */ public enum TimeWindowMetadata { @@ -34,4 +33,28 @@ public long getIntervalInMilliSec() { public String getTopicLabel(String topic) { return topic + label; } + + /** + * Get the timewindow metadata for given TimeWindow. + * @param timeWindow time window to look up + * @return metadata or {@code null} if given TimeWindow is unknown. + */ + public static TimeWindowMetadata getMetadata(TimeWindow timeWindow) { + switch (timeWindow) { + case TEN_SECOND: + return TEN_SECOND; + case ONE_MIN: + return ONE_MIN; + case TEN_MIN: + return TEN_MIN; + case ONE_HOUR: + return ONE_HOUR; + case ONE_DAY: + return ONE_DAY; + case ONE_WEEK: + return ONE_WEEK; + default: + return null; + } + } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/SourceCatalogue.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/SourceCatalogue.java index 36d9d576..8a21aa6f 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/SourceCatalogue.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/SourceCatalogue.java @@ -121,11 +121,14 @@ private static Map initSources(ObjectReader reader, Path root, Sc return Files.walk(baseFolder) .filter(Files::isRegularFile) .map(f -> { + String filename = f.getFileName().toString(); + int extensionIndex = filename.lastIndexOf('.'); + if (extensionIndex != -1) { + filename = filename.substring(0, extensionIndex); + } try { return new AbstractMap.SimpleImmutableEntry<>( - f.getFileName().toString() - .split("\\.")[0] - .toUpperCase(Locale.ENGLISH), + filename.toUpperCase(Locale.ENGLISH), reader.readValue(f.toFile())); } catch (IOException ex) { logger.error("Failed to load configuration {}", f, ex); diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/Question.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/Question.java deleted file mode 100644 index b3eb3add..00000000 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/Question.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2017 King's College London and The Hyve - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.radarcns.schema.specification.active.questionnaire; - -import com.fasterxml.jackson.annotation.JsonProperty; -import org.radarcns.catalogue.RadarWidget; - -import javax.validation.constraints.NotBlank; -import java.util.List; - -/** - * TODO. - */ -public class Question { - - @JsonProperty @NotBlank - private String lead; - - @JsonProperty @NotBlank - private String content; - - @JsonProperty - private RadarWidget widget; - - @JsonProperty - private List responses; - - public String getLead() { - return lead; - } - - public String getContent() { - return content; - } - - public RadarWidget getWidget() { - return widget; - } - - public List getResponses() { - return responses; - } -} diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/QuestionnaireDataTopic.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/QuestionnaireDataTopic.java index 79a0a8c0..b4748e2c 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/QuestionnaireDataTopic.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/QuestionnaireDataTopic.java @@ -17,11 +17,9 @@ package org.radarcns.schema.specification.active.questionnaire; import com.fasterxml.jackson.annotation.JsonProperty; -import org.radarcns.schema.specification.DataTopic; - -import javax.validation.constraints.NotEmpty; -import java.util.List; +import java.net.URL; import java.util.Map; +import org.radarcns.schema.specification.DataTopic; /** * TODO. @@ -31,18 +29,16 @@ public enum RadarSourceTypes { ARMT } - @JsonProperty @NotEmpty - private List questions; + @JsonProperty + private URL questionnaireDefinitionUrl; - public List getQuestions() { - return questions; + public URL getQuestionnaireDefinitionUrl() { + return questionnaireDefinitionUrl; } @Override - protected void propertiesMap(Map properties, boolean reduced) { - super.propertiesMap(properties, reduced); - if (!reduced) { - properties.put("questions", questions); - } + protected void propertiesMap(Map props, boolean reduced) { + super.propertiesMap(props, reduced); + props.put("questionnaireDefinitionUrl", questionnaireDefinitionUrl); } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/Response.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/Response.java deleted file mode 100644 index bbe234d6..00000000 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/questionnaire/Response.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.radarcns.schema.specification.active.questionnaire; - -/* - * Copyright 2017 King's College London and The Hyve - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import com.fasterxml.jackson.annotation.JsonProperty; - -import javax.validation.constraints.NotBlank; - -/** - * TODO. - */ -public class Response { - @JsonProperty @NotBlank - private String text; - - @JsonProperty - private Object value; - - public String getText() { - return text; - } - - public Object getValue() { - return value; - } -} diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionRoles.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionRoles.java deleted file mode 100644 index ac7c9d52..00000000 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionRoles.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.radarcns.schema.validation.rules; - -/* - * Copyright 2017 King's College London and The Hyve - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.radarcns.schema.specification.active.questionnaire.Question; - -import java.util.stream.Stream; - -import static org.radarcns.schema.validation.rules.Validator.check; -import static org.radarcns.schema.validation.rules.Validator.validateNonEmpty; -import static org.radarcns.schema.validation.rules.Validator.validateNonNull; - -/** - * TODO. - */ -public final class QuestionRoles { - private QuestionRoles() { - // utility class - } - - /** - * TODO. - * @return TODO - */ - static Validator validateContent() { - return validateNonEmpty(Question::getContent, - "Question \"content\" property is empty.", - content -> Stream.concat( - check(content.charAt(content.length() - 1) == '.', - "Question content should be terminated with a period."), - check(Character.isUpperCase(content.charAt(0)), - "Question content should start with an uppercase character."))); - } - - /** - * TODO. - * @return TODO - */ - static Validator validateLead() { - return validateNonEmpty(Question::getLead, "Question \"lead\" is empty.", - lead -> Stream.concat( - check(lead.charAt(lead.length() - 1) == '?', - "Question lead should be ended by a question mark: " + lead), - check(Character.isUpperCase(lead.charAt(0)), - "Question lead should start with an uppercase character."))); - } - - /** - * TODO. - * @return TODO - */ - static Validator validateWidget() { - return validateNonNull(Question::getWidget, "Widget cannot be null."); - } - - /** - * TODO. - * @return TODO - */ - static Validator validateResponses() { - return validateNonEmpty(Question::getResponses, - "Responses list cannot be null or empty."); - } -} diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionnaireRoles.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionnaireRoles.java index d36ee6c7..dbdb9c30 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionnaireRoles.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/QuestionnaireRoles.java @@ -16,21 +16,17 @@ package org.radarcns.schema.validation.rules; -import org.radarcns.schema.specification.active.questionnaire.QuestionnaireDataTopic; - -import java.nio.file.Path; - import static org.radarcns.schema.specification.SourceCatalogue.YAML_EXTENSION; import static org.radarcns.schema.validation.ValidationSupport.equalsFileName; -import static org.radarcns.schema.validation.rules.Validator.validateNonEmpty; import static org.radarcns.schema.validation.rules.Validator.validateNonNull; +import java.nio.file.Path; +import org.radarcns.schema.specification.active.questionnaire.QuestionnaireDataTopic; + /** * TODO. */ public final class QuestionnaireRoles { - - private static final String QUESTIONS = "Questions list cannot null or empty."; private static final String QUESTIONNAIRE_TYPE = "Questionnaire Type cannot be null" + " and should match with the configuration file name."; @@ -47,12 +43,4 @@ static Validator validateQuestionnaireType(Path file) { equalsFileName(file, YAML_EXTENSION), QUESTIONNAIRE_TYPE); } - - /** - * TODO. - * @return TODO - */ - static Validator validateQuestions() { - return validateNonEmpty(QuestionnaireDataTopic::getQuestions, QUESTIONS); - } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/ResponseRoles.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/ResponseRoles.java deleted file mode 100644 index 88fe1990..00000000 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/validation/rules/ResponseRoles.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2017 King's College London and The Hyve - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.radarcns.schema.validation.rules; - -import org.radarcns.schema.specification.active.questionnaire.Response; - -import static org.radarcns.schema.validation.rules.Validator.validateNonNull; - -/** - * TODO. - */ -public final class ResponseRoles { - private static final String SCORE = "Answer score cannot be null."; - private static final String TEXT = "Answer text cannot be null."; - - private ResponseRoles() { - // utility class - } - - /** - * TODO. - * @return TODO - */ - static Validator validateScore() { - return validateNonNull(Response::getValue, SCORE); - } - - /** - * TODO. - * @return TODO - */ - static Validator validateText() { - return validateNonNull(Response::getText, TEXT); - } -} diff --git a/specifications/active/aRMT-1.0.0.yml b/specifications/active/aRMT-1.0.0.yml index bacf8203..dbe946cd 100644 --- a/specifications/active/aRMT-1.0.0.yml +++ b/specifications/active/aRMT-1.0.0.yml @@ -9,1072 +9,9 @@ data: - type: PHQ8 topic: questionnaire_phq8 value_schema: .active.questionnaire.Questionnaire - questions: - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Little interest or pleasure in doing things. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Feeling down, depressed, or hopeless. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Trouble falling or staying asleep, or sleeping too much. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Feeling tired or having little energy. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Poor appetite or overeating. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Feeling bad about yourself, or that you are a failure, or have let yourself or your family down. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Trouble concentrating on things, such as reading the newspaper or watching television. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Moving or speaking so slowly that other people could have noticed. Or the opposite – being so fidgety or restless that you have been moving around a lot more than usual. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - type: ESM topic: questionnaire_esm value_schema: .active.questionnaire.Questionnaire - questions: - - lead: Null - content: I slept well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now I feel cheerful - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel down - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel anxious - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel relaxed - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel irritated - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel stressed - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel content - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel insecure - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel hopeful - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel lonely - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am satisfied with myself - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel self-confident - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Globally, I feel well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am brooding - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am able to concentrate well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: What am I doing (just before the beep)? - widget: RADIO - responses: - - text: nothing - value: 0 - - text: resting - value: 1 - - text: eating/drinking - value: 2 - - text: passive leisure - value: 3 - - text: active leisure - value: 4 - - text: travel - value: 5 - - text: household/groceries - value: 6 - - text: work/study - value: 7 - - text: self-care - value: 8 - - text: interaction/conversation - value: 9 - - text: mobile phone/social media - value: 10 - - text: something else - value: 11 - - lead: Null - content: I can do this well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I would rather do something else - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: This activity requires effort - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physically, I am active - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physcially, I am tired - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physically, I am in pain - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physically, I do not feel well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Where am I? - widget: RADIO - responses: - - text: at home - value: 0 - - text: at family or friends place - value: 1 - - text: at work or school - value: 2 - - text: transport - value: 3 - - text: healthcare - value: 4 - - text: somewhere else indoors - value: 5 - - text: somewhere else outdoors - value: 6 - - lead: Null - content: Who am I with? - widget: RADIO - responses: - - text: Alone - value: 0 - - text: Partner - value: 1 - - text: Residents - value: 2 - - text: Family non-residents - value: 3 - - text: Friends - value: 4 - - text: Classmates/colleagues - value: 5 - - text: Caregiver - value: 6 - - text: Strangers/others - value: 7 - - lead: Null - content: How many people am I with? - widget: RADIO - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3-10 - value: 3 - - text: 4 - value: over 10 - - lead: Null - content: We are doing something together - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I find the people I am with pleasant - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I would prefer to be alone - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel connected to the people I am with - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel fine being alone - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I would prefer to be with others - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Being alone right now is my choice - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel left out - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am virtually interacting - widget: RADIO - responses: - - text: No - value: 0 - - text: Yes - value: 1 - - lead: Null - content: I find virtual interaction pleasant - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Most people would find my current situation stressful - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Think of the most important event that happened since the last beep. This event was - widget: RANGE - responses: - - text: -3 Very unpleasant - value: -3 - - text: -2 - value: -2 - - text: -1 - value: -1 - - text: 0 - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 Very pleasant - - lead: Null - content: This event was - widget: RANGE - responses: - - text: -3 Unimportant - value: -3 - - text: -2 - value: -2 - - text: -1 - value: -1 - - text: 0 - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 Important - - lead: Null - content: Since the last beep I had/taken - widget: RADIO - responses: - - text: Food - value: 0 - - text: Caffeine - value: 1 - - text: Nicotine - value: 2 - - text: Alcohol - value: 3 - - text: Medication - value: 4 - - text: Substances - value: 5 - - text: Nothing - value: 6 - - lead: Null - content: This beep disturbed me - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Filling out the questionnaire has influence my mood today - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - type: RSES topic: questionnaire_rses value_schema: .active.questionnaire.Questionnaire - questions: - - lead: Null - content: 1. On the whole, I am satisfied with myself - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 2. At times, I think I am no good at all - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 3. I feel that I have a number of good qualities - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 4. I am able to do things as well as most other people - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 5. I feel I do not have much to be proud of - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 6. I certainly feel useless at times - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 7. I feel that I'm a person of worth, at least on an equal plane with others - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 8. I wish I could have more respect for myself - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 9. All in all, I am inclined to feel that I am a failure - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 10. I take a positive attitude towards myself - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 diff --git a/specifications/active/aRMT-1.1.0.yml b/specifications/active/aRMT-1.1.0.yml new file mode 100644 index 00000000..7b974aa3 --- /dev/null +++ b/specifications/active/aRMT-1.1.0.yml @@ -0,0 +1,39 @@ +#==================== Personal Health Questionnaire Depression Scale (PHQ-8) ======================# +name: aRMT +vendor: RADAR +model: aRMT-App +version: 1.1.0 +assessment_type: QUESTIONNAIRE +doc: aRMT Questionnaires definition. Includes Personal Health Questionnaire Depression Scale (PHQ-8), Experience sampling method (ESM) and RSES. +data: + - type: THINC-IT + topic: notification_thinc_it + value_schema: .active.notification.Notification + questionnaire_definition_url: https://github.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/blob/master/questionnaires/thinc_it/thinc_it_armt.json + - type: ROMBERG_TEST + topic: task_romberg_test + value_schema: .active.task.Task + questionnaire_definition_url: https://github.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/blob/master/questionnaires/romberg_test/romberg_test_armt.json + - type: 2MW_TEST + topic: task_2MW_test + value_schema: .active.task.Task + questionnaire_definition_url: https://github.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/blob/master/questionnaires/2MW_test/2MW_test_armt.json + - type: TANDEM_WALKING_TEST + topic: task_tandem_walking_test + value_schema: .active.task.Task + questionnaire_definition_url: https://github.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/blob/master/questionnaires/tandem_walking_test/tandem_walking_test_armt.json + - type: PHQ8 + topic: questionnaire_phq8 + value_schema: .active.questionnaire.Questionnaire + questionnaire_definition_url: https://raw.githubusercontent.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/master/questionnaires/phq8/phq8_armt.json + - type: ESM + topic: questionnaire_esm + value_schema: .active.questionnaire.Questionnaire + questionnaire_definition_url: https://raw.githubusercontent.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/master/questionnaires/esm/esm_armt.json + - type: AUDIO + topic: questionnaire_audio + value_schema: .active.opensmile.OpenSmile2AudioRecording + - type: RSES + topic: questionnaire_rses + value_schema: .active.questionnaire.Questionnaire + questionnaire_definition_url: https://raw.githubusercontent.com/RADAR-base/RADAR-REDCap-aRMT-Definitions/master/questionnaires/rses/rses_armt.json diff --git a/specifications/active/aRMT-v1.yml b/specifications/active/aRMT-v1.yml index a2c6fa7c..f62eb184 100644 --- a/specifications/active/aRMT-v1.yml +++ b/specifications/active/aRMT-v1.yml @@ -9,1092 +9,9 @@ data: - type: PHQ8 topic: questionnaire_phq8 value_schema: .active.questionnaire.Questionnaire - questions: - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Little interest or pleasure in doing things. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Feeling down, depressed, or hopeless. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Trouble falling or staying asleep, or sleeping too much. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Feeling tired or having little energy. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Poor appetite or overeating. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Feeling bad about yourself, or that you are a failure, or have let yourself or your family down. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Trouble concentrating on things, such as reading the newspaper or watching television. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - lead: Over the past two weeks, how often have you been bothered by any of the following problems? - content: Moving or speaking so slowly that other people could have noticed. Or the opposite – being so fidgety or restless that you have been moving around a lot more than usual. - widget: RADIO - responses: - - text: Not at all - value: 0 - - text: Several days - value: 1 - - text: More than half the days - value: 2 - - text: Nearly every day - value: 3 - - type: ESM topic: questionnaire_esm value_schema: .active.questionnaire.Questionnaire - questions: - - lead: Null - content: I slept well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now I feel cheerful - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel down - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel anxious - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel relaxed - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel irritated - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel stressed - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel content - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel insecure - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel hopeful - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Right now, I feel lonely - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am satisfied with myself - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel restless - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel self-confident - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Globally, I feel well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am brooding - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am able to concentrate well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: What am I doing (just before the beep)? - widget: RADIO - responses: - - text: nothing - value: 0 - - text: resting - value: 1 - - text: eating/drinking - value: 2 - - text: passive leisure - value: 3 - - text: active leisure - value: 4 - - text: travel - value: 5 - - text: household/groceries - value: 6 - - text: work/study - value: 7 - - text: self-care - value: 8 - - text: interaction/conversation - value: 9 - - text: mobile phone/social media - value: 10 - - text: something else - value: 11 - - lead: Null - content: I can do this well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I would rather do something else - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: This activity requires effort - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physically, I am active - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physcially, I am tired - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physically, I am in pain - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Physically, I do not feel well - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Where am I? - widget: RADIO - responses: - - text: at home - value: 0 - - text: at family or friends place - value: 1 - - text: at work or school - value: 2 - - text: transport - value: 3 - - text: healthcare - value: 4 - - text: somewhere else indoors - value: 5 - - text: somewhere else outdoors - value: 6 - - lead: Null - content: Who am I with? - widget: RADIO - responses: - - text: Alone - value: 0 - - text: Partner - value: 1 - - text: Residents - value: 2 - - text: Family non-residents - value: 3 - - text: Friends - value: 4 - - text: Classmates/colleagues - value: 5 - - text: Caregiver - value: 6 - - text: Strangers/others - value: 7 - - lead: Null - content: How many people am I with? - widget: RADIO - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3-10 - value: 3 - - text: 4 - value: over 10 - - lead: Null - content: We are doing something together - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I find the people I am with pleasant - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I would prefer to be alone - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel connected to the people I am with - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel fine being alone - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I would prefer to be with others - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Being alone right now is my choice - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I feel left out - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: I am virtually interacting - widget: RADIO - responses: - - text: No - value: 0 - - text: Yes - value: 1 - - lead: Null - content: I find virtual interaction pleasant - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Most people would find my current situation stressful - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Think of the most important event that happened since the last beep. This event was - widget: RANGE - responses: - - text: -3 Very unpleasant - value: -3 - - text: -2 - value: -2 - - text: -1 - value: -1 - - text: 0 - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 Very pleasant - - lead: Null - content: This event was - widget: RANGE - responses: - - text: -3 Unimportant - value: -3 - - text: -2 - value: -2 - - text: -1 - value: -1 - - text: 0 - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 Important - - lead: Null - content: Since the last beep I had/taken - widget: RADIO - responses: - - text: Food - value: 0 - - text: Caffeine - value: 1 - - text: Nicotine - value: 2 - - text: Alcohol - value: 3 - - text: Medication - value: 4 - - text: Substances - value: 5 - - text: Nothing - value: 6 - - lead: Null - content: This beep disturbed me - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - lead: Null - content: Filling out the questionnaire has influence my mood today - widget: RANGE - responses: - - text: 0 Not at all - value: 0 - - text: 1 - value: 1 - - text: 2 - value: 2 - - text: 3 - value: 3 - - text: 4 - value: 4 - - text: 5 - value: 5 - - text: 6 - value: 6 - - text: 7 very much - value: 7 - - type: RSES topic: questionnaire_rses value_schema: .active.questionnaire.Questionnaire - questions: - - lead: Null - content: 1. On the whole, I am satisfied with myself - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 2. At times, I think I am no good at all - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 3. I feel that I have a number of good qualities - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 4. I am able to do things as well as most other people - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 5. I feel I do not have much to be proud of - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 6. I certainly feel useless at times - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 7. I feel that I'm a person of worth, at least on an equal plane with others - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 8. I wish I could have more respect for myself - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 9. All in all, I am inclined to feel that I am a failure - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 - - lead: Null - content: 10. I take a positive attitude towards myself - widget: RADIO - responses: - - text: Strongly disagree - value: 0 - - text: Disagree - value: 1 - - text: Agree - value: 2 - - text: Strongly agree - value: 3 diff --git a/specifications/monitor/radar_prmt-1.0.0.yml b/specifications/monitor/radar_prmt-1.0.0.yml index 8c37130f..63ac54cf 100644 --- a/specifications/monitor/radar_prmt-1.0.0.yml +++ b/specifications/monitor/radar_prmt-1.0.0.yml @@ -35,3 +35,11 @@ data: unit: SECOND topic: application_uptime value_schema: .monitor.application.ApplicationUptime + - type: TIMEZONE + doc: Local time zone that the device is running in. + sample_rate: + interval: 86400 + configurable: true + unit: SECOND + topic: application_time_zone + value_schema: .monitor.application.ApplicationTimeZone diff --git a/specifications/passive/android_phone-1.0.0.yml b/specifications/passive/android_phone-1.0.0.yml index f5226e5d..ba58d54d 100644 --- a/specifications/passive/android_phone-1.0.0.yml +++ b/specifications/passive/android_phone-1.0.0.yml @@ -150,3 +150,13 @@ data: value_schema: .passive.phone.PhoneUserInteraction sample_rate: dynamic: true + # Weather + - type: WEATHER + app_provider: .weather.WeatherApiProvider + unit: NON_DIMENSIONAL + processing_state: RAW + topic: android_local_weather + value_schema: .passive.weather.LocalWeather + sample_rate: + interval: 10800 + configurable: true diff --git a/specifications/passive/bittium_faros-1.0.0.yml b/specifications/passive/bittium_faros-1.0.0.yml new file mode 100644 index 00000000..4938cd70 --- /dev/null +++ b/specifications/passive/bittium_faros-1.0.0.yml @@ -0,0 +1,41 @@ +#====================================== Faros 90/180/360 device =====================================# +vendor: Bittium +model: Faros +version: 1.0.0 +app_provider: .bittium.FarosServiceProvider +data: + - type: ACCELEROMETER + sample_rate: + dynamic: true + unit: G + processing_state: RAW + topic: android_bittium_faros_acceleration + value_schema: .passive.bittium.BittiumFarosAcceleration + - type: BATTERY + sample_rate: + dynamic: true + unit: PERCENTAGE + processing_state: RAW + topic: android_bittium_faros_battery_level + value_schema: .passive.bittium.BittiumFarosBatteryLevel + - type: ECG + sample_rate: + dynamic: true + unit: MICRO_VOLT + processing_state: RAW + topic: android_bittium_faros_ecg + value_schema: .passive.bittium.BittiumFarosEcg + - type: INTER_BEAT_INTERVAL + sample_rate: + dynamic: true + unit: SECOND + processing_state: VENDOR + topic: android_bittium_faros_inter_beat_interval + value_schema: .passive.bittium.BittiumFarosInterBeatInterval + - type: THERMOMETER + sample_rate: + dynamic: true + unit: CELSIUS + processing_state: VENDOR + topic: android_bittium_faros_acceleration + value_schema: .passive.bittium.BittiumFarosTemperature diff --git a/specifications/passive/emotion_faros-1.0.0.yml b/specifications/passive/emotion_faros-1.0.0.yml deleted file mode 100644 index 038ef489..00000000 --- a/specifications/passive/emotion_faros-1.0.0.yml +++ /dev/null @@ -1,41 +0,0 @@ -#====================================== Empatica E4 Wristband =====================================# -vendor: eMotion -model: Faros -version: 1.0.0 -app_provider: .emotion.FarosServiceProvider -data: - - type: ACCELEROMETER - sample_rate: - dynamic: true - unit: G - processing_state: RAW - topic: android_emotion_faros_acceleration - value_schema: .passive.emotion.EmotionFarosAcceleration - - type: BATTERY - sample_rate: - dynamic: true - unit: PERCENTAGE - processing_state: RAW - topic: android_emotion_faros_battery_level - value_schema: .passive.empatica.EmpaticaE4BatteryLevel - - type: ECG - sample_rate: - dynamic: true - unit: MICRO_VOLT - processing_state: RAW - topic: android_emotion_faros_ecg - value_schema: .passive.emotion.EmotionFarosEcg - - type: INTER_BEAT_INTERVAL - sample_rate: - dynamic: true - unit: SECOND - processing_state: VENDOR - topic: android_emotion_faros_inter_beat_interval - value_schema: .passive.emotion.EmotionFarosInterBeatInterval - - type: THERMOMETER - sample_rate: - dynamic: true - unit: CELSIUS - processing_state: VENDOR - topic: android_emotion_faros_acceleration - value_schema: .passive.emotion.EmotionFarosTemperature diff --git a/specifications/stream/statistics.yml b/specifications/stream/statistics.yml index a6bcdf26..680749be 100644 --- a/specifications/stream/statistics.yml +++ b/specifications/stream/statistics.yml @@ -6,7 +6,7 @@ data: - android_empatica_e4_blood_volume_pulse_1min value_schema: .stream.SourceStatistics doc: Statistics about E4 devices. - - topic: source_statistics_radar_prmt + - topic: source_statistics_android_phone input_topics: - android_phone_acceleration_1min - android_phone_bluetooth_devices