From babc13f8d0ced2308c854f8ccd8d6f9baba65f5b Mon Sep 17 00:00:00 2001 From: Ashwin Djorai Date: Wed, 8 Dec 2021 14:46:30 +0100 Subject: [PATCH 01/13] Branch init --- resources/nl-core/nl-core-PainScore.xml | 43 ++++++ ....4.3.11.60.40.2.12.9.1--20200901000000.xml | 89 ++++++++++++ resources/zib/zib-PainScore.xml | 132 ++++++++++++++++++ 3 files changed, 264 insertions(+) create mode 100644 resources/nl-core/nl-core-PainScore.xml create mode 100644 resources/zib/terminology/PijnMeetmethodeCodelijst-2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1--20200901000000.xml create mode 100644 resources/zib/zib-PainScore.xml diff --git a/resources/nl-core/nl-core-PainScore.xml b/resources/nl-core/nl-core-PainScore.xml new file mode 100644 index 000000000..86a96617d --- /dev/null +++ b/resources/nl-core/nl-core-PainScore.xml @@ -0,0 +1,43 @@ + + + + + + + <status value="draft" /> + <publisher value="Nictiz" /> + <contact> + <name value="Nictiz" /> + <telecom> + <system value="email" /> + <value value="info@nictiz.nl" /> + <use value="work" /> + </telecom> + </contact> + <description value="The pain score is a general measurement for pain experience, not a description of specific, localized pain. The following are used as an easily reproducible measurement for pain experience: NRS (Numeric Rating Scale) in which the patient gives the pain a number on a scale of 1 (no pain) to 10 (unbearable pain). VAS (Visual Analogue Score), in which the patient points to a bar with a line to indicate the pain they feel. The back of the bar has a scale from 0 (no pain) to 10 (unbearable pain) on it. The results of both scores have the same meaning, but the visual analogue method (VAS) is seen as more reliable than the NRS pain score." /> + <purpose value="A derived profile from [zib-PainScore](http://nictiz.nl/fhir/StructureDefinition/zib-PainScore) 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" /> + <kind value="resource" /> + <abstract value="false" /> + <type value="Observation" /> + <baseDefinition value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> + <derivation value="constraint" /> + <differential> + <element id="Observation"> + <path value="Observation" /> + <alias value="nl-core-PainScore" /> + </element> + <element id="Observation.subject"> + <path value="Observation.subject" /> + <type> + <code value="Reference" /> + <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" /> + <targetProfile value="http://hl7.org/fhir/StructureDefinition/Group" /> + <targetProfile value="http://hl7.org/fhir/StructureDefinition/Device" /> + <targetProfile value="http://hl7.org/fhir/StructureDefinition/Location" /> + <targetProfile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-Patient" /> + </type> + </element> + </differential> +</StructureDefinition> \ No newline at end of file diff --git a/resources/zib/terminology/PijnMeetmethodeCodelijst-2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1--20200901000000.xml b/resources/zib/terminology/PijnMeetmethodeCodelijst-2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1--20200901000000.xml new file mode 100644 index 000000000..8ef50f285 --- /dev/null +++ b/resources/zib/terminology/PijnMeetmethodeCodelijst-2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1--20200901000000.xml @@ -0,0 +1,89 @@ +<ValueSet xmlns="http://hl7.org/fhir"> + <id value="2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1--20200901000000"/> + <meta> + <profile value="http://hl7.org/fhir/StructureDefinition/shareablevalueset"/><!--<profile value="http://hl7.org/fhir/4.0/StructureDefinition/ValueSet"/>--> + </meta> + <extension url="http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod"> + <valuePeriod> + <start value="2020-09-01T00:00:00+01:00"/> + </valuePeriod> + </extension> + <url value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1--20200901000000"/> + <identifier> + <use value="official"/> + <system value="urn:ietf:rfc:3986"/> + <value value="urn:oid:2.16.840.1.113883.2.4.3.11.60.40.2.12.9.1"/> + </identifier> + <version value="2020-09-01T00:00:00"/> + <name value="PijnMeetmethodeCodelijst"/> + <title value="PijnMeetmethodeCodelijst"/> + <status value="active"/> + <experimental value="false"/> + <publisher value="Registratie aan de bron"/> + <contact> + <name value="Registratie aan de bron"/> + <telecom> + <system value="url"/> + <value value="https://www.registratieaandebron.nl"/> + </telecom> + <telecom> + <system value="url"/> + <value value="https://www.zibs.nl"/> + </telecom> + </contact> + <description value="PijnMeetmethodeCodelijst"/> + <immutable value="false"/> + <compose> + <include> + <system value="urn:oid:2.16.840.1.113883.2.4.3.11.60.40.4.9.1"/> + <concept> + <extension url="http://hl7.org/fhir/StructureDefinition/valueset-concept-comments"> + <valueString value="NRS"/> + </extension> + <code value="NRS"/> + <display value="NRS"/> + <designation> + <language value="nl-NL"/> + <use> + <system value="http://snomed.info/sct"/> + <code value="900000000000013009"/> + <display value="Synonym"/> + </use> + <value value="NRS"/> + </designation> + </concept> + <concept> + <extension url="http://hl7.org/fhir/StructureDefinition/valueset-concept-comments"> + <valueString value="VAS10"/> + </extension> + <code value="VAS10"/> + <display value="VAS10"/> + <designation> + <language value="nl-NL"/> + <use> + <system value="http://snomed.info/sct"/> + <code value="900000000000013009"/> + <display value="Synonym"/> + </use> + <value value="VAS10"/> + </designation> + </concept> + <concept> + <extension url="http://hl7.org/fhir/StructureDefinition/valueset-concept-comments"> + <valueString value="VAS100"/> + </extension> + <code value="VAS100"/> + <display value="VAS100"/> + <designation> + <language value="nl-NL"/> + <use> + <system value="http://snomed.info/sct"/> + <code value="900000000000013009"/> + <display value="Synonym"/> + </use> + <value value="VAS100"/> + </designation> + </concept> + </include> + </compose> +</ValueSet> \ No newline at end of file diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml new file mode 100644 index 000000000..8b37745b3 --- /dev/null +++ b/resources/zib/zib-PainScore.xml @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="utf-8"?> +<StructureDefinition xmlns="http://hl7.org/fhir"> + <id value="zib-PainScore" /> + <url value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> + <name value="ZibPainScore" /> + <title value="zib PainScore" /> + <status value="draft" /> + <publisher value="Nictiz" /> + <contact> + <name value="Nictiz" /> + <telecom> + <system value="email" /> + <value value="info@nictiz.nl" /> + <use value="work" /> + </telecom> + </contact> + <description value="The pain score is a general measurement for pain experience, not a description of specific, localized pain. The following are used as an easily reproducible measurement for pain experience: NRS (Numeric Rating Scale) in which the patient gives the pain a number on a scale of 1 (no pain) to 10 (unbearable pain). VAS (Visual Analogue Score), in which the patient points to a bar with a line to indicate the pain they feel. The back of the bar has a scale from 0 (no pain) to 10 (unbearable pain) on it. The results of both scores have the same meaning, but the visual analogue method (VAS) is seen as more reliable than the NRS pain score." /> + <purpose value="This Observation resource represents the Dutch [zib ('Zorginformatiebouwsteen', i.e. Health and Care Information Model) PainScore-v4.0(2020EN)](https://zibs.nl/wiki/PainScore-v4.0(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-painscore-v4.0-2020EN" /> + <uri value="https://zibs.nl/wiki/PainScore-v4.0(2020EN)" /> + <name value="zib PainScore-v4.0(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" /> + <short value="PainScore" /> + <alias value="PijnScore" /> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.1" /> + <comment value="PainScore" /> + </mapping> + </element> + <element id="Observation.code"> + <path value="Observation.code" /> + <patternCodeableConcept> + <coding> + <system value="http://snomed.info/sct" /> + <code value="425401001" /> + </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.effectiveDateTime" /> + <sliceName value="effectiveDateTime" /> + <short value="PainScoreDateTime" /> + <definition value="The date and time at which the pain score was measured." /> + <alias value="PijnscoreDatumTijd" /> + <type> + <code value="dateTime" /> + </type> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.3" /> + <comment value="PainScoreDateTime" /> + </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]:valueInteger"> + <path value="Observation.valueInteger" /> + <sliceName value="valueInteger" /> + <short value="PainScoreValue" /> + <definition value="The score is a general measurement of pain experience, not a description of specific, localized pain. Depending on the measuring method used, it indicates the level of pain experienced by the patient on a scale of 0 to 10: 0 = no pain and 10 = the worst pain imaginable. No descriptions are used for the intermediate values, so that the value is displayed as a number and not as a code. Sometimes a value range of 0-100 is used instead of 0-10." /> + <alias value="PijnscoreWaarde" /> + <type> + <code value="integer" /> + </type> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.2" /> + <comment value="PainScoreValue" /> + </mapping> + </element> + <element id="Observation.note"> + <path value="Observation.note" /> + <max value="1" /> + </element> + <element id="Observation.note.text"> + <path value="Observation.note.text" /> + <short value="Comment" /> + <definition value="Comment on the pain score measurement, including comments on for example the circumstances and/or disruptive factors that may influence the result." /> + <alias value="Toelichting" /> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.5" /> + <comment value="Comment" /> + </mapping> + </element> + <element id="Observation.method"> + <path value="Observation.method" /> + <short value="PainMeasuringMethod" /> + <definition value="The measuring method describes the method used to determine the pain score. The measurement involves a visualization of the pain scale." /> + <alias value="PijnMeetmethode" /> + <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.9.1--20200901000000" /> + </binding> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.4" /> + <comment value="PainMeasuringMethod" /> + </mapping> + </element> + </differential> +</StructureDefinition> \ No newline at end of file From feac866c917c88b794917208681b7d7c8789c853 Mon Sep 17 00:00:00 2001 From: Ashwin Djorai <djorai@nictiz.nl> Date: Wed, 2 Feb 2022 18:11:12 +0100 Subject: [PATCH 02/13] Added invariants and release notes --- release-notes.md | 7 +++++++ resources/zib/zib-PainScore.xml | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/release-notes.md b/release-notes.md index 3c350d858..d7f68172f 100644 --- a/release-notes.md +++ b/release-notes.md @@ -124,6 +124,13 @@ This document contains release notes per zib, indicating differences with their * Because there's a better match with CarePlan, the five custom extensions are removed. One custom extension is added to mark a `CarePlan.contributor` as the zib Requester, and another one to define the materials used. * Note: although the zib has changed quite dramatically since release 2017, the previous version of the profile was based on a pre-adopt of zib pre-release 2018, which is the same as release 2020. +## zib-PainScore +* The code on `Observation.code` has changed to 425401001. +* Removed `Observation.bodySite` mapping because AnatomicalLocation concept does not exist anymore. +* Cardinality of `Observation.method` has changed from 1..1 to 0..1. +* The datatype of `Observation.value[x]` (zib concept PainScoreValue) element has been changed from Quantity to Integer. +* Removed laterality extension because Laterality concept does not exist anymore. + ## zib-Patient * Includes Nationality, MaritalStatus, LanguageProficiency. * Cardinality of `Patient.extension:nationality` left at 0..* due to the nature of the nationality core extension (which allows for a period to be placed next to the nationality and thus allows for different nationalities over time). diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index 8b37745b3..5c3a317bc 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -33,6 +33,20 @@ <path value="Observation" /> <short value="PainScore" /> <alias value="PijnScore" /> + <constraint> + <key value="zib-PainScore-1" /> + <severity value="error" /> + <human value="maxValue of 10 if method is VAS10 or NRS or 100 if VAS100" /> + <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and valueQuantity.value <= 10) or (method.coding.code='VAS100' and valueQuantity.value <= 100)" /> + <source value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> + </constraint> + <constraint> + <key value="zib-PainScore-2" /> + <severity value="error" /> + <human value="minValue of 1 if method is NRS or 0 if VAS" /> + <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and valueQuantity.value >= 0) or (method.coding.code='NRS' and valueQuantity.value >= 1)" /> + <source value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> + </constraint> <mapping> <identity value="zib-painscore-v4.0-2020EN" /> <map value="NL-CM:12.9.1" /> @@ -59,7 +73,7 @@ </slicing> </element> <element id="Observation.effective[x]:effectiveDateTime"> - <path value="Observation.effectiveDateTime" /> + <path value="Observation.effective[x]" /> <sliceName value="effectiveDateTime" /> <short value="PainScoreDateTime" /> <definition value="The date and time at which the pain score was measured." /> @@ -84,7 +98,7 @@ </slicing> </element> <element id="Observation.value[x]:valueInteger"> - <path value="Observation.valueInteger" /> + <path value="Observation.value[x]" /> <sliceName value="valueInteger" /> <short value="PainScoreValue" /> <definition value="The score is a general measurement of pain experience, not a description of specific, localized pain. Depending on the measuring method used, it indicates the level of pain experienced by the patient on a scale of 0 to 10: 0 = no pain and 10 = the worst pain imaginable. No descriptions are used for the intermediate values, so that the value is displayed as a number and not as a code. Sometimes a value range of 0-100 is used instead of 0-10." /> From 06498d2df227098eefc0b75f28c8074d9de0c47f Mon Sep 17 00:00:00 2001 From: Ashwin Djorai <djorai@nictiz.nl> Date: Fri, 11 Feb 2022 10:03:20 +0100 Subject: [PATCH 03/13] Changed coding value on .code and updated release notes --- release-notes.md | 1 - resources/zib/zib-PainScore.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/release-notes.md b/release-notes.md index d7f68172f..b45fa849c 100644 --- a/release-notes.md +++ b/release-notes.md @@ -125,7 +125,6 @@ This document contains release notes per zib, indicating differences with their * Note: although the zib has changed quite dramatically since release 2017, the previous version of the profile was based on a pre-adopt of zib pre-release 2018, which is the same as release 2020. ## zib-PainScore -* The code on `Observation.code` has changed to 425401001. * Removed `Observation.bodySite` mapping because AnatomicalLocation concept does not exist anymore. * Cardinality of `Observation.method` has changed from 1..1 to 0..1. * The datatype of `Observation.value[x]` (zib concept PainScoreValue) element has been changed from Quantity to Integer. diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index 5c3a317bc..b937db200 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -58,7 +58,7 @@ <patternCodeableConcept> <coding> <system value="http://snomed.info/sct" /> - <code value="425401001" /> + <code value="225908003" /> </coding> </patternCodeableConcept> </element> From 65d8f0826afb57c208ad99bb8aefd6ec6346ad79 Mon Sep 17 00:00:00 2001 From: Luud Slagter <l.slagter@furore.com> Date: Mon, 16 Jan 2023 16:59:28 +0100 Subject: [PATCH 04/13] Corrected contact information, resaved in Forge --- resources/nl-core/nl-core-PainScore.xml | 4 ++-- resources/zib/zib-PainScore.xml | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/resources/nl-core/nl-core-PainScore.xml b/resources/nl-core/nl-core-PainScore.xml index 86a96617d..b28c9376d 100644 --- a/resources/nl-core/nl-core-PainScore.xml +++ b/resources/nl-core/nl-core-PainScore.xml @@ -9,8 +9,8 @@ <contact> <name value="Nictiz" /> <telecom> - <system value="email" /> - <value value="info@nictiz.nl" /> + <system value="url" /> + <value value="https://www.nictiz.nl" /> <use value="work" /> </telecom> </contact> diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index b937db200..b1a8a3ac2 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -9,8 +9,8 @@ <contact> <name value="Nictiz" /> <telecom> - <system value="email" /> - <value value="info@nictiz.nl" /> + <system value="url" /> + <value value="https://www.nictiz.nl" /> <use value="work" /> </telecom> </contact> @@ -38,14 +38,12 @@ <severity value="error" /> <human value="maxValue of 10 if method is VAS10 or NRS or 100 if VAS100" /> <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and valueQuantity.value <= 10) or (method.coding.code='VAS100' and valueQuantity.value <= 100)" /> - <source value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> </constraint> <constraint> <key value="zib-PainScore-2" /> <severity value="error" /> <human value="minValue of 1 if method is NRS or 0 if VAS" /> <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and valueQuantity.value >= 0) or (method.coding.code='NRS' and valueQuantity.value >= 1)" /> - <source value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> </constraint> <mapping> <identity value="zib-painscore-v4.0-2020EN" /> From efac8dd93cbf257447954bd30f51d4887129da27 Mon Sep 17 00:00:00 2001 From: Luud Slagter <l.slagter@furore.com> Date: Tue, 17 Jan 2023 10:07:31 +0100 Subject: [PATCH 05/13] Corrected constraint, finetuned release notes --- release-notes.md | 4 ++-- resources/zib/zib-PainScore.xml | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/release-notes.md b/release-notes.md index b7fd66e68..3f085d976 100644 --- a/release-notes.md +++ b/release-notes.md @@ -203,10 +203,10 @@ This document contains release notes per zib, indicating differences with their * The comment extension has been replaced by a mapping to `NutritionOrder.note.text`. ## zib-PainScore -* Removed `Observation.bodySite` mapping because AnatomicalLocation concept does not exist anymore. +* Removed mapping on `Observation.bodySite` because the AnatomicalLocation concept has been removed from the zib. +* Removed laterality extension because the Laterality concept has been removed from the zib. * Cardinality of `Observation.method` has changed from 1..1 to 0..1. * The datatype of `Observation.value[x]` (zib concept PainScoreValue) element has been changed from Quantity to Integer. -* Removed laterality extension because Laterality concept does not exist anymore. ## zib-Patient * Includes Nationality, MaritalStatus, LanguageProficiency, LifeStance. diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index b1a8a3ac2..b68657975 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -36,14 +36,14 @@ <constraint> <key value="zib-PainScore-1" /> <severity value="error" /> - <human value="maxValue of 10 if method is VAS10 or NRS or 100 if VAS100" /> - <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and valueQuantity.value <= 10) or (method.coding.code='VAS100' and valueQuantity.value <= 100)" /> + <human value="The maximum value is 10 if method is VAS10 or NRS, or 100 if method is VAS100" /> + <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and valueInteger.value <= 10) or (method.coding.code = 'VAS100' and valueInteger.value <= 100)" /> </constraint> <constraint> <key value="zib-PainScore-2" /> <severity value="error" /> - <human value="minValue of 1 if method is NRS or 0 if VAS" /> - <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and valueQuantity.value >= 0) or (method.coding.code='NRS' and valueQuantity.value >= 1)" /> + <human value="The minimum value is 0 if method is VAS10 or VAS100, or 1 if method is NRS" /> + <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and valueInteger.value >= 0) or (method.coding.code = 'NRS' and valueInteger.value >= 1)" /> </constraint> <mapping> <identity value="zib-painscore-v4.0-2020EN" /> @@ -104,6 +104,8 @@ <type> <code value="integer" /> </type> + <condition value="zib-PainScore-1" /> + <condition value="zib-PainScore-2" /> <mapping> <identity value="zib-painscore-v4.0-2020EN" /> <map value="NL-CM:12.9.2" /> @@ -130,6 +132,8 @@ <short value="PainMeasuringMethod" /> <definition value="The measuring method describes the method used to determine the pain score. The measurement involves a visualization of the pain scale." /> <alias value="PijnMeetmethode" /> + <condition value="zib-PainScore-1" /> + <condition value="zib-PainScore-2" /> <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.9.1--20200901000000" /> From 8116eb40fe4e1b8acb11cc4c4f5cb66c68b23240 Mon Sep 17 00:00:00 2001 From: Luud Slagter <l.slagter@furore.com> Date: Tue, 17 Jan 2023 10:13:05 +0100 Subject: [PATCH 06/13] Finetuned release notes --- release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-notes.md b/release-notes.md index 3f085d976..8429b1935 100644 --- a/release-notes.md +++ b/release-notes.md @@ -206,7 +206,7 @@ This document contains release notes per zib, indicating differences with their * Removed mapping on `Observation.bodySite` because the AnatomicalLocation concept has been removed from the zib. * Removed laterality extension because the Laterality concept has been removed from the zib. * Cardinality of `Observation.method` has changed from 1..1 to 0..1. -* The datatype of `Observation.value[x]` (zib concept PainScoreValue) element has been changed from Quantity to Integer. +* The data type of `Observation.value[x]` (zib concept PainScoreValue) has been changed from Quantity to Integer. ## zib-Patient * Includes Nationality, MaritalStatus, LanguageProficiency, LifeStance. From bcb49be2bbf9cbb958ea18a64681fdbd15475e06 Mon Sep 17 00:00:00 2001 From: Ashwin <djorai@nictiz.nl> Date: Wed, 15 Feb 2023 16:02:38 +0100 Subject: [PATCH 07/13] Added mapping in nl-core layer --- resources/nl-core/nl-core-PainScore.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/nl-core/nl-core-PainScore.xml b/resources/nl-core/nl-core-PainScore.xml index b28c9376d..9d927b9a9 100644 --- a/resources/nl-core/nl-core-PainScore.xml +++ b/resources/nl-core/nl-core-PainScore.xml @@ -18,6 +18,11 @@ <purpose value="A derived profile from [zib-PainScore](http://nictiz.nl/fhir/StructureDefinition/zib-PainScore) 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-painscore-v4.0-2020EN" /> + <uri value="https://zibs.nl/wiki/PainScore-v4.0(2020EN)" /> + <name value="zib PainScore-v4.0(2020EN)" /> + </mapping> <kind value="resource" /> <abstract value="false" /> <type value="Observation" /> From 14f36f7e75dd580c00c8bd5b3b3d6265891d8408 Mon Sep 17 00:00:00 2001 From: Jorn Duwel <duwel@nictiz.nl> Date: Wed, 8 Mar 2023 16:31:43 +0100 Subject: [PATCH 08/13] Add generated example --- examples/nl-core-PainScore-01.xml | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/nl-core-PainScore-01.xml diff --git a/examples/nl-core-PainScore-01.xml b/examples/nl-core-PainScore-01.xml new file mode 100644 index 000000000..a751a1ea4 --- /dev/null +++ b/examples/nl-core-PainScore-01.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Observation xmlns="http://hl7.org/fhir"> + <id value="nl-core-PainScore-01"/> + <meta> + <profile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-PainScore"/> + </meta> + <status value="final"/> + <code> + <coding> + <system value="http://snomed.info/sct"/> + <code value="225908003"/> + <display value="pijnscore"/> + </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+01:00"/> + <valueInteger value="7"/> + <note> + <text value="Bij bewegen"/> + </note> + <method> + <coding> + <system value="urn:oid:2.16.840.1.113883.2.4.3.11.60.40.4.9.1"/> + <code value="VAS10"/> + <display value="VAS10"/> + </coding> + </method> +</Observation> From 5e035d8a0cec8942a78c88d0243347036cce1ba7 Mon Sep 17 00:00:00 2001 From: Jorn Duwel <duwel@nictiz.nl> Date: Wed, 8 Mar 2023 17:09:20 +0100 Subject: [PATCH 09/13] Attempt to fix fhirpath expression --- resources/zib/zib-PainScore.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index b68657975..46109d190 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -37,13 +37,13 @@ <key value="zib-PainScore-1" /> <severity value="error" /> <human value="The maximum value is 10 if method is VAS10 or NRS, or 100 if method is VAS100" /> - <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and valueInteger.value <= 10) or (method.coding.code = 'VAS100' and valueInteger.value <= 100)" /> + <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and value <= 10) or (method.coding.code = 'VAS100' and value <= 100)" /> </constraint> <constraint> <key value="zib-PainScore-2" /> <severity value="error" /> <human value="The minimum value is 0 if method is VAS10 or VAS100, or 1 if method is NRS" /> - <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and valueInteger.value >= 0) or (method.coding.code = 'NRS' and valueInteger.value >= 1)" /> + <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and value >= 0) or (method.coding.code = 'NRS' and value >= 1)" /> </constraint> <mapping> <identity value="zib-painscore-v4.0-2020EN" /> From 2deb6d57cca98edfe6627ec5b5ba71156f38572b Mon Sep 17 00:00:00 2001 From: Luud Slagter <l.slagter@furore.com> Date: Tue, 23 May 2023 11:40:27 +0200 Subject: [PATCH 10/13] Changed constraint w.r.t. minimum value --- resources/zib/zib-PainScore.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index 46109d190..85df4f47c 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -42,8 +42,8 @@ <constraint> <key value="zib-PainScore-2" /> <severity value="error" /> - <human value="The minimum value is 0 if method is VAS10 or VAS100, or 1 if method is NRS" /> - <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'VAS100') and value >= 0) or (method.coding.code = 'NRS' and value >= 1)" /> + <human value="The minimum value is 0" /> + <expression value="value >= 0" /> </constraint> <mapping> <identity value="zib-painscore-v4.0-2020EN" /> @@ -133,7 +133,6 @@ <definition value="The measuring method describes the method used to determine the pain score. The measurement involves a visualization of the pain scale." /> <alias value="PijnMeetmethode" /> <condition value="zib-PainScore-1" /> - <condition value="zib-PainScore-2" /> <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.9.1--20200901000000" /> From 75026fb085fe144ddd41b3f51b989763bf4c3d96 Mon Sep 17 00:00:00 2001 From: Luud Slagter <l.slagter@furore.com> Date: Tue, 23 May 2023 11:53:16 +0200 Subject: [PATCH 11/13] Added known issue --- known-issues.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/known-issues.yml b/known-issues.yml index 415d6afbb..351a26a4b 100644 --- a/known-issues.yml +++ b/known-issues.yml @@ -737,6 +737,12 @@ nl-core-HearingFunction.HearingAid-*: - message: 'DeviceUseStatement.reasonReference:zibMedicalDeviceReference: max allowed = 0, but found 1' reason: The Validator cannot actually inspect the referenced resources, and falsely assumes the reference is a reference to the offending profile. +nl-core-PainScore-01: + ignored issues: + Observation.method: + - message: None of the codings provided are in the value set 'PijnMeetmethodeCodelijst' + reason: The terminology servers used don't know this code system and wrongly conclude that this is an invalid code. + nl-core-PharmaceuticalProduct-01: ignored issues: Medication.code: From efca10d4c6c72da93a6d8e704ac5d7e970706849 Mon Sep 17 00:00:00 2001 From: Luud Slagter <l.slagter@furore.com> Date: Tue, 23 May 2023 12:11:50 +0200 Subject: [PATCH 12/13] Corrected known issue erroneously changed while merging main --- known-issues.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/known-issues.yml b/known-issues.yml index 535f7d33c..b63c22963 100644 --- a/known-issues.yml +++ b/known-issues.yml @@ -779,6 +779,7 @@ nl-core-Patient-01: ignored issues: Patient.communication[0].language: - message: None of the codings provided are in the value set 'CommunicatieTaalCodelijst' + reason: The terminology servers used don't know this code system and wrongly conclude that this is an invalid code. nl-core-PharmaceuticalProduct-01: ignored issues: From 63d4f0327f96ffcc75937ee4910365da2e9d1697 Mon Sep 17 00:00:00 2001 From: Pieter Edelman <edelman@nictiz.nl> Date: Tue, 11 Jul 2023 21:46:05 +0200 Subject: [PATCH 13/13] Rephrase the FHIRPath constraint for value checking in zib-PainScore. --- resources/zib/zib-PainScore.xml | 293 ++++++++++++++++---------------- 1 file changed, 147 insertions(+), 146 deletions(-) diff --git a/resources/zib/zib-PainScore.xml b/resources/zib/zib-PainScore.xml index 85df4f47c..fff86f515 100644 --- a/resources/zib/zib-PainScore.xml +++ b/resources/zib/zib-PainScore.xml @@ -1,147 +1,148 @@ -<?xml version="1.0" encoding="utf-8"?> -<StructureDefinition xmlns="http://hl7.org/fhir"> - <id value="zib-PainScore" /> - <url value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> - <name value="ZibPainScore" /> - <title value="zib PainScore" /> - <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="The pain score is a general measurement for pain experience, not a description of specific, localized pain. The following are used as an easily reproducible measurement for pain experience: NRS (Numeric Rating Scale) in which the patient gives the pain a number on a scale of 1 (no pain) to 10 (unbearable pain). VAS (Visual Analogue Score), in which the patient points to a bar with a line to indicate the pain they feel. The back of the bar has a scale from 0 (no pain) to 10 (unbearable pain) on it. The results of both scores have the same meaning, but the visual analogue method (VAS) is seen as more reliable than the NRS pain score." /> - <purpose value="This Observation resource represents the Dutch [zib ('Zorginformatiebouwsteen', i.e. Health and Care Information Model) PainScore-v4.0(2020EN)](https://zibs.nl/wiki/PainScore-v4.0(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-painscore-v4.0-2020EN" /> - <uri value="https://zibs.nl/wiki/PainScore-v4.0(2020EN)" /> - <name value="zib PainScore-v4.0(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" /> - <short value="PainScore" /> - <alias value="PijnScore" /> - <constraint> - <key value="zib-PainScore-1" /> - <severity value="error" /> - <human value="The maximum value is 10 if method is VAS10 or NRS, or 100 if method is VAS100" /> - <expression value="((method.coding.code = 'VAS10' or method.coding.code = 'NRS') and value <= 10) or (method.coding.code = 'VAS100' and value <= 100)" /> - </constraint> - <constraint> - <key value="zib-PainScore-2" /> - <severity value="error" /> - <human value="The minimum value is 0" /> - <expression value="value >= 0" /> - </constraint> - <mapping> - <identity value="zib-painscore-v4.0-2020EN" /> - <map value="NL-CM:12.9.1" /> - <comment value="PainScore" /> - </mapping> - </element> - <element id="Observation.code"> - <path value="Observation.code" /> - <patternCodeableConcept> - <coding> - <system value="http://snomed.info/sct" /> - <code value="225908003" /> - </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="PainScoreDateTime" /> - <definition value="The date and time at which the pain score was measured." /> - <alias value="PijnscoreDatumTijd" /> - <type> - <code value="dateTime" /> - </type> - <mapping> - <identity value="zib-painscore-v4.0-2020EN" /> - <map value="NL-CM:12.9.3" /> - <comment value="PainScoreDateTime" /> - </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]:valueInteger"> - <path value="Observation.value[x]" /> - <sliceName value="valueInteger" /> - <short value="PainScoreValue" /> - <definition value="The score is a general measurement of pain experience, not a description of specific, localized pain. Depending on the measuring method used, it indicates the level of pain experienced by the patient on a scale of 0 to 10: 0 = no pain and 10 = the worst pain imaginable. No descriptions are used for the intermediate values, so that the value is displayed as a number and not as a code. Sometimes a value range of 0-100 is used instead of 0-10." /> - <alias value="PijnscoreWaarde" /> - <type> - <code value="integer" /> - </type> - <condition value="zib-PainScore-1" /> - <condition value="zib-PainScore-2" /> - <mapping> - <identity value="zib-painscore-v4.0-2020EN" /> - <map value="NL-CM:12.9.2" /> - <comment value="PainScoreValue" /> - </mapping> - </element> - <element id="Observation.note"> - <path value="Observation.note" /> - <max value="1" /> - </element> - <element id="Observation.note.text"> - <path value="Observation.note.text" /> - <short value="Comment" /> - <definition value="Comment on the pain score measurement, including comments on for example the circumstances and/or disruptive factors that may influence the result." /> - <alias value="Toelichting" /> - <mapping> - <identity value="zib-painscore-v4.0-2020EN" /> - <map value="NL-CM:12.9.5" /> - <comment value="Comment" /> - </mapping> - </element> - <element id="Observation.method"> - <path value="Observation.method" /> - <short value="PainMeasuringMethod" /> - <definition value="The measuring method describes the method used to determine the pain score. The measurement involves a visualization of the pain scale." /> - <alias value="PijnMeetmethode" /> - <condition value="zib-PainScore-1" /> - <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.9.1--20200901000000" /> - </binding> - <mapping> - <identity value="zib-painscore-v4.0-2020EN" /> - <map value="NL-CM:12.9.4" /> - <comment value="PainMeasuringMethod" /> - </mapping> - </element> - </differential> +<?xml version="1.0" encoding="utf-8"?> +<StructureDefinition xmlns="http://hl7.org/fhir"> + <id value="zib-PainScore" /> + <url value="http://nictiz.nl/fhir/StructureDefinition/zib-PainScore" /> + <name value="ZibPainScore" /> + <title value="zib PainScore" /> + <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="The pain score is a general measurement for pain experience, not a description of specific, localized pain. The following are used as an easily reproducible measurement for pain experience: NRS (Numeric Rating Scale) in which the patient gives the pain a number on a scale of 1 (no pain) to 10 (unbearable pain). VAS (Visual Analogue Score), in which the patient points to a bar with a line to indicate the pain they feel. The back of the bar has a scale from 0 (no pain) to 10 (unbearable pain) on it. The results of both scores have the same meaning, but the visual analogue method (VAS) is seen as more reliable than the NRS pain score." /> + <purpose value="This Observation resource represents the Dutch [zib ('Zorginformatiebouwsteen', i.e. Health and Care Information Model) PainScore-v4.0(2020EN)](https://zibs.nl/wiki/PainScore-v4.0(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-painscore-v4.0-2020EN" /> + <uri value="https://zibs.nl/wiki/PainScore-v4.0(2020EN)" /> + <name value="zib PainScore-v4.0(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" /> + <short value="PainScore" /> + <alias value="PijnScore" /> + <constraint> + <key value="zib-PainScore-1" /> + <severity value="error" /> + <human value="The maximum value is 10 if method is VAS10 or NRS, or 100 if method is VAS100" /> + <expression value="(method.coding.code in ('VAS10' | 'NRS') implies value <= 10) and (method.coding.code = 'VAS100' implies value <= 100)" /> + </constraint> + <constraint> + <key value="zib-PainScore-2" /> + <severity value="error" /> + <human value="The minimum value is 0" /> + <expression value="value >= 0" /> + </constraint> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.1" /> + <comment value="PainScore" /> + </mapping> + </element> + <element id="Observation.code"> + <path value="Observation.code" /> + <patternCodeableConcept> + <coding> + <system value="http://snomed.info/sct" /> + <code value="225908003" /> + </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="PainScoreDateTime" /> + <definition value="The date and time at which the pain score was measured." /> + <alias value="PijnscoreDatumTijd" /> + <type> + <code value="dateTime" /> + </type> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.3" /> + <comment value="PainScoreDateTime" /> + </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]:valueInteger"> + <path value="Observation.value[x]" /> + <sliceName value="valueInteger" /> + <short value="PainScoreValue" /> + <definition value="The score is a general measurement of pain experience, not a description of specific, localized pain. Depending on the measuring method used, it indicates the level of pain experienced by the patient on a scale of 0 to 10: 0 = no pain and 10 = the worst pain imaginable. No descriptions are used for the intermediate values, so that the value is displayed as a number and not as a code. Sometimes a value range of 0-100 is used instead of 0-10." /> + <alias value="PijnscoreWaarde" /> + <type> + <code value="integer" /> + </type> + <condition value="zib-PainScore-1" /> + <condition value="zib-PainScore-2" /> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.2" /> + <comment value="PainScoreValue" /> + </mapping> + </element> + <element id="Observation.note"> + <path value="Observation.note" /> + <max value="1" /> + </element> + <element id="Observation.note.text"> + <path value="Observation.note.text" /> + <short value="Comment" /> + <definition value="Comment on the pain score measurement, including comments on for example the circumstances and/or disruptive factors that may influence the result." /> + <alias value="Toelichting" /> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.5" /> + <comment value="Comment" /> + </mapping> + </element> + <element id="Observation.method"> + <path value="Observation.method" /> + <short value="PainMeasuringMethod" /> + <definition value="The measuring method describes the method used to determine the pain score. The measurement involves a visualization of the pain scale." /> + <alias value="PijnMeetmethode" /> + <condition value="zib-PainScore-1" /> + <condition value="zib-PainScore-2" /> + <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.9.1--20200901000000" /> + </binding> + <mapping> + <identity value="zib-painscore-v4.0-2020EN" /> + <map value="NL-CM:12.9.4" /> + <comment value="PainMeasuringMethod" /> + </mapping> + </element> + </differential> </StructureDefinition> \ No newline at end of file