Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split out zib HeartRate into multiple profiles #445

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 10 additions & 32 deletions examples/nl-core-HeartRate-01.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">

Check notice on line 2 in examples/nl-core-HeartRate-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Validate Observation against the Heart rate profile (http://hl7.org/fhir/StructureDefinition/heartrate) which is required by the FHIR specification because the LOINC code 8867-4 was found (at Observation)

Check warning on line 2 in examples/nl-core-HeartRate-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Best Practice Recommendation: In general, all observations should have a performer (at Observation)

Check warning on line 2 in examples/nl-core-HeartRate-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation) (at Observation)
<id value="nl-core-HeartRate-01"/>
<meta>
<profile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate"/>
Expand Down Expand Up @@ -41,36 +41,14 @@
<display value="Auscultatie"/>
</coding>
</method>
<component>
<code>
<coding>
<system value="http://snomed.info/sct"/>
<code value="301112006"/>
<display value="Finding of heart rhythm"/>
</coding>
</code>
<valueCodeableConcept>
<coding>
<system value="http://snomed.info/sct"/>
<code value="361137007"/>
<display value="Onregelmatige hartslag"/>
</coding>
</valueCodeableConcept>
</component>
<component>
<code>
<coding>
<system value="http://snomed.info/sct"/>
<code value="301113001"/>
<display value="Finding of heart rate"/>
</coding>
</code>
<valueCodeableConcept>
<coding>
<system value="http://snomed.info/sct"/>
<code value="48867003"/>
<display value="Bradycardie"/>
</coding>
</valueCodeableConcept>
</component>
<hasMember>
<reference value="Observation/nl-core-HeartRate.HeartbeatRegularity-01"/>
<type value="Observation"/>
<display value="Finding of heart rhythm: Onregelmatige hartslag"/>
</hasMember>
<hasMember>
<reference value="Observation/nl-core-HeartRate.InterpretationHeartRate-01"/>
<type value="Observation"/>
<display value="Finding of heart rate: Bradycardie"/>
</hasMember>
</Observation>
35 changes: 35 additions & 0 deletions examples/nl-core-HeartRate.HeartbeatRegularity-01.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">

Check warning on line 2 in examples/nl-core-HeartRate.HeartbeatRegularity-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Best Practice Recommendation: In general, all observations should have a performer (at Observation)

Check warning on line 2 in examples/nl-core-HeartRate.HeartbeatRegularity-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation) (at Observation)
<id value="nl-core-HeartRate.HeartbeatRegularity-01"/>
<meta>
<profile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.HeartbeatRegularity"/>
</meta>
<status value="final"/>
<code>
<coding>
<system value="http://snomed.info/sct"/>
<code value="301112006"/>
<display value="Finding of heart rhythm"/>
</coding>
</code>
<subject>
<reference value="Patient/nl-core-Patient-01"/>
<type value="Patient"/>
<display value="Patient, Johanna Petronella Maria (Jo) van Putten-van der Giessen"/>
</subject>
<effectiveDateTime value="2013-02-08T06:43:00+02:00"/>
<valueCodeableConcept>
<coding>
<system value="http://snomed.info/sct"/>
<code value="361137007"/>
<display value="Onregelmatige hartslag"/>
</coding>
</valueCodeableConcept>
<method>
<coding>
<system value="http://snomed.info/sct"/>
<code value="37931006"/>
<display value="Auscultatie"/>
</coding>
</method>
</Observation>
35 changes: 35 additions & 0 deletions examples/nl-core-HeartRate.InterpretationHeartRate-01.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<Observation xmlns="http://hl7.org/fhir">

Check warning on line 2 in examples/nl-core-HeartRate.InterpretationHeartRate-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Best Practice Recommendation: In general, all observations should have a performer (at Observation)

Check warning on line 2 in examples/nl-core-HeartRate.InterpretationHeartRate-01.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Constraint failed: dom-6: 'A resource should have narrative for robust management' (defined in http://hl7.org/fhir/StructureDefinition/DomainResource) (Best Practice Recommendation) (at Observation)
<id value="nl-core-HeartRate.InterpretationHeartRate-01"/>
<meta>
<profile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.InterpretationHeartRate"/>
</meta>
<status value="final"/>
<code>
<coding>
<system value="http://snomed.info/sct"/>
<code value="301113001"/>
<display value="Finding of heart rate"/>
</coding>
</code>
<subject>
<reference value="Patient/nl-core-Patient-01"/>
<type value="Patient"/>
<display value="Patient, Johanna Petronella Maria (Jo) van Putten-van der Giessen"/>
</subject>
<effectiveDateTime value="2013-02-08T06:43:00+02:00"/>
<valueCodeableConcept>
<coding>
<system value="http://snomed.info/sct"/>
<code value="48867003"/>
<display value="Bradycardie"/>
</coding>
</valueCodeableConcept>
<method>
<coding>
<system value="http://snomed.info/sct"/>
<code value="37931006"/>
<display value="Auscultatie"/>
</coding>
</method>
</Observation>
42 changes: 42 additions & 0 deletions resources/nl-core/nl-core-HeartRate.HeartbeatRegularity.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="nl-core-HeartRate.HeartbeatRegularity" />
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.HeartbeatRegularity" />
<name value="NlcoreHeartRateHeartbeatRegularity" />
<title value="nl core HeartRate.HeartbeatRegularity" />
<status value="draft" />
<publisher value="Nictiz" />
<contact>
<name value="Nictiz" />
<telecom>
<system value="url" />
<value value="https://www.nictiz.nl" />
<use value="work" />
</telecom>
</contact>
<description value="Regularity of the heartbeat." />
<purpose value="A derived profile from [zib-HeartRate.HeartbeartRegularity](http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate.HeartbeartRegularity) to provide a version better suited for implementation purposes. This profile augments the base profile with elements found in the various use cases that have adopted the zib." />
<copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
<fhirVersion value="4.0.1" />
<mapping>
<identity value="zib-heartrate-v3.4-2020EN" />
<uri value="https://zibs.nl/wiki/HeartRate-v3.4(2020EN)" />
<name value="zib HeartRate-v3.4(2020EN)" />
</mapping>
<kind value="resource" />
<abstract value="false" />
<type value="Observation" />
<baseDefinition value="http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate.HeartbeatRegularity" />
<derivation value="constraint" />
<differential>
<element id="Observation">
<path value="Observation" />
<comment value="This Observation resource represents the HeartbeatRegularity concept (NL-CM:12.3.5) of zib HeartRate. It can be used together with the [nl-core-HeartRate](http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate) profile on the Observation resource, which can be referenced using `Observation.hasMember`." />
<alias value="nl-core-HeartRate.HeartbeatRegularity" />
</element>
</differential>
</StructureDefinition>
42 changes: 42 additions & 0 deletions resources/nl-core/nl-core-HeartRate.InterpretationHeartRate.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="nl-core-HeartRate.InterpretationHeartRate" />
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.InterpretationHeartRate" />
<name value="NlcoreHeartRateInterpretationHeartRate" />
<title value="nl core HeartRate.InterpretationHeartRate" />
<status value="draft" />
<publisher value="Nictiz" />
<contact>
<name value="Nictiz" />
<telecom>
<system value="url" />
<value value="https://www.nictiz.nl" />
<use value="work" />
</telecom>
</contact>
<description value="Regularity of the heartbeat." />
<purpose value="A derived profile from [zib-HeartRate.InterpretationHeartRate](http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate.InterpretationHeartRate) to provide a version better suited for implementation purposes. This profile augments the base profile with elements found in the various use cases that have adopted the zib." />
<copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
<fhirVersion value="4.0.1" />
<mapping>
<identity value="zib-heartrate-v3.4-2020EN" />
<uri value="https://zibs.nl/wiki/HeartRate-v3.4(2020EN)" />
<name value="zib HeartRate-v3.4(2020EN)" />
</mapping>
<kind value="resource" />
<abstract value="false" />
<type value="Observation" />
<baseDefinition value="http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate.InterpretationHeartRate" />
<derivation value="constraint" />
<differential>
<element id="Observation">
<path value="Observation" />
<comment value="This Observation resource represents the InterpretationHeartRate concept (NL-CM:12.3.7) of zib HeartRate. It can be used together with the [nl-core-HeartRate](http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate) profile on the Observation resource, which can be referenced using `Observation.hasMember`." />
<alias value="nl-core-HeartRate.InterpretationHeartRate" />
</element>
</differential>
</StructureDefinition>
14 changes: 13 additions & 1 deletion resources/nl-core/nl-core-HeartRate.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="nl-core-HeartRate" />
<text>
<status value="empty"/>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate" />
Expand Down Expand Up @@ -35,6 +35,7 @@
<differential>
<element id="Observation">
<path value="Observation" />
<comment value="**HL7 Vital Signs compatibility**&#xD;&#xA;&#xD;&#xA;Although this profile represents a vital signs measurement, it is *not* directly based on the HL7 Vital Signs profile because of two issues in its current version that prevent it from being used for the exchange of zibs (see below). However, an effort has been made to make this profile functionally equivalent to (a profile derived from) the [HL7 Vital Signs HeartRate profile](http://hl7.org/fhir/StructureDefinition/heartrate). Instances for both profiles should be highly compatible.&#xD;&#xA;&#xD;&#xA;This means that it should be possible to mostly validate an instance for this profile against the HL7 Vital Signs counterpart, _except_ for references on `Observation.hasMember` and `Observation.derivedFrom`. The base HL7 Vital Signs profile restricts the targets of these element to itself, which is a requirement that can never be satisfied for instances of profiles that are not directly derived from it.&#xD;&#xA;&#xD;&#xA;Please note that this profile implements the zib and can therefore be more restricted than its HL7 counterpart. It should be regarded as a derived profile rather than a direct recreation of the HL7 version.&#xD;&#xA;&#xD;&#xA;**Differences with the HL7 Vital Signs counterpart**&#xD;&#xA;&#xD;&#xA;* The _required_ terminology binding on `Observation.component` to the [Vital Signs Units](http://hl7.org/fhir/ValueSet/ucum-vitals-common) dataset makes it impossible to use `.component` for representing anything else than a Quantity (like a CodeableConcept or a boolean). This binding has therefore been omitted in the current profile.&#xD;&#xA;* The `mustSupport` = _true_ flag found on numerous elements isn't further specified in the HL7 Vital Signs IG, as is required by FHIR. This flag has therefore been omitted from the current profile.&#xD;&#xA;* The target restriction on `Observation.hasMember` and `Observation.derivedFrom` to the HL7 Vital Signs profile cannot be fulfilled. This restriction has therefore been omitted from the current profile.&#xD;&#xA;&#xD;&#xA;It might happen that for some concepts, the zib uses a different (but compatible) way than what is recommended by the [HL7 Vital Signs IG](http://hl7.org/fhir/r4/observation-vitalsigns.html). This is described in the comments for these concepts. There are also some differences in the profiling approach between the current and the HL7 profile, like the use of patterns rather than slices with fixed systems and codes to enforce the inclusion of some coding (for reasons of consistency with other zib profiles, the former approach has been chosen here). Apart from what is mentioned above, constraints, invariants and terminology bindings have been copied from the HL7 Vital Signs profile, but some textual descriptions have been omitted.&#xD;&#xA;&#xD;&#xA;Note: No equivalent for the HL7 Vital Signs base profile has been created to implement the zib profiles. The profile for this zib has been directly modelled onto its HL7 Vital Signs counterpart.&#xD;&#xA;&#xD;&#xA;**Relationship with other profiles**&#xD;&#xA;Several concept(s) of zib HeartRate are represented using distinct Observation resources. These are grouped using the current resource and are referenced on `Observation.hasMember`:&#xD;&#xA;* HeartbeatRegularity (NL-CM:12.3.5): [nl-core-HeartRate.HeartbeatRegularity](http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.HeartbeatRegularity)&#xD;&#xA;* InterpretationHeartRate (NL-CM:12.3.7): [nl-core-HeartRate.InterpretationHeartRate](http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.InterpretationHeartRate)" />
<alias value="nl-core-HeartRate" />
</element>
<element id="Observation.subject">
Expand All @@ -45,5 +46,16 @@
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient" />
</type>
</element>
<element id="Observation.hasMember">
<path value="Observation.hasMember" />
<type>
<code value="Reference" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/Observation" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/MolecularSequence" />
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.HeartbeatRegularity" />
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HeartRate.InterpretationHeartRate" />
</type>
</element>
</differential>
</StructureDefinition>
119 changes: 119 additions & 0 deletions resources/zib/zib-HeartRate.HeartbeatRegularity.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="zib-HeartRate.HeartbeatRegularity" />
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate.HeartbeatRegularity" />
<name value="ZibHeartRateHeartbeatRegularity" />
<title value="zib HeartRate.HeartbeatRegularity" />
<status value="draft" />
<publisher value="Nictiz" />
<contact>
<name value="Nictiz" />
<telecom>
<system value="url" />
<value value="https://www.nictiz.nl" />
<use value="work" />
</telecom>
</contact>
<description value="Regularity of the heartbeat." />
<purpose value="This Observation resource represents the HeartbeatRegularity concept (NL-CM:12.3.5) of the Dutch [zib ('Zorginformatiebouwsteen', i.e. Health and Care Information Model) HeartRate v3.4 (2020EN)](https://zibs.nl/wiki/HeartRate-v3.4(2020EN))." />
<copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
<fhirVersion value="4.0.1" />
<mapping>
<identity value="zib-heartrate-v3.4-2020EN" />
<uri value="https://zibs.nl/wiki/HeartRate-v3.4(2020EN)" />
<name value="zib HeartRate-v3.4(2020EN)" />
</mapping>
<kind value="resource" />
<abstract value="true" />
<type value="Observation" />
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation" />
<derivation value="constraint" />
<differential>
<element id="Observation">
<path value="Observation" />
<comment value="This Observation resource represents the HeartbeatRegularity concept (NL-CM:12.3.5) of zib HeartRate. It can be used together with the [zib-HeartRate](http://nictiz.nl/fhir/StructureDefinition/zib-HeartRate) profile on the Observation resource, which can be referenced using `Observation.hasMember`." />
pieter-edelman-nictiz marked this conversation as resolved.
Show resolved Hide resolved
</element>
<element id="Observation.code">
<path value="Observation.code" />
<patternCodeableConcept>
<coding>
<system value="http://snomed.info/sct" />
<code value="301112006" />
</coding>
</patternCodeableConcept>
</element>
<element id="Observation.effective[x]">
<path value="Observation.effective[x]" />
<slicing>
<discriminator>
<type value="type" />
<path value="$this" />
</discriminator>
<rules value="open" />
</slicing>
</element>
<element id="Observation.effective[x]:effectiveDateTime">
<path value="Observation.effective[x]" />
<sliceName value="effectiveDateTime" />
<short value="HeartRateDateTime" />
<definition value="Date and time of the heart rate measurement." />
<alias value="HartfrequentieDatumTijd" />
<type>
<code value="dateTime" />
</type>
<mapping>
<identity value="zib-heartrate-v3.4-2020EN" />
<map value="NL-CM:12.3.4" />
<comment value="HeartRateDateTime" />
</mapping>
</element>
<element id="Observation.value[x]">
<path value="Observation.value[x]" />
<slicing>
<discriminator>
<type value="type" />
<path value="$this" />
</discriminator>
<rules value="open" />
</slicing>
</element>
<element id="Observation.value[x]:valueCodeableConcept">
<path value="Observation.value[x]" />
<sliceName value="valueCodeableConcept" />
<short value="HeartbeatRegularity" />
<definition value="Regularity of the heartbeat." />
<alias value="HartslagRegelmatigheid" />
<type>
<code value="CodeableConcept" />
</type>
<binding>
<strength value="required" />
<valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.12.3.1--20200901000000" />
</binding>
<mapping>
<identity value="zib-heartrate-v3.4-2020EN" />
<map value="NL-CM:12.3.5" />
<comment value="HeartbeatRegularity" />
</mapping>
</element>
<element id="Observation.method">
<path value="Observation.method" />
<short value="HeartRateMeasurementMethod" />
<definition value="The method used to count and observe the heart rate." />
<alias value="HartslagMeetMethode" />
<binding>
<strength value="extensible" />
<valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.12.3.2--20200901000000" />
</binding>
<mapping>
<identity value="zib-heartrate-v3.4-2020EN" />
<map value="NL-CM:12.3.6" />
<comment value="HeartRateMeasurementMethod" />
</mapping>
</element>
</differential>
</StructureDefinition>
Loading
Loading