Presentation is loading. Please wait.

Presentation is loading. Please wait.

FHIR and ontology Barry Smith Charleston, September 24, 2015 1.

Similar presentations


Presentation on theme: "FHIR and ontology Barry Smith Charleston, September 24, 2015 1."— Presentation transcript:

1 FHIR and ontology Barry Smith Charleston, September 24, 2015 1

2 My life with HL7 2

3 3 http://hl7- watch.blogspot.com/2008/02/weight-of- baby.html

4 4

5 Allergies, Adverse Reactions, Alerts Section 48765-2 This section lists and describes any medication allergies, adverse reactions, idiosyncratic reactions, … to food items … Optional Entries The following constraints apply to an Allergies, Adverse Reactions, Alerts section in which entries are not required. 5

6 [section: templateId 2.16.840.1.113883.10.20.22.2.6(open)] The following constraints apply to an Allergies, Adverse Reactions, Alerts section in which entries are not required. SHALL contain exactly one [1..1] templateId/@root="2.16.840.1.113883.10.20.22.2.6" (CONF:7800). SHALL contain exactly one [1..1] code/@code="48765-2" Allergies, adverse reactions, alerts (CodeSystem: 2.16.840.1.113883.6.1 LOINC) (CONF:7801). SHALL contain exactly one [1..1] title (CONF:7802). SHALL contain exactly one [1..1] text (CONF:7803). SHOULD contain at least one [1..*] entry (CONF:7804) such that it –SHALL contain exactly one [1..1] Allergy Problem Act (templateId:2.16.840.1.113883.10.20.22.4.30) (CONF:7805).Allergy Problem Act 6

7 7 SHALL contain exactly one [1..1] @classCode =" ACT " (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass ) STATIC (CONF:7469). SHALL contain exactly one [1..1] @moodCode =" EVN " Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood ) STATIC (CONF:7470). SHALL contain exactly one [1..1] templateId/@root =" 2.16.840.1.113883.10.20.22.4.30 " (CONF:7471). SHALL contain at least one [1..*] id (CONF:7472). SHALL contain exactly one [1..1] code =" 48765-2 " Allergies, adverse reactions, alerts (CodeSystem: 2.16.840.1.113883.6.1 LOINC ) STATIC (CONF:7477). SHALL contain exactly one [1..1] statusCode, which SHALL be selected from ValueSet 2.16.840.1.113883.11.20.9.19 ProblemAct statusCode DYNAMIC (CONF:7485). SHALL contain exactly one [1..1] effectiveTime (CONF:7498). 1.If statusCode/@code = "active|supended", then effectiveTime SHALL contain [1..1] low. If statusCode/@code="aborted|completed", then effectiveTime SHALL contain [1..1] high (CONF:7504). SHALL contain at least one [1..*] entryRelationship (CONF:7509) such that it 1.SHALL contain exactly one [1..1] @typeCode =" SUBJ " Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType ) STATIC (CONF:7915). 2.SHALL contain exactly one [1..1] Allergy/Alert Observation (templateId:2.16.840.1.113883.10.20.22.4.7) (CONF:7510). Allergy/Alert Observation

8 8 Allergy Problem Act SHALL contain exactly one [1..1] @classCode =" ACT " (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass ) STATIC (CONF:7469). SHALL contain exactly one [1..1] @moodCode =" EVN " Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood ) STATIC (CONF:7470). SHALL contain exactly one [1..1] templateId/@root =" 2.16.840.1.113883.10.20.22.4.30 " (CONF:7471). SHALL contain at least one [1..*] id (CONF:7472). SHALL contain exactly one [1..1] code =" 48765-2 " Allergies, adverse reactions, alerts (CodeSystem: 2.16.840.1.113883.6.1 LOINC ) STATIC (CONF:7477). SHALL contain exactly one [1..1] statusCode, which SHALL be selected from ValueSet 2.16.840.1.113883.11.20.9.19 ProblemAct statusCode DYNAMIC (CONF:7485). SHALL contain exactly one [1..1] effectiveTime (CONF:7498). 1.If statusCode/@code = "active|supended", then effectiveTime SHALL contain [1..1] low. If statusCode/@code="aborted|completed", then effectiveTime SHALL contain [1..1] high (CONF:7504). SHALL contain at least one [1..*] entryRelationship (CONF:7509) such that it 1.SHALL contain exactly one [1..1] @typeCode =" SUBJ " Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType ) STATIC (CONF:7915). 2.SHALL contain exactly one [1..1] Allergy/Alert Observation (templateId:2.16.840.1.113883.10.20.22.4.7) (CONF:7510). Allergy/Alert Observation

9 9 Allergy Problem Act SHALL contain exactly one [1..1] @classCode =" ACT " (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass ) STATIC (CONF:7469). SHALL contain exactly one [1..1] @moodCode =" EVN " Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood ) STATIC (CONF:7470). SHALL contain exactly one [1..1] templateId/@root =" 2.16.840.1.113883.10.20.22.4.30 " (CONF:7471). SHALL contain at least one [1..*] id (CONF:7472). SHALL contain exactly one [1..1] code =" 48765-2 " Allergies, adverse reactions, alerts (CodeSystem: 2.16.840.1.113883.6.1 LOINC ) STATIC (CONF:7477). SHALL contain exactly one [1..1] statusCode, which SHALL be selected from ValueSet 2.16.840.1.113883.11.20.9.19 ProblemAct statusCode DYNAMIC (CONF:7485). SHALL contain exactly one [1..1] effectiveTime (CONF:7498). 1.If statusCode/@code = "active|supended", then effectiveTime SHALL contain [1..1] low. If statusCode/@code="aborted|completed", then effectiveTime SHALL contain [1..1] high (CONF:7504). SHALL contain at least one [1..*] entryRelationship (CONF:7509) such that it 1.SHALL contain exactly one [1..1] @typeCode =" SUBJ " Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType ) STATIC (CONF:7915). 2.SHALL contain exactly one [1..1] Allergy/Alert Observation (templateId:2.16.840.1.113883.10.20.22.4.7) (CONF:7510). Allergy/Alert Observation

10 [observation: templateId 2.16.840.1.113883.10.20.21.4.7(open)] This clinical statement represents that an allergy or adverse reaction exists or does not exist. The agent that is the cause of the allergy or adverse reaction is represented as a manufactured material participant playing entity in the allergy observation. While the agent is often implicit in the alert observation (e.g. "allergy to penicillin"), it should also be asserted explicitly as an entity. SHALL contain exactly one [1..1] @classCode="OBS" Observation (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass) STATIC (CONF:7379). SHALL contain exactly one [1..1] @moodCode="EVN" Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood) STATIC (CONF:7380). SHALL contain exactly one [1..1] templateId/@root="2.16.840.1.113883.10.20.22.4.7" (CONF:7381). SHALL contain at least one [1..*] id (CONF:7382). SHALL contain exactly one [1..1] code, which SHALL be selected from ValueSet 2.16.840.1.113883.3.88.12.3221.6.2 Allergy/Adverse Event Type DYNAMIC (CONF:7383). SHALL contain exactly one [1..1] statusCode/@code="completed" Completed (CodeSystem: 2.16.840.1.113883.5.14 HL7ActStatus) STATIC (CONF:7386). SHOULD contain exactly one [1..1] effectiveTime (CONF:7387). SHALL contain exactly one [1..1] value with @xsi:type="CD" (CONF:7390). –This value SHOULD contain exactly one [1..1] originalText (CONF:7422). This originalText SHOULD contain exactly one [1..1] reference (CONF:7400). –A reference/@value SHOULD point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1 ). (CONF:7401). SHOULD contain exactly one [1..1] participant (CONF:7402) such that it –SHALL contain exactly one [1..1] @typeCode="CSM" Product (CodeSystem: 2.16.840.1.113883.5.90 HL7ParticipationType) STATIC (CONF:7403). –SHALL contain exactly one [1..1] participantRole (CONF:7404). This participantRole SHALL contain exactly one [1..1] @classCode="MANU" Manufactured Product (CodeSystem: 2.16.840.1.113883.5.110 HL7RoleClass) STATIC (CONF:7405). This participantRole SHALL contain exactly one [1..1] playingEntity (CONF:7406). –This playingEntity SHALL contain exactly one [1..1] @classCode="MMAT" Manufactured Material (CodeSystem: 2.16.840.1.113883.5.41 HL7EntityClass) STATIC (CONF:7407). –This playingEntity SHALL contain exactly one [1..1] code (CONF:7419). »This code @code in an allergy to a specific medication SHALL be selected from the ValueSet 2.16.840.1.113883.3.88.12.80.16 Medication Brand Name or the ValueSet 2.16.840.1.113883.3.88.12.80.17 Medication Clinical Drug. In an allergy to a class of medications the code@code SHALL be selected from the ValueSet 2.16.840.1.113883.3.88.12.80.18 Medication Drug Class. In an allergy to a food or other substance the code@code SHALL be selected from the ValueSet 2.16.840.1.113883.3.88.12.80.20 Ingredient Name. (CONF:7421). »This code SHOULD contain exactly one [1..1] originalText (CONF:7424). »This originalText SHOULD contain exactly one [1..1] reference (CONF:7425). »A reference/@value SHOULD point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1 ). (CONF:7426). »This code MAY contain zero or more [0..*] translation (CONF:7431). SHALL contain exactly one [1..1] entryRelationship (CONF:7440) such that it –SHALL contain exactly one [1..1] @typeCode="SUBJ" Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7906). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7446). –SHALL contain exactly one [1..1] Problem Status (templateId:2.16.840.1.113883.10.20.22.4.6) (CONF:7441).Problem Status SHOULD contain zero or more [0..*] entryRelationship (CONF:7447) such that it –SHALL contain exactly one [1..1] @typeCode="MFST" Is Manifestation of (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7907). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7449). –SHALL contain exactly one [1..1] Reaction Observation (templateId:2.16.840.1.113883.10.20.22.4.9) (CONF:7450).Reaction Observation 10

11 Allergy/Alert Observation SHALL contain exactly one [1..1] entryRelationship (CONF:7440) such that it –SHALL contain exactly one [1..1] @typeCode="SUBJ" Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7906). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7446). –SHALL contain exactly one [1..1] Problem Status (templateId:2.16.840.1.113883.10.20.22.4.6) (CONF:7441).Problem Status SHOULD contain zero or more [0..*] entryRelationship (CONF:7447) such that it –SHALL contain exactly one [1..1] @typeCode="MFST" Is Manifestation of (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7907). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7449). –SHALL contain exactly one [1..1] Reaction Observation (templateId:2.16.840.1.113883.10.20.22.4.9) (CONF:7450).Reaction Observation 11

12 Problem Status [observation: templateId 2.16.840.1.113883.10.20.22.4.6(open)] This clinical statement represents the status of a patient problem. Typical values are "Active", "Inactive", and "Resolved". A resolved problem no longer exists as a problem for the patient as of the time of recording (it may reoccur, but that would be a new instance). An inactive problem is one that still exists for the patient but is not currently a cause for concern (e.g., diabetes that is under control). An active problem exists and is a current cause for concern. A problem status observation will always refer to and be contained in a single problem observation. SHALL contain exactly one [1..1] @classCode="OBS" Observation (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass) STATIC (CONF:7357). SHALL contain exactly one [1..1] @moodCode="EVN" Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood) STATIC (CONF:7358). SHALL contain exactly one [1..1] templateId/@root="2.16.840.1.113883.10.20.22.4.6" (CONF:7359). SHALL contain exactly one [1..1] code="33999-4" Status (CodeSystem: 2.16.840.1.113883.6.1 LOINC) STATIC (CONF:7361). SHOULD contain exactly one [1..1] text (CONF:7362). –This text SHOULD contain exactly one [1..1] reference (CONF:7363). A reference/@value SHOULD point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1 ). (CONF:7375). SHALL contain exactly one [1..1] statusCode/@code="completed" Completed (CodeSystem: 2.16.840.1.113883.5.14 HL7ActStatus) STATIC (CONF:7364). SHALL contain exactly one [1..1] value with @xsi:type="CD", where the @code SHALL be selected from ValueSet 2.16.840.1.113883.1.11.20.13 Problem Status DYNAMIC (CONF:7365). 12

13 Allergy/Alert Observation SHALL contain exactly one [1..1] entryRelationship (CONF:7440) such that it –SHALL contain exactly one [1..1] @typeCode="SUBJ" Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7906). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7446). –SHALL contain exactly one [1..1] Problem Status (templateId:2.16.840.1.113883.10.20.22.4.6) (CONF:7441).Problem Status SHOULD contain zero or more [0..*] entryRelationship (CONF:7447) such that it –SHALL contain exactly one [1..1] @typeCode="MFST" Is Manifestation of (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7907). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7449). –SHALL contain exactly one [1..1] Reaction Observation (templateId:2.16.840.1.113883.10.20.22.4.9) (CONF:7450). Reaction Observation 13

14 Reaction Observation [observation: templateId 2.16.840.1.113883.10.20.21.4.9(open)] This template represents the symptom the patient presents with when exposed to the substance. SHALL contain exactly one [1..1] @classCode="OBS" Observation (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass) STATIC (CONF:7325). SHALL contain exactly one [1..1] @moodCode="EVN" Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood) STATIC (CONF:7326). SHALL contain exactly one [1..1] templateId/@root="2.16.840.1.113883.10.20.22.4.9" (CONF:7323). SHALL contain exactly one [1..1] id (CONF:7329). SHALL contain exactly one [1..1] code (CONF:7327). SHOULD contain exactly one [1..1] text (CONF:7330). –This text SHOULD contain exactly one [1..1] reference (CONF:7331). A reference/@value SHOULD point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1 ). (CONF:7377). SHALL contain exactly one [1..1] statusCode/@code="completed" Completed (CodeSystem: 2.16.840.1.113883.5.14 HL7ActStatus) STATIC (CONF:7328). SHOULD contain exactly one [1..1] effectiveTime (CONF:7332). –This effectiveTime SHOULD contain exactly one [1..1] low (CONF:7333). –This effectiveTime SHOULD contain exactly one [1..1] high (CONF:7334). SHALL contain exactly one [1..1] value with @xsi:type="CD", where the @code SHALL be selected from ValueSet 2.16.840.1.113883.3.88.12.3221.7.4 Problem DYNAMIC (CONF:7335). SHOULD contain exactly one [1..1] entryRelationship (CONF:7580) such that it –SHALL contain exactly one [1..1] @typeCode="SUBJ" Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) (CONF:7581). –SHALL contain exactly one [1..1] Severity Observation (templateId:2.16.840.1.113883.10.20.22.4.8) (CONF:7582).Severity Observation MAY contain zero or more [0..*] entryRelationship (CONF:7337) such that it –SHALL contain exactly one [1..1] @typeCode="RSON" Has reason (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7338). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7343). –SHALL contain exactly one [1..1] Procedure Activity Procedure (templateId:2.16.840.1.113883.10.20.22.4.14) (CONF:7339).Procedure Activity Procedure This procedure activity is intended to contain information about procedures that were performed in response to an allergy reaction (CONF:7583). MAY contain zero or more [0..*] entryRelationship (CONF:7340) such that it –SHALL contain exactly one [1..1] @typeCode="RSON" Has reason (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7341). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7344). –SHALL contain exactly one [1..1] Medication Activity (templateId:2.16.840.1.113883.10.20.22.4.16) (CONF:7342).Medication Activity This medication activity is intended to contain information about medications that were administered in response to an allergy reaction. (CONF:7584). 14

