FHIR:Vprepub-1.0 FHIR Profiling Guidelines R4 examples: verschil tussen versies
(Textual improvements) |
(Update slice names according to camelCasing scheme) |
||
(10 tussenliggende versies door 2 gebruikers niet weergegeven) | |||
Regel 1: | Regel 1: | ||
− | = | + | __NOINDEX__ |
− | This | + | |
+ | Examples are provided in XML format but could have been in JSON format as well. | ||
+ | |||
+ | =Slice examples in XML= | ||
+ | This section provides guidance on how slicing is expected in R4 profiles that are created by Nictiz. | ||
+ | |||
+ | {{Collapse top|Slice definition to specify 1 or more variations of a concept.|left=yes}} | ||
+ | The {{fhir|identifier}} element is sliced to provide the definition one specific identifier. | ||
− | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
− | <element id=" | + | <element id="Patient.identifier"> |
− | <path value=" | + | <path value="Patient.identifier"/> |
<slicing> | <slicing> | ||
<discriminator> | <discriminator> | ||
Regel 13: | Regel 19: | ||
<rules value="open"/> | <rules value="open"/> | ||
</slicing> | </slicing> | ||
− | |||
</element> | </element> | ||
− | <element id=" | + | <element id="Patient.identifier:bsn"> |
− | <path value=" | + | <path value="Patient.identifier"/> |
− | < | + | <max value="1" /> |
− | < | + | <patternIdentifier> |
− | + | <!--<use value="official"/> --> | |
− | + | <system value="http://fhir.nl/fhir/NamingSystem/bsn"/> | |
− | <system value="http:// | + | </patternIdentifier> |
− | |||
− | </ | ||
</element> | </element> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
− | {{Collapse top|Slice definition to | + | {{Collapse top|Slice definition to map semantic codes to a repeating element.|left=yes}} |
+ | Semantic code provides meaning to a part of or complete resource, e.g. a semantic code can be used to indicate that a {{fhir|MedicationRequest}} represents a zib MedicationAgreement. These semantic codes often need to be present. To also allow other codes to be used they are profiled as patterns. | ||
+ | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
− | <element id=" | + | <element id="Observation.component"> |
− | <path value=" | + | <path value="Observation.component" /> |
<slicing> | <slicing> | ||
<discriminator> | <discriminator> | ||
− | + | <type value="value"/> | |
− | + | <path value="code"/> | |
</discriminator> | </discriminator> | ||
− | <rules value="open"/> | + | <rules value="open" /> |
</slicing> | </slicing> | ||
</element> | </element> | ||
− | <element id=" | + | <element id="Observation.component:typeOfTobaccoUsed"> |
− | <path value=" | + | <path value="Observation.component" /> |
− | < | + | <sliceName value="typeOfTobaccoUsed" /> |
− | + | <max value="1" /> | |
− | <system value="http:// | + | </element> |
− | </ | + | <element id="Observation.component:typeOfTobaccoUsed.code"> |
+ | <path value="Observation.component.code" /> | ||
+ | <min value="1"/> | ||
+ | <patternCodeableConcept> | ||
+ | <coding> | ||
+ | <system value="http://snomed.info/sct" /> | ||
+ | <code value="53661000146106" /> | ||
+ | </coding> | ||
+ | </patternCodeableConcept> | ||
</element> | </element> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
− | {{Collapse top|Slice definition | + | {{Collapse top|Slice definition that combines the use of a semantic code and a HCIM concept.|left=yes}} |
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
− | <element id=" | + | <element id="Observation.category"> |
− | <path value=" | + | <path value="Observation.category" /> |
<slicing> | <slicing> | ||
<discriminator> | <discriminator> | ||
− | <type value="value"/> | + | <type value="value" /> |
− | <path value="$this"/> | + | <path value="$this" /> |
</discriminator> | </discriminator> | ||
− | <rules value="open"/> | + | <rules value="open" /> |
</slicing> | </slicing> | ||
+ | <min value="1" /> | ||
+ | </element> | ||
+ | <element id="Observation.category:laboratoryTestResultCode"> | ||
+ | <path value="Observation.category" /> | ||
+ | <sliceName value="laboratoryTestResultCode" /> | ||
+ | <min value="1" /> | ||
+ | <max value="1" /> | ||
+ | <patternCodeableConcept> | ||
+ | <coding> | ||
+ | <system value="http://snomed.info/sct" /> | ||
+ | <code value="49581000146104" /> | ||
+ | </coding> | ||
+ | </patternCodeableConcept> | ||
</element> | </element> | ||
− | <element id=" | + | <element id="Observation.category:resultType"> |
− | <path value=" | + | <path value="Observation.category" /> |
− | <sliceName value=" | + | <sliceName value="resultType" /> |
+ | <max value="1" /> | ||
<binding> | <binding> | ||
− | <strength value="required"/> | + | <strength value="required" /> |
− | <description value=" | + | <description value="ResultaatTypeCodelijst" /> |
− | < | + | <valueSetReference> |
+ | <reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.13.1.1--20171231000000" /> | ||
+ | <display value="ResultaatTypeCodelijst" /> | ||
+ | </valueSetReference> | ||
</binding> | </binding> | ||
</element> | </element> | ||
Regel 102: | Regel 132: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
+ | {{Collapse top|Slice definition to allow multiple ValueSet bindings. |left=yes}} | ||
+ | '''Note:''' only applies in rare circumstances when different requirements are present for each ValueSet. | ||
− | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
− | <element id=" | + | <element id="Procedure.code.coding"> |
− | <path value=" | + | <path value="Procedure.code.coding"/> |
<slicing> | <slicing> | ||
<discriminator> | <discriminator> | ||
− | <type value="value" /> | + | <type value="value"/> |
− | <path value="$this" /> | + | <path value="$this"/> |
</discriminator> | </discriminator> | ||
− | <rules value="open" /> | + | <rules value="open"/> |
</slicing> | </slicing> | ||
− | |||
</element> | </element> | ||
− | <element id=" | + | <element id="Procedure.code.coding:verrichtingTypeCodelijst"> |
− | <path value=" | + | <path value="Procedure.code.coding"/> |
− | + | <sliceName value="verrichtingTypeCodelijst"/> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <sliceName value=" | ||
− | |||
<binding> | <binding> | ||
− | <strength value="required" /> | + | <strength value="required"/> |
− | <description value=" | + | <description value="The name of the procedure using the Verrichtingenthesaurus DHD."/> |
− | < | + | <valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.14.1.2--20171231000000"/> |
− | |||
− | |||
− | |||
</binding> | </binding> | ||
</element> | </element> | ||
Regel 144: | Regel 158: | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
− | {{Collapse top|Slice definition that | + | {{Collapse top|Slice definition for multiple mapped concepts to one element that are discriminated by their conformance to a profile. |left=yes}} |
+ | '''Note:''' try to avoid profile type discriminators as they are more costly to perform by a validator. This slicing definition is discriminated based on the conformance of the target resource to a profile. In this case, the path needs to include the resolve() function to indicate to the validator that is should resolve the reference. | ||
+ | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<element id="DiagnosticReport.result"> | <element id="DiagnosticReport.result"> | ||
Regel 174: | Regel 190: | ||
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/zib-FunctionalOrMentalStatus" /> | <targetProfile value="http://nictiz.nl/fhir/StructureDefinition/zib-FunctionalOrMentalStatus" /> | ||
</type> | </type> | ||
+ | </element> | ||
+ | </syntaxhighlight> | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | =ValueSet binding examples in XML= | ||
+ | This section provides guidance on translating ValueSet bindings from functional descriptions to FHIR for the R4 profiles that are created by Nictiz. | ||
+ | |||
+ | In each of the cases below, {{fhir|.min}} and {{fhir|.max}} may be used to further specify what is required. | ||
+ | |||
+ | {{Collapse top|Single ValueSet|left=yes}} | ||
+ | The FHIR binding strength can be set to the binding strength of the functional description. | ||
+ | |||
+ | <syntaxhighlight lang="xml"> | ||
+ | <element id="Observation.method"> | ||
+ | <path value="Observation.method" /> | ||
+ | <short value="MeasuringMethod" /> | ||
+ | <definition value="The type of method used to measure blood pressure." /> | ||
+ | <alias value="Meetmethode" /> | ||
+ | <binding> | ||
+ | <strength value="extensible" /> <!-- FHIR binding strength follows the functional binding strength --> | ||
+ | <description value="MeetmethodeCodelijst" /> | ||
+ | <valueSetReference> | ||
+ | <reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.12.4.1--20171231000000" /> | ||
+ | <display value="MeetmethodeCodelijst" /> | ||
+ | </valueSetReference> | ||
+ | </binding> | ||
+ | </element> | ||
+ | </syntaxhighlight> | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top|Multiple ValueSets, codes may come from any of these.|left=yes}} | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <element id="Condition.code"> | ||
+ | <path value="Condition.code" /> | ||
+ | <short value="ProblemName" /> | ||
+ | <definition value="The problem name defines the problem. Depending on the setting, different code systems can be used. The ProblemNameCodelist provides an overview of the possible code systems." /> | ||
+ | <alias value="ProbleemNaam" /> | ||
+ | <min value="1" /> | ||
+ | <binding> | ||
+ | <strength value="required" /> <!-- Depending on the functional specification --> | ||
+ | <description value="The problem name defines the problem." /> | ||
+ | <valueSetReference> | ||
+ | <reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.5.1.3--20171231000000" /> <!-- Combined ValueSet --> | ||
+ | <display value="ProbleemNaamCodelijst" /> | ||
+ | </valueSetReference> | ||
+ | </binding> | ||
+ | </element> | ||
+ | </syntaxhighlight> | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top|Multiple ValueSets with different requirements.|left=yes}} | ||
+ | This can happen for example when two different functional concepts are mapped to the same FHIR element, each with their own ValueSet. | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <element id="RelatedPerson.relationship"> | ||
+ | <path value="RelatedPerson.relationship" /> | ||
+ | <slicing> | ||
+ | <discriminator> | ||
+ | <type value="value" /> | ||
+ | <path value="$this" /> | ||
+ | </discriminator> | ||
+ | <rules value="open" /> <!-- By allowing open slicing, the binding of each ValueSets effectively becomes extensible --> | ||
+ | </slicing> | ||
+ | </element> | ||
+ | <element id="RelatedPerson.relationship:role"> | ||
+ | <path value="RelatedPerson.relationship" /> | ||
+ | <sliceName value="role" /> | ||
+ | <short value="Role" /> | ||
+ | <definition value="Defines the role of the contact in relation to the patient." /> | ||
+ | <alias value="Rol" /> | ||
+ | <binding> | ||
+ | <strength value="required" /> <!-- Must be "required" in order to make slicing work --> | ||
+ | <description value="RolCodelijst" /> | ||
+ | <valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.3.1.2--20200901000000" /> | ||
+ | </binding> | ||
+ | </element> | ||
+ | <element id="RelatedPerson.relationship:relationship"> | ||
+ | <path value="RelatedPerson.relationship" /> | ||
+ | <sliceName value="relationship" /> | ||
+ | <short value="Relationship" /> | ||
+ | <definition value="Defines the contact’s familial relationship to the patient." /> | ||
+ | <alias value="Relatie" /> | ||
+ | <binding> | ||
+ | <strength value="required" /> | ||
+ | <description value="RelatieCodelijst" /> | ||
+ | <valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.3.1.1--20200901000000" /> | ||
+ | </binding> | ||
</element> | </element> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Collapse bottom}} | {{Collapse bottom}} |
Huidige versie van 12 apr 2021 om 09:40
Examples are provided in XML format but could have been in JSON format as well.
Slice examples in XML
This section provides guidance on how slicing is expected in R4 profiles that are created by Nictiz.
Slice definition to specify 1 or more variations of a concept. |
---|
The <element id="Patient.identifier">
<path value="Patient.identifier"/>
<slicing>
<discriminator>
<type value="value"/>
<path value="$this"/>
</discriminator>
<rules value="open"/>
</slicing>
</element>
<element id="Patient.identifier:bsn">
<path value="Patient.identifier"/>
<max value="1" />
<patternIdentifier>
<!--<use value="official"/> -->
<system value="http://fhir.nl/fhir/NamingSystem/bsn"/>
</patternIdentifier>
</element>
|
Slice definition to map semantic codes to a repeating element. |
---|
Semantic code provides meaning to a part of or complete resource, e.g. a semantic code can be used to indicate that a <element id="Observation.component">
<path value="Observation.component" />
<slicing>
<discriminator>
<type value="value"/>
<path value="code"/>
</discriminator>
<rules value="open" />
</slicing>
</element>
<element id="Observation.component:typeOfTobaccoUsed">
<path value="Observation.component" />
<sliceName value="typeOfTobaccoUsed" />
<max value="1" />
</element>
<element id="Observation.component:typeOfTobaccoUsed.code">
<path value="Observation.component.code" />
<min value="1"/>
<patternCodeableConcept>
<coding>
<system value="http://snomed.info/sct" />
<code value="53661000146106" />
</coding>
</patternCodeableConcept>
</element>
|
Slice definition that combines the use of a semantic code and a HCIM concept. |
---|
<element id="Observation.category">
<path value="Observation.category" />
<slicing>
<discriminator>
<type value="value" />
<path value="$this" />
</discriminator>
<rules value="open" />
</slicing>
<min value="1" />
</element>
<element id="Observation.category:laboratoryTestResultCode">
<path value="Observation.category" />
<sliceName value="laboratoryTestResultCode" />
<min value="1" />
<max value="1" />
<patternCodeableConcept>
<coding>
<system value="http://snomed.info/sct" />
<code value="49581000146104" />
</coding>
</patternCodeableConcept>
</element>
<element id="Observation.category:resultType">
<path value="Observation.category" />
<sliceName value="resultType" />
<max value="1" />
<binding>
<strength value="required" />
<description value="ResultaatTypeCodelijst" />
<valueSetReference>
<reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.13.1.1--20171231000000" />
<display value="ResultaatTypeCodelijst" />
</valueSetReference>
</binding>
</element>
|
Slice definition to specify the datatype(s) of the 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.valueCodeableConcept"/>
<sliceName value="valueCodeableConcept"/>
<type>
<code value="CodeableConcept"/>
</type>
</element>
<element id="Observation.value[x]:valueQuantity">
<path value="Observation.valueQuantity"/>
<sliceName value="valueQuantity"/>
<type>
<code value="Quantity"/>
</type>
</element>
|
Slice definition to allow multiple ValueSet bindings. |
---|
Note: only applies in rare circumstances when different requirements are present for each ValueSet. <element id="Procedure.code.coding">
<path value="Procedure.code.coding"/>
<slicing>
<discriminator>
<type value="value"/>
<path value="$this"/>
</discriminator>
<rules value="open"/>
</slicing>
</element>
<element id="Procedure.code.coding:verrichtingTypeCodelijst">
<path value="Procedure.code.coding"/>
<sliceName value="verrichtingTypeCodelijst"/>
<binding>
<strength value="required"/>
<description value="The name of the procedure using the Verrichtingenthesaurus DHD."/>
<valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.14.1.2--20171231000000"/>
</binding>
</element>
|
Slice definition for multiple mapped concepts to one element that are discriminated by their conformance to a profile. |
---|
Note: try to avoid profile type discriminators as they are more costly to perform by a validator. This slicing definition is discriminated based on the conformance of the target resource to a profile. In this case, the path needs to include the resolve() function to indicate to the validator that is should resolve the reference. <element id="DiagnosticReport.result">
<path value="DiagnosticReport.result" />
<slicing>
<discriminator>
<type value="profile" />
<path value="resolve()" />
</discriminator>
<rules value="open" />
</slicing>
<max value="1" />
</element>
<element id="DiagnosticReport.result:measurementValue">
<path value="DiagnosticReport.result" />
<sliceName value="measurementValue" />
<max value="1" />
<type>
<code value="Reference" />
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/zib-GeneralMeasurement" />
</type>
</element>
<element id="DiagnosticReport.result:healthCondition">
<path value="DiagnosticReport.result" />
<sliceName value="healthCondition" />
<max value="1" />
<type>
<code value="Reference" />
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/zib-FunctionalOrMentalStatus" />
</type>
</element>
|
ValueSet binding examples in XML
This section provides guidance on translating ValueSet bindings from functional descriptions to FHIR for the R4 profiles that are created by Nictiz.
In each of the cases below, .min
and .max
may be used to further specify what is required.
Single ValueSet |
---|
The FHIR binding strength can be set to the binding strength of the functional description. <element id="Observation.method">
<path value="Observation.method" />
<short value="MeasuringMethod" />
<definition value="The type of method used to measure blood pressure." />
<alias value="Meetmethode" />
<binding>
<strength value="extensible" /> <!-- FHIR binding strength follows the functional binding strength -->
<description value="MeetmethodeCodelijst" />
<valueSetReference>
<reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.12.4.1--20171231000000" />
<display value="MeetmethodeCodelijst" />
</valueSetReference>
</binding>
</element>
|
Multiple ValueSets, codes may come from any of these. |
---|
<element id="Condition.code">
<path value="Condition.code" />
<short value="ProblemName" />
<definition value="The problem name defines the problem. Depending on the setting, different code systems can be used. The ProblemNameCodelist provides an overview of the possible code systems." />
<alias value="ProbleemNaam" />
<min value="1" />
<binding>
<strength value="required" /> <!-- Depending on the functional specification -->
<description value="The problem name defines the problem." />
<valueSetReference>
<reference value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.5.1.3--20171231000000" /> <!-- Combined ValueSet -->
<display value="ProbleemNaamCodelijst" />
</valueSetReference>
</binding>
</element>
|
Multiple ValueSets with different requirements. |
---|
This can happen for example when two different functional concepts are mapped to the same FHIR element, each with their own ValueSet. <element id="RelatedPerson.relationship">
<path value="RelatedPerson.relationship" />
<slicing>
<discriminator>
<type value="value" />
<path value="$this" />
</discriminator>
<rules value="open" /> <!-- By allowing open slicing, the binding of each ValueSets effectively becomes extensible -->
</slicing>
</element>
<element id="RelatedPerson.relationship:role">
<path value="RelatedPerson.relationship" />
<sliceName value="role" />
<short value="Role" />
<definition value="Defines the role of the contact in relation to the patient." />
<alias value="Rol" />
<binding>
<strength value="required" /> <!-- Must be "required" in order to make slicing work -->
<description value="RolCodelijst" />
<valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.3.1.2--20200901000000" />
</binding>
</element>
<element id="RelatedPerson.relationship:relationship">
<path value="RelatedPerson.relationship" />
<sliceName value="relationship" />
<short value="Relationship" />
<definition value="Defines the contact’s familial relationship to the patient." />
<alias value="Relatie" />
<binding>
<strength value="required" />
<description value="RelatieCodelijst" />
<valueSet value="http://decor.nictiz.nl/fhir/ValueSet/2.16.840.1.113883.2.4.3.11.60.40.2.3.1.1--20200901000000" />
</binding>
</element>
|