From f9442aea57b7d308ce1eeec64032caf065d31f10 Mon Sep 17 00:00:00 2001 From: Simona Carini Date: Wed, 31 Jan 2024 12:00:53 -0800 Subject: [PATCH] Schemas body temperature and body weight updated to add $id and reference IEEE schemas where relevant, sample data added --- schema/omh/body-location-1.x.json | 2 +- schema/omh/body-temperature-4.0.json | 64 +++++++++++++++++++ schema/omh/body-temperature-4.x.json | 1 + schema/omh/body-weight-3.0.json | 41 ++++++++++++ schema/omh/body-weight-3.x.json | 1 + schema/omh/temperature-unit-value-1.0.json | 5 ++ .../4.0/shouldFail/empty-document.json | 1 + .../4.0/shouldFail/invalid-unit.json | 9 +++ .../missing-effective-time-frame.json | 6 ++ .../4.0/shouldPass/basal-temperature.json | 10 +++ .../valid-temperature-with-statistic.json | 14 ++++ .../4.0/shouldPass/valid-temperature.json | 10 +++ .../3.0/shouldFail/empty-document.json | 1 + .../invalid-descriptive-statistic.json | 13 ++++ .../3.0/shouldFail/invalid-time-frame.json | 10 +++ .../3.0/shouldFail/invalid-time-interval.json | 12 ++++ .../3.0/shouldFail/invalid-unit.json | 9 +++ .../shouldFail/missing-body-weight-unit.json | 8 +++ .../shouldFail/missing-body-weight-value.json | 8 +++ .../3.0/shouldPass/body-weight-only.json | 9 +++ .../with-descriptive-statistic.json | 13 ++++ 21 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 schema/omh/body-temperature-4.0.json create mode 120000 schema/omh/body-temperature-4.x.json create mode 100644 schema/omh/body-weight-3.0.json create mode 120000 schema/omh/body-weight-3.x.json create mode 100644 test-data/omh/body-temperature/4.0/shouldFail/empty-document.json create mode 100644 test-data/omh/body-temperature/4.0/shouldFail/invalid-unit.json create mode 100644 test-data/omh/body-temperature/4.0/shouldFail/missing-effective-time-frame.json create mode 100644 test-data/omh/body-temperature/4.0/shouldPass/basal-temperature.json create mode 100644 test-data/omh/body-temperature/4.0/shouldPass/valid-temperature-with-statistic.json create mode 100644 test-data/omh/body-temperature/4.0/shouldPass/valid-temperature.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/empty-document.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/invalid-descriptive-statistic.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/invalid-time-frame.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/invalid-time-interval.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/invalid-unit.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-unit.json create mode 100644 test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-value.json create mode 100644 test-data/omh/body-weight/3.0/shouldPass/body-weight-only.json create mode 100644 test-data/omh/body-weight/3.0/shouldPass/with-descriptive-statistic.json diff --git a/schema/omh/body-location-1.x.json b/schema/omh/body-location-1.x.json index 6e965753..887ed0b8 120000 --- a/schema/omh/body-location-1.x.json +++ b/schema/omh/body-location-1.x.json @@ -1 +1 @@ -body-location-1.0.json \ No newline at end of file +body-location-1.1.json \ No newline at end of file diff --git a/schema/omh/body-temperature-4.0.json b/schema/omh/body-temperature-4.0.json new file mode 100644 index 00000000..3331eb22 --- /dev/null +++ b/schema/omh/body-temperature-4.0.json @@ -0,0 +1,64 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/openmhealth/schemas/omh/body-temperature-4.0.json", + "description": "This schema represents a person's body temperature.", + "type": "object", + "references": [ + { + "description": "The SNOMED code represents body temperature (observable entity)", + "url": "http://purl.bioontology.org/ontology/SNOMEDCT/386725007" + } + ], + + "definitions": { + "temperature_unit_value": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/temperature-unit-value-1.0.json" + }, + "time_frame": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/time-frame-1.0.json" + }, + "temporal_relationship_to_sleep": { + "$ref": "temporal-relationship-to-sleep-1.x.json" + }, + "descriptive_statistic": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/descriptive-statistic-1.0.json" + } + }, + + "properties": { + "body_temperature": { + "$ref": "#/definitions/temperature_unit_value" + }, + "effective_time_frame": { + "$ref": "#/definitions/time_frame" + }, + "descriptive_statistic": { + "$ref": "#/definitions/descriptive_statistic" + }, + "measurement_location": { + "description": "The value set is taken from SNOMED CT and LOINC. For common temperature locations, the adjective is used rather than the actual location name (e.g., axillary rather than armpit). Forehead indicates the use of a disposable strip.", + "type": "string", + "enum": [ + "axillary", + "finger", + "forehead", + "oral", + "rectal", + "temporal artery", + "toe", + "tympanic", + "wrist", + "vagina" + ] + }, + + "temporal_relationship_to_sleep": { + "description": "The temporal relationship to sleep of the temperature measurement(s). The lowest body temperature attained during rest, usually estimated by a temperature measurement immediately on waking up and before any physical activity has been undertaken is called basal temperature.", + "$ref": "#/definitions/temporal_relationship_to_sleep" + } + }, + "required": [ + "body_temperature", + "effective_time_frame" + ] +} \ No newline at end of file diff --git a/schema/omh/body-temperature-4.x.json b/schema/omh/body-temperature-4.x.json new file mode 120000 index 00000000..b9e3fbd2 --- /dev/null +++ b/schema/omh/body-temperature-4.x.json @@ -0,0 +1 @@ +body-temperature-4.0.json \ No newline at end of file diff --git a/schema/omh/body-weight-3.0.json b/schema/omh/body-weight-3.0.json new file mode 100644 index 00000000..de0f942a --- /dev/null +++ b/schema/omh/body-weight-3.0.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/openmhealth/schemas/omh/body-weight-2.0.json", + "description": "This schema represents a person's body weight.", + + "type": "object", + "references": [ + { + "description": "The SNOMED code represents Body weight measure (observable entity)", + "url": "http://purl.bioontology.org/ontology/SNOMEDCT/363808001" + } + ], + "definitions": { + "mass_unit_value": { + "$ref": "mass-unit-value-1.x.json" + }, + "time_frame": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/time-frame-1.0.json" + }, + "descriptive_statistic": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/descriptive-statistic-1.0.json" + } + }, + + "properties": { + "body_weight": { + "$ref": "#/definitions/mass_unit_value" + }, + "effective_time_frame": { + "$ref": "#/definitions/time_frame" + }, + "descriptive_statistic": { + "$ref": "#/definitions/descriptive_statistic" + } + }, + + "required": [ + "body_weight", + "effective_time_frame" + ] +} \ No newline at end of file diff --git a/schema/omh/body-weight-3.x.json b/schema/omh/body-weight-3.x.json new file mode 120000 index 00000000..7de0b0ff --- /dev/null +++ b/schema/omh/body-weight-3.x.json @@ -0,0 +1 @@ +body-weight-3.0.json \ No newline at end of file diff --git a/schema/omh/temperature-unit-value-1.0.json b/schema/omh/temperature-unit-value-1.0.json index 13333c15..74d90617 100644 --- a/schema/omh/temperature-unit-value-1.0.json +++ b/schema/omh/temperature-unit-value-1.0.json @@ -1,5 +1,10 @@ { "$schema": "http://json-schema.org/draft-04/schema#", + "deprecation": { + "reason": "This schema is now deprecated, in favor of the IEEE 1752.1 schema of the same name.", + "supersededBy": "https://w3id.org/ieee/ieee-1752-schema/temperature-unit-value.json", + "date": "2024-01-31" + }, "type": "object", "description": "This schema represents a temperature (intensity of heat)", "references": [ diff --git a/test-data/omh/body-temperature/4.0/shouldFail/empty-document.json b/test-data/omh/body-temperature/4.0/shouldFail/empty-document.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-data/omh/body-temperature/4.0/shouldFail/empty-document.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-data/omh/body-temperature/4.0/shouldFail/invalid-unit.json b/test-data/omh/body-temperature/4.0/shouldFail/invalid-unit.json new file mode 100644 index 00000000..2bbe6ad9 --- /dev/null +++ b/test-data/omh/body-temperature/4.0/shouldFail/invalid-unit.json @@ -0,0 +1,9 @@ +{ + "body_temperature": { + "value": 36, + "unit": "G" + }, + "effective_time_frame": { + "date_time": "2013-02-05T07:25:00Z" + } +} \ No newline at end of file diff --git a/test-data/omh/body-temperature/4.0/shouldFail/missing-effective-time-frame.json b/test-data/omh/body-temperature/4.0/shouldFail/missing-effective-time-frame.json new file mode 100644 index 00000000..4fb3237e --- /dev/null +++ b/test-data/omh/body-temperature/4.0/shouldFail/missing-effective-time-frame.json @@ -0,0 +1,6 @@ +{ + "body_temperature": { + "value": 36, + "unit": "C" + } +} \ No newline at end of file diff --git a/test-data/omh/body-temperature/4.0/shouldPass/basal-temperature.json b/test-data/omh/body-temperature/4.0/shouldPass/basal-temperature.json new file mode 100644 index 00000000..417d61a9 --- /dev/null +++ b/test-data/omh/body-temperature/4.0/shouldPass/basal-temperature.json @@ -0,0 +1,10 @@ +{ + "body_temperature": { + "value": 96.5, + "unit": "F" + }, + "effective_time_frame": { + "date_time": "2023-02-05T06:25:00Z" + }, + "temporal_relationship_to_sleep": "on waking" +} \ No newline at end of file diff --git a/test-data/omh/body-temperature/4.0/shouldPass/valid-temperature-with-statistic.json b/test-data/omh/body-temperature/4.0/shouldPass/valid-temperature-with-statistic.json new file mode 100644 index 00000000..f63886b2 --- /dev/null +++ b/test-data/omh/body-temperature/4.0/shouldPass/valid-temperature-with-statistic.json @@ -0,0 +1,14 @@ +{ + "body_temperature": { + "value": 96.5, + "unit": "F" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2023-02-05T06:00:00-08:00", + "end_date_time": "2020-03-06T06:00:00-08:00" + } + }, + "measurement_location": "oral", + "descriptive_statistic": "maximum" +} \ No newline at end of file diff --git a/test-data/omh/body-temperature/4.0/shouldPass/valid-temperature.json b/test-data/omh/body-temperature/4.0/shouldPass/valid-temperature.json new file mode 100644 index 00000000..54065675 --- /dev/null +++ b/test-data/omh/body-temperature/4.0/shouldPass/valid-temperature.json @@ -0,0 +1,10 @@ +{ + "body_temperature": { + "value": 97, + "unit": "F" + }, + "effective_time_frame": { + "date_time": "2023-02-05T07:25:00+01:00" + }, + "measurement_location": "forehead" +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/empty-document.json b/test-data/omh/body-weight/3.0/shouldFail/empty-document.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/empty-document.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/invalid-descriptive-statistic.json b/test-data/omh/body-weight/3.0/shouldFail/invalid-descriptive-statistic.json new file mode 100644 index 00000000..07630468 --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/invalid-descriptive-statistic.json @@ -0,0 +1,13 @@ +{ + "body_weight": { + "value": 115.5, + "unit": "lb" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2013-02-05T07:25:00Z", + "end_date_time": "2013-06-05T07:25:00Z" + } + }, + "descriptive_statistic": "minmum" +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/invalid-time-frame.json b/test-data/omh/body-weight/3.0/shouldFail/invalid-time-frame.json new file mode 100644 index 00000000..0fbc6a7d --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/invalid-time-frame.json @@ -0,0 +1,10 @@ +{ + "body_weight": { + "value": 50, + "unit": "kg" + }, + "effective_time_frame": { + "start_date_time": "2013-02-05T07:25:00Z" + }, + "descriptive_statistic": "minimum" +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/invalid-time-interval.json b/test-data/omh/body-weight/3.0/shouldFail/invalid-time-interval.json new file mode 100644 index 00000000..43d255c2 --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/invalid-time-interval.json @@ -0,0 +1,12 @@ +{ + "body_weight": { + "value": 50, + "unit": "kg" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2013-02-05T07:25:00Z" + } + }, + "descriptive_statistic": "minimum" +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/invalid-unit.json b/test-data/omh/body-weight/3.0/shouldFail/invalid-unit.json new file mode 100644 index 00000000..d2c6b5a5 --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/invalid-unit.json @@ -0,0 +1,9 @@ +{ + "body_weight": { + "value": 50, + "unit": "km" + }, + "effective_time_frame": { + "date_time": "2020-02-05T09:25:00-08:00" + } +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-unit.json b/test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-unit.json new file mode 100644 index 00000000..b92e94e4 --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-unit.json @@ -0,0 +1,8 @@ +{ + "body_weight": { + "value": 50 + }, + "effective_time_frame": { + "date_time": "2020-02-05T09:25:00-08:00" + } +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-value.json b/test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-value.json new file mode 100644 index 00000000..dc766f7e --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldFail/missing-body-weight-value.json @@ -0,0 +1,8 @@ +{ + "body_weight": { + "unit": "kg" + }, + "effective_time_frame": { + "date_time": "2020-02-05T09:25:00-08:00" + } +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldPass/body-weight-only.json b/test-data/omh/body-weight/3.0/shouldPass/body-weight-only.json new file mode 100644 index 00000000..195b0e39 --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldPass/body-weight-only.json @@ -0,0 +1,9 @@ +{ + "body_weight": { + "value": 50, + "unit": "kg" + }, + "effective_time_frame": { + "date_time": "2020-02-05T09:45:00-08:00" + } +} \ No newline at end of file diff --git a/test-data/omh/body-weight/3.0/shouldPass/with-descriptive-statistic.json b/test-data/omh/body-weight/3.0/shouldPass/with-descriptive-statistic.json new file mode 100644 index 00000000..d4fcd21f --- /dev/null +++ b/test-data/omh/body-weight/3.0/shouldPass/with-descriptive-statistic.json @@ -0,0 +1,13 @@ +{ + "body_weight": { + "value": 49.5, + "unit": "kg" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2020-02-05T09:45:00-08:00", + "end_date_time": "2020-03-05T10:40:00-08:00" + } + }, + "descriptive_statistic": "minimum" +} \ No newline at end of file