See also: IRC log
<trackbot> Date: 22 April 2015
http://wiki.hl7.org/images/1/19/FHIR_RDF_Sample_side_by_side_comparisons_v2.pdf
Section 2.2 Subgroup example
We were discussing how to get the class name <http://loinc.org/54411-4.ttl>
<Claude> Hi David, could you please post the link again?
http://wiki.hl7.org/images/1/19/FHIR_RDF_Sample_side_by_side_comparisons_v2.pdf
https://global.gotomeeting.com/join/157514853
Access Code: 157-514-853
lloyd: Problem is not solvable.
Every org that defines a coding.system can define the URLs
however they want. We cannot control that, so there's no
algorithmic way to determine the class URI from that and the
Coding.code.
... Best we can do is to have a supplemental ont for that
Coding.system that says "if you see a CodeableConcept that
matches this, then the class is X"
David: That ont would define a mapping for that Coding.system from Coding.code to the class URI.
lloyd: For systems like SNOMED,
that use post-coord expressions, it will be more complex.
... The string for Coding.code might be a post-coord
expression.
david: In that case an algorithm would be needed.
<Lloyd> http://hl7.org/fhir/2015May/datatypes.html#code
Example from claude: "code":"2142|Suicide risk factor (observable entity)|53|IS ABOUT (attribute)|46206005|Mood disorder (disorder)|
(except that the display names are not allowed in the code)
lloyd: The mapping ont must enumerate every post-coord expression that needs to be mapped to a class.
Example from Marc: [[
@prefix loinc: http://loinc.org/owl# .
@prefix fhir: http://hl7.org/fhir/ .
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# .
@prefix dcterms: http://purl.org/dc/terms/ .
http://purl.bioontology.org/ontology/LNC/9279-1
a fhir:Code , fhir:VitalSign ;
dcterms: identifier "9279-1"
;
... title "Respiration rate" ;
fhir: system "http://purl.bioontology.org/ontology/LNC/" .
http://purl.bioontology.org/ontology/LNC/39156-5
a fhir:Code , fhir:VitalSign ;
<Lloyd> <coding> <system value="snomed..."/> <code value="2142:53=46206005"/> </system>
dcterms: identifier "39156-5"
;
... title "Body mass index" ;
fhir: system "http://purl.bioontology.org/ontology/LNC/" .
]]
marc: Queries on post-coord expr will be more difficult.
claude: you cannot have a pre-coord term for all post-coord expressions. it would explode.
lloyd: Not a lot of people use post-coord exprs, but they do solve particular problems.
claude: Concept of a code and
concept of an expr, do we need two different classes in the
ont? But the expr can have any kind of grammar.
... Maybe there should be two types of classes.
david: The mapping does not
necessarily need to be limited to RDFS or OWL reasoning. It may
need to use other inference rules that go beyond RDFS or OWL.
That is not ideal, but it is workable.
... we can use other vocabularies with inference rules that are
specific to the Coding.system
<Marc_Twagirumukiza> For post-coord we will need to set a limit in granularity ... how far we can go in post-cord?
tony: Could derive a turtle expression instead of a single class.
<Marc_Twagirumukiza> something like this would be complicated
<Marc_Twagirumukiza> There is a stenosis (11 mm diameter) extending from the proximal to the mid right coronary artery. From the data: 233970002|Coronary artery stenosis| : 363698007|finding site| = 91083009|Prox RCA| , 263556003|distal site| = 341000128101|Mid RCA| , 116676008|Associated morphology| = 415582006|Stenosis| , 81000128103|Interpreted From| = (397413000|Vessel lumen diameter| : 321000128109|Has quantitative value| = 138875[CUT]
lloyd: yes, but the hard part is
the coding.system-specific logic that is needed to interpret
the FHIR Coding.code expression.
... The FHIR message producer could choose to generate the
class or expression. But if that doesn't then the consumer
needs to use something to infer that class or expression from
the Coding.system and Coding.code.
... we'd probably define two different extensions. One with a
simple URI, and another with a full RDF expression.
... It would be a special extension that would show up in the
XML but be directly in the RDF.
... You'd have to encode it back into XML when round
tripping.
... I think we can do that, because the only types that should
be asserted for CodeableConcept would be that it is a
CodeableConcept and all of the concepts that are asserted based
on the presence.
<Claude> <extension url="http://example.org/va/fhir/extensions#postCoordination" >
<Claude> <extension url="http://example.org/va/fhir/extensions#expressionLanguage">
<Claude> <valueString value="OWL DL" />
<Claude> </extension>
<Claude> <extension url="http://example.org/va/fhir/extensions#expression">
<Claude> <valueString>
lloyd: The only issue might be assertions that are being made that are tied to one coding versus another.
<Claude> Class(sdc:SystolicBloodPressure type(sdc:measurement) complete
<Claude> intersectionOf(
<Claude> restriction(sdc:measurement-location someValuesFrom(sdc:brachial-artery))
<Claude> restriction(sdc:measurement-laterality someValuesFrom(sdc:right))
<Claude> restriction(sdc:measurement-taken-with someValuesFrom(sdc:automatic-bp-cuff))))
<ericP> what do you mean by "based on one coding or another"?
<Claude> </valueString>
<Claude> </extension>
<Claude> </extension>
david: We need to cleanly differentiate between the minimum RDF that is needed to round trip from a FHIR XML message, without assuming access to non-required Coding.system information, versus additional ont information that MAY be available about that Coding.system.
<ericP> dbooth: need to separate between the minimal RDF required if nothing is known about some coding system vs. what's available if the coding system is known/understood
lloyd: Need to treat CodeableConcept as though they are specializations of Observation.code
tony: the thing you're trying to
type is the AllergyIntolerance
... You're typing an instance of Observation.code.
<ericP> Tony, can you repeat your point for haroldS who just joined?
<ericP> We were looking at the Codableconcept, Coding and Code as something which is an instance which points at a class which is defined in the terminology
<ericP> the instances is e.g. the AllergyIntollerance
http://wiki.hl7.org/images/1/19/FHIR_RDF_Sample_side_by_side_comparisons_v2.pdf
https://global.gotomeeting.com/join/157514853
Access Code: 157-514-853
harold: where did you get the .ttl part of the loinc URI http://loinc.org/54411-4.ttl ?
<ericP> harold: you have the concept identifier, which is immutable in long term
harold: Ideally there would be a service at loinc.org that would do this. But you need a service somewhere that allows you to ask for a description given the Coding.system and Coding.code
tony: yes, there's some
inaccuracy in this example. It's for discussion.
... But if you take the .ttl off the end, then that URI should
give you the ont closure for that concept by importing it.
harold: Saying that the Observation.code is an instance of the loinc class?
tony: yes, it has two types. One
says that it has the structure of a fhir:CodeableConcept. The
other says it has a particular semantics.
... SNOMED would be a better example here than LOINC.
harold: SNOMED does not define
data structures, it describes the world.
... But if that were a SNOMED code, . . . If I have a diagnosis
of appendicitis, then the relationship should be an *about*
relationship.
... Because it is a record that is *about* appendicitis, not
the appendicitis itself.
tony: Yes, there's a real world
appendicitis, and there'a health record about it.
... The Observation.code is representing the real world
existence.
harold: You'll get into hot water
with Barry Smith. :)
... You're conflating the description with the thing
itself.
... Nothing is both an appendicitis and a description of
it.
... Should discuss this with Stefan Shulz(sp?)
... issue that's been discussed: when they came up with the CD
datatype, the distinction between the namespace and the coding
system was fuzzy. one way to view it: when they say
coding.system, you can treat that as a namespace (pre-URI
days).
... Originally part of the OID grammar did not allow you to
join the system and the code.
... In that interpretation, that's simply an alternate
representation of you delete .ttl from the URI you show.
<ericP> _:X a fhir:Observation ; fhir:CodeableConcept.code [ fhir-magic:describesConcept <http://loinc.org/5411-4> ; fhir:CodeableConcept.codeing [ :system loinc: ; :code "5411-4" ] .
<ericP> _:X fhir:subject <Bob> ; fhir-magic:subjectNominallyHasDisease <http://loinc.org/5411-4> .
harold: need to dig up a good URI for "about" -- probably not rdf:about.
eric: No such URI as rdf:about.
<ericP> _:X a fhir:Observation ;
<ericP> fhir:CodeableConcept.code [
<ericP> fhir-magic:describesConcept <http://loinc.org/5411-4> ;
<ericP> fhir:CodeableConcept.codeing [ :system loinc: ; :code "5411-4" ] ] .
<ericP> _:X fhir:subject <Bob> ;
<ericP> fhir-magic:subjectNominallyHasDisease <http://loinc.org/5411-4> .
eric: Trying figure out, based on Coding.system and Coding.code, there's a relation betwen the patient and the disease.
tony: is describesConcept pointing to an instance or a class?
harold: please avoid the word 'concept', because it doesn't distinguish between the thing and the description of that thing.
david: Three things we're discussing: 1. differentiate minimum round trippable RDF; 2. should we treat Observation.code as an instance of a class? 3. Does that class represent the disease itself or a *description* of that disease?
<ericP> IAO
eric: We need to focus on this because it's a large part of our value prop.
<ericP> How to track absolutely everything
eric: We want to derive the
disease class <http://loinc.org/5411-4> from
Coding.system and Coding.code, and that's the link between the
patient and the actual disease.
... We'll want to say that it is a class in order to leverage
RDF inference, determining relationships between diseases,
etc.
david: another thing discussed: 4. whether the Observation.code needs to be a URI instead of a blank node.
eric: never need to reference that blank node for the logic.
tony: Reasoner won't detect class membership if the thing is a blank node. But if I name it with a URI it works fine.
eric: OWL has a functional difference between URIs and blank nodes. That comes up when building an ont, but does that come up in this case?
ADJOURNED
ISSUE: should we treat Observation.code as an instance of a class?
<trackbot> Created ISSUE-7 - Should we treat observation.code as an instance of a class?. Please complete additional details at <http://www.w3.org/2014/HCLS/track/issues/7/edit>.
ISSUE: If we treat Observation.code as an instance of a class, should that class represent the disease itself or a *description* of the disease?
<trackbot> Created ISSUE-8 - If we treat observation.code as an instance of a class, should that class represent the disease itself or a *description* of the disease?. Please complete additional details at <http://www.w3.org/2014/HCLS/track/issues/8/edit>.
ISSUE: Does Observation.code need to be a URI instead of a blank node, to work well with OWL reasoners?
<trackbot> Created ISSUE-9 - Does observation.code need to be a uri instead of a blank node, to work well with owl reasoners?. Please complete additional details at <http://www.w3.org/2014/HCLS/track/issues/9/edit>.
This is scribe.perl Revision: 1.140 of Date: 2014-11-06 18:16:30 Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/ Guessing input format: RRSAgent_Text_Format (score 1.00) No ScribeNick specified. Guessing ScribeNick: dbooth Inferring Scribes: dbooth Default Present: DBooth, lloyd, Marc, Claude, Tony, rhausam, EricP Present: DBooth lloyd Marc Claude Tony rhausam EricP Found Date: 22 Apr 2015 Guessing minutes URL: http://www.w3.org/2015/04/22-hcls-minutes.html People with action items:[End of scribe.perl diagnostic output]