Data utility depends on whether it
Data dimensions
Size/Structure (false) dichotomy
or use a specialized form
or
git@github.com:w3c/hcls-fhir-rdf.git
wget https://hl7-fhir.github.io/observation-example.xml
xsltproc -stringparam fhirdefs ../data/definitions.xml xsl/transform.xsl observation-example.xml
FHIR has a REST-based HTTP protocol
hence the Search Parameters
much more detailed that anything in LDP.
Name | Flags | Card. | Type |
---|---|---|---|
Observation | I | DomainResource | |
identifier | 0..* | Identifier | |
status | ?! Σ | 1..1 | code |
category | 0..1 | CodeableConcept | |
code | Σ | 1..1 | CodeableConcept |
subject | Σ | 0..1 | Reference(Patient | Group | Device | Location) |
encounter | 0..1 | Reference(Encounter) | |
effective[x] | Σ | 0..1 | |
effectiveDateTime | dateTime | ||
effectivePeriod | Period |
<Observation> {
a (fhir:Observation)?,
fhir:Observation.identifier @<Identifier>*,
fhir:Observation.status @<code>,
fhir:Observation.code @<CodeableConcept>,
fhir:Observation.subject { fhir:reference @<Patient>
OR @<Group>
OR @<Device>
OR @<Location> }?,
fhir:Observation.encounter { fhir:reference @<Patient> }?
(fhir:Observation.effectiveDateTime @<DateTime> |
fhir:Observation.effectivePeriod @<Interval>)?,
...
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.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.reliability @<LitShape>?,
fhir:Observation.bodySiteCodeableConcept @<CodeableConceptShape>?,
fhir:Observation.bodySiteReference @<ReferenceShape>?,
fhir:Observation.method @<CodeableConceptShape>?,
fhir:Observation.specimen @<ReferenceShape>?,
fhir:Observation.performer @<ReferenceShape>*,
fhir:Observation.device @<ReferenceShape>?,
fhir:Observation.referenceRange @<BackboneElementShape>*,
fhir:Observation.related @<BackboneElementShape>*
}
<IssueShape> { ex:state (ex:unassigned ex:assigned), ex:reportedBy @<UserShape>, ex:reportedOn xsd:dateTime %js:{ report = _.o; return true; %}, (ex:reproducedBy @<EmployeeShape>, ex:reproducedOn xsd:dateTime %js:{ return _.o.lex > report.lex; %} %sparql:{ ?s ex:reportedOn ?rpt . FILTER (?o > ?rpt) %} ), ex:related @<IssueShape>* } <UserShape> { (foaf:name xsd:string | foaf:givenName xsd:string+, foaf:familyName xsd:string), foaf:mbox IRI }
<Issue1> ex:state ex:unassigned ; ex:reportedBy <User2> ; ex:reportedOn "2013-01-23T10:18:00"^^xsd:dateTime ; ex:reproducedBy <Thompson.J> ; ex:reproducedOn "2013-01-23T10:00:00"^^xsd:dateTime ; # ex:related <Issue2>, <Issue3> . <User2> foaf:givenName "Bob" ; foaf:familyName "Smith" ; foaf:mbox <mail:bob@example.org> .
Exmine two schemas to see:
The popular CD
datatype has:
PREFIX snomed: <http://ihtsdo.org…20130131…> PREFIX hl7: <http://hl7.org/owl/metadata#> <myObs> hl7:coding snomed:282291009 .
These are all sibling children of Degree findings
:
Separate augmenters
and decreasers
without requiring SNOMED to do the same.
terminology model
augmented terminology
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 ; ].
Technical barriers: