Skip to content

Instantly share code, notes, and snippets.

@ericprud
Last active August 5, 2026 13:07
Show Gist options
  • Select an option

  • Save ericprud/a6cf7b7112eb8ff7905620b2e6240d99 to your computer and use it in GitHub Desktop.

Select an option

Save ericprud/a6cf7b7112eb8ff7905620b2e6240d99 to your computer and use it in GitHub Desktop.
asdfasdf
- schemaLabel: schema
schemaURL: schema.shex
dataLabel: data
dataURL: data.ttl
queryMap: |
<PatientX>@START
staticVars: {}
outputSchemaURL: outputSchema.shex
outputShapeMap: "<tag:BPfhir123>@<collector>"
status: conformant
BASE <http://my.data.example/medical/>
PREFIX med: <http://dam.example/med#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
<PatientX>
med:name "Sue" ;
med:reports <Report1>, <Report2> .
<Report1>
med:reportNo "one" ;
med:results <Res00>, <Res01> .
<Res00>
med:systolic [
med:value "100"^^xsd:float ;
med:units "mmHg"
] ;
med:diastolic [
med:value "60"^^xsd:float ;
med:units "mmHg"
] .
<Res01>
med:systolic [
med:value "101"^^xsd:float ;
med:units "mmHg"
] ;
med:diastolic [
med:value "61"^^xsd:float ;
med:units "mmHg"
] .
<Report2>
med:reportNo "two" ;
med:results <Res10>, <Res11> .
<Res10>
med:systolic [
med:value "110"^^xsd:float ;
med:units "mmHg"
] ;
med:diastolic [
med:value "70"^^xsd:float ;
med:units "mmHg"
] .
<Res11>
med:systolic [
med:value "111"^^xsd:float ;
med:units "mmHg"
] ;
med:diastolic [
med:value "71"^^xsd:float ;
med:units "mmHg"
] ;
med:someConstProp "asdf" .
PREFIX fhir: <http://hl7.org/fhir-rdf/>
PREFIX sct: <http://snomed.info/sct/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX bp: <http://shex.io/extensions/Map/#BPDAM->
PREFIX Map: <http://shex.io/extensions/Map/#>
start = @<collector>
<Patient> {
fhir:Patient.name LITERAL %Map:{ bp:name %};
}
<collector> {
fhir:item @<BPreport>*
}
<BPreport> {
a [fhir:DiagnosticReport]?;
fhir:status ["final"];
fhir:subject @<Patient>;
fhir:coding { fhir:code [sct:Blood_Pressure] };
fhir:component @<sysBP>;
fhir:component @<diaBP>
}
<BPfhir> {
a [fhir:Observation]?;
fhir:subject @<Patient>;
fhir:coding { fhir:code [sct:Blood_Pressure] };
fhir:component @<sysBP>;
fhir:component @<diaBP>
}
<sysBP> {
a [fhir:Observation]?;
fhir:coding { fhir:code [sct:Systolic_Blood_Pressure] };
fhir:valueQuantity {
a [fhir:Quantity]?;
fhir:value xsd:float %Map:{ bp:sysVal %};
fhir:units xsd:string %Map:{ bp:sysUnits %}
}
}
<diaBP> {
a [fhir:Observation]?;
fhir:coding { fhir:code [sct:Diastolic_Blood_Pressure] };
fhir:valueQuantity {
a [fhir:Quantity]?;
fhir:value xsd:float %Map:{ bp:diaVal %};
fhir:units xsd:string %Map:{ bp:diaUnits %}
};
fhir:foo xsd:string? %Map:{ <http://abc.example/someConstant> %}
}
PREFIX : <http://dam.example/med#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX bp: <http://shex.io/extensions/Map/#BPDAM->
PREFIX Map: <http://shex.io/extensions/Map/#>
start = @<PatientDAM>
<PatientDAM> {
:name LITERAL %Map:{ bp:name %};
:reports @<ReportsDAM>* %Map:{ bp:reports %}
}
<ReportsDAM> {
:reportNo LITERAL %Map:{ bp:reportNo %};
:results @<BPunitsDAM>* %Map:{ bp:bp %}
}
<BPunitsDAM> {
:systolic {
:value xsd:float %Map:{ bp:sysVal %};
:units xsd:string %Map:{ bp:sysUnits %}
};
:diastolic {
:value xsd:float %Map:{ bp:diaVal %};
:units xsd:string %Map:{ bp:diaUnits %}
};
:someConstProp xsd:string? %Map:{ <http://abc.example/someConstant> %}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment