Skip to content

Commit

Permalink
add mapehr.json
Browse files Browse the repository at this point in the history
  • Loading branch information
borutjures committed Aug 28, 2024
1 parent 904f6a7 commit f5846aa
Show file tree
Hide file tree
Showing 16 changed files with 980 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/api/json/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -3131,6 +3131,12 @@
"fileMatch": ["*.lsdl.yaml", "*.lsdl.json"],
"url": "https://json.schemastore.org/lsdlschema.json"
},
{
"name": "MapEHR Mapping",
"description": "Mapping for MapEHR.com",
"fileMatch": [".map.yml", ".map.yaml", ".map.json"],
"url": "https://json.schemastore.org/mapehr.json"
},
{
"name": "A micro editor config",
"description": "A micro editor config",
Expand Down
312 changes: 312 additions & 0 deletions src/schemas/json/mapehr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,312 @@
{
"$id": "https://json.schemastore.org/mapehr.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"$comment": "https://mapehr.com",
"title": "MapEHR Mapping",
"description": "Mapping for MapEHR.com v0.1.0",
"type": "object",
"properties": {
"define": {
"$ref": "#/definitions/define",
"description": "Define keys used in the rules. Example: weight: http://loinc.org/29463-7"
},
"vars": {
"$ref": "#/definitions/vars",
"description": "Define variables used in the rules. Example: default_bmi: randomNormalDistribution((27.6863+25.4960)/2, sqrt(18.65))"
},
"rules": {
"$ref": "#/definitions/rules",
"description": "Rules for LOINC codes, archetypes, templates."
}
},
"additionalProperties": false,
"definitions": {
"rules": {
"description": "Rules for a LOINC codes, archetypes, templates.",
"type": "object",
"patternProperties": {
"^.+$": {
"$ref": "#/definitions/rule",
"$comment": "Rules for a LOINC codes, archetypes, templates.",
"description": "Rules for a LOINC codes, archetypes, templates."
}
},
"additionalProperties": false
},
"rule": {
"type": "object",
"patternProperties": {
"^.+$": {
"$ref": "#/definitions/rule_code",
"description": "Rule for a LOINC code, archetype, template."
}
},
"additionalProperties": false
},
"rule_code": {
"type": "object",
"properties": {
"set": {
"type": "array",
"items": {
"$ref": "#/definitions/set"
},
"title": "Set values of elements."
},
"define": {
"$ref": "#/definitions/define",
"description": "Define keys used in the rules. Example: weight: http://loinc.org/29463-7"
},
"vars": {
"$ref": "#/definitions/vars",
"description": "Define variables used in the rules. Example: default_bmi: randomNormalDistribution((27.6863+25.4960)/2, sqrt(18.65))"
},
"choices": {
"$ref": "#/definitions/choices",
"description": "Define a list of choices from which a random item will be used."
}
},
"additionalProperties": false,
"required": [
"set"
]
},
"set": {
"type": "object",
"properties": {
"attribute": {
"type": "string",
"description": "Used to specify an RM attribute."
},
"path": {
"type": "string",
"description": "Used to specify an ADL path."
},
"element": {
"$ref": "#/definitions/element",
"description": "An RM element."
},
"elements": {
"$ref": "#/definitions/elements",
"description": "RM elements."
},
"from": {
"$ref": "#/definitions/from",
"description": "Define elements from which the data will be sourced."
},
"define": {
"$ref": "#/definitions/define",
"description": "Define keys used in the rules. Example: weight: http://loinc.org/29463-7"
},
"vars": {
"$ref": "#/definitions/vars",
"description": "Define variables used in the rules. Example: default_bmi: randomNormalDistribution((27.6863+25.4960)/2, sqrt(18.65))"
},
"choices": {
"$ref": "#/definitions/choices",
"description": "Define a list of choices from which a random item will be used."
},
"value_intervals": {
"$ref": "#/definitions/value_intervals",
"description": "Value intervals for each key (e.g. units)."
},
"interpretation_intervals": {
"$ref": "#/definitions/interpretation_intervals",
"description": "Interpretation intervals for each key (e.g. units)."
}
},
"additionalProperties": false
},
"elements": {
"type": "object",
"patternProperties": {
"^.+$": {
"oneOf": [
{
"$ref": "#/definitions/element",
"description": "An RM element."
},
{
"type": "null",
"description": "Leave it empty if you just need to reference this element in a formula."
}
]
}
},
"additionalProperties": false
},
"element": {
"type": "object",
"properties": {
"attribute": {
"type": "string",
"description": "Used to specify an RM attribute."
},
"path": {
"type": "string",
"description": "Used to specify an ADL path."
},
"elements": {
"$ref": "#/definitions/elements",
"description": "RM elements."
},
"value": {
"type": "string",
"description": "Value of the element. Can use formulas."
},
"value_type": {
"type": "string",
"description": "RM type of the element."
},
"value_interval": {
"type": "string",
"description": "Value interval."
},
"value_intervals": {
"$ref": "#/definitions/value_intervals",
"description": "Value intervals for each key (e.g. units)."
},
"choice_key": {
"type": "string",
"description": "The name of the key in the choices to use for this element."
},
"interpretation_interval": {
"$ref": "#/definitions/interpretation_interval",
"description": "Interpretation interval for the value."
},
"interpretation_intervals": {
"$ref": "#/definitions/interpretation_intervals",
"description": "Interpretation intervals for each key (e.g. units)."
},
"one_of": {
"$ref": "#/definitions/one_of",
"description": "List of keys to look for."
}
},
"additionalProperties": false
},
"value_intervals": {
"type": "object",
"patternProperties": {
"^.+$": {
"$ref": "#/definitions/value_interval"
}
},
"additionalProperties": false
},
"value_interval": {
"type": "string"
},
"interpretation_intervals": {
"type": "object",
"patternProperties": {
"^.+$": {
"$ref": "#/definitions/interpretation_interval"
}
},
"additionalProperties": false
},
"interpretation_interval": {
"type": "object",
"properties": {
"low": {
"type": "number",
"description": "Low value of the interpretation interval."
},
"high": {
"type": "number",
"description": "High value of the interpretation interval."
}
},
"additionalProperties": false,
"required": [
"low",
"high"
]
},
"one_of": {
"type": "array",
"items": {
"type": "string"
}
},
"from": {
"type": "array",
"items": {
"$ref": "#/definitions/from_item"
}
},
"from_item": {
"type": "object",
"properties": {
"element": {
"$ref": "#/definitions/element",
"description": "An RM element."
},
"elements": {
"$ref": "#/definitions/elements",
"description": "RM elements."
},
"define": {
"$ref": "#/definitions/define",
"description": "Define keys used in the rules. Example: weight: http://loinc.org/29463-7"
},
"vars": {
"$ref": "#/definitions/vars",
"description": "Define variables used in the rules. Example: default_bmi: randomNormalDistribution((27.6863+25.4960)/2, sqrt(18.65))"
}
},
"additionalProperties": false
},
"choices": {
"type": "array",
"items": {
"$ref": "#/definitions/choices_map"
}
},
"choices_map": {
"type": "object",
"$ref": "#/definitions/choices_map_entry"
},
"choices_map_entry": {
"type": "object",
"patternProperties": {
"^.+$": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"$ref": "#/definitions/choices_map_entry"
}
]
}
},
"additionalProperties": false
},
"define": {
"type": "object",
"patternProperties": {
"^.+$": {
"type": "string"
}
},
"additionalProperties": false
},
"vars": {
"type": "object",
"patternProperties": {
"^.+$": {
"type": "string"
}
},
"additionalProperties": false
}
}
}
63 changes: 63 additions & 0 deletions src/test/mapehr/blood_pressure.map.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
rules:
loinc:
# Blood pressure (with ranges)
35094-2: # http://loinc.org/35094-2
set:
- attribute: data
elements:
systolic:
value_type: Measured<Quantity>
diastolic:
value_type: Measured<Quantity>
define:
systolic: http://loinc.org/8480-6
diastolic: http://loinc.org/8462-4
choices:
- systolic: 140..180
diastolic: 95..115
- systolic: 115..130
diastolic: 80.. 90
- systolic: 90..110
diastolic: 55.. 75
interpretation_intervals:
systolic:
low: 110
high: 160
diastolic:
low: 70
high: 105
- attribute: qualifiers
elements:
device:
attribute: items
elements:
device_name:
value_type: Plain_text
choice_key: description
medical_device_type:
value_type: Coded_text
define:
device: http://loinc.org/82307-0
device_name: http://loinc.org/74720-4
medical_device_type: http://loinc.org/66464-9
choices:
- code: http://snomed.info/id/309641003
description: Aneroid sphygmomanometer
- code: http://snomed.info/id/466093008
description: Automatic-inflation electronic sphygmomanometer, non-portable
- code: http://snomed.info/id/466086009
description: Automatic-inflation electronic sphygmomanometer, portable, arm/wrist
- code: http://snomed.info/id/466139008
description: Automatic-inflation electronic sphygmomanometer, portable, finger
- code: http://snomed.info/id/43770009
description: Doppler device
- code: http://snomed.info/id/469801002
description: Invasive blood pressure monitor
- code: http://snomed.info/id/469311001
description: Manual-inflation electronic sphygmomanometer, non-portable
- code: http://snomed.info/id/469676006
description: Manual-inflation electronic sphygmomanometer, portable
- code: http://snomed.info/id/309642005
description: Mercury sphygmomanometer
- code: http://snomed.info/id/258057004
description: Non-invasive blood pressure monitor
Loading

0 comments on commit f5846aa

Please sign in to comment.