15 Reaction Observation [observation: templateId 2.16.840.1.113883.10.20.21.4.9(open)] This template represents the symptom the patient presents with when exposed to the substance. SHALL contain exactly one [1..1] @classCode="OBS" Observation (CodeSystem: 2.16.840.1.113883.5.6 HL7ActClass) STATIC (CONF:7325). SHALL contain exactly one [1..1] @moodCode="EVN" Event (CodeSystem: 2.16.840.1.113883.5.1001 HL7ActMood) STATIC (CONF:7326). SHALL contain exactly one [1..1] templateId/@root="2.16.840.1.113883.10.20.22.4.9" (CONF:7323). SHALL contain exactly one [1..1] id (CONF:7329). SHALL contain exactly one [1..1] code (CONF:7327). SHOULD contain exactly one [1..1] text (CONF:7330). –This text SHOULD contain exactly one [1..1] reference (CONF:7331). A reference/@value SHOULD point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1 ). (CONF:7377). SHALL contain exactly one [1..1] statusCode/@code="completed" Completed (CodeSystem: 2.16.840.1.113883.5.14 HL7ActStatus) STATIC (CONF:7328). SHOULD contain exactly one [1..1] effectiveTime (CONF:7332). –This effectiveTime SHOULD contain exactly one [1..1] low (CONF:7333). –This effectiveTime SHOULD contain exactly one [1..1] high (CONF:7334). SHALL contain exactly one [1..1] value with @xsi:type="CD", where the @code SHALL be selected from ValueSet 2.16.840.1.113883.3.88.12.3221.7.4 Problem DYNAMIC (CONF:7335). SHOULD contain exactly one [1..1] entryRelationship (CONF:7580) such that it –SHALL contain exactly one [1..1] @typeCode="SUBJ" Has subject (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) (CONF:7581). –SHALL contain exactly one [1..1] Severity Observation (templateId:2.16.840.1.113883.10.20.22.4.8) (CONF:7582).Severity Observation MAY contain zero or more [0..*] entryRelationship (CONF:7337) such that it –SHALL contain exactly one [1..1] @typeCode="RSON" Has reason (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7338). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7343). –SHALL contain exactly one [1..1] Procedure Activity Procedure (templateId:2.16.840.1.113883.10.20.22.4.14) (CONF:7339).Procedure Activity Procedure This procedure activity is intended to contain information about procedures that were performed in response to an allergy reaction (CONF:7583). MAY contain zero or more [0..*] entryRelationship (CONF:7340) such that it –SHALL contain exactly one [1..1] @typeCode="RSON" Has reason (CodeSystem: 2.16.840.1.113883.5.1002 HL7ActRelationshipType) STATIC (CONF:7341). –SHALL contain exactly one [1..1] @inversionInd="true" (CONF:7344). –SHALL contain exactly one [1..1] Medication Activity (templateId:2.16.840.1.113883.10.20.22.4.16) (CONF:7342).Medication Activity This medication activity is intended to contain information about medications that were administered in response to an allergy reaction. (CONF:7584). 15

16 http://hl7-watch.blogspot.com/ 16

17 Why does this happen? 1. HL7 V3’s development methodology is additive; each new release is created by adding new content to the existing release, with (apparently) no consideration for logical consistency The result is increasing unclarity in the standard creating many new opportunities for forking and failures, giving rise for demands for yet new additions to content 17

18 Why does this happen? 3. HL7 V3 and all related artifacts – to some extent including FHIR – are based on the HL7 RIM, which requires all entities to be binned under one of three classes: Acts, Roles (e.g. patient role), Entities (a great mystery) 18

19 EntityClass =def. Classifies the Entity class and all of its subclasses. The terminology is hierarchical. At the top is this HL7-defined domain of high-level categories (such as represented by the Entity subclasses). Each of these terms must be harmonized and is specializable. The value sets beneath are drawn from multiple, frequently external, domains that reflect much more fine-grained typing. 19

20 entity =def. Corresponds to the Entity class 20

21 Where do these things go: diseases problems conditions allergies bodily processes internal physiology accidental poisoning? Answer: all are Acts A disease is an observation of disease Yet more forkings and failures 21

22 Why does this happen? 4. Voting You cannot maintain the coherence of a computer program, or a logically axiomatized theory, or a coding system when major decisions are made on the basis of voting (this is so even where those eligible to vote do not have an incentive to vote for complexistificalizations of the system in question) 22

23 No way we will ever be able to use computers to check HL7 V3 coding for conformity to the HL7 V3 coding system 23

24 Last post: February 23, 2014 24 give Grieve a chance FHIR: open, not going to make the mistakes of the RIM, use REST rather than walkie-talkie technology

25 FHIR and RIM 25 All data elements in HL7 v3 instances are derived from either the RIM or the ISO data types. In FHIR, this is true of most resources and data type elements, but not all.

26 Where to find FHIR ttl 26

27 rim.ttl “Living Subject” cs:EntityClass\#LIV rdfs:subClassOf cs:EntityClass\#ENT; rdfs:label "living subject"; dcterms:description "Anything that essentially has the property of life, independent of current state (a dead human corpse is still essentially a living subject)." 27

28 rim.ttl “State” cs:EntityClass\#STATE rdfs:subClassOf cs:EntityClass\#ORG; rdfs:label "state"; dc:title "state"; rdfs:comment "A politically organized body of people bonded by territory, culture, or ethnicity, having sovereignty (to a certain extent) granted by other states (enclosing or neighboring states). This includes countries (nations), provinces (e.g. one of the United States of America or a French departement), counties or municipalities. Circular What is ‘bonded’? Is a county, or a municipality, a state, in anyone’s language? 28

29 rim.ttl “Nation” cs:EntityClass\#NAT rdfs:subClassOf cs:EntityClass\#STATE; rdfs:label "Nation"; dc:title "Nation"; rdfs:comment "A politically organized body of people bonded by territory and known as a nation."; dcterms:description "A politically organized body of people bonded by territory and known as a nation.". Circular up the wazoo 29

30 rim.ttl “Place” cs:EntityClass\#PLC rdfs:subClassOf cs:EntityClass\#ENT; rdfs:label "place"; dc:title "place"; rdfs:comment "A physical place or site with its containing structure. May be natural or man-made. Circular again. How does territory relate to place? Why does HL7 RIM need its own rinky-dink representation of geography? 30

31 FHIR.ttl # FHIR definitions # This is work in progress, and may change rapidly # A note about policy: the focus here is providing the knowledge from # the FHIR specification as a set of triples for knowledge processing. # Where appopriate, predicates defined external to FHIR are used. "Where # appropriate" means that the predicates are a faithful representation # of the FHIR semantics, and do not involve insane (or owful) syntax. Note the use of the term ‘definition’ – recall David Booth: ‘terrible definition’ 31

32 fhir: Age rdfs:subClassOf fhir:Quantity; rdfs:label "There SHALL be a code if there is a value and it SHALL be an expression of time. If system is present, it SHALL be UCUM. If value is present, it SHALL be positive."; rdfs:comment "A duration (length of time) with a UCUM code"; dcterms:description "A duration (length of time) with a UCUM code". The authors do not understand the difference between a definition and a statement of necessary conditions 32

33

34 Chapter 4: Principles of Best Practice – Terms, Definitions, and Classification 34 Principles for Definitions 13. Provide all non-root terms with definitions 14. Use Aristotelian definitions 15. Use essential features in defining terms. 16. Start with the most general terms in your domain. 17. Avoid circularity in defining terms. 18.To ensure the intelligibility of definitions, use simpler terms than the term you are defining. 19. Do not create terms for universals through logical combination. 20. Definitions should be unpackable (Term-definition intersubstitutability) Constructing the definitions should help users understand the meanings of the terms Should help ensure the correctness and stability of the ontology hierarchy Should thereby help computation across the bodies of data tagged using the ontology

35 fhir:Element # this file refers to concepts defined in rim.ttl and to others defined elsewhere outside HL7 fhir:Element a rdfs:Class; rdfs:label "Base for all elements"; dc:title "Base for all elements"; rdfs:comment "Base definition for all elements in a resource."; dcterms:description "Base definition for all elements in a resource."; the class Element is a base for all elements Element = Base definition for all elements in a resource 35

36 fihr:BackboneElement fhir:BackboneElement rdfs:subClassOf fhir:Element; rdfs:label "Base for elements defined inside a resource"; rdfs:comment "Base definition for all elements that are defined inside a resource - but not those in a data type."; Backbone element = base for elements defined inside a resource? Are there elements not defined inside a resource? 36

