From 8e4f1b53f43acfaab59c75d042fc4a4d6fea5201 Mon Sep 17 00:00:00 2001 From: f-peverali <112709306+f-peverali@users.noreply.github.com> Date: Mon, 12 Feb 2024 16:16:18 +0100 Subject: [PATCH] add MII-like Profiles --- Resources/fsh-generated/fsh-index.json | 202 +++++++++ Resources/fsh-generated/fsh-index.txt | 26 ++ ...tion-ISIKPulmonalarteriellerBlutdruck.json | 247 ++++++++++ ...-sd-mii-icu-monitoring-und-vitaldaten.json | 425 ++++++++++++++++++ Resources/input/fsh/ISiK-Blutdruck.fsh | 38 ++ .../input/fsh/MII-MonitoringVitaldaten.fsh | 118 +++++ Resources/input/fsh/aliases.fsh | 10 +- 7 files changed, 1062 insertions(+), 4 deletions(-) create mode 100644 Resources/fsh-generated/fsh-index.json create mode 100644 Resources/fsh-generated/fsh-index.txt create mode 100644 Resources/fsh-generated/resources/StructureDefinition-ISIKPulmonalarteriellerBlutdruck.json create mode 100644 Resources/fsh-generated/resources/StructureDefinition-sd-mii-icu-monitoring-und-vitaldaten.json create mode 100644 Resources/input/fsh/MII-MonitoringVitaldaten.fsh diff --git a/Resources/fsh-generated/fsh-index.json b/Resources/fsh-generated/fsh-index.json new file mode 100644 index 00000000..597b654c --- /dev/null +++ b/Resources/fsh-generated/fsh-index.json @@ -0,0 +1,202 @@ +[ + { + "outputFile": "CapabilityStatement-ISiK-capabilityStatement-vitalparameter-server.json", + "fshName": "ISiK-capabilityStatement-vitalparameter-server", + "fshType": "Instance", + "fshFile": "ISiK-CapabilityStatement.fsh", + "startLine": 1, + "endLine": 88 + }, + { + "outputFile": "Device-ExampleDevice.json", + "fshName": "ExampleDevice", + "fshType": "Instance", + "fshFile": "instances.fsh", + "startLine": 14, + "endLine": 17 + }, + { + "outputFile": "Observation-ISiKAtemfrequenzExample.json", + "fshName": "ISiKAtemfrequenzExample", + "fshType": "Instance", + "fshFile": "ISiK-Atemfrequenz.fsh", + "startLine": 19, + "endLine": 30 + }, + { + "outputFile": "Observation-ISiKBlutdruckExample.json", + "fshName": "ISiKBlutdruckExample", + "fshType": "Instance", + "fshFile": "ISiK-Blutdruck.fsh", + "startLine": 63, + "endLine": 80 + }, + { + "outputFile": "Observation-ISiKEkgExample.json", + "fshName": "ISiKEkgExample", + "fshType": "Instance", + "fshFile": "ISiK-Ekg.fsh", + "startLine": 20, + "endLine": 44 + }, + { + "outputFile": "Observation-ISiKGCSExample.json", + "fshName": "ISiKGCSExample", + "fshType": "Instance", + "fshFile": "ISiK-GCS.fsh", + "startLine": 25, + "endLine": 39 + }, + { + "outputFile": "Observation-ISiKHerzfrequenzExample.json", + "fshName": "ISiKHerzfrequenzExample", + "fshType": "Instance", + "fshFile": "ISiK-Herzfrequenz.fsh", + "startLine": 19, + "endLine": 30 + }, + { + "outputFile": "Observation-ISiKKoerpergewichtExample.json", + "fshName": "ISiKKoerpergewichtExample", + "fshType": "Instance", + "fshFile": "ISiK-Koerpergewicht.fsh", + "startLine": 19, + "endLine": 31 + }, + { + "outputFile": "Observation-ISiKKoerpergroesseExample.json", + "fshName": "ISiKKoerpergroesseExample", + "fshType": "Instance", + "fshFile": "ISiK-Koerpergroesse.fsh", + "startLine": 19, + "endLine": 31 + }, + { + "outputFile": "Observation-ISiKKoerpertemperaturExample.json", + "fshName": "ISiKKoerpertemperaturExample", + "fshType": "Instance", + "fshFile": "ISiK-Koerpertemperatur.fsh", + "startLine": 19, + "endLine": 30 + }, + { + "outputFile": "Observation-ISiKKopfumfangExample.json", + "fshName": "ISiKKopfumfangExample", + "fshType": "Instance", + "fshFile": "ISiK-Kopfumfang.fsh", + "startLine": 19, + "endLine": 30 + }, + { + "outputFile": "Observation-ISiKSauerstoffsaettigungExample.json", + "fshName": "ISiKSauerstoffsaettigungExample", + "fshType": "Instance", + "fshFile": "ISiK-Sauerstoffsaettigung.fsh", + "startLine": 19, + "endLine": 39 + }, + { + "outputFile": "Patient-PatientinMusterfrau.json", + "fshName": "PatientinMusterfrau", + "fshType": "Instance", + "fshFile": "instances.fsh", + "startLine": 1, + "endLine": 12 + }, + { + "outputFile": "StructureDefinition-ISIKPulmonalarteriellerBlutdruck.json", + "fshName": "ISIKPulmonalarteriellerBlutdruck", + "fshType": "Profile", + "fshFile": "ISiK-Blutdruck.fsh", + "startLine": 25, + "endLine": 61 + }, + { + "outputFile": "StructureDefinition-ISiKAtemfrequenz.json", + "fshName": "ISiKAtemfrequenz", + "fshType": "Profile", + "fshFile": "ISiK-Atemfrequenz.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-ISiKBlutdruck.json", + "fshName": "ISiKBlutdruck", + "fshType": "Profile", + "fshFile": "ISiK-Blutdruck.fsh", + "startLine": 1, + "endLine": 23 + }, + { + "outputFile": "StructureDefinition-ISiKEkg.json", + "fshName": "ISiKEkg", + "fshType": "Profile", + "fshFile": "ISiK-Ekg.fsh", + "startLine": 1, + "endLine": 18 + }, + { + "outputFile": "StructureDefinition-ISiKGCS.json", + "fshName": "ISiKGCS", + "fshType": "Profile", + "fshFile": "ISiK-GCS.fsh", + "startLine": 1, + "endLine": 23 + }, + { + "outputFile": "StructureDefinition-ISiKHerzfrequenz.json", + "fshName": "ISiKHerzfrequenz", + "fshType": "Profile", + "fshFile": "ISiK-Herzfrequenz.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-ISiKKoerpergewicht.json", + "fshName": "ISiKKoerpergewicht", + "fshType": "Profile", + "fshFile": "ISiK-Koerpergewicht.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-ISiKKoerpergroesse.json", + "fshName": "ISiKKoerpergroesse", + "fshType": "Profile", + "fshFile": "ISiK-Koerpergroesse.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-ISiKKoerpertemperatur.json", + "fshName": "ISiKKoerpertemperatur", + "fshType": "Profile", + "fshFile": "ISiK-Koerpertemperatur.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-ISiKKopfumfang.json", + "fshName": "ISiKKopfumfang", + "fshType": "Profile", + "fshFile": "ISiK-Kopfumfang.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-ISiKSauerstoffsaettigung.json", + "fshName": "ISiKSauerstoffsaettigung", + "fshType": "Profile", + "fshFile": "ISiK-Sauerstoffsaettigung.fsh", + "startLine": 1, + "endLine": 17 + }, + { + "outputFile": "StructureDefinition-sd-mii-icu-monitoring-und-vitaldaten.json", + "fshName": "SD_MII_ICU_Monitoring_Und_Vitaldaten", + "fshType": "Profile", + "fshFile": "MII-MonitoringVitaldaten.fsh", + "startLine": 10, + "endLine": 99 + } +] diff --git a/Resources/fsh-generated/fsh-index.txt b/Resources/fsh-generated/fsh-index.txt new file mode 100644 index 00000000..c7bbc5a9 --- /dev/null +++ b/Resources/fsh-generated/fsh-index.txt @@ -0,0 +1,26 @@ +Output File Name Type FSH File Lines +CapabilityStatement-ISiK-capabilityStatement-vitalparameter-server.json ISiK-capabilityStatement-vitalparameter-server Instance ISiK-CapabilityStatement.fsh 1 - 88 +Device-ExampleDevice.json ExampleDevice Instance instances.fsh 14 - 17 +Observation-ISiKAtemfrequenzExample.json ISiKAtemfrequenzExample Instance ISiK-Atemfrequenz.fsh 19 - 30 +Observation-ISiKBlutdruckExample.json ISiKBlutdruckExample Instance ISiK-Blutdruck.fsh 63 - 80 +Observation-ISiKEkgExample.json ISiKEkgExample Instance ISiK-Ekg.fsh 20 - 44 +Observation-ISiKGCSExample.json ISiKGCSExample Instance ISiK-GCS.fsh 25 - 39 +Observation-ISiKHerzfrequenzExample.json ISiKHerzfrequenzExample Instance ISiK-Herzfrequenz.fsh 19 - 30 +Observation-ISiKKoerpergewichtExample.json ISiKKoerpergewichtExample Instance ISiK-Koerpergewicht.fsh 19 - 31 +Observation-ISiKKoerpergroesseExample.json ISiKKoerpergroesseExample Instance ISiK-Koerpergroesse.fsh 19 - 31 +Observation-ISiKKoerpertemperaturExample.json ISiKKoerpertemperaturExample Instance ISiK-Koerpertemperatur.fsh 19 - 30 +Observation-ISiKKopfumfangExample.json ISiKKopfumfangExample Instance ISiK-Kopfumfang.fsh 19 - 30 +Observation-ISiKSauerstoffsaettigungExample.json ISiKSauerstoffsaettigungExample Instance ISiK-Sauerstoffsaettigung.fsh 19 - 39 +Patient-PatientinMusterfrau.json PatientinMusterfrau Instance instances.fsh 1 - 12 +StructureDefinition-ISIKPulmonalarteriellerBlutdruck.json ISIKPulmonalarteriellerBlutdruck Profile ISiK-Blutdruck.fsh 25 - 61 +StructureDefinition-ISiKAtemfrequenz.json ISiKAtemfrequenz Profile ISiK-Atemfrequenz.fsh 1 - 17 +StructureDefinition-ISiKBlutdruck.json ISiKBlutdruck Profile ISiK-Blutdruck.fsh 1 - 23 +StructureDefinition-ISiKEkg.json ISiKEkg Profile ISiK-Ekg.fsh 1 - 18 +StructureDefinition-ISiKGCS.json ISiKGCS Profile ISiK-GCS.fsh 1 - 23 +StructureDefinition-ISiKHerzfrequenz.json ISiKHerzfrequenz Profile ISiK-Herzfrequenz.fsh 1 - 17 +StructureDefinition-ISiKKoerpergewicht.json ISiKKoerpergewicht Profile ISiK-Koerpergewicht.fsh 1 - 17 +StructureDefinition-ISiKKoerpergroesse.json ISiKKoerpergroesse Profile ISiK-Koerpergroesse.fsh 1 - 17 +StructureDefinition-ISiKKoerpertemperatur.json ISiKKoerpertemperatur Profile ISiK-Koerpertemperatur.fsh 1 - 17 +StructureDefinition-ISiKKopfumfang.json ISiKKopfumfang Profile ISiK-Kopfumfang.fsh 1 - 17 +StructureDefinition-ISiKSauerstoffsaettigung.json ISiKSauerstoffsaettigung Profile ISiK-Sauerstoffsaettigung.fsh 1 - 17 +StructureDefinition-sd-mii-icu-monitoring-und-vitaldaten.json SD_MII_ICU_Monitoring_Und_Vitaldaten Profile MII-MonitoringVitaldaten.fsh 10 - 99 \ No newline at end of file diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISIKPulmonalarteriellerBlutdruck.json b/Resources/fsh-generated/resources/StructureDefinition-ISIKPulmonalarteriellerBlutdruck.json new file mode 100644 index 00000000..e24d9059 --- /dev/null +++ b/Resources/fsh-generated/resources/StructureDefinition-ISIKPulmonalarteriellerBlutdruck.json @@ -0,0 +1,247 @@ +{ + "resourceType": "StructureDefinition", + "id": "ISIKPulmonalarteriellerBlutdruck", + "url": "https://gematik.de/fhir/isik/v3/VitalparameterUndKoerpermasze/StructureDefinition/ISIKPulmonalarteriellerBlutdruck", + "name": "ISIKPulmonalarteriellerBlutdruck", + "title": "SD ISiK ICU Pulmonalarterieller Blutdruck", + "status": "draft", + "description": "Das Profil basiert auf der Kodierung entsprechend dem [Profil der MII](https://www.medizininformatik-initiative.de/Kerndatensatz/Modul_Intensivmedizin/PulmonalarteriellerBlutdruckObservation.html). ", + "fhirVersion": "4.0.1", + "mapping": [ + { + "identity": "workflow", + "uri": "http://hl7.org/fhir/workflow", + "name": "Workflow Pattern" + }, + { + "identity": "sct-concept", + "uri": "http://snomed.info/conceptdomain", + "name": "SNOMED CT Concept Domain Binding" + }, + { + "identity": "v2", + "uri": "http://hl7.org/v2", + "name": "HL7 v2 Mapping" + }, + { + "identity": "rim", + "uri": "http://hl7.org/v3", + "name": "RIM Mapping" + }, + { + "identity": "w5", + "uri": "http://hl7.org/fhir/fivews", + "name": "FiveWs Pattern Mapping" + }, + { + "identity": "sct-attr", + "uri": "http://snomed.org/attributebinding", + "name": "SNOMED CT Attribute Binding" + } + ], + "kind": "resource", + "abstract": false, + "type": "Observation", + "baseDefinition": "https://gematik.de/fhir/isik/v3/VitalparameterUndKoerpermasze/StructureDefinition/ISiKBlutdruck", + "derivation": "constraint", + "differential": { + "element": [ + { + "id": "Observation.code.coding", + "path": "Observation.code.coding", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + }, + "min": 2 + }, + { + "id": "Observation.code.coding:sct", + "path": "Observation.code.coding", + "sliceName": "sct", + "min": 1, + "max": "1" + }, + { + "id": "Observation.code.coding:IEEE-11073", + "path": "Observation.code.coding", + "sliceName": "IEEE-11073", + "min": 0, + "max": "0" + }, + { + "id": "Observation.value[x]", + "path": "Observation.value[x]", + "patternQuantity": { + "code": "mm[Hg]", + "system": "http://unitsofmeasure.org" + } + }, + { + "id": "Observation.component", + "path": "Observation.component", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + } + }, + { + "id": "Observation.component.code.coding", + "path": "Observation.component.code.coding", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + }, + "min": 3 + }, + { + "id": "Observation.component.code.coding:loinc-detailed", + "path": "Observation.component.code.coding", + "sliceName": "loinc-detailed", + "min": 1, + "max": "*" + }, + { + "id": "Observation.component.code.coding:IEEE-11073", + "path": "Observation.component.code.coding", + "sliceName": "IEEE-11073", + "min": 1, + "max": "*" + }, + { + "id": "Observation.component:SystolicBP", + "path": "Observation.component", + "sliceName": "SystolicBP" + }, + { + "id": "Observation.component:SystolicBP.code.coding", + "path": "Observation.component.code.coding", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + }, + "min": 3 + }, + { + "id": "Observation.component:SystolicBP.code.coding:IEEE-11073", + "path": "Observation.component.code.coding", + "sliceName": "IEEE-11073", + "min": 1, + "max": "*", + "patternCoding": { + "code": "150045" + } + }, + { + "id": "Observation.component:SystolicBP.code.coding:loinc-detailed", + "path": "Observation.component.code.coding", + "sliceName": "loinc-detailed", + "min": 1, + "max": "*", + "patternCoding": { + "code": "8440-0", + "system": "http://loinc.org" + } + }, + { + "id": "Observation.component:DiastolicBP", + "path": "Observation.component", + "sliceName": "DiastolicBP" + }, + { + "id": "Observation.component:DiastolicBP.code.coding", + "path": "Observation.component.code.coding", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + }, + "min": 3 + }, + { + "id": "Observation.component:DiastolicBP.code.coding:IEEE-11073", + "path": "Observation.component.code.coding", + "sliceName": "IEEE-11073", + "min": 1, + "max": "*", + "patternCoding": { + "code": "150046" + } + }, + { + "id": "Observation.component:DiastolicBP.code.coding:loinc-detailed", + "path": "Observation.component.code.coding", + "sliceName": "loinc-detailed", + "min": 1, + "max": "*", + "patternCoding": { + "code": "8385-7", + "system": "http://loinc.org" + } + }, + { + "id": "Observation.component:meanBP", + "path": "Observation.component", + "sliceName": "meanBP" + }, + { + "id": "Observation.component:meanBP.code.coding", + "path": "Observation.component.code.coding", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + } + }, + { + "id": "Observation.component:meanBP.code.coding:IEEE-11073", + "path": "Observation.component.code.coding", + "sliceName": "IEEE-11073", + "min": 1, + "max": "*", + "patternCoding": { + "code": "150047" + } + }, + { + "id": "Observation.component:meanBP.code.coding:loinc-detailed", + "path": "Observation.component.code.coding", + "sliceName": "loinc-detailed", + "min": 1, + "max": "*", + "patternCoding": { + "code": "8414-5", + "system": "http://loinc.org" + } + } + ] + } +} diff --git a/Resources/fsh-generated/resources/StructureDefinition-sd-mii-icu-monitoring-und-vitaldaten.json b/Resources/fsh-generated/resources/StructureDefinition-sd-mii-icu-monitoring-und-vitaldaten.json new file mode 100644 index 00000000..9410acdb --- /dev/null +++ b/Resources/fsh-generated/resources/StructureDefinition-sd-mii-icu-monitoring-und-vitaldaten.json @@ -0,0 +1,425 @@ +{ + "resourceType": "StructureDefinition", + "id": "sd-mii-icu-monitoring-und-vitaldaten", + "url": "https://gematik.de/fhir/isik/v3/VitalparameterUndKoerpermasze/StructureDefinition/sd-mii-icu-monitoring-und-vitaldaten", + "name": "SD_MII_ICU_Monitoring_Und_Vitaldaten", + "title": "SD MII ICU Monitoring und Vitaldaten", + "status": "draft", + "fhirVersion": "4.0.1", + "mapping": [ + { + "identity": "workflow", + "uri": "http://hl7.org/fhir/workflow", + "name": "Workflow Pattern" + }, + { + "identity": "sct-concept", + "uri": "http://snomed.info/conceptdomain", + "name": "SNOMED CT Concept Domain Binding" + }, + { + "identity": "v2", + "uri": "http://hl7.org/v2", + "name": "HL7 v2 Mapping" + }, + { + "identity": "rim", + "uri": "http://hl7.org/v3", + "name": "RIM Mapping" + }, + { + "identity": "w5", + "uri": "http://hl7.org/fhir/fivews", + "name": "FiveWs Pattern Mapping" + }, + { + "identity": "sct-attr", + "uri": "http://snomed.org/attributebinding", + "name": "SNOMED CT Attribute Binding" + } + ], + "kind": "resource", + "abstract": false, + "type": "Observation", + "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation", + "derivation": "constraint", + "differential": { + "element": [ + { + "id": "Observation", + "path": "Observation", + "constraint": [ + { + "key": "vs-de-2", + "human": "If there is no component or hasMember element then either a value[x] or a data absent reason must be present", + "source": "http://fhir.de/StructureDefinition/observation-de-vitalsign", + "severity": "error", + "expression": "(component.empty() and hasMember.empty()) implies (dataAbsentReason.exists() or value.exists())" + } + ] + }, + { + "id": "Observation.identifier", + "path": "Observation.identifier", + "mustSupport": true + }, + { + "id": "Observation.basedOn", + "path": "Observation.basedOn", + "max": "1" + }, + { + "id": "Observation.partOf", + "path": "Observation.partOf", + "type": [ + { + "code": "Reference", + "profile": [ + "https://www.medizininformatik-initiative.de/fhir/core/StructureDefinition/MII-Reference" + ], + "targetProfile": [ + "http://hl7.org/fhir/StructureDefinition/Procedure" + ] + } + ] + }, + { + "id": "Observation.status", + "path": "Observation.status", + "mustSupport": true + }, + { + "id": "Observation.category", + "path": "Observation.category", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "ordered": false, + "rules": "open" + }, + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.category:vs-cat", + "path": "Observation.category", + "sliceName": "vs-cat", + "min": 1, + "max": "1", + "patternCodeableConcept": { + "coding": [ + { + "code": "vital-signs", + "system": "http://terminology.hl7.org/CodeSystem/observation-category" + } + ] + }, + "mustSupport": true + }, + { + "id": "Observation.category:vs-cat.coding", + "path": "Observation.category.coding", + "mustSupport": true + }, + { + "id": "Observation.category:vs-cat.coding.system", + "path": "Observation.category.coding.system", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.category:vs-cat.coding.code", + "path": "Observation.category.coding.code", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.category:loinc-fhir-core", + "path": "Observation.category", + "sliceName": "loinc-fhir-core", + "min": 0, + "max": "1", + "patternCodeableConcept": { + "coding": [ + { + "code": "85353-1", + "system": "http://loinc.org" + } + ] + }, + "mustSupport": true + }, + { + "id": "Observation.category:loinc-fhir-core.coding", + "path": "Observation.category.coding", + "mustSupport": true + }, + { + "id": "Observation.category:loinc-fhir-core.coding.system", + "path": "Observation.category.coding.system", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.category:loinc-fhir-core.coding.code", + "path": "Observation.category.coding.code", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.code", + "path": "Observation.code", + "constraint": [ + { + "key": "code-coding-icu", + "human": "Es muss mindestens ein snomed oder loinc code vorhanden sein", + "source": "https://gematik.de/fhir/isik/v3/VitalparameterUndKoerpermasze/StructureDefinition/sd-mii-icu-monitoring-und-vitaldaten", + "severity": "error", + "expression": "coding.exists() implies coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://loinc.org').exists()" + } + ], + "mustSupport": true + }, + { + "id": "Observation.code.coding", + "path": "Observation.code.coding", + "slicing": { + "discriminator": [ + { + "type": "pattern", + "path": "$this" + } + ], + "rules": "open" + }, + "min": 1 + }, + { + "id": "Observation.code.coding:sct", + "path": "Observation.code.coding", + "sliceName": "sct", + "min": 0, + "max": "*", + "mustSupport": true, + "binding": { + "strength": "required", + "valueSet": "https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/Code-Monitoring-und-Vitaldaten-SNOMED" + } + }, + { + "id": "Observation.code.coding:sct.system", + "path": "Observation.code.coding.system", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.code.coding:sct.code", + "path": "Observation.code.coding.code", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.code.coding:loinc", + "path": "Observation.code.coding", + "sliceName": "loinc", + "min": 0, + "max": "*", + "mustSupport": true, + "binding": { + "strength": "required", + "valueSet": "https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/Code-Monitoring-und-Vitaldaten-LOINC" + } + }, + { + "id": "Observation.code.coding:loinc.system", + "path": "Observation.code.coding.system", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.code.coding:loinc.code", + "path": "Observation.code.coding.code", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.code.coding:IEEE-11073", + "path": "Observation.code.coding", + "sliceName": "IEEE-11073", + "min": 0, + "max": "*", + "mustSupport": true, + "binding": { + "strength": "required", + "valueSet": "https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/Code-Monitoring-und-Vitaldaten-ISO11073" + } + }, + { + "id": "Observation.code.coding:IEEE-11073.system", + "path": "Observation.code.coding.system", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.code.coding:IEEE-11073.code", + "path": "Observation.code.coding.code", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.subject", + "path": "Observation.subject", + "min": 1, + "type": [ + { + "code": "Reference", + "profile": [ + "https://www.medizininformatik-initiative.de/fhir/core/StructureDefinition/MII-Reference" + ], + "targetProfile": [ + "http://hl7.org/fhir/StructureDefinition/Patient" + ] + } + ], + "mustSupport": true + }, + { + "id": "Observation.encounter", + "path": "Observation.encounter", + "mustSupport": true + }, + { + "id": "Observation.effective[x]", + "path": "Observation.effective[x]", + "min": 1, + "type": [ + { + "code": "dateTime" + }, + { + "code": "Period" + } + ], + "mustSupport": true + }, + { + "id": "Observation.value[x]", + "path": "Observation.value[x]", + "type": [ + { + "code": "Quantity" + } + ], + "patternQuantity": { + "system": "http://unitsofmeasure.org" + }, + "mustSupport": true + }, + { + "id": "Observation.value[x].value", + "path": "Observation.value[x].value", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.value[x].unit", + "path": "Observation.value[x].unit", + "mustSupport": true + }, + { + "id": "Observation.value[x].system", + "path": "Observation.value[x].system", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.value[x].code", + "path": "Observation.value[x].code", + "min": 1, + "mustSupport": true + }, + { + "id": "Observation.dataAbsentReason", + "path": "Observation.dataAbsentReason", + "constraint": [ + { + "key": "mii-icu-1", + "human": "If there is no Observation.value, a dataAbsentReason must be given.", + "source": "https://gematik.de/fhir/isik/v3/VitalparameterUndKoerpermasze/StructureDefinition/sd-mii-icu-monitoring-und-vitaldaten", + "severity": "error", + "expression": "value.exists().not() implies dataAbsentReason.exists()" + } + ], + "mustSupport": true + }, + { + "id": "Observation.interpretation", + "path": "Observation.interpretation", + "mustSupport": true + }, + { + "id": "Observation.bodySite", + "path": "Observation.bodySite", + "mustSupport": true, + "binding": { + "strength": "extensible", + "valueSet": "https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/BodySite-Observation-Monitoring-und-Vitaldaten" + } + }, + { + "id": "Observation.referenceRange", + "path": "Observation.referenceRange", + "mustSupport": true + }, + { + "id": "Observation.component", + "path": "Observation.component", + "mustSupport": true + }, + { + "id": "Observation.component.code", + "path": "Observation.component.code", + "mustSupport": true + }, + { + "id": "Observation.component.value[x]", + "path": "Observation.component.value[x]", + "sliceName": "valueQuantity", + "slicing": { + "discriminator": [ + { + "type": "type", + "path": "$this" + } + ], + "rules": "open" + }, + "type": [ + { + "code": "Quantity" + } + ], + "mustSupport": true + }, + { + "id": "Observation.component.dataAbsentReason", + "path": "Observation.component.dataAbsentReason", + "mustSupport": true + }, + { + "id": "Observation.component.interpretation", + "path": "Observation.component.interpretation", + "mustSupport": true + }, + { + "id": "Observation.component.referenceRange", + "path": "Observation.component.referenceRange", + "mustSupport": true + } + ] + } +} diff --git a/Resources/input/fsh/ISiK-Blutdruck.fsh b/Resources/input/fsh/ISiK-Blutdruck.fsh index 8c26abb5..b5c070b5 100644 --- a/Resources/input/fsh/ISiK-Blutdruck.fsh +++ b/Resources/input/fsh/ISiK-Blutdruck.fsh @@ -22,6 +22,44 @@ Id: ISiKBlutdruck * component[DiastolicBP].value[x] MS * component[DiastolicBP].valueQuantity MS +Profile: ISIKPulmonalarteriellerBlutdruck +Parent: ISiKBlutdruck +Id: ISIKPulmonalarteriellerBlutdruck +Title: "SD ISiK ICU Pulmonalarterieller Blutdruck" +Description: "Das Profil basiert auf der Kodierung entsprechend dem [Profil der MII](https://www.medizininformatik-initiative.de/Kerndatensatz/Modul_Intensivmedizin/PulmonalarteriellerBlutdruckObservation.html). " +* code.coding 2.. + * ^slicing.discriminator.type = #pattern + * ^slicing.discriminator.path = "$this" + * ^slicing.rules = #open +* code.coding contains + sct 1..1 and + IEEE-11073 0..0 +* value[x] = $unitsofmeasure#mm[Hg] +* component MS + * ^slicing.discriminator.type = #pattern + * ^slicing.discriminator.path = "$this" + * ^slicing.rules = #open +* component.code.coding 3.. + * ^slicing.discriminator.type = #pattern + * ^slicing.discriminator.path = "$this" + * ^slicing.rules = #open +* component.code.coding contains + loinc-detailed 1.. and + IEEE-11073 1.. +* component[SystolicBP].code.coding[IEEE-11073] = #150045 +* component[SystolicBP].code.coding[IEEE-11073] ^sliceName = "IEEE-11073" +* component[SystolicBP].code.coding[loinc-detailed] = $loinc#8440-0 +* component[SystolicBP].code.coding[loinc-detailed] ^sliceName = "loinc-detailed" +* component[DiastolicBP].code.coding[IEEE-11073] = #150046 +* component[DiastolicBP].code.coding[IEEE-11073] ^sliceName = "IEEE-11073" +* component[DiastolicBP].code.coding[loinc-detailed] = $loinc#8385-7 +* component[DiastolicBP].code.coding[loinc-detailed] ^sliceName = "loinc-detailed" +* component[meanBP] ^sliceName = "meanBP" +* component[meanBP].code.coding[IEEE-11073] = #150047 +* component[meanBP].code.coding[IEEE-11073] ^sliceName = "IEEE-11073" +* component[meanBP].code.coding[loinc-detailed] = $loinc#8414-5 +* component[meanBP].code.coding[loinc-detailed] ^sliceName = "loinc-detailed" + Instance: ISiKBlutdruckExample InstanceOf: ISiKBlutdruck Usage: #example diff --git a/Resources/input/fsh/MII-MonitoringVitaldaten.fsh b/Resources/input/fsh/MII-MonitoringVitaldaten.fsh new file mode 100644 index 00000000..2aef59bd --- /dev/null +++ b/Resources/input/fsh/MII-MonitoringVitaldaten.fsh @@ -0,0 +1,118 @@ +//WARNUNG: Dies ist ein Testprofil, dessen fsh-code nicht qualitätsgesichert ist und genriert wurd mit https://fshschool.org/FSHOnline/#/ + +Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category +Alias: $loinc = http://loinc.org +Alias: $MII-Reference = https://www.medizininformatik-initiative.de/fhir/core/StructureDefinition/MII-Reference +Alias: $icu-device = https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/StructureDefinition/icu-device +Alias: $Code-Monitoring-und-Vitaldaten-SNOMED = https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/Code-Monitoring-und-Vitaldaten-SNOMED +Alias: $Code-Monitoring-und-Vitaldaten-LOINC = https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/Code-Monitoring-und-Vitaldaten-LOINC +Alias: $Code-Monitoring-und-Vitaldaten-ISO11073 = https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/Code-Monitoring-und-Vitaldaten-ISO11073 +Alias: $BodySite-Observation-Monitoring-und-Vitaldaten = https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/ValueSet/BodySite-Observation-Monitoring-und-Vitaldaten + +//Folgendes Profil wurde entsprechend der MII Festelgung [hier](https://www.medizininformatik-initiative.de/fhir/ext/modul-icu/StructureDefinition/monitoring-und-vitaldaten) in .fsh kodier. +Profile: SD_MII_ICU_Monitoring_Und_Vitaldaten +Parent: Observation +Id: sd-mii-icu-monitoring-und-vitaldaten +Title: "SD MII ICU Monitoring und Vitaldaten" +* obeys vs-de-2 +* identifier MS +* basedOn ..1 +* partOf only Reference(Procedure) +* partOf ^type.profile = "https://www.medizininformatik-initiative.de/fhir/core/StructureDefinition/MII-Reference" +* status MS +* category MS +* category ^slicing.discriminator.type = #pattern +* category ^slicing.discriminator.path = "$this" +* category ^slicing.ordered = false +* category ^slicing.rules = #open +* category contains + vs-cat 1..1 MS and + loinc-fhir-core 0..1 MS +* category[vs-cat] = $observation-category#vital-signs +* category[vs-cat].coding MS +* category[vs-cat].coding.system 1.. MS +* category[vs-cat].coding.code 1.. MS +* category[loinc-fhir-core] = $loinc#85353-1 +* category[loinc-fhir-core].coding MS +* category[loinc-fhir-core].coding.system 1.. MS +* category[loinc-fhir-core].coding.code 1.. MS +* code MS +* code obeys code-coding-icu +* code.coding 1.. +* code.coding ^slicing.discriminator.type = #pattern +* code.coding ^slicing.discriminator.path = "$this" +* code.coding ^slicing.rules = #open +* code.coding contains + sct 0..* and + loinc 0..* and + IEEE-11073 0..* +* code.coding[sct] from $Code-Monitoring-und-Vitaldaten-SNOMED (required) +* code.coding[sct] ^sliceName = "sct" +* code.coding[sct] ^mustSupport = true +* code.coding[sct].system 1.. MS +* code.coding[sct].code 1.. MS +* code.coding[loinc] from $Code-Monitoring-und-Vitaldaten-LOINC (required) +* code.coding[loinc] ^sliceName = "loinc" +* code.coding[loinc] ^mustSupport = true +* code.coding[loinc].system 1.. MS +* code.coding[loinc].code 1.. MS +* code.coding[IEEE-11073] from $Code-Monitoring-und-Vitaldaten-ISO11073 (required) +* code.coding[IEEE-11073] ^sliceName = "IEEE-11073" +* code.coding[IEEE-11073] ^mustSupport = true +* code.coding[IEEE-11073].system 1.. MS +* code.coding[IEEE-11073].code 1.. MS +* subject 1.. MS +* subject only Reference(Patient) +* subject ^type.profile = "https://www.medizininformatik-initiative.de/fhir/core/StructureDefinition/MII-Reference" +// Das Profil zu Encounter der MII wird momentan nicht übernommen in ISIK +//* encounter only $MII-Reference +* encounter MS +* effective[x] 1.. MS +* effective[x] only dateTime or Period +* value[x] only Quantity +* value[x] MS +* value[x] ^patternQuantity.system = "http://unitsofmeasure.org" +* value[x].value 1.. MS +* value[x].unit MS +* value[x].system 1.. MS +* value[x].code 1.. MS +* dataAbsentReason MS +* dataAbsentReason obeys mii-icu-1 +* interpretation MS +* bodySite MS +* bodySite from $BodySite-Observation-Monitoring-und-Vitaldaten (extensible) +// Das Profil zu Device der MII wird momentan nicht übernommen in ISIK +/** device only Reference($icu-device) +* device MS +* device ^type.profile = "https://www.medizininformatik-initiative.de/fhir/core/StructureDefinition/MII-Reference" +*/ +* referenceRange MS +* component MS +* component.code MS +* component.value[x] only Quantity +* component.value[x] MS +* component.value[x] ^slicing.discriminator.type = #type +* component.value[x] ^slicing.discriminator.path = "$this" +* component.value[x] ^slicing.rules = #open +* component.valueQuantity only Quantity +* component.valueQuantity MS +* component.valueQuantity ^sliceName = "valueQuantity" +* component.dataAbsentReason MS +* component.interpretation MS +* component.referenceRange MS + +Invariant: vs-de-2 +Description: "If there is no component or hasMember element then either a value[x] or a data absent reason must be present" +* severity = #error +* expression = "(component.empty() and hasMember.empty()) implies (dataAbsentReason.exists() or value.exists())" +* source = "http://fhir.de/StructureDefinition/observation-de-vitalsign" + +Invariant: code-coding-icu +Description: "Es muss mindestens ein snomed oder loinc code vorhanden sein" +* severity = #error +* expression = "coding.exists() implies coding.where(system = 'http://snomed.info/sct').exists() or coding.where(system = 'http://loinc.org').exists()" + +Invariant: mii-icu-1 +Description: "If there is no Observation.value, a dataAbsentReason must be given." +* severity = #error +* expression = "value.exists().not() implies dataAbsentReason.exists()" \ No newline at end of file diff --git a/Resources/input/fsh/aliases.fsh b/Resources/input/fsh/aliases.fsh index cd22df99..dc6710a0 100644 --- a/Resources/input/fsh/aliases.fsh +++ b/Resources/input/fsh/aliases.fsh @@ -1,4 +1,6 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $v3-ObservationInterpretation = http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation -Alias: $sct = http://snomed.info/sct \ No newline at end of file +Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category +Alias: $loinc = http://loinc.org +Alias: $v3-ObservationInterpretation = http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation +Alias: $sct = http://snomed.info/sct + +Alias: $unitsofmeasure = http://unitsofmeasure.org \ No newline at end of file