slanted W3C logo
Cover page images (keys)

Semantic Web Infrastructure for Health Informatics

SWAT4LS
07 Dec, 2015

Introduction

Data Value

Data utility depends on whether it

Data dimensions

Size/Structure (false) dichotomy

image/svg+xml StructuredData BigData MendelianDiseases EverythingElse Structure Size

Clinical Data

Some day, these will be views on the same data... we hope.

Fiscal Pressure

What to want

peeking under the horizon

What's needed for clinical practice

Meaningful Use Objectives:

What's needed for research over populations

treatment research

epidemiology

efficacy…

practice data +

to build

heat map

Representation

Clinical care:

Clinical trials:

inclusion/exclusion criteria

exclusion

protocol specifies a small number of specific acquisitions with special terminology codes.

Data scale

Growing data size:

Growing data vectors:

Policy

Clinical care

Clinical trials

How's that going?

Clinical care

Too early to tell.

263870008 (SNOMED code for Sequestration)

Clinical trials

Around 2009, CDISC members identified a need for intra and inter pharma sharing of trial metadata:

They were going to call it SHARE.

4 years later,

Semantic standards:

Reduce the n2 pressure.

dense network

Clinical information and terminology models

Clinical Model

Example detailed clinical observation:

anaphylaxis grade 4/5 severity weals(hives) evidence acuterespiratorydistress evidence lowbloodpressure evidence

Apparent solution: giant ontology

Information Model and Terminology Model

"Information" model sounds presumptuous;
it's just a term of art.

Separate network of relationship from the values

Info model still holds relationships semantics.

Coded Relationships

Further convention: RIM

Structural attributes, e.g. mood:

 considered, planned, accomplished

Factors commonalities in e.g. Prescription vs. Injection.

Example RMIM using the conventional colors

The RIM Graph

Our earlier example is just Acts and ActRelationships. The rimITS provides a straightforward XML representation of RIM:

RIM ITS XML

<rim-graph xmlns="urn:hl7-org:v3-rim"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0229">
  <content xsi:type="Observation" classCode="OBS" moodCode="EVN">
    <code code="ASSERTION" displayName="Assertion"
       codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
    <value xsi:type="CD" code="241938005" displayName="penicillin-induced anaphylaxis (disorder)"
       codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT"/>
 
    <inboundRelationship typeCode="SUBJ">
      <source xsi:type="Observation" classCode="OBS" moodCode="EVN">
        <code code="SEV" displayName="Severity Observation"
           codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
        <value xsi:type="CD" code="423132009"
           codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT"/>
      </source>
    </inboundRelationship>
 
    <outboundRelationship typeCode="EVID">
      <target xsi:type="Observation" classCode="OBS" moodCode="EVN">
        <code code="ASSERTION" displayName="Assertion"
           codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
        <value xsi:type="CD" code="247472004" displayName="weal (disorder)"
           codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT"/>
      </target>
    </outboundRelationship>
 
    <outboundRelationship typeCode="EVID">
      <target xsi:type="Observation" classCode="OBS" moodCode="EVN">
        <code code="ASSERTION" displayName="Assertion"
           codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
        <value xsi:type="CD" code="373895009" displayName="acute respiratory distress"
           codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT"/>
      </target>
    </outboundRelationship>
 
    <outboundRelationship typeCode="EVID">
      <target xsi:type="Observation" classCode="OBS" moodCode="EVN">
        <code code="ASSERTION" displayName="Assertion"
           codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7 ActCode"/>
        <value xsi:type="CD" code="45007003" displayName="low blood pressure (disorder)"
           codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT"/>
      </target>
    </outboundRelationship>
  </content>
</rim-graph>
2.16.840.. SNOMED 2013-01-01 241938005 penicillin-induced anaphylaxis 2.16.840.. SNOMED 2013-01-01 423132009 Grade 4/5 2.16.840.. HL7 2013-01-01 SEV Severity Act.code 2.16.840.. SNOMED 2013-01-01 247472004 Weals (Hives) 2.16.840.. HL7 2013-01-01 ASSERTION Assertion Act.code 2.16.840.. SNOMED 2013-01-01 373895009 Respiratory Distress 2.16.840.. HL7 2013-01-01 ASSERTION Assertion Act.code 2.16.840.. SNOMED 2013-01-01 45007003 Low Blood Pressure 2.16.840.. HL7 2013-01-01 ASSERTION Assertion Act.code

