Beobachtungen, Messungen (Observation)
VitalParameter
Innerhalb der Deutschen Basisprofile werden Profile für den Ressourcen-Typ 'Observation' spezifiziert welche genutzt werden können um Vitalparameter und Körpermaße zu kodieren.
Diese Profile sind angelehnt an die Internationlen VitalSign Profile enthalten jedoch technische Korrekturen (Verbessertes Slicing und korrigierte FHIRPath-Expressions) oder Einschränkungen auf in Deutschland gebräuchliche Maßeinheiten.
Folgende Observation-Profile wurden in diesem Zusammenhang abgestimmt:
Weitere Details sind der jeweiligen verlinkten Unterseite zu entnehmen.
Kompatibilität zu den internationalen Vitalparameter Profilen
Im folgenden wird die Kompatibilität zu den internationalen VitalSign Profilen fein granuliert erläutert.
Bedeutung der Kompatibilität
Abwärtskompatibel: International VitalSigns -> Vitalparameter Basisprofil
Aufwärtskompatibel: Vitalparameter Basisprofil -> International Vitalsigns
Kopfumfang
- Unterschied: Binding von
valueQuantity.code
auf 'http://fhir.de/ValueSet/VitalSignDE_Body_Length_UCUM' anstatt 'http://hl7.org/fhir/ValueSet/ucum-bodylength'- Erklärung: Dieses Binding beschränkt den Code auf die in Deutschland üblicherweise verwendete Maßeinheit 'cm'
- Abwärtskompatibel: Nicht abwärtskompatibel bei Verwendung der Maßeinheit '[in_i]'
- Aufwärtskompatibel: Ja
Körpergewicht
- Unterschied: Binding von
Observation.code
auf 'http://fhir.de/ValueSet/VitalSignDE_Body_Weight_Loinc' anstatt fixed value 'http://loinc.org|29463-7'- Erklärung: Dieses geänderte Binding und das Eliminieren des fixed values ermöglicht es, auch das Gewicht bei der Geburt spezifisch zu erfassen
- Abwärtskompatibel: Nur bei Verwendung des LOINC Codes '29463-7'
- Aufwärtskompatibel: Ja
- Unterschied: Binding von
Observation.valueQuantity.code
auf 'http://fhir.de/ValueSet/VitalSignDE_Body_Weigth_UCUM'- Erklärung: Dieses Binding beschränkt die Codes auf die in Deutschland üblicherweise verwendeten Maßeinheiten 'kg' und 'g'
- Abwärtskompatibel: Nur bei Verwendung der Codes 'kg' oder 'g'
- Aufwärtskompatibel: Ja
Körperlänge/Körpergröße
- Unterschied: Binding von
Observation.code.coding:loinc
auf 'http://fhir.de/ValueSet/VitalSignDE_Body_Height_Loinc' anstatt fixed value 'http://loinc.org|8302-2'- Erklärung: Dieses geänderte Binding und das Eliminieren des fixed values ermöglicht es, auch die Größe bei der Geburt spezifisch zu erfassen
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Nur bei Verwendung des Codes '8302-2'
- Unterschied: Binding von
Observation.valueQuantity.code
auf 'http://fhir.de/ValueSet/VitalSignDE_Body_Length_UCUM'- Erklärung: Dieses Binding beschränkt die Codes auf die in Deutschland üblicherweise verwendeten Maßeinheiten 'cm' und 'm'
- Abwärtskompatibel: Nur bei Verwendung der Codes 'cm' oder 'm'
- Aufwärtskompatibel: Ja
Körpertemperatur
- Unterschied: Pattern anstatt fixed value auf
Observation.code.coding:loinc
- Erklärung: Dies erlaubt Extensions auf dem Element
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Ja, falls keine Extension verwendet wurde
- Unterschied: Pattern 'cel' auf
Observation.valueQuantity.code
- Erklärung: Dies lässt nur die in Deutschland üblicherweise verwendete Einheit Celsius zu
- Abwärtskompatibel: Nur bei Verwendung des Codes 'cel'
- Aufwärtskompatibel: Ja
Blutdruck
- Unterschied: Pattern anstatt fixed values auf alle fixed values des Diffs
- Erklärung: Dies erlaubt Extensions auf den Elementen
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Ja, falls keine Extension verwendet wurde
- Unterschied: Zusätzlicher Slice
component:meanB
für den durchschnittlichen Blutdruck- Erklärung: Erlaubt das Erfassen des durchschnittlichen Blutdrucks, stellt aber keine Inkompatibilität zum internationalen Profil dar da der Slice nicht verpflichtend ist
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Ja
Periphere Arterielle Sauerstoffsättigung
- Unterschied: Pattern anstatt fixed values auf
Observation.code.coding
sowieObservation.valueQuantity
- Erklärung: Dies erlaubt Extensions auf den Elementen
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Ja, falls keine Extension verwendet wurde
Atemfrequenz
- Unterschied: Pattern anstatt fixed values auf
Observation.code.coding
sowieObservation.valueQuantity
- Erklärung: Dies erlaubt Extensions auf den Elementen
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Ja, falls keine Extension verwendet wurde
Herzfrequenz
- Unterschied: Pattern anstatt fixed values auf
Observation.code.coding
sowieObservation.valueQuantity
- Erklärung: Dies erlaubt Extensions auf den Elementen
- Abwärtskompatibel: Ja
- Aufwärtskompatibel: Ja, falls keine Extension verwendet wurde
Pflegegrad
Deutsches Profil zur Abbildung des Pflegegrads eines Patienten incl. Abbildung des erfolgten Antrags auf Einstufung in einen Pflegegrad.
Profil
Name: ObservationDePflegegrad (Simplifier Projekt Link)
Canonical: http://fhir.de/StructureDefinition/observation-de-pflegegrad
Beispiel:
<Observation xmlns="http://hl7.org/fhir"> <id value="Example-observation-pflegegrad" /> <meta> <profile value="http://fhir.de/StructureDefinition/observation-de-pflegegrad" /> </meta> <status value="final" /> <code> <coding> <system value="http://loinc.org" /> <code value="80391-6" /> <display value="Pflegegrad" /> </coding> </code> <subject> <reference value="Patient/example" /> </subject> <effectivePeriod> <start value="2019-01-09" /> </effectivePeriod> <valueCodeableConcept> <coding> <system value="http://fhir.de/CodeSystem/bfarm/ops" /> <version value="2019" /> <code value="9-984.6" /> <display value="Pflegebedürftig nach Pflegegrad 1" /> </coding> </valueCodeableConcept> </Observation>
Diskussion siehe hier: https://chat.fhir.org/#narrow/stream/179183-german-(d-a-ch)/topic/Observation.20(Pflegestufe)
Grad der Behinderung
Profil
Name: GradDerBehinderung (Simplifier Projekt Link)
Canonical: http://fhir.de/StructureDefinition/GradDerBehinderung
Beispiel:
<Observation xmlns="http://hl7.org/fhir"> <id value="Example-grad-der-behinderung" /> <meta> <profile value="http://fhir.de/StructureDefinition/GradDerBehinderung" /> </meta> <status value="final" /> <code> <coding> <system value="http://snomed.info/sct" /> <code value="116149007" /> </coding> </code> <subject> <reference value="Patient/example" /> </subject> <valueInteger value="100" /> <component> <code> <coding> <system value="http://fhir.de/CodeSystem/merkzeichen-de" /> <code value="G" /> </coding> </code> <valueBoolean value="true" /> </component> <component> <code> <coding> <system value="http://fhir.de/CodeSystem/merkzeichen-de" /> <code value="H" /> </coding> </code> <valueBoolean value="true" /> </component> </Observation>
EKG
Deutsches Profil zur Abbildung eines Elektrokardiogramms. Dieses Profil erfasst die gängigsten EKG Ableitungen in den Komponenten der Observation und definiert ein entsprechendes, auf LOINC basierendes, ValueSet.
Profil
Name: EkgDE (Simplifier Projekt Link)
Canonical: http://fhir.de/StructureDefinition/observation-de-ekg
Beispiel:
{ "resourceType": "Observation", "id": "Example-observation-ekg", "meta": { "profile": [ "http://fhir.de/StructureDefinition/observation-de-ekg" ] }, "code": { "coding": [ { "code": "11524-6", "system": "http://loinc.org", "display": "EKG study" }, { "code": "271921002", "system": "http://snomed.info/sct", "display": "Electrocardiogram finding (observable entity)" } ] }, "subject": { "reference": "Patient/example" }, "status": "final", "category": [ { "coding": [ { "code": "procedure", "system": "http://terminology.hl7.org/CodeSystem/observation-category" } ] } ], "device": { "reference": "Device/example" }, "effectiveDateTime": "2019-07-02", "component": [ { "code": { "coding": [ { "code": "LP7386-8", "system": "http://loinc.org", "display": "Lead I" } ] }, "valueSampledData": { "origin": { "value": 2048 }, "period": 10, "dimensions": 1, "data": "2041 2043 2037 2047 2060 2062 2051 2023 2014 2027 2034 2033 2040 2047 2047 2053 2058 2064 2059 2063 2061 2052 2053 2038 1966 1885 1884 2009 2129 2166 2137 2102 2086 2077 2067 2067 2060 2059 2062 2062 2060 2057 2045 2047 2057 2054 2042 2029 2027 2018 2007 1995 2001 2012 2024 2039 2068 2092 2111 2125 2131 2148 2137 2138 2128 2128 2115 2099 2097 2096 2101 2101 2091 2073 2076 2077 2084 2081 2088 2092 2070 2069 2074 2077 2075 2068 2064 2060 2062 2074 2075 2074 2075 2063 2058 2058 2064 2064 2070 2074 2067 2060 2062 2063 2061 2059 2048 2052 2049 2048 2051 2059 2059 2066 2077 2073" } }, { "code": { "coding": [ { "code": "LP7386-6", "system": "http://loinc.org", "display": "Lead II" } ] }, "valueSampledData": { "origin": { "value": 2048 }, "period": 10, "dimensions": 1, "data": "2041 2043 2037 2047 2060 2062 2051 2023 2014 2027 2034 2033 2040 2047 2047 2053 2058 2064 2059 2063 2061 2052 2053 2038 1966 1885 1884 2009 2129 2166 2137 2102 2086 2077 2067 2067 2060 2059 2062 2062 2060 2057 2045 2047 2057 2054 2042 2029 2027 2018 2007 1995 2001 2012 2024 2039 2068 2092 2111 2125 2131 2148 2137 2138 2128 2128 2115 2099 2097 2096 2101 2101 2091 2073 2076 2077 2084 2081 2088 2092 2070 2069 2074 2077 2075 2068 2064 2060 2062 2074 2075 2074 2075 2063 2058 2058 2064 2064 2070 2074 2067 2060 2062 2063 2061 2059 2048 2052 2049 2048 2051 2059 2059 2066 2077 2073" } }, { "code": { "coding": [ { "code": "LP7386-4", "system": "http://loinc.org", "display": "Lead III" } ] }, "valueSampledData": { "origin": { "value": 2048 }, "period": 10, "dimensions": 1, "data": "2041 2043 2037 2047 2060 2062 2051 2023 2014 2027 2034 2033 2040 2047 2047 2053 2058 2064 2059 2063 2061 2052 2053 2038 1966 1885 1884 2009 2129 2166 2137 2102 2086 2077 2067 2067 2060 2059 2062 2062 2060 2057 2045 2047 2057 2054 2042 2029 2027 2018 2007 1995 2001 2012 2024 2039 2068 2092 2111 2125 2131 2148 2137 2138 2128 2128 2115 2099 2097 2096 2101 2101 2091 2073 2076 2077 2084 2081 2088 2092 2070 2069 2074 2077 2075 2068 2064 2060 2062 2074 2075 2074 2075 2063 2058 2058 2064 2064 2070 2074 2067 2060 2062 2063 2061 2059 2048 2052 2049 2048 2051 2059 2059 2066 2077 2073" } } ] }
Skalen und Scores
Hinweis | Standard Level: Proposal! |
---|---|
Der nachfolgende Abschnitt des Implementierungsleitfadens ist vollständig, wurde jedoch noch nicht ausführlich getestet und umfassend implementiert. Der Abschnitt kann noch überarbeitet werden, falls sich die Vorschläge in der Praxis nicht bewähren sollten. Feedback, Fragen und Verbesserungsvorschläge bitte im deutschsprachigen Bereich des internationalen FHIR-Chats diskutieren. | |
Nicht-kompatible Änderungen sind nach wie vor möglich! |
Motivation
Die Repräsentation von Skalen und Scores in der Medizin stellt häufig eine Herausforderung dar. Viele Implementierer sind sich der unterschiedlichen Qualitäten verschiedener Skalen-Systeme nicht bewusst. FHIR lässt viele Freiheitsgrade, Skalare Werte z.B. in Observation-Ressourcen abzubilden (Als Integer, Decimal, CodeableConcept…) und damit auch viel Potential für inkompatible Implementierungen oder semantisch falsche oder unzureichende Repräsentationen.
Diese Seite soll einen Best Practice Leitfaden und eine Entscheidungshilfe für die korrekte Repräsentation von Scores und Skalen bieten, ohne jedes bekannte Assessment-Tool einzeln zu betrachten und zu profilieren. Stattdessen werden die Skalen und Scores anhand ihrer Eigenschaften unterschieden und kategorisiert.
Skalen
Quelle für Definitionen: Wikipedia - Skalenniveau
Nominalskala
Definition: Für verschiedene Objekte oder Erscheinungen wird mithilfe eines Vergleichs lediglich eine Entscheidung über Gleichheit oder Ungleichheit der Merkmalsausprägung getroffen (z. B. x ≠ y ≠ z). Es handelt sich also nur um qualitative Merkmale (z. B. Blutgruppen oder Geschlecht). Es gilt die Gleichheitsrelation, also kann man entscheiden, ob zwei Ausprägungen gleich oder ungleich sind. Die Werte können aber nicht der Größe nach sortiert werden, im Sinne von „ist größer als“ oder „besser als“.
Messbare Eigenschaft: Häufigkeit
Beispiele: Blutgruppe
Empfehlungen für Abbildung als Observation:
'Observation.code': Wahl eines (LOINC-/SNOMED-)Codes für die Beschreibung der verwendeten Skala
'Observation.value[x]': Datentyp CodeableConcept mit einem Binding an ein (SNOMED-/LOINC-)ValueSet, das die Skalenwerte repräsentiert und deren Bedeutung definiert.
Beispiele in FHIR:
Ordinalskala
Definition: Für ein ordinal skalierbares Merkmal bestehen Rangordnungen der Art „größer“, „kleiner“, „mehr“, „weniger“, „stärker“, „schwächer“ zwischen je zwei unterschiedlichen Merkmalswerten (z. B. x > y > z). Über die Abstände zwischen diesen benachbarten Urteilsklassen ist jedoch nichts ausgesagt. Meist handelt es sich um qualitative Merkmale, wie z. B. der in der Frage gesuchte „höchste erreichbare Bildungsabschluss“. Ein weiteres Beispiel sind die Schulnoten: Note 1 ist besser als Note 2, es ist aber ausgesprochen zweifelhaft, ob der Unterschied zwischen Note 1 und 2 gleich groß ist wie der zwischen Note 3 und Note 4.
Messbare Eigenschaft: Häufigkeit, Rangfolge
Beispiele: Bristol Stool Scale
Empfehlungen für Abbildung als Observation:
'Observation.code': Wahl eines (LOINC-/SNOMED-)Codes für die Beschreibung der verwendeten Skala
'Observation.value[x]': Datentyp CodeableConcept mit einem Binding an ein ValueSet, das die Skalenwerte repräsentiert und deren Bedeutung definiert. Verwendung der ordinal-Value-Extension bei der Definition des CodeSystems (bzw. des CodeSystem-Supplements) oder des ValueSets, wenn die Rangfolge für die Auswertung relevant ist.
Beispiele in FHIR:
- Beispiel für ein ValueSet mit ordinal-value-Extension: Exsudatmenge
Kardinalskala
Definition:
- Intervallskala: Die Reihenfolge der Merkmalswerte ist festgelegt, und die Größe des Abstandes zwischen zwei Werten lässt sich sachlich begründen. Als metrische Skala macht sie Aussagen über den Betrag der Unterschiede zwischen zwei Klassen. Die Ungleichheit der Merkmalswerte lässt sich durch Differenzbildung quantifizieren (z. B. beim Datum könnte das Ergebnis lauten „drei Jahre früher“). Der Nullpunkt („nach Christi Geburt“) und der Abstand der Klassen (Jahre oder Monde) sind jedoch willkürlich festgelegt. Hinweis: Bei den metrischen Skalen unterscheidet man diskrete und kontinuierliche Merkmale.
- Verhältnisskala: Die Verhältnisskala besitzt das höchste Skalenniveau. Bei ihr handelt es sich ebenfalls um eine metrische Skala, im Unterschied zur Intervallskala existiert jedoch ein absoluter Nullpunkt (z. B. Blutdruck, absolute Temperatur, Lebensalter, Längenmaße). Einzig bei diesem Skalenniveau sind Multiplikation und Division sinnvoll und erlaubt. Verhältnisse von Merkmalswerten dürfen also gebildet werden (z. B. x = y · z).
Messbare Eigenschaft:: Häufigkeit, Rangfolge, Abstand, (Nullpunkt)
Beispiele: Körpertemperatur, Körpergewicht, BMI
Empfehlungen für Abbildung als Observation:
'Observation.code': Wahl eines (LOINC-/SNOMED-)Codes für die Art der Beobachtung, unabhängig von der Maßeinheit
'Observation.value[x]': Datentyp Quantity mit Angabe der UCUM-codierten Maßeinheit
Beispiele in FHIR:
Scores
Unter einem Score versteht man in der Medizin einen Punktwert, der im Rahmen eines klinischen Assessments für einen Patienten anhand von vielen verschiedenen diagnostischen Parametern (z.B. Alter, Vorerkrankungen, Nierenfunktion, Lungenfunktion, Laborwerte, usw.) bestimmt wird.
Quelle: https://flexikon.doccheck.com/de/Score
Beispiele:
Empfehlungen für Abbildung als Observation:
'Observation.code': Wahl eines (LOINC-/SNOMED-)Codes für die Art des verwendeten Assessment-Tools
'Observation.value[x]': Datentyp Quantity mit der UCUM-Default Maßeinheit “1” 'Observation.valueQuantity.system: =http://unitsofmeasure.org 'Observation.valueQuantity.code: =1 'Observation.valueQuantity.unit': Hier wird der gewünschte Display-Wert (“Punktwert” oder “Punkte”) gesetzt. 'Observation.referenceRange: da die Interpretation eines Scores nicht selbsterklärend ist, sollten die Referenzbereiche und deren Interpretation in den Instanzen stets mit angegeben werden.
Beispiele in FHIR:
- Glasgow Coma Scale
- APGAR-Score (Anm: bei den Einzelkomponenten handelt es sich offenbar um Ordinalskalen, lediglich der Gesamtwert ist ein Score!)
- Beispiel für die Angabe der Referenzbereiche des IBS-SSS (Irritable Bowel Syndrome Severity Scoring System):
<referenceRange> <low> <value value="0" /> </low> <high> <value value="74" /> </high> <text value="Sehr milde Symptome" /> </referenceRange> <referenceRange> <low> <value value="75" /> </low> <high> <value value="174" /> </high> <text value="Milde Symptome" /> </referenceRange> <referenceRange> <low> <value value="175" /> </low> <high> <value value="299" /> </high> <text value="Moderate Symptome" /> </referenceRange> <referenceRange> <low> <value value="300" /> </low> <high> <value value="500" /> </high> <text value="Schwere Symptome" /> </referenceRange>