Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt
names

The eHealth Infrastructure document-query and document-transformation services provide integrations to the Danish national document-sharing infrastructure.

This page describes the eHealth infrastructure capabilities for

  1. How to query and retrieve documents from NSP

  2. How to upload CDA documents to NSP

  3. Details on transformations FHIR to CDA Document

  4. Details on transformations CDA Document to FHIR

...

Transformation

Source (XML document in FHIR DocumentReference)

Target (XML document in FHIR DocumentReference)

Comment

$transform-to-PHMR

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-to-PHMR.html

Bundle of FHIR resources.

The primary source of information is a FHIR Observation.

PHMR v1.3 XML document.

Used in assembly, transformation and upload of FHIR Observation transformed to PHMR to XDS-based document sharing infrastructure as described in Sharing through Registering Documents in National Document Sharing Infrastructure.

$transform-to-QRD

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-to-QRD.html

Bundle of FHIR resources.

The primary source of information is an FHIR QuestionnaireResponse.

QRD v1.3 XML document

Used in assembly, transformation and upload of FHIR QuestionnaireResponse transformed to QRD to XDS-based document sharing infrastructure as described in Sharing through Registering Documents in National Document Sharing Infrastructure.

Info

Before release 2024.3

$transform-to-QFDD

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-to-QFDD.html

Bundle of FHIR resources.

The primary source of information is the FHIR Questionnaire.

QFDD v1.1 XML document

Info

With release 2024.3

$transform-to-QFDD

TODO: new link

Bundle of FHIR resources.

The primary source of information is the FHIR Questionnaire.

QFDD v1.2 XML document

$transform-to-APD

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-to-APD.html

Bundle of FHIR resources.

The primary source of information is a FHIR Appointment.

APD v2.0 XML document

Used in assembly, transformation and upload of FHIR Appointment transformed to APD to XDS-based document sharing infrastructure as described in Sharing through Registering Documents in National Document Sharing Infrastructure.

$transform-from-PHMR

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-from-PHMR.html

PHMR v1.3 XML document.

Bundle of FHIR resources.

The most significant information is within an FHIR Observation.

The resultingtion(s) is not guaranteed to be a valid FHIR Observation.

$transform-from-QRD

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-from-QRD.html

QRD v1.3 XML document

Bundle of FHIR resources.

The most significant information is within a FHIR QuestionnaireResponse.

The resulting QuestionnaireResponse is not guaranteed to be a valid FHIR QuestionnaireResponse.

$transform-from-QRD-based-on-questionnaire

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-from-QRD-based-on-questionnaire.html

Info

Please note that the description of the operation is valid as of v3.0.0 of the eHealth Infrastructure Implementation Guide (IG) even though the link is to the IG continuous build. Please refer to the latest released version of the IG for all other purposes.

QRD v1.3 XML document

Bundle of FHIR resources

Most significant information is within an FHIR QuestionnaireResponse with a structure matching the Questionnaire given as input. The QuestionnaireResponse will have linkIDs matching the corresponding Questionnaire.

The resulting QuestionnaireResponse is not guaranteed to be a valid FHIR QuestionnaireResponse.

Info

Before release 2024.3

$transform-from-QFDD

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-from-QFDD.html

QFDD v1.1 XML document

Bundle of FHtheR resources.

The primary source of information is the FHIR Questionnaire.

Info

With release 2024.3

$transform-from-QFDD

Todo: new link

QFDD v1.2 XML document

The primary resource in the return bundle is the FHIR Questionnaire.

$transform-from-APD

https://ehealth.sundhed.dk/fhir/OperationDefinition--s-transform-from-APD.html

APD v2.0 XML document

Bundle of FHIR resources.

The primary source of information is a FHIR Appointment.

The resulting Appointment is not guaranteed to be a valid FHIR Appointment.

...

HL7 DK CDA Profile

Description

Specification

PHMR v1.3

HL7 Implementation Guide for CDA Release 2.0,
Personal Healthcare Monitoring Report (PHMR),
(Danish profile – PHMR DK),

Release 1.3 31. March 2014,
Updated 24. April 2018

http://svn.medcom.dk/svn/releases/Standarder/HL7/PHMR/Dokumentation/PHMR-DK-Profile-v1.3.pdf

(Note: The available v1.3 is now updated as of March 2, 2020)

QRD v1.3

HL7 Implementation Guide for CDA Release 2.0,
Questionnaire Response Document,
(Danish profile – DK QRD),

Release 1.3 February 11th 2022

https://svn.medcom.dk/svn/drafts/Standarder/HL7/PRO/QRD/Dokumentation/DK-QRD-v1.3.pdf

Info

Before release 2024.3

QFDD v1.1

HL7 Implementation Guide for CDA Release 2.0,
Questionnaire Form Definition Document,
(Danish profile – DK QFDD),

Draft,
Release 1.1 May 19th 2015,
Updated September 28th 2016

http://svn.medcom.dk/svn/releases/Standarder/HL7/PRO/QFDD/Dokumentation/DK-QFDD-v1.1.pdf

(Note: The available v1.1 is now updated as of June 11, 2021)APD v2.0

Info

With release 2024.3

QFDD v.1.2

HL7 Implementation Guide for CDA Release 2.0,
Appointment Questionnaire Form Definition Document,
(Danish profile – DK APDQFDD),

Draft for Trial Use,
Release 1.2 .0 November 4th 2019httpFebruary 11th 2022.

https://svn.medcom.dk/svn/releasesdrafts/Standarder/HL7/PRO/AppointmentQFDD/Dokumentation/DK-QFDD-v1.2.pdf

APD - v2.0.pdf

Preparing Transformations by Assembling Required FHIR Resources

...

HL7 Implementation Guide for CDA Release 2.0,
Appointment Document,
(Danish profile – DK APD),

Draft for Trial Use,
Release 2.0 November 4th 2019

http://svn.medcom.dk/svn/releases/Standarder/HL7/Appointment/Dokumentation/DK-APD-v2.0.pdf

Preparing Transformations by Assembling Required FHIR Resources

As described above, the transformations to CDA XML documents require that the client provides all the required FHIR resources. What FHIR resources must be part of the assembled FHIR bundle depends on the transformation.

...

FHIR Questionnaire.item.type

QRD Response Pattern Observation

text, string, openchoice

Text Response Pattern Observation

choice

Multiple Choice Response Pattern Observation

Discrete Slider Response Pattern Observation (when Questionnaire.item.extension.itemControl has value 'slider' and Questionnaire.item.maxOccurs = 1)

decimal, integer

Numeric Response Pattern Observation

Analog Slider Response Pattern Observation (when Questionnaire.item.extension.itemControl has value 'slider' )

datetime

Numeric Response Pattern Observation

...

QFDD Element

FHIR Questionnaire

Comment

Information Only Section

A Questionnaire.item at root level with Questionnaire.item.type ="group"

A single child item Questionnaire.item.item with .type = "display"

Question Section (with one or more Question Organizer)

A Questionnaire.item at root level with Questionnaire.item.type ="group"

For each QFDD Question Organizer:

A single child item Questionnaire.item.item with .type = "group"

For each question in the group/QFDD Question Organizer:

A single child item Questionnaire.item.item.item with .type = subtype of "question" eg. ‘decimal’

Not transformed as algorithms and expressions are not supported in QFDD.

A Questionnaire.item at any level with .type = "decimal" and .readOnly = "true"

A Calculated expression within the questionnaire, see https://ehealth-dk.atlassian.net/wiki/spaces/EDTW/pages/1716060177/Managing+Questionnaires#Defining-a-Calculation-Expression

...

Info

With release 2024.3

To QFDD Transformation

The operation $transform-to-QFDD transforms a FHIR Questionnaire resource to a DK-HL7 Questionnaire Form Definition Document (QFDD). The section below describes the transformation in more details.

Structure

As a QFDD is structured by sections, organizers and questions, the FHIR Questionnaire must be structured in a specified way to match the QFDD definition. The table below gives a quick overview of the structure.

QFDD Element

FHIR Questionnaire

Comment

Information Only Section

A Questionnaire.item at root level with Questionnaire.item.type ="group"

A single child item Questionnaire.item.item with .type = "display"

Question Section (with one or more Question Organizer)

A Questionnaire.item at root level with Questionnaire.item.type ="group"

Root-level group

For each QFDD Question Organizer:

A single child item Questionnaire.item.item with .type = "group"

Subgroup of root-level group

For each question in the group/QFDD Question Organizer:

A single child item Questionnaire.item.item.item with .type = subtype of "question" for instance "decimal"

Question type item in subgroup of root-level group.

For subtypes of "question" see http://hl7.org/fhir/R4/valueset-item-type.html

Not transformed as algorithms and expressions are not supported in QFDD.

A Questionnaire.item at any level with an .extension http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression and .readOnly = "true"

A Calculated expression within the FHIR Questionnaire, see https://ehealth-dk.atlassian.net/wiki/spaces/EDTW/pages/1716060177/Managing+Questionnaires#Defining-a-Calculation-Expression

The sub sections below describe the structure and information needed in more details.

Information Only Section

Logical Part

QFDD Document

Details

Information Only Section

/ClinicalDocument/component/structuredBody/component/section

(with (./templateId root = "2.16.840.1.113883.10.20.32.2.1")

A root-level item with:

  • Questionnaire.item.type = "group"

  • Title

…/component/section/title

  • Questionnaire.item.text containing the group title

  • Narrative

…/component/section/text

A child item in the group with:

  • Questionnaire.item.item.type = "display"

  • Questionnaire.item.item.text.xhtml = formatted text

  • (Questionnaire.item.item.text contains the unformatted equivalent)

  • Language

/ClinicalDocument/languageCode

Questionnaire.language

Narrative guidelines and limitations

FHIR Questionnaire.item.text.xhtml has type XHTML and QFDD narrative has type XML Markup. Therefore the transformation must convert XHTML to XML Markup which is performed with limitations as described below.

Limitations on conversion of formatted text from FHIR XHTML to XML Markup

The converter supports:

  • Paragraphs

  • Headings - converts to paragraphs

  • Bold, italics, underline

  • Ordered and unordered list

  • Line break

  • Table (might not support all functionality)

  • Anchor tag  ( from a  -> linkHTML)

  • Span (converted to content)

  • Subscript and superscript

Be aware:

  • Stylings like color are not supported.

  • A single root div shall be present

Sanitizer
Info
Sanitizer

In some scenarios, the Questionnaire Editor in the Clinical Administration Application produces XHTML that cannot be converted to CDA XML Markup. Unclosed tags, missing root element or unsupported children elements have been encountered.

During conversion, a sanitizer remedies common, encountered scenarios:

  • Add a root div if not present.

  • Unclosed <br> will always be replaced with <br/>.

  • Unordered/Ordered List with plain or bold/italic/underlined paragraph text is produced as acceptable XHTML by the Questionnaire Editor, except:

    • if end user selects one option from “Formatér” for a list item or for the entire list, then the list is created inside a paragraph which is not allowed in CDA XML Markup

      • example: “<p><ul><li>1</li><li>2</li><li>3</li></ul></p>“

    • if end user performs multiple selection of options from “Formatér” for the same list item, a new tag is added each time. The result produced by the Questionnaire Editor is a paragraph inside paragraph which is not allowed in CDA XML Markup. All options from “Formatér” [p, h2, h3, h4] are converted to paragraphs in CDA XML Markup.

Note
 Disclaimer

Use of copy'n'paste of rich text into the rich text editor in the Questionnaire Editor increases the probability of resulting in incompatible formatted text.

The sanitizer handles a limited set of the endless combinations where XHTML and CDA XML Markup do not support the same functionality and structure.

Questionnaire Form Definition Section

Logical Part

QFDD Document

Details

Questionnaire Response Section

/ClinicalDocument/component/structuredBody/component/section

A root item on Questionnaire.item with Questionnaire.item.type: "group"

Title

…/component/section/title

From root item Questionnaire.item.text

Narrative

…/component/section/text

The narrative text for the section is created automatically by the transformation . The narrative contains all the questions inside the section.

Additional narrative content:

  • Help text

  • Images

Language

languageCode

Questionnaire.language

Questions Organizer

Logical Part

QFDD Document

Details

Response Organizer

/ClinicalDocument/component/structuredBody/component/section/entry/organizer

An item of type item.type: "group" inside a root item of type Questionnaire.item.type: "group". (See Questionnaire Form Definition Section)

Only items of type item.type: "group" are allowed at the level below the root item.

OBS: Items with calculated expression are allowed but is ignored during transformation.

Id

…/section/entry/organizer/id

item.item.extension.externalIdentifier

Code

…/section/entry/organizer/code

Uses code from Questionnaire item item.code

Code: item.code.code

CodeSystem: ifitem.code.system has prefix “urn:oid:” then item.code.system without prefix. Else lookup in Questionnaire Terminology.

CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“.

Display: item.text or else item.code.display

OriginalText: Question text (item.text) or, if not present, (item.code.display)

Precondition

…/section/entry/organizer/precondition

See Preconditions

Numeric Question Pattern Observation

Logical Part

QFDD Document

Details

Numeric Response Pattern Observation

/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation

An item inside a subgroup (see Questions Organizer )

  • Root item with Questionnaire.item.type: "group" (QFDD section)

    • Sub group item with item.type: "group" (QFDD organizer)

      • Question item

Numeric Response if

Id

…/observation/id

item.extension.externalIdentifier

Code

…/observation/code

Uses code from Questionnaire item item.code

Code: item.code.code

CodeSystem: ifitem.code.system has prefix “urn:oid:” then item.code.system without prefix. Else lookup in Questionnaire Terminology.

CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“.

Display: item.text or else item.code.display

OriginalText: Question text (item.text) or, if not present, (item.code.display)

Help text

Image

…/observation/entryRelationship

Is added if Questionnaire item has one or more extensions:

Feedback

…/observation/entryRelationship

Not supported

Range

…/observation/referenceRange

If Questionnaire.item has the following extension the referenceRange is assigned

Precondition

See Preconditions

Analog Slider Question Pattern Observation

Logical Part

QFDD Document

Details

Analog Slider Question Pattern Observation

/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation

An item inside a subgroup

  • Root item with type: “Group” (QFDD section)

    • Sub group item with type: “Group” (QFDD organizer)

      • Question item

Analog Slider if

Properties: id, code, help text, image and precondition is the same configuration as for Numeric Question

Feedback

…/observation/entryRelationship

Not supported

Range

…/referenceRange/observationRange/

Denominator: item.extension http://hl7.org/fhir/StructureDefinition/maxValue

Head: item.extension http://hl7.org/fhir/StructureDefinition/minValue

Increment: item.extensioneither value from:

Text Question Pattern Observation

Logical Part

QFDD Document

Details

Text Question Pattern Observation

/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation

An item inside a subgroup

  • Root item with type: “Group” (QFDD section)

    • Sub group item with type: “Group” (QFDD organizer)

      • Question item

Test Response if

  • item.type is either text, string

Id

…/observation/id

item.extension.externalIdentifier

Code

…/observation/code

Uses code from Questionnaire item item.code

Code: item.code.code

CodeSystem: ifitem.code.system has prefix “urn:oid:” then item.code.system without prefix. Else lookup in Questionnaire Terminology.

CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“.

Display: item.text or else item.code.display

OriginalText: Question text (item.text) or, if not present, (item.code.display)

Help text

Image

…/observation/entryRelationship

Is added if Questionnaire item has one or more extensions:

Precondition

See Preconditions

Multiple Choice Question Pattern Observation

Logical Part

QFDD Document

Details

Multiple Choice Question Pattern Observation

/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation

An item inside a subgroup

  • Root item with type: “Group” (QFDD section)

    • Sub group item with type: “Group” (QFDD organizer)

      • Question item

Multiple Choice if

Id

…/observation/id

item.extension.externalIdentifier

Code

…/observation/code

Uses code from Questionnaire item item.code

Code: item.code.code

CodeSystem: ifitem.code.system has prefix “urn:oid:” then item.code.system without prefix. Else lookup in Questionnaire Terminology.

CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“.

Display: item.text or else item.code.display

OriginalText: Question text (item.text) or, if not present, (item.code.display)

Options

item.answerOptions

Help text

Image

…/observation/entryRelationship

Is added if Questionnaire item has one or more extensions:

Associated text question

Not supported

Feedback

Not supported

Range

…/observation/referenceRange

Range is based on item and the fields item.required , item.repeats and the following extensions.

See more regarding min and max: https://docs.ehealth.sundhed.dk/latest-released/ig/StructureDefinition-ehealth-questionnaire.html#setting-minimal-and-maximal-number-of-permitted-choices

Precondition

See Preconditions

Discrete Slider Question Pattern Observation

Logical Part

QRD Document

Details

Discrete Slider Question Pattern Observation

/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component/observation

An item inside a subgroup

  • Root item with type: “Group” (QFDD section)

    • Sub group item with type: “Group” (QFDD organizer)

      • Question item

Multiple Choice if

Properties: id, code, help text, image and precondition is the same configuration as for Multiple Choice

Id

…/observation/id

Uses Id from QFFD question

Validating if Questionnaire item(item.extension.externalIdentifier) matches QFDD question id

Code

…/observation/code

Uses code from Questionnaire item item.code.

Code: item.code.code

CodeSystem: ifitem.code.system has prefix “urn:oid:” then item.code.system without prefix. Else lookup in Questionnaire Terminology.

CodeSystemName: is fetched from CodeSystem in Questionnaire Terminology. Value is taken in the following order: codeSystem.title, codeSystem.name, codeSystem.url or “Unknown“.

Display: item.text or else item.code.display

OriginalText: Question text (item.text) or, if not present, (item.code.display)

Range

…/observation/entryRelationship

Range is based on item and the fields item.required , item.repeats and the following extensions.

Low: http://hl7.org/fhir/StructureDefinition/questionnaire-minOccurs

High: http://hl7.org/fhir/StructureDefinition/questionnaire-maxOccurs always 1 (1 only allowed value for Discrete Slider type)

See more regarding min and max: https://docs.ehealth.sundhed.dk/latest-released/ig/StructureDefinition-ehealth-questionnaire.html#setting-minimal-and-maximal-number-of-permitted-choices

Copyright Section

Logical Part

QRD Document

Details

Copyright Section

/ClinicalDocument/component/structuredBody/component/section

Copyright section uses Questionnaire.copyright

Supported types

FHIR Questionnaire.item.type

QRD Response Pattern Observation

text, string

Text Question Pattern Observation.

choice

Multiple Choice Question Pattern Observation.

Discrete Slider Question Pattern Observation when Questionnaire.item.extension.itemControl has value 'slider'.

decimal, integer

Numeric Question Pattern Observation.

Analog Slider Question Pattern Observation when Questionnaire.item.extension.itemControl has value 'slider'.

datetime

Numeric Question Pattern Observation

Validation

The returned Bundle from the operation can contain an OperationOutcome with warnings and errors. In case of validation errors no QFDD will be generated.

Errors

Errors can occur if for instance some mandatory information is missing or the FHIR questionnaire structure is not compatible with the QFDD structure.

Examples:

  • Invalid root item in questionnaire. Only items of type 'group' and calculated expression items are allowed. Type was: '%s'. LinkId: %s

  • NamingSystem publisher is missing. Oid: '%s'. Referenced by items with following LinkIds: %s

  • Item enableWhen refers to item with linkId: '%s' which is of type '%s' but the operator: '%s' is not supported. LinkId: %s

Warnings

Warnings can occur if some information is missing but not mandatory or maybe a fallback value is used instead.

Examples:

  • CodeSystem title is missing. Will use the first non-null value as CodeSystemName: 'NamingSystem.name', 'NamingSystem.url' or 'unknown'. CodeSystem url: '%s'. Used by items with the following linkIds: %s

  • CodeSystem title is missing for choice option. Will use the first non-null value as CodeSystemName: 'NamingSystem.name', 'NamingSystem.url' or 'unknown'. CodeSystem url: '%s'. LinkIds: %s

Preconditions

In some scenarios a questions should only be asked to the user based on answers given to other questions. The sections below describes the rules and limitations regarding preconditions.

Precondition rules

As the modeling of preconditions in FHIR questionnaire and QFDD is not 1 to 1 the table below describes which combination of preconditions that are supported.

Question refers to question of type

Condition

Numeric (FHIR type: integer, decimal, timestamp)

If specifying both  ">=" and "<=" to the same question then

  • if ">=" value is larger than "<=" value (eg. <=7 or >=10) then

    • Only "any"(AtLeastOneTrue) is allowed

    • Only those two conditions are allowed to the same numeric question.

    • Will be two preconditions in QFDD with min and max as QFDD requires both min and max per precondition. (Precondition Extension Pattern - AtLeastOneTrue)

      • For ">=" a max value will be added

        • For integer: Integer max value.

        • For decimal: Double max value.

        • For timestamp: January 1. 2200.

      • For "<=" a min value

        • For integer: Integer min value.

        • For decimal: Double min value.

        • For timestamp: January 1. 1970.

  • if ">=" value is less than "<=" value (absolute range, eg. >=5 <=10) then

    • Only "all" (AND) is allowed.

    • Only those two conditions are allowed to the same question.

    • Will be one preconditions in QFDD with min and max.

If specifying only one operator either ">=" or "<=" to the same numeric question then

  • Then "all"(AND) and "any"(OR) is allowed

  • Max one condition to the same numeric question allowed.

  • As QFDD requires both min and max

    • For ">=" a max value will be added

      • For integer: Integer max value.

      • For decimal: Double max value.

      • For timestamp: January 1. 2200.

    • For "<=" a min value will be added

      • For integer: Integer min value.

      • For decimal: Double min value.

      • For timestamp: January 1. 1970. (epoch time)

if specifying "=" to a numeric question then

  • Then "all"(AND) and "any"(OR) is allowed.

  • Max one condition to the same numeric question allowed.

  • As QFDD requires both min and max.

    • min and max will be assigned the same value.

Choice (FHIR type: choice)

When specifying "=" to a choice question then

  • If only conditions to choice questions then both AllTrue(all) and AtLeastOneTrue(any) is allowed.

  • If the conditions are combined with conditions to numeric questions then the numeric rules determines if both AllTrue(all) and AtLeastOneTrue(any) is allowed.

text, string

Precondition to text or string questions are not supported.

Precondition is only allowed on FHIR sub groups(item.item (QFDD organizer)) and questions (item.item.item (QFDD Question)).

If enablebehavior is ‘all’(AllTrue) and no condition-id is specified then the preconditions will be created as QFDD Criterion(s). If condition-id is specified and/or the boolean expression is either ‘all’(AllTrue) or ‘any’(AtLeastOneTrue) then the preconditions will be created as QFDD Precondition Extension Pattern.

Supported operators

FHIR Questionnaire (enableWhen operators)

Comments

exists

Not supported

=

Supported.

If numeric:

  • min/max same value in QFDD

If multiple choice

  • The option

!=

Not supported

>

Not supported

<

Not supported

>=

if numeric:

  • Supported

    • Used a minimum value in QFDD

If multiple choice

  • Not supported

<=

if numeric:

  • Supported

    • Used as maximum value in QFDD

If multiple choice

  • Not supported

From QFDD Transformation

The operation $transform-from-QFDD transforms a DK-HL7 Questionnaire Form Definition Document (QFDD) to a FHIR Questionnaire resource. The below sections describes the transformation in more details.

Structure

The transformation generates a FHIR questionnaire which structure is describes in below table. See more details regarding the structure here https://ehealth-dk.atlassian.net/wiki/spaces/EDTW/pages/edit-v2/2242281473#Structure.

QFDD Element

FHIR Questionnaire

Comment

Information Only Section

A Questionnaire.item at root level with Questionnaire.item.type ="group"

A single child item Questionnaire.item.item with .type = "display"

Question Section (with one or more Question Organizer)

A Questionnaire.item at root level with Questionnaire.item.type ="group"

For each QFDD Question Organizer:

A single child item Questionnaire.item.item with .type = "group"

For each question in the group/QFDD Question Organizer:

A single child item Questionnaire.item.item.item with .type = subtype of "question" eg. ‘decimal’

Not transformed as algorithms and expressions are not supported in QFDD.

A Questionnaire.item at any level with an .extension http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression and .readOnly = "true"

A Calculated expression within the questionnaire, see https://ehealth-dk.atlassian.net/wiki/spaces/EDTW/pages/1716060177/Managing+Questionnaires#Defining-a-Calculation-Expression

Details regarding converting from CDA XML Markup to XHTML - Information Only Section

All CDA XML elements are supported but with some exceptions,

CDA XML element

FHIR XHTML

footnote

p, with a data attribute: data-cda-tag = "footnote"

footnoteRef

a, with a data attribute data-cda-tag="footnoteRef"

renderMultiMedia

Limitation: The base64 image to be inside @referencedObject attribute, and not a reference to an existing image from other section from QFDD document. We don't search the image.

Attributes:

CDA XML attributes

Comment

revised

Attribute on <content> in CDA XML has no corresponding match in XHTML. A custom data attribute has been added ‘data-cda-revised’.

name

Attribute on <linkHTML> is not supported as NarrativeBlock documentation states “DO NOT USE THIS”.

language

Always assigned lang=”da”.

mediaType

Omitted. From NarrativeBlock documentation: mediaType is akin to mimeType. This is a fixed value in the CDA narrative block, and so can be omitted.

Validation

The returned Bundle from the operation can contain an OperationOutcome with information, warnings and errors. In case of validation errors no FHIR questionnaire will be generated.

Errors

Errors can occur if for instance some mandatory information is missing or QFDD content is not supported in FHIR questionnaire.

Examples:

  • Unsupported question type: '%s' (safeguard against future question types supported in CDA Builder. Currently(August 2024) all question types are supported)

  • Choice option is missing either code, codeSystem. Question id: %s

  • Question is missing id. Organizer id: %s

  • Precondition group type: '%s' is not supported. Question id: %s

  • Precondition group type: '%s' is not supported for conditions referring to numeric questions. Only 'AllTrue' is supported. Question id: %s

Warnings

Warnings can occur if some information is missing but not mandatory or content which will not be transformed as it is not supported.

Examples:

  • Numeric question has no interval. Cannot determine type. Setting item.type to 'decimal'. Question id: %s

  • Feedback will not be transformed to FHIR questionnaire. Question id: %s

Information

Message unrelated to the transformation success.

Examples:

  • Question with id: '%s' has associated text question with id: '%s'. Will be two question items in Fhir questionnaire.

Preconditions

In some scenarios a questions should only be asked to the user based on answers given to other questions. The sections below describes the rules and limitations regarding preconditions.

Precondition rules

As the modeling of preconditions in FHIR questionnaire and QFDD is not 1 to 1 the table below describes which combination of preconditions that are supported.

Condition

Rules

If one or more precondition refers to numeric question then

AllTrue(all) is supported.

If no precondition refers to a numeric question then

AllTrue(all) and AtLeastOneTrue(any) is supported.

Not supported:

  • The following precondition types is not supported: AllFalse, AtLeastOneFalse, OnlyOneTrue, OnlyOneFalse.

  • Multiple grouper (Only one grouper is supported eg. AllTrue).

Additional information

  • Associated text question which can be part of Multiple Choice and Discrete Slider question will be created as two items in FHIR questionnaire. The item for the associated text question will contain the preconditions specified in the QFDD.

  • As QFDD Numeric Question do not have a type, reference range is used to determine if it is integer, decimal or timestamp. If no reference range is specified the question item is created with item.type ‘decimal’.

  • Analog Slider Question is created with item.type ‘decimal’.

  • Feedback is not supported