Clinical Informatics: information model

General-purpose graph structure for medical information:

Tells you where to write but not how to write:

information model (RIM)

image/svg+xml Diagnosis Evidence Evidence Rectord Target IsabellaJones NEXTGENMedicalPractice PATIENTRole recordTarget player scoper ClinicalDocument Diagnosis 282291009 20130605 20130602 SNOMED Encounter REFR DRIV DRIV 20130131 inpatient

Clinical Informatics: terminology model

Taxonomies used for:

terminology model

image/svg+xml Diagnosis 282291009

Clinical Informatics: connected models

image/svg+xml Diagnosis Evidence Evidence Rectord Target IsabellaJones NEXTGENMedicalPractice PATIENTRole recordTarget player scoper ClinicalDocument Diagnosis 282291009 20130605 20130602 SNOMED Encounter REFR DRIV DRIV 20130131 inpatient Information Model Terminology Model Diagnosis 282291009

info model - C-CDA

	    <entry typeCode="DRIV">
	      <act classCode="ACT" moodCode="EVN">
		<templateId root="2.16.840.1.113883.10.20.22.4.30"/>
		<id root="69724b9d-5e77-402f-a5b6-3379dde3e8a9"/>
		<code code="48765-2" displayName="ALLERGIES, ADVERSE REACTIONS, ALERTS" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
		<statusCode code="active"/>
		<effectiveTime>
		  <low value="20120806"/>
		</effectiveTime>
		<entryRelationship typeCode="SUBJ">
		  <observation classCode="OBS" moodCode="EVN">
		    <templateId root="2.16.840.1.113883.10.20.22.4.7"/>
		    <id root="69724b9d-5e77-402f-a5b6-3379dde3e8a9"/>
		    <code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7ActCode"/>
		    <statusCode code="completed"/>
		    <effectiveTime>
		      <low value="20120806"/>
		      <high nullFlavor="UNK"/>
		    </effectiveTime>
		    <value code="416098002" displayName="drug allergy" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" xsi:type="CD"/>
		    <participant typeCode="CSM">
		      <participantRole classCode="MANU">
			<playingEntity classCode="MMAT">
			  <code code="2670" displayName="Codeine" codeSystem="2.16.840.1.113883.6.88" codeSystemName="RxNorm">
			    <originalText>
			      <reference value="#AllergyDescription_0"/>
			    </originalText>
			    <translation code="1550" displayName="Codeine" codeSystem="2.16.840.1.113883.4.65" codeSystemName="FDB Hierarchical Ingredient Code Sequence Number (HIC_SEQN)"/>
			  </code>
			  <name>Codeine                                           </name>
			</playingEntity>
		      </participantRole>
		    </participant>
		    <entryRelationship typeCode="MFST" inversionInd="true">
		      <observation classCode="OBS" moodCode="EVN">
			<templateId root="2.16.840.1.113883.10.20.22.4.9"/>
			<id root="69724b9d-5e77-402f-a5b6-3379dde3e8a9"/>
			<code code="ASSERTION" codeSystem="2.16.840.1.113883.5.4" codeSystemName="HL7ActCode"/>
			<text>
			  <reference value="#AllergyReaction_0"/>
			</text>
			<statusCode code="completed"/>
			<effectiveTime>
			  <low value="20120806"/>
			</effectiveTime>
			<value xsi:type="CD" nullFlavor="UNK">
			  <originalText>
			    <reference value="#AllergyReaction_0"/>
			  </originalText>
			</value>
		      </observation>
		    </entryRelationship>
		    <entryRelationship typeCode="SUBJ" inversionInd="true">
		      <observation classCode="OBS" moodCode="EVN">
			<templateId root="2.16.840.1.113883.10.20.22.4.28"/>
			<code code="33999-4" displayName="STATUS" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
			<text>
			  <reference value="#AllergyStatus_0"/>
			</text>
			<statusCode code="completed"/>
			<value code="55561003" displayName="active" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" xsi:type="CE"/>
		      </observation>
		    </entryRelationship>
		    <entryRelationship typeCode="REFR">
		      <act classCode="ACT" moodCode="EVN">
			<templateId root="1.3.6.1.4.1.19376.1.5.3.1.4.4.1"/>
			<id extension="a778b36c-2a08-4f41-bc2a-3f29293c4e3c" root="2.201"/>
			<code nullFlavor="UNK"/>
		      </act>
		    </entryRelationship>
		  </observation>
		</entryRelationship>
	      </act>
	    </entry>
    

C-CDA in RDF

# Allergy Problem Act
[ a rim:ActRelationship ;
    rim:ActRelationship.typeCode [ hl7:coding [ dt:CDCoding.code "DRIV" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:ActRelationship.source _:section0 ;
    rim:ActRelationship.target _:section0_allergyProblemAct0
] .
_:section0_allergyProblemAct0 a rim:Observation ;
    rim:Act.id [ a dt:DSET_II ;
        dt:COLL.item [ dt:II.root "69724b9d-5e77-402f-a5b6-3379dde3e8a9" ]
    ] ;
    rim:Act.classCode [ hl7:coding [ dt:CDCoding.code "ACT" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Act.moodCode [ hl7:coding [ dt:CDCoding.code "EVN" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.1001" ] ] ;
    rim:Act.effectiveTime-low "2012-08-06"^^xsd:date ;
    rim:Act.statusCode "active" ;
  
    rim:Act.code [
        hl7:coding [ dt:CDCoding.code "48765-2" ; dt:CDCoding.codeSystem "2.16.840.1.113883.6.1" ;
                     dt:CDCoding.displayName "ALLERGIES, ADVERSE REACTIONS, ALERTS" ; dt:CDCoding.codeSystemName "LOINC" ]
    ];
    rim:Observation.value [ 
    ] .# SUBJ
[ a rim:ActRelationship ;
    rim:ActRelationship.typeCode [ hl7:coding [ dt:CDCoding.code "REFR" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:ActRelationship.source _:section0_allergyProblemAct0 ;
    rim:ActRelationship.target _:section0_allergyProblemAct0_entryRelationship0
] .
_:section0_allergyProblemAct0_entryRelationship0 a rim:Observation ;
    rim:Act.id [ a dt:DSET_II ;
        dt:COLL.item [ dt:II.root "69724b9d-5e77-402f-a5b6-3379dde3e8a9" ]
    ] ;
    rim:Act.classCode [ hl7:coding [ dt:CDCoding.code "OBS" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.6" ] ] ;
    rim:Act.moodCode [ hl7:coding [ dt:CDCoding.code "EVN" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.1001" ] ] ;
    rim:Act.effectiveTime-low "2012-08-06"^^xsd:date ;
    rim:Act.statusCode "completed" ;
  
    rim:Act.code [
        hl7:coding [ dt:CDCoding.code "ASSERTION" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.4" ;
                     dt:CDCoding.codeSystemName "HL7ActCode" ]
    ];
    rim:Observation.value [ a dt:PQ ;
        dt:CD.code [ a dt:CD ;
            hl7:coding [ rim:CDCoding.code "416098002" ; rim:CDCoding.codeSystem "2.16.840.1.113883.6.96" ;
                         rim:CDCoding.displayName "drug allergy" ; rim:CDCoding.codeSystemName "SNOMED CT" ]
        ]
    ] .# Participant
[ a rim:Participation ;
    rim:Participation.typeCode [ hl7:coding [ dt:CDCoding.code "CSM" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Participation.act _:section0_allergyProblemAct0_entryRelationship0 ;
    rim:Participation.role _:section0_allergyProblemAct0_entryRelationship0_participant0
] .
_:section0_allergyProblemAct0_entryRelationship0_participant0 a rim:Role ;

    rim:Role.player _:section0_allergyProblemAct0_entryRelationship0_participant0_player ;
    rim:Role.scoper _:section0_allergyProblemAct0_entryRelationship0_participant0_scoper ;
    rim:Role.classCode [ hl7:coding [ dt:CDCoding.code "ROL" ; dt:CDCoding.codeSystem "???" ] ] ;
.
_:section0_allergyProblemAct0_entryRelationship0_participant0_player a rim:Person ;
    rim:Entity.classCode [ hl7:coding [ dt:CDCoding.code "PSN" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Entity.determinerCode [ hl7:coding [ dt:CDCoding.code "INSTANCE" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Entity.name [ a dt:COLL_EN ;
    ];
 ;

 ;

    

info model - BRIDG

RDF representation uses bridg:Class.relationship.Class notation
to capture relationships between classes (UML boxes).

Navigated as UML diagrams and "instance" diagrams

or...

info model - BRIDG

Portable BRIDG Representation

Terminological Resources

Terminology Serves a variety of purposes:

  1. Code List - a set of shared identifiers. Example: ISO 3166 Country Codes
  2. Dictionary - names (or codes) and accompanying definition(s).
  3. Lexicon - vocabulary of a particular practice or field. Also known as a controlled vocabulary. SNOMED-CT is sometimes used in this role.
  4. Classification System - A mutually exclusive collection of "buckets" for categorizing or classifying instances. ICD-10 is an example.
  5. Knowledge Organization System - A system for navigating various knowledge resources (documents, journal articles, terminologies, etc. MeSH (Medical Subject Headings) is a classic example. The Unified Medical Language System (UMLS) is a system that organizes medical terminologies
  6. Ontology (in the narrow sense) - a formal naming and definition of the types, properties, and interrelationships of the entities that really or fundamentally exist for a particular domain of discourse. It is thus a practical application of philosophical ontology, with a taxonomy. Examples include:

Terminological Resources - So What?

The presence of a terminology (aka. "Ontology" when used in the broader sense) means little or nothing. You've got some codes (URI's) that you can embed in data or link to, but unless you know the scope and purpose of the terminology, it is useless at best, and can actually be quite dangerous.

As an example, scroll to the bottom of: the MeSH definition of Neoplasms. Note that (implicitly) Neoplastic process, Precancerous conditions and Neoplastic pregnancy complications are all "narrower" than Neoplasms. This (obviously) does not mean, however, that an instance of a Precancerous condition is an instance of a Neoplasm


Going in the other direction, look at the definition of Appendicitis in SNOMED CT. The (implicit) assertion is that:

sctfsn:Appendicitis rdfs:subClassOf sctfsn:Disorder_of_appendix.

states that any instance of Appendicitis is also necessarily an instance of a Disorder of Appendix.

The asssertion:
sctfsn:Appendicitis skos:broader sctfsn:Disorder_of_appendix.

only makes a very fuzzy assertion that "conceptually" whenever you think of Appendicitis, you should probably also be thinking of Disorder of Appendix.

Similarly, if you try to use a classification system such as ICD-10 to infer knowledge about the domain of medicine, you will find yourself reaching some rather startling conclusions, such as the "fact" that Neonatal diabetes mellitus is not a type of Diabetes Mellitus. The correct interpretation can be nothing more than:

The World Health Organization has determined that instances of Neonatal diabetes will be categorized as Transitory disorders of carbohydrate metabolism specific to fetus and newborn

Terminological Resources in Medicine

SNOMED CT - Systemized Nomenclature of Med - Clinical Terms

SNOMED CT Identifiers

SNOMED CT URI's do not currently directly dereference. They can be used, however, using the Common Terminology Services 2 (CTS2) REST identifiers:

Short history of SNOMED CT

SNOMED CT Pluses and minuses

SNOMED CT in OWL

  1. Download the SNOMED CT RF2 Distribution. If you live in the US, it can be acquired from the NLM UMLS Site. Theoretically, it is also available from the IHTSDO Site, although it is not obvious where one would go.
  2. Unzip the distro.
  3. Change to the Resources/StatedRelationshipsToOwlKRSS directory
  4. Run: perl tls2_StatedRelationshipsToOwlKRSS_INT_20150731.pl OWLF ../../Snapshot/. (Note that this does Stated relationships. Other options are possible...)
  5. snomedct_owlf.owl contains the result
Live demo

terminology and physical quantities

clinical data to RDF

FHIR XML to RDF

  1. use a generic XSLT service
  2. with the XSLT and the generated XML definitions
  3. and some example instance data
  4. or hack the URL like http://services.w3.org/xslt?xmlfile=https%3A%2F%2Fhl7-fhir.github.io%2Fobservation-example.xml&docParam=http%3A%2F%2Fsome.example%2Ffire%2Fserver%2F&contained=ref&reference=ref&literals=nest&content-type=text%2Fturtle&xslfile=https%3A%2F%2Fraw.githubusercontent.com%2Fw3c%2Fhcls-fhir-rdf%2Fmaster%2Fxsl%2Ftransform.xsl&fhirdefs=https%3A%2F%2Fraw.githubusercontent.com%2Fw3c%2Fhcls-fhir-rdf%2Fmaster%2Fdata%2Fdefinitions.xml

or use a specialized form

FHIR/XML file:
base URI:
Contained: Refrerences: Literals: content-type:
XSLT (you probably don't need to change this):
defs file (you probably don't need to change this):

or

C-CDA XML to RDF

similar to FHIR, but using the CDA-Turtle XSLT (see online example)

_:section0_allergyProblemAct0 a rim:Observation ;
    rim:Act.id [ a dt:DSET_II ;
        dt:COLL.item [ dt:II.root "69724b9d-5e77-402f-a5b6-3379dde3e8a9" ]
    ] ;
    rim:Act.classCode [ hl7:coding [ dt:CDCoding.code "ACT" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Act.moodCode [ hl7:coding [ dt:CDCoding.code "EVN" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.1001" ] ] ;
    rim:Act.effectiveTime-low "2012-08-06"^^xsd:date ;
    rim:Act.statusCode "active" ;
  
    rim:Act.code [
        hl7:coding [ dt:CDCoding.code "48765-2" ; dt:CDCoding.codeSystem "2.16.840.1.113883.6.1" ;
                     dt:CDCoding.displayName "ALLERGIES, ADVERSE REACTIONS, ALERTS" ; dt:CDCoding.codeSystemName "LOINC" ]
    ];
    rim:Observation.value [ 
    ] .# SUBJ
[ a rim:ActRelationship ;
    rim:ActRelationship.typeCode [ hl7:coding [ dt:CDCoding.code "REFR" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:ActRelationship.source _:section0_allergyProblemAct0 ;
    rim:ActRelationship.target _:section0_allergyProblemAct0_entryRelationship0
] .
_:section0_allergyProblemAct0_entryRelationship0 a rim:Observation ;
    rim:Act.id [ a dt:DSET_II ;
        dt:COLL.item [ dt:II.root "69724b9d-5e77-402f-a5b6-3379dde3e8a9" ]
    ] ;
    rim:Act.classCode [ hl7:coding [ dt:CDCoding.code "OBS" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.6" ] ] ;
    rim:Act.moodCode [ hl7:coding [ dt:CDCoding.code "EVN" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.1001" ] ] ;
    rim:Act.effectiveTime-low "2012-08-06"^^xsd:date ;
    rim:Act.statusCode "completed" ;
  
    rim:Act.code [
        hl7:coding [ dt:CDCoding.code "ASSERTION" ; dt:CDCoding.codeSystem "2.16.840.1.113883.5.4" ;
                     dt:CDCoding.codeSystemName "HL7ActCode" ]
    ];
    rim:Observation.value [ a dt:PQ ;
        dt:CD.code [ a dt:CD ;
            hl7:coding [ rim:CDCoding.code "416098002" ; rim:CDCoding.codeSystem "2.16.840.1.113883.6.96" ;
                         rim:CDCoding.displayName "drug allergy" ; rim:CDCoding.codeSystemName "SNOMED CT" ]
        ]
    ] .# Participant
[ a rim:Participation ;
    rim:Participation.typeCode [ hl7:coding [ dt:CDCoding.code "CSM" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Participation.act _:section0_allergyProblemAct0_entryRelationship0 ;
    rim:Participation.role _:section0_allergyProblemAct0_entryRelationship0_participant0
] .
_:section0_allergyProblemAct0_entryRelationship0_participant0 a rim:Role ;

    rim:Role.player _:section0_allergyProblemAct0_entryRelationship0_participant0_player ;
    rim:Role.scoper _:section0_allergyProblemAct0_entryRelationship0_participant0_scoper ;
    rim:Role.classCode [ hl7:coding [ dt:CDCoding.code "ROL" ; dt:CDCoding.codeSystem "???" ] ] ;
.
_:section0_allergyProblemAct0_entryRelationship0_participant0_player a rim:Person ;
    rim:Entity.classCode [ hl7:coding [ dt:CDCoding.code "PSN" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Entity.determinerCode [ hl7:coding [ dt:CDCoding.code "INSTANCE" ; dt:CDCoding.codeSystem "???" ] ] ;
    rim:Entity.name [ a dt:COLL_EN ;
    ].

O-RIM

CDA RMIM

C-CDA RMIM

FHIR Profiles

Observation Profile

NameFlagsCard.Type
.. Observation IDomainResource
... identifier 0..*Identifier
... status ?! Σ1..1code
... category 0..1CodeableConcept
... code Σ1..1CodeableConcept
... subject Σ0..1Reference(Patient | Group | Device | Location)
... encounter 0..1Reference(Encounter)
... effective[x] Σ0..1
.... effectiveDateTimedateTime
.... effectivePeriodPeriod
... issued Σ0..1instant
... performer Σ0..*Reference(Practitioner | Organization | Patient | RelatedPerson)
... value[x] Σ0..1
.... valueQuantityQuantity
.... valueCodeableConceptCodeableConcept
.... valueStringstring
.... valueRangeRange
.... valueRatioRatio
.... valueSampledDataSampledData
.... valueAttachmentAttachment
.... valueTimetime
.... valueDateTimedateTime
.... valuePeriodPeriod
... dataAbsentReason I0..1CodeableConcept
... interpretation 0..1CodeableConcept
... comments 0..1string
... bodySite 0..1CodeableConcept
... method 0..1CodeableConcept
... specimen 0..1Reference(Specimen)
... device 0..1Reference(Device | DeviceMetric)
... referenceRange I0..*BackboneElement
.... low I0..1SimpleQuantity
.... high I0..1SimpleQuantity
.... meaning 0..1CodeableConcept
.... age 0..1Range
.... text 0..1string
... related Σ0..*BackboneElement
.... type 0..1code
.... target 1..1Reference(Observation | QuestionnaireResponse)
... component Σ0..*BackboneElement
.... code Σ I1..1CodeableConcept
.... value[x] Σ0..1
..... valueQuantityQuantity
..... valueCodeableConceptCodeableConcept
..... valueStringstring
..... valueRangeRange
..... valueRatioRatio
..... valueSampledDataSampledData
..... valueAttachmentAttachment
..... valueTimetime
..... valueDateTimedateTime
..... valuePeriodPeriod
.... dataAbsentReason I0..1CodeableConcept
.... referenceRange 0..*see referenceRange
<ObservationShape> {
  a (fhir:Observation)?,
  fhir:Observation.id @<LitShape>?,
  fhir:Observation.meta @<MetaShape>?,
  fhir:Observation.implicitRules @<LitShape>?,
  fhir:Observation.language @<LitShape>?,
  fhir:Observation.text @<NarrativeShape>?,
  fhir:Observation.contained @<ResourceShape>*,
  fhir:Observation.extension @<ExtensionShape>*,
  fhir:Observation.modifierExtension @<ExtensionShape>*,
  fhir:Observation.code @<CodeableConceptShape>,
  fhir:Observation.valueQuantity @<QuantityShape>?,
  fhir:Observation.valueCodeableConcept @<CodeableConceptShape>?,
  fhir:Observation.valuestring @<LitShape>?,
  fhir:Observation.valueRange @<RangeShape>?,
  fhir:Observation.valueRatio @<RatioShape>?,
  fhir:Observation.valueSampledData @<SampledDataShape>?,
  fhir:Observation.valueAttachment @<AttachmentShape>?,
  fhir:Observation.valuetime @<LitShape>?,
  fhir:Observation.valuedateTime @<LitShape>?,
  fhir:Observation.valuePeriod @<PeriodShape>?,
  fhir:Observation.dataAbsentReason @<CodeableConceptShape>?,
  fhir:Observation.interpretation @<CodeableConceptShape>?,
  fhir:Observation.comments @<LitShape>?,
  fhir:Observation.appliesdateTime @<LitShape>?,
  fhir:Observation.appliesPeriod @<PeriodShape>?,
  fhir:Observation.issued @<LitShape>?,
  fhir:Observation.status @<LitShape>,
  fhir:Observation.reliability @<LitShape>?,
  fhir:Observation.bodySiteCodeableConcept @<CodeableConceptShape>?,
  fhir:Observation.bodySiteReference @<ReferenceShape>?,
  fhir:Observation.method @<CodeableConceptShape>?,
  fhir:Observation.identifier @<IdentifierShape>*,
  fhir:Observation.subject @<ReferenceShape>?,
  fhir:Observation.specimen @<ReferenceShape>?,
  fhir:Observation.performer @<ReferenceShape>*,
  fhir:Observation.device @<ReferenceShape>?,
  fhir:Observation.encounter @<ReferenceShape>?,
  fhir:Observation.referenceRange @<BackboneElementShape>*,
  fhir:Observation.related @<BackboneElementShape>*
}

Navigating profiles

FHIR has a REST-based HTTP protocol
hence the Search Parameters
much more detailed that anything in LDP.

Exploration of semantic clinical data

Priority TAs (Therapeutic Areas)

FDA (CDER) project billed as:

page screenshot

Statement of Work

Establish common study data standards:

High-level goals

Code everything!

minimize:

cope gracefully with:

interoperate with EHRS:

RDF toolbox available for reuse

Existing Models/Standards

Controlled Terminologies:

Strategy

Portable BRIDG Representation

factoring

renal.ttl

:SerumCreatinineLevel a owl:Class ;
    rdfs:subClassOf 
        [ owl:onProperty bridg:resultIn ; owl:allValuesFrom bridg:PerformedClinicalResult ],
        [ owl:onProperty bridg:resultIn ; owl:cardinality 1 ]  .

transplant.ttl

:GraftBPARAssessment a owl:Class ;      
    rdfs:subClassOf core:NegativeOutcome ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (
          [ a owl:Restriction ;
            owl:onProperty core:afterIntervention ;
            owl:someValuesFrom [
                a owl:Restriction ;
                owl:onProperty core:hasPathologyFinding ;
                owl:hasValue :BanffIII
            ]
          ]
          [ a owl:Restriction ;
            owl:onProperty core:hasResultValue ;
            owl:hasValue :NonFunctioningGraft
          ]
        )
    ]
.

RenalTransplant.ttl

<http://www.w3.org/2013/12/FDA-TA/RenalTransplantation> a owl:Ontology ;
    owl:imports <http://www.w3.org/2013/12/FDA-TA/core> ,
        <http://www.w3.org/2013/12/FDA-TA/renal> ,
        <http://www.w3.org/2013/12/FDA-TA/transplant> .

Result

SELECT ?outcomeType ?dose
       (AVG(?endpoint-time) AS ?rate)
 WHERE {
    # drug of interest
    ?adminDrug dt:CD.displayName "Upsidasium" ;
        … codingSystem … .

    # subjects in studies about drug
    ?arm :studySubject ?adminDrug ;
        :studyParticipation ?subject .

    # demographic selection
    ?subject :taxon ncbitax:7609 .

    # outcomes assessing prescription performance
    ?outcome :intervention ?p ;
        :value [ a ?outcomeType ] .

    # ... of that drug on that subject (participation)
    ?p a :Prescription ;
        :involvedSubject ?subject ;
        :medication ?adminDrug .
} ORDER BY ?dose

EHR Interop

:subjectspostOpDay3GFR a rrej:RenalFunctionObservation ;
    mm:observationTime "2013-07-08T14:50:00"^^xsd:dateTime ;
    rrej:gfrFlowRate [ data:value 12.0 ; data:units ucum:mL-per-minute ].

Would be in a table with codes in an EMR:

obs idwhencoding system ObsCode valueunitsaddressingperformer
12342013-07-08T14:50:00CPT 82565 12mL-per-minute
56782013-07-08T14:50:00SNOMED 2014-01-0124137400912mL-per-minute
43212013-07-08T14:50:00LOINC 48643-1 12mL-per-minute

or C-CDA:

<observation classCode="OBS" moodCode="EVN">
  <code code="48643-1" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"
        displayName="Glomerular filtration rate/1.73 sq M.predicted.black" />
  <effectiveTime value="201307081450"/>
  <value type="PQ" value="12.0" unit="mL/min"/>
  <interpretationCode/>
  <referenceRange />
</observation>

FDA-TA resources

SemWeb plumbing work

Information model efforts

Needed: EPIC Cerner SIEMENS AllScripts HP athenahealth NextGen eClinicalWorks McKesson Greenway Praxis e_MDCureMD MediTab NextTech ADP ...

Where to go

join us

extra slides

Term simplification

The popular CD datatype has:

  • code
  • code system
  • code system version
  • helpful text
image/svg+xml Observation Code cd:code obj to cd:code arc cd:code Coding System cd:codingSystem obj to cd:codingSystem arc cd:codingSystem Display Name cd:displayName obj to cd:displayName arc cd:displayName obj to cd:code arc cd:code hl7:coding CD 282291009 SNOMED 20130131 Observation

Terms as URLs

  • authority
  • version
PREFIX snomed: <http://ihtsdo.org…20130131…> 
PREFIX hl7: <http://hl7.org/owl/metadata#> 

<myObs> hl7:coding snomed:282291009 .
image/svg+xml Observation obj to cd:code arc cd:code hl7:coding snomed:282291009 Observation

Term oversimplification?

image/svg+xml Terminology A (e.g. SNOMED) Version 1.0 (06.04) Code 'abc'Code 'def'Code 'ghi' Version 1.1 (11.05) Code 'abc'Code 'ghj'Code 'ghk' Terminology B (e.g. ICD-9) Version 1.0 (05.04) Code '123'Code '456'Code '788' Version 2.0 (05.06) Code '123.1'Code '123.2'Code '789' bi-di mappings

Minimalist term evolution

plumbing

Taxonomy supplements

These are all sibling children of Degree findings:

Purpose-built supplemental ontologies

Separate augmenters and decreasers without requiring SNOMED to do the same.

terminology model

image/svg+xml lowered reduced decreased increased raised lowered reduced decreased increased raised degree Find.

augmented terminology

image/svg+xml lowered reduced decreased increased raised lowered reduced decreased increased raised degree Find. lowered-narrowerThan-decreasers reduced-narrowerThan-decreasers decreased-narrowerThan-decreasers decreasers-narrowerThan-degreeFindings increased-narrowerThan-augmenters raised-narrowerThan-augmenters decreasers-narrowerThan-degreeFindings decreasers augmenters

Biggest challenges

plumbing

Interoperability value proposition

Interoperability state of the art

Technical barriers:

sprites

image/svg+xml RIM RDF Tutorial cd:code codeSystem:codeSystemName:codeSystemVersion:code:displayName: rim:ActRelationship typeCode:source:target: rim:ActRelationship typeCode:sequenceNumber:priorityNumber:source:target: codeSysName codeSysVer code displayName classCode:activityTime:typeCode: OBS2013-01-01 rim:Act cd:code obj to cd:code arc cd:code