diff --git a/schema/omh/body-fat-percentage-2.0.json b/schema/omh/body-fat-percentage-2.0.json new file mode 100644 index 00000000..b1f98deb --- /dev/null +++ b/schema/omh/body-fat-percentage-2.0.json @@ -0,0 +1,40 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/openmhealth/schemas/omh/body-fat-percentage-2.0.json", + "description": "This schema represents a person's body fat percentage.", + "type": "object", + "references": [ + { + "description": "The LOINC code represents Body fat percentage:Mass Fraction:Point in time:^Patient:Quantitative:Measured", + "url": "http://purl.bioontology.org/ontology/LNC/41982-0" + } + ], + "definitions": { + "percent-unit_value": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/percent-unit-value-1.0.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_fat_percentage": { + "$ref": "#/definitions/percent-unit_value" + }, + "effective_time_frame": { + "$ref": "#/definitions/time_frame" + }, + "descriptive_statistic": { + "$ref": "#/definitions/descriptive_statistic" + } + }, + + "required": [ + "body_fat_percentage", + "effective_time_frame" + ] +} \ No newline at end of file diff --git a/schema/omh/body-fat-percentage-2.x.json b/schema/omh/body-fat-percentage-2.x.json new file mode 120000 index 00000000..310921a7 --- /dev/null +++ b/schema/omh/body-fat-percentage-2.x.json @@ -0,0 +1 @@ +body-fat-percentage-2.0.json \ No newline at end of file diff --git a/schema/omh/body-height-2.0.json b/schema/omh/body-height-2.0.json new file mode 100644 index 00000000..e740753f --- /dev/null +++ b/schema/omh/body-height-2.0.json @@ -0,0 +1,40 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/openmhealth/schemas/omh/body-height-2.0.json", + "description": "This schema represents a person's body height.", + "type": "object", + "references": [ + { + "description": "The SNOMED code represents Body height measure (observable entity)", + "url": "http://purl.bioontology.org/ontology/SNOMEDCT/50373000" + } + ], + "definitions": { + "length_unit_value": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/length-unit-value-1.0.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_height": { + "$ref": "#/definitions/length_unit_value" + }, + "effective_time_frame": { + "$ref": "#/definitions/time_frame" + }, + "descriptive_statistic": { + "$ref": "#/definitions/descriptive_statistic" + } + }, + + "required": [ + "body_height", + "effective_time_frame" + ] +} \ No newline at end of file diff --git a/schema/omh/body-height-2.x.json b/schema/omh/body-height-2.x.json new file mode 120000 index 00000000..58a1af07 --- /dev/null +++ b/schema/omh/body-height-2.x.json @@ -0,0 +1 @@ +body-height-2.0.json \ No newline at end of file diff --git a/schema/omh/body-location-1.1.json b/schema/omh/body-location-1.1.json new file mode 100644 index 00000000..60a5a08e --- /dev/null +++ b/schema/omh/body-location-1.1.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/openmhealth/schemas/omh/body-location-1.1.json", + "description": "A location on the body. This is an incomplete value set. Values from the Anatomical or acquired body structure hierarchy of SNOMED can be added as needed.", + "type": "string", + "references": [ + { + "description": "The SNOMED code represents Anatomical or acquired body structure (body structure)", + "url": "http://purl.bioontology.org/ontology/SNOMEDCT/442083009" + } + ], + + "enum": [ + "left ankle", + "right ankle", + "left hip", + "right hip", + "left thigh", + "right thigh", + "left thorax", + "middle left thorax", + "left upper arm", + "right upper arm", + "left wrist", + "right wrist" + ] +} \ No newline at end of file diff --git a/schema/omh/body-mass-index-3.0.json b/schema/omh/body-mass-index-3.0.json new file mode 100644 index 00000000..a3624c6e --- /dev/null +++ b/schema/omh/body-mass-index-3.0.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/openmhealth/schemas/omh/body-mass-index-3.0.json", + "description": "This schema represents a person's body mass index (BMI)", + "type": "object", + "references": [ + { + "description": "The SNOMED code represents Body mass index (observable entity)", + "url": "http://purl.bioontology.org/ontology/SNOMEDCT/60621009" + } + ], + "definitions": { + "unit_value": { + "$ref": "https://w3id.org/ieee/ieee-1752-schema/unit-value-1.0.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_mass_index": { + "allOf": [ + { + "$ref": "#/definitions/unit_value" + }, + { + "properties": { + "unit": { + "references": [ + { + "description": "The unit of measure the element. Allowed value is drawn from the Areic mass Units Common Synonyms (non-UCUM).", + "url": "http://download.hl7.de/documents/ucum/ucumdata.html" + } + ], + "enum": ["kg/m^2"] + } + } + } + ] + }, + "effective_time_frame": { + "$ref": "#/definitions/time_frame" + }, + "descriptive_statistic": { + "$ref": "#/definitions/descriptive_statistic" + } + }, + + "required": [ + "body_mass_index", + "effective_time_frame" + ] +} \ No newline at end of file diff --git a/schema/omh/body-mass-index-3.x.json b/schema/omh/body-mass-index-3.x.json new file mode 120000 index 00000000..670881ea --- /dev/null +++ b/schema/omh/body-mass-index-3.x.json @@ -0,0 +1 @@ +body-mass-index-3.0.json \ No newline at end of file diff --git a/test-data/omh/body-fat-percentage/2.0/shouldFail/empty-document.json b/test-data/omh/body-fat-percentage/2.0/shouldFail/empty-document.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-data/omh/body-fat-percentage/2.0/shouldFail/empty-document.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-data/omh/body-fat-percentage/2.0/shouldFail/invalid-unit.json b/test-data/omh/body-fat-percentage/2.0/shouldFail/invalid-unit.json new file mode 100644 index 00000000..d1c7fb30 --- /dev/null +++ b/test-data/omh/body-fat-percentage/2.0/shouldFail/invalid-unit.json @@ -0,0 +1,9 @@ +{ + "body_fat_percentage": { + "value": 16, + "unit": "kg" + }, + "effective_time_frame": { + "date_time": "2023-02-05T07:25:00Z" + } +} \ No newline at end of file diff --git a/test-data/omh/body-fat-percentage/2.0/shouldFail/missing-time-frame.json b/test-data/omh/body-fat-percentage/2.0/shouldFail/missing-time-frame.json new file mode 100644 index 00000000..eb45e678 --- /dev/null +++ b/test-data/omh/body-fat-percentage/2.0/shouldFail/missing-time-frame.json @@ -0,0 +1,6 @@ +{ + "body_fat_percentage": { + "value": 16, + "unit": "%" + } +} \ No newline at end of file diff --git a/test-data/omh/body-fat-percentage/2.0/shouldPass/body-fat-percentage-only.json b/test-data/omh/body-fat-percentage/2.0/shouldPass/body-fat-percentage-only.json new file mode 100644 index 00000000..60831b38 --- /dev/null +++ b/test-data/omh/body-fat-percentage/2.0/shouldPass/body-fat-percentage-only.json @@ -0,0 +1,9 @@ +{ + "body_fat_percentage": { + "value": 16, + "unit": "%" + }, + "effective_time_frame": { + "date_time": "2023-02-05T07:25:00-08:00" + } +} \ No newline at end of file diff --git a/test-data/omh/body-fat-percentage/2.0/shouldPass/with-statistic.json b/test-data/omh/body-fat-percentage/2.0/shouldPass/with-statistic.json new file mode 100644 index 00000000..d10f72c4 --- /dev/null +++ b/test-data/omh/body-fat-percentage/2.0/shouldPass/with-statistic.json @@ -0,0 +1,13 @@ +{ + "body_fat_percentage": { + "value": 16, + "unit": "%" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2023-01-01T00:00:00Z", + "end_date_time": "2023-12-31T23:59:59Z" + } + }, + "descriptive_statistic": "maximum" +} \ No newline at end of file diff --git a/test-data/omh/body-height/2.0/shouldFail/empty-document.json b/test-data/omh/body-height/2.0/shouldFail/empty-document.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-data/omh/body-height/2.0/shouldFail/empty-document.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-data/omh/body-height/2.0/shouldFail/missing-time-frame.json b/test-data/omh/body-height/2.0/shouldFail/missing-time-frame.json new file mode 100644 index 00000000..16404a47 --- /dev/null +++ b/test-data/omh/body-height/2.0/shouldFail/missing-time-frame.json @@ -0,0 +1,6 @@ +{ + "body_height": { + "value": 180, + "unit": "cm" + } +} \ No newline at end of file diff --git a/test-data/omh/body-height/2.0/shouldFail/with-part-of-day.json b/test-data/omh/body-height/2.0/shouldFail/with-part-of-day.json new file mode 100644 index 00000000..40a764eb --- /dev/null +++ b/test-data/omh/body-height/2.0/shouldFail/with-part-of-day.json @@ -0,0 +1,12 @@ +{ + "body_height": { + "value": 180, + "unit": "cm" + }, + "effective_time_frame": { + "time_interval": { + "date": "2023-02-05", + "part_of_day": "morning" + } + } +} \ No newline at end of file diff --git a/test-data/omh/body-height/2.0/shouldPass/body-height-only.json b/test-data/omh/body-height/2.0/shouldPass/body-height-only.json new file mode 100644 index 00000000..c58a235e --- /dev/null +++ b/test-data/omh/body-height/2.0/shouldPass/body-height-only.json @@ -0,0 +1,9 @@ +{ + "body_height": { + "value": 180, + "unit": "cm" + }, + "effective_time_frame": { + "date_time": "2023-02-05T07:25:00Z" + } +} \ No newline at end of file diff --git a/test-data/omh/body-height/2.0/shouldPass/with-descriptive-statistic.json b/test-data/omh/body-height/2.0/shouldPass/with-descriptive-statistic.json new file mode 100644 index 00000000..77da5825 --- /dev/null +++ b/test-data/omh/body-height/2.0/shouldPass/with-descriptive-statistic.json @@ -0,0 +1,13 @@ +{ + "body_height": { + "value": 180, + "unit": "cm" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2023-01-01T00:00:00Z", + "end_date_time": "2023-12-31T23:59:59Z" + } + }, + "descriptive_statistic": "maximum" +} \ No newline at end of file diff --git a/test-data/omh/body-mass-index/3.0/shouldFail/empty-document.json b/test-data/omh/body-mass-index/3.0/shouldFail/empty-document.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test-data/omh/body-mass-index/3.0/shouldFail/empty-document.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test-data/omh/body-mass-index/3.0/shouldFail/missing-time-frame.json b/test-data/omh/body-mass-index/3.0/shouldFail/missing-time-frame.json new file mode 100644 index 00000000..813f0fbb --- /dev/null +++ b/test-data/omh/body-mass-index/3.0/shouldFail/missing-time-frame.json @@ -0,0 +1,6 @@ +{ + "body_mass_index": { + "value": 16, + "unit": "kg/m^2" + } +} \ No newline at end of file diff --git a/test-data/omh/body-mass-index/3.0/shouldPass/valid-body-mass-index.json b/test-data/omh/body-mass-index/3.0/shouldPass/valid-body-mass-index.json new file mode 100644 index 00000000..f35920a0 --- /dev/null +++ b/test-data/omh/body-mass-index/3.0/shouldPass/valid-body-mass-index.json @@ -0,0 +1,9 @@ +{ + "body_mass_index": { + "value": 16, + "unit": "kg/m^2" + }, + "effective_time_frame": { + "date_time": "2024-01-01T00:00:00Z" + } +} \ No newline at end of file diff --git a/test-data/omh/body-mass-index/3.0/shouldPass/with-everything.json b/test-data/omh/body-mass-index/3.0/shouldPass/with-everything.json new file mode 100644 index 00000000..9751cc42 --- /dev/null +++ b/test-data/omh/body-mass-index/3.0/shouldPass/with-everything.json @@ -0,0 +1,13 @@ +{ + "body_mass_index": { + "value": 16, + "unit": "kg/m^2" + }, + "effective_time_frame": { + "time_interval": { + "start_date_time": "2023-01-01T00:00:00Z", + "end_date_time": "2023-12-31T23:59:59Z" + } + }, + "descriptive_statistic": "maximum" +} \ No newline at end of file