37 fhir:ElementDefinitionBaseComponent fhir:ElementDefinitionBaseComponent a fhir:Element; rdfs:comment "Information about the base definition of the element, provided to make it unncessary for tools to trace the deviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition."; 37

38 fhir:ElementDefinitionBaseComponent fhir:ElementDefinitionBaseComponent a fhir:Element; rdfs:comment "Information about the base definition of the element ElementDefinitionBaseComponent is both Part of an ElementDefinition Information about [the same] ElementDefinition 38

39 fhir:ElementDefinitionBaseComponent fhir:ElementDefinitionBaseComponent a fhir:Element; rdfs:comment "Information about the base definition of the element, provided to make it unncessary for tools to trace the deviation of the element through the derived and related profiles. This information is only provided where the element definition represents a constraint on another element definition, and must be present if there is a base element definition."; 39

40 fhir:TypeRefComponent.profile rdfs:comment "Identifies a profile structure or implementation Guide that SHALL hold for resources or datatypes referenced as the type of this element. Can be a local reference - to another structure in this profile, or a reference to a structure in another profile. When more than one profile is specified, the content must conform to all of them. When an implementation guide is specified, the resource SHALL conform to at least one profile defined in the implementation guide."; 40

41 fhir:TestScriptSetupActionAssertCompon ent.validateProfileId fhir:TestScriptSetupActionAssertComponent.validateProfileId a rdf:Property; rdfs:comment "The ID of the Profile to validate against."; dcterms:description "The ID of the Profile to validate against."; rdfs:domain fhir:TestScriptSetupActionAssertComponent; os:occurs os:Zero-or-one; rdfs:range fhir:id. 41

42 fhir:TestScriptSetupActionAssertCompon ent.value a rdf:Property; rdfs:comment "The value to compare to."; dcterms:description "The value to compare to."; rdfs:domain fhir:TestScriptSetupActionAssertComponent; os:occurs os:Zero-or-one; rdfs:range fhir:string. 42

43 fhir:ElementDefinitionBaseComponent.pa th fhir:ElementDefinitionBaseComponent.path a rdf:Property; rdfs:comment "The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base."; 43

44 fhir:ElementDefinitionSlicingComponent.discrimin ator rdfs:comment "Designates which child elements are used to discriminate between the slices when processing an instance. If one or more discriminators are provided, the value of the child elements in the instance data SHALL completely distinguish which slice the element in the resource matches based on the allowed values for those elements in each of the slices."; 44

45 fhir:ElementDefinitionSlicingComponent.descri ption rdfs:comment "A human-readable text description of how the slicing works. If there is no discriminator, this is required to be present to provide whatever information is possible about how the slices can be differentiated."; fhir:ElementDefinitionSlicingComponent.ordered a rdf:Property; rdfs:comment "If the matching elements have to occur in the same order as defined in the profile."; 45

46 fhir:Element.extension rdfs:comment "May be used to represent additional information that is not part of the basic definition of the element. Tells us nothing at all about Element.extension 46

47 fhir:code fhir:code rdfs:subClassOf fhir:string; rdfs:comment "A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents"; Not a definition, just a statement of a necessary condition 47

48 fhir:id fhir:id rdfs:subClassOf fhir:string; rdfs:comment "Any combination of letters, numerals, \"-\" and \".\", with a length limit of 64 characters. (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.) Ids are case-insensitive."; Not a definition, just a statement of a necessary condition 48

49 fhir:instant [they mean of time] fhir:instant rdfs:subClassOf fhir:Primitive; rdfs:comment "An instant in time - known at least to the second"; So instants not measured do not exist 49

50 fhir:Extension fhir:Extension rdfs:subClassOf fhir:Element; rdfs:label ""; dc:title ""; rdfs:comment "Optional Extensions Element - found in all resources."; a owl:Restriction; owl:onProperty fhir:Extension.url; owl:minCardinality "1^^xs:nonNegativeInteger" "Optional Extensions Element - found in all resources."; 50

51 fhir:BackboneElement.modifierExtension rdfs:comment "May be used to represent additional information that is not part of the basic definition of the element, and that modifies the understanding of the element that contains it. Usually modifier elements provide negation or qualification. In order to make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions."; rdfs:domain fhir:BackboneElement; 51

52 Not a single definition in this entire document Though there are some ‘definition elements’ referred to in the document 52

53 Ontology in FHIR: Tiny Pointers to the Sequence Ontology # - Extension: geneticsAminoAcidChangeType ex:birthplace a fhir:ExtensionDefinition; rdfs:comment "Type of variation expressed using Sequence Ontology or LOINC answer list 48006-1."; dcterms:description "Type of variation expressed using Sequence Ontology or LOINC answer list 48006-1."; fhir:status [ a fhir:conformance-resource-status\#draft]; fhir:canonicalStatus [ a fhir:canonical-status\#draft]; dc:date "2015-03-18"; rdfs:range fhir:CodeableConcept. 53

54 Ontology in FHIR: Tiny Pointers to the Sequence Ontology # - Extension: geneticsDNASequenceVariationType --------------------------- ----- ex:birthplace a fhir:ExtensionDefinition; rdfs:comment "Codified type for associated DNA Sequence Variation. DNA Sequence Variations use the HGVS notation which implies the DNA Sequence Variation Type, but the concurrent use of this code will allow a standard and explicit type for technical and display convenience. LOINC Answer List values 48019-4 or Sequence Ontology vaues."; 54

55 birthplace? This term occurs in multiple seemingly incorrect places throughout the fhir.ttl file. I think this is a find-and-replace error 55

56 Second rule of ontology building Read 56

57 fhir:birthplace ex:birthplace a fhir:ExtensionDefinition; rdfs:comment "Identifies internal processing status for the data element; e.g. \"Under review\"."; dcterms:description "Identifies internal processing status for the data element; e.g. \"Under review\"."; fhir:status [ a fhir:conformance-resource-status\#draft]; fhir:canonicalStatus [ a fhir:canonical-status\#draft]; dc:date "2014-04-21"; rdfs:range fhir:CodeableConcept. 57

58 Ontology in FHIR: Tiny pointers to LOINC Document Ontology fhir-vs:doc-classcodes a fhir:ValueSet; fhir:version "1.0.1"; rdfs:label "FHIR Document Class Codes"; dc:title "FHIR Document Class Codes"; rdfs:comment "LOINC codes for Document Kind, taken from the LOINC document ontology."; 58

59 Ontology in FHIR: ‘Internal ontologies’ fhir:w5.system a fhir:CodeSystem; rdfs:comment "An internal ontology defined for the FHIR definitions"; fhir:contains fhir:w5. fhir:w5 a fhir:Concept. fhir:w5\#financial rdfs:subClassOf fhir:w5; rdfs:comment "Financial Resources"; 59

60 Ontology in FHIR: ‘FHIR Internal Ontologies’ fhir:canonical-status.system a fhir:CodeSystem; rdfs:comment "An internal ontology defined for the FHIR definitions"; dcterms:description "An internal ontology defined for the FHIR definitions"; fhir:contains fhir:canonical-status. E.g. fhir:canonical-status\#error #proposed, #planned … 60

61 What is FHIR for? Fast Healthcare Interoperability Resources 61

62 How would the solution system yield interoperability 62 people from the local environment will need to map their codes to the system (compare i2b2) who is going to be able to map their local data to FHIR? who will guarantee that coding is done consistently?,

63 63

64 64

65 Reignited

66 :. Tom Beale 66 http://wolandscat.net/

67 :. from Tom Beale (to openEHR list) 67 Many of us here have studied or used some of the key upper level ontologies (BFO, BioTopLite etc), and I think BFO2 will probably end up being the one of choice for general biomedicine. It [will be merged with] the Information Artefact Ontology (IAO) which will probably become the upper level ontology for describing types of information that stand in the IS-ABOUT and similar relationships with real world referents - in other words, EHR information items.

68 What is the solution? (adapted from Beale) 68 A dedicated small team of healthcare information experts to create a new standard based on state of the art coding practices Parts of this should involve ontology work following state of the art ontology practices This ontology work should ensure interoperability of data tagged with the ontology and data tagged with existing ontologies, including biological ontologies.

69 :. from Tom Beale (to openEHR list) 69 My personal feeling is that in the next 2-5 years, we will finally see the joining up of these key ontologies with information models and archetypes in the clinical information space. It will be up to us in the openEHR community and other related communities (13606, CIMI, HL7 etc) to engage with this material and consider how this integration will be achieved. A few very early ideas are mentioned in the Archetype Technology Overview document, but of course this is just one narrow area of application. We need to all get on the same page in terms of understanding and conceptual nomenclature in this space, and BFO2 I believe is an excellent foundation for that. We will be using it increasingly in the openEHR specification space, and I think others will find it useful as well.Archetype Technology Overview

70 RELATION TO TIME GRANULARITY CONTINUANTOCCURRENT INDEPENDENTDEPENDENT ORGAN AND ORGANISM Organism (NCBI Taxonomy) Anatomical Entity (FMA, CARO) Organ Function (FMP, CPRO) Phenotypic Quality (PaTO) Biological Process (GO) CELL AND CELLULAR COMPONENT Cell (CL) Cellular Component (FMA, GO) Cellular Function (GO) MOLECULE Molecule (ChEBI, Sequence Ontology, PrO) Molecular Function (GO) Molecular Process (GO) OBO Foundry reference ontologies (Gene Ontology in yellow) 70

71 RELATION TO TIME GRANULARITY CONTINUANTOCCURRENT INDEPENDENTDEPENDENT ORGAN AND ORGANISM Organism (NCBI Taxonomy) Anatomical Entity (FMA, CARO) Organ Function (FMP, CPRO) Phenotypic Quality (PaTO) Biological Process (GO) CELL AND CELLULAR COMPONENT Cell (CL) Cellular Component (FMA, GO) Cellular Function (GO) MOLECULE Molecule (ChEBI, Sequence Ontology, PrO) Molecular Function (GO) Molecular Process (GO) OBO Foundry reference ontologies (Sequence Ontology in blue) 71

72 Populations Diseases Biological Processes Cognitive Processes Planned processes Data Documents Plans Software Algorithms Organisms Organs Phenotypic Qualities Cells Molecular Functions Proteins Extension Strategy + Modular Organization Basic Formal Ontology (BFO 2.0) 72 I NDEPENDENT C ONTINUANT (~T HING )) D EPENDENT C ONTINUANT (~A TTRIBUTE ) O CCURRENT (~P ROCESS ) INFORMATION A RTIFACT (~D ATA )

