Resource

https://www.hl7.org/fhir/observation.html


Profile examples


Relevant Confluence pages


Resource – concept model mapping

Yellow rows denote SNOMED CT attributes where there is no specific FHIR counterpart.


Resource element (CodeableConcept)FHIR ValueSetBinding StrengthSNOMED CT attributeSNOMED CT rangeComments

Observation.category





Is there a use case for providing SNOMED mappings as an alternative to the preferred set of 9?

Unlikely that will be able to draft a 'tidy' mapping to the exact same set of 9 categories, such that if Observation.code, .method, .bodySite and .type are all known then .category can be computed.

2019-04-16: recommend not to use this, but would be allowed. Category can be determined from the code.

Observation.code


https://www.hl7.org/fhir/valueset-observation-codes.html#expansion



<<363787002|Observable entity|

OR << 386053000|Evaluation procedure|

AP: What happens to the findings like 'pulmonary oedema' from the findings hierarchy? Is that only a Condition, or can it also be an Observation? Many clinical condition labels are synonyms for the primary clinical symptom or observation that they cause. And many genuine symptoms are certainly observations (that a phenomenon exists), not pathologies

DK: Findings are not the "question" component of the question-answer model - they're a conflation of both question AND answer

AP: But where the conflated answer is typically always "is present"

UNRESOLVED....revisit

Observation.Value.valueCodeableConcept


<<362981000|Qualifier value|

MINUS <valueset for Observation.Interpretation> ?

DK thought binding was overly constrained 28May.

LB: why not also members from <<441742003 Evaluation finding

JC: Because they decompose (in theory) into an Observable+Qualifier pair

Observation.dataAbsentReason

DataAbsentReason (Extensible)

HL7 CodeDefinitionSNOMED CT
unknownThe value is expected to exist but is not known.
  asked-unknownThe source was asked but does not know the value.
  temp-unknown

  not-askedThe workflow didn't lead to this value being known.
  asked-declinedThe source was asked but declined to answer.
maskedThe information is not available due to security, privacy or related reasons.
not-applicableThere is no proper value for this element (e.g. last menstrual period for a male).
unsupportedThe source system wasn't capable of supporting this element.
as-textThe content of the data is represented in the resource narrative.
errorSome system or workflow process error means that the information is not available.
  not-a-numberThe numeric value is undefined or unrepresentable due to a floating point processing error.
  negative-infinityThe numeric value is excessively low and unrepresentable due to a floating point processing error.
  positive-infinityThe numeric value is excessively high and unrepresentable due to a floating point processing error.
not-performedThe value is not available because the observation procedure (test, etc.) was not performed.
not-permittedThe value is not permitted in this context (e.g. due to profiles, or the base data types).




2019-04-16: seems to be out of scope of SNOMED CT
Observation.interpretation

Observation Interpretation Codes (Extensible)

HL7 Code (V3 code system, now harmonized between all HL7 code systems)
HL7 Code Display
SNOMED CT

_GeneticObservationInterpretation



CARCarrier

29679002|Carrier of disorder|

(28May this relates to genetic mutation, so not quite appropriate as disorder may not manifest)

_ObservationInterpretationChange



  BBetter385425000|Improved|
  DSignificant change down442474009|Decreased relative to previous|
  USignificant change up442387004|Increased relative to previous|
  WWorse231877006|Worse|

_ObservationInterpretationExceptions



  <

Off scale low


  >Off scale high
  IEInsufficient evidence

_ObservationInterpretationNormality



  A

Abnormal

263654008|Abnormal|

    AACritical abnormal
      HHCritical high
      LLCritical low
    HHigh371879000 | Abnormally high (qualifier value) |
      HUSignificantly high260360000 | Very high (qualifier value) |
    LLow371880002 | Abnormally low (qualifier value) |

      LU

Significantly low260362008 | Very low (qualifier value) |
  NNormal

17621005|Normal|

_ObservationInterpretationSusceptibility



  I

Intermediate

264841006|Intermediately susceptible|

  NCL

No CLSI defined breakpoint
  NSNon-susceptible
  RResistant30714006|Resistant|
    SYN-RSynergy - resistant
  SSusceptible131196009|Susceptible|
    SDDSusceptible-dose dependent

    SYN-S

Synergy - susceptible
EXoutside threshold394844007|Outside reference range|
  HXabove high threshold281302008|Above reference range|
  LXbelow low threshold281300000|Below reference range|
ObservationInterpretationDetection

 IND

Indeterminate82334004|Indeterminate|
    EEquivocal42425007|Equivocal|
  NEGNegative260385009|Negative|

    ND

Not detected260415000|Not detected|
  POSPositive10828004|Positive|
    DETDetected260373001|Detected|
ObservationInterpretationExpectation

  EXPExpected
  UNEUnexpected
ReactivityObservationInterpretation

  NRNon-reactive131194007|Non-Reactive|
  RRReactive11214006|Reactive|
    WRWeakly reactive117006002|Weakly-reactive|


HL7 valueset (n=48) is extensible, so could add new expressivity as SNOMED codes if there were any gaps in existing list ... but that existing list is already relatively matured and 'metalled' by use, so that seem an unlikely requirement. Many of the existing members of the HL7 valuelist have obvious SNOMED equivalents, so there is scope for a mapping rather than a completely separate SNOMED-only valuelist. Mapping exercise may also reveal some holes in existing SNOMED expressivity.

2019-04-16: gaps could be filled with new SNOMED CT content, e.g. _ObservationInterpretationNormality

2019-06-11: filling Significant low/high,

  • Daniel Karlsson create requests for Critical abnormal, Critical high, Critical low, Off scale low, Off scale high, Non-susceptible, Synergy - resistant, Synergy - susceptible, Susceptible-dose dependent, Expected, Unexpected.
  • Rob Hausam ask for clarification from HL7 Orders and Observations Work Group about this: Insufficient evidence, No CLSI defined breakpoint (a generic "no breakpoint" concept instead?),
Observation.bodySite

SNOMED CT Body Structures (Example)

Similar to Condition.bodySite, use values from << 442083009 (Anatomical or acquired body structure) unless the body site can be determined from Observation.code eg 433776001 |Temperature of toe (observable entity)| uses Inheres In → Toe Structure. Historical issue with difficulty representing multiple body sites (eg primary and secondary tumor sites). Note that Condition resource allows 0..* bodysites.


2019-06-11: Overlaps with | direct site | of the Observables concept model.


Daniel Karlsson can you suggest an observable that uses two body sites?

Observation.method

Observation Methods (Example)

Current HL7 list specifies: < 272394005 (Technique) OR < 129264002 (Action) OR < 386053000 (Patient evaluation procedure)



HL7 "Only used if not implicit in code for Observation.code"


Note that Observables model currently using Technique (attribute) taking a technique qualifier. Actions are used as the value for a method in a procedure so is less appropriate here. JR suggested that this field should be restricted to < 272394005 (Technique) to address use case of concerns of a Pathology department.

Could a patient evaluation procedure be decorated with a technique? Currently only used with observables.

TODO - Link to Observables concept model

How would we link resources together so that the Observation could reference the actual procedure undertaken to make the determination? Likely via the "basedOn" linked to the ServiceRequest.

Similar problem to bodysite with conflict if Technique is used and does not align with Observation.code

Observation.referenceRange.type

Observation Reference Range Meaning Codes (Preferred)


LvlCodeDisplaySNOMED CT
0typeType
1  normalNormal Range17621005|Normal|
1  recommendedRecommended Range
1  treatmentTreatment Range
1  therapeuticTherapeutic Desired Level262202000|Therapeutic|
2    prePre Therapeutic Desired Level
2    postPost Therapeutic Desired Level
0endocrineEndocrine
1  pre-pubertyPre-Puberty

NB 251818004|Prepubertal - no pubic hair (finding)|

SNOMED Code(s) needed below 307158003|Temporal periods relating to physiological functions| ?

(Prepubescent, peripubescent, pubescent, postpubertal) ??

1  follicularFollicular StageSNOMED Code needed below 263845008|Premenstrual| ?
1  midcycleMidCycle

NB 37733003|Midstage| (has synonym: midcycle)

SNOMED Code needed below 263845008|Premenstrual| ?

1  lutealLutealSNOMED Code needed below 263845008|Premenstrual| ?
1  postmenopausalPost-Menopause307429007|After menopause|


The value set is maturity=0 and binding strength is Preferred, so alternatively we can develop our own SNOMED CT value set from scratch.

However, the added value of using SNOMED CT here is... limited.

Observation.referenceRange.appliesTo

Observation Reference Range Applies To Codes (Example)

<<415229000|Racial group (racial group)| OR <<248153007|Male| OR <<248152002|Female| OR <<77386006|Pregnant|

Likely, missing race/ethnicity codes will not be added to SNOMED CT
Observation.component.codeLOINC Codes (Example)See above.
Observation.component.value[x].valueCodeableConcept

Observation.component.dataAbsentReasonDataAbsentReason (Extensible)
Observation.component.interpretationObservation Interpretation Codes (Extensible)