73 RELATION TO TIME GRANULARITY CONTINUANTOCCURRENT INDEPENDENTDEPENDENT ORGAN AND ORGANISM Organism (NCBI Taxonomy) Anatomical Entity (FMA, CARO) Organ Function (FMP, CPRO) Phenotypic Quality (PaTO) Biological Process (GO) CELL AND CELLULAR COMPONENT Cell (CL) Cellular Component (FMA, GO) Cellular Function (GO) MOLECULE Molecule (ChEBI, SO, RnaO, PrO) Molecular Function (GO) Molecular Process (GO) Environment Ontology (EnvO) Environment Ontology 73

74 BFO 74 Ontology for General Medical Science Cardiovascular Disease Ontology Genetic Disease Ontology Cancer Disease Ontology Genetic Disease Ontology Immune Disease Ontology Environmental Disease Ontology Oral Disease Ontology Infectious Disease Ontology IDO Staph Aureus IDO MRSA IDO Australian MRSA IDO Australian Hospital MRSA …

75 RELATION TO TIME CONTINUANT OCCURRENT GRANULARITY INDEPENDENT CONTINUANT DEPENDENT CONTINUANT ORGAN AND ORGANISM Organism NCBI Taxonomy Anatomical Entity (FMA, CARO) Organ Function (FMP, CPRO) Biological Process (GO) Ontology for Biomedical Investigations (OBI) CELL AND CELLULAR COMPONENT Cell (CL) Cellular Component (FMA, GO) Cellular Function (GO) MOLECULE Molecule (ChEBI, SO, RnaO, PrO) Molecular Function (GO) Molecular Process (GO) Environment Ontology (ENVO) 75 Phenotypic Quality (PATO) Recognizing a new family of protocol-driven processes (investigation, assay, clinical trial …)

76 RELATION TO TIME CONTINUANT OCCURRENT GRANULARITY INDEPENDENT CONTINUANT DEPENDENT CONTINUANT INFORMATION ARTIFACT ORGAN AND ORGANISM Organism NCBI Taxonomy Anatomical Entity (FMA, CARO) Organ Function (FMP, CPRO) Information Artifact Ontology Software, Algorithms, … Sequence Data, EHR Data … Biological Process (GO) OBI CELL AND CELLULAR COMPONENT Cell (CL) Cellular Component (FMA, GO) Cellular Function (GO) MOLECULE Molecule (ChEBI, SO, RnaO, PrO) Molecular Function (GO) Images, Image Data, Flow Cytometry Data, … Molecular Process (GO) OBI: Imaging Environment Ontology (ENVO) 76 Phenotypic Quality (PATO) Recognizing a new family of information entities: data, publications, images, algorithms …

77 Patient Demograp hics Phenotype (Disease, …) Disease processes Data about all of these things including image data … Algorithms, software, protocols, … Instruments, Biomaterials, Functions Parameters, Assay types, Statistics … Anatomy Histology Genotype (GO) Biological processes (GO) Chemistry I NDEPENDENT C ONTINUANT (~T HING )) D EPENDENT C ONTINUANT (~A TTRIBUTE ) O CCURRENT (~P ROCESS ) IAOOBI 77 Aboutness: Diagnosis about disease

78 OBO Foundry approach extended into other domains 78 NIF StandardNeuroscience Information Framework IDO Core / IDO extensions Infectious Disease Ontology Suite cROP / Planteome Common Reference Ontologies for Plants

79 Common Reference Ontologies for Plants (cROP)

80 Examples of BFO-based ontology frameworks in other areas UNEP Ontology Framework United Nations Environment Programme CIA Ontology Framework Central Intelligence Agency USGS National MapUnited States Geological Survey Joint Doctrine Ontologies US Air Force Research Labs Common Core Ontologies (CCO) US Army / I2WD and ARL, IARPA, JIDO, ONR, AFRL TRIP OntologiesFederal Highway Administration (FHWA) Transportation Research Informatics Platform (TRIP)


Download ppt "FHIR and ontology Barry Smith Charleston, September 24, 2015 1."

Similar presentations


Ads by Google