DSTU2 STU 3 Ballot
This page is part of the FHIR Specification (v1.0.2: DSTU 2). The current version which supercedes this version is

This page is part of the FHIR Specification (v1.6.0: STU 3 Ballot 4). The current version which supercedes this version is 5.0.0 . For a full list of available versions, see the Directory of published versions . For a full list of available versions, see the Directory of published versions . Page versions: . Page versions: R5 R4B R4 R3 R2

4.26.8 2.29.8 Resource Questionnaire - Detailed Descriptions Resource Questionnaire - Detailed Descriptions Detailed Descriptions for the elements in the Questionnaire resource.

Detailed Descriptions for the elements in the Questionnaire resource.

que-1 : Groups may either contain questions or groups but not both (xpath: not(exists(f:group) and exists(f:question))) Affect this element See Questionnaire.group QuestionnaireResponse does not require omitted groups to be included and may have some groups that repeat, so linkage based on position alone is not sufficient. Coding Alternate Names Default Value false © HL7.org 2011+. FHIR DSTU2 (v1.0.2-7202) generated on Sat, Oct 24, 2015 07:44+1100. Links: Search | Propose a change
Questionnaire
Definition

A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions. A structured set of questions intended to guide the collection of answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the underlying questions.

Control 1..1
Requirements

To support structured, hierarchical registration of data gathered using digital forms and other questionnaires. To support structured, hierarchical registration of data gathered using digital forms and other questionnaires.

Alternate Names Alternate Names Form; CRF; Survey Form; CRF; Survey
Invariants Defined on this element Defined on this element
que-2 : The link ids for groups and questions must be unique within the questionnaire (xpath: count(descendant::f:linkId/@value)=count(distinct-values(descendant::f:linkId/@value))) : The link ids for groups and questions must be unique within the questionnaire ( expression que-3 : If root group must be "required" (xpath: f:group/f:required/@value=true()) : descendants().linkId.isDistinct(), xpath: count(descendant::f:linkId/@value)=count(distinct-values(descendant::f:linkId/@value)))
Questionnaire.url
Definition

An absolute URL that is used to identify this questionnaire when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this questionnaire is (or will be) published.

Control 0..1
Type uri
Summary true
Questionnaire.identifier
Definition

This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation). This records identifiers associated with this question set that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation).

Note This is a business identifer, not a resource identifier (see This is a business identifer, not a resource identifier (see discussion )
Control 0..*
Type Identifier
Requirements

Need to allow connection to a wider workflow. Need to allow connection to a wider workflow.

Summary true
Questionnaire.version
Definition

The version number assigned by the publisher for business reasons. It may remain the same when the resource is updated. The version number assigned by the publisher for business reasons. It may remain the same when the resource is updated.

Note This is a business versionId, not a resource identifier (see This is a business versionId, not a resource version id (see discussion )
Control 0..1
Type string
Requirements

In some cases, separate resource instances might be created for each version (if an older version can be maintained once a new version exists). In some cases, separate resource instances might be created for each version (if an older version can be maintained once a new version exists).

Alternate Names Alternate Names N/A - MIF rather than RIM level N/A - MIF rather than RIM level
Summary true
Questionnaire.status
Definition

The lifecycle status of the questionnaire as a whole. The lifecycle status of the questionnaire as a whole.

Control 1..1
Binding QuestionnaireStatus: Lifecycle status of the questionnaire. ( QuestionnaireStatus: Lifecycle status of the questionnaire. ( Required )
Type code
Is Modifier Is Modifier true
Summary true
Questionnaire.date
Definition

The date that this questionnaire was last changed. The date that this questionnaire was last changed.

Control 0..1
Type dateTime
Alternate Names Alternate Names Date created; Date published; Date issued; Date updated Date created; Date published; Date issued; Date updated
Summary true
Questionnaire.publisher
Definition

Organization or person responsible for developing and maintaining the questionnaire. Organization or person responsible for developing and maintaining the questionnaire.

Control 0..1
Type string
Requirements

Conveys responsibility for the questions and their organization and also helps evaluate the questionnaire's "authority". Conveys responsibility for the questions and their organization and also helps evaluate the questionnaire's "authority".

Summary true
Questionnaire.telecom
Definition

Contact details to assist a user in finding and communicating with the publisher. Contact details to assist a user in finding and communicating with the publisher.

Control 0..*
Type ContactPoint
Summary true
Questionnaire.subjectType Questionnaire.useContext
Definition

Identifies the types of subjects that can be the subject of the questionnaire. A code that identifies the questionnaire as falling into a particular group of like questionnaires; e.g. "Pediatric", "Admissions", "Research", "Demographic", "Opinion Survey", etc.

Control 0..*
Binding ResourceType: Any defined Resource Type name Context of Use ValueSet: Indicates the countries, regions, disciplines and other aspects of use within which this artifact is targeted for use. ( Extensible )
Type code CodeableConcept
Requirements

Allows discovery of questionnaires. Also allows organization of lists of questionnaires into groups for presentation.

Summary true
Questionnaire.title
Comments Definition

If none are specified, then the subject is unlimited. The name or label associated with this questionnaire.

Control 0..1
Type Questionnaire.group string
Definition Requirements

A collection of related questions (or further groupings of questions). Used for display, searching.

Control Summary 1..1 true
Questionnaire.concept
Requirements Definition

Need to be able to logically group answers to grouped questions. Identifies a how this question or group of questions is known in a particular terminology such as LOINC.

Control Alternate Names Section 0..*
Summary Binding true Questionnaire Question Codes: Codes for questionnaires, groups and individual questions ( Example )
Comments Type The Questionnaire itself has one "root" group with the actual contents of the Questionnaire. Information on this root group applies to the questionnaire as a whole. Coding
Invariants Requirements Defined on this element

Allows linking of the complete Questionnaire resources to formal terminologies. It's common for "pannels" of questions to be identified by a code.

Summary que-3 : If root group must be "required" (xpath: f:group/f:required/@value=true()) true
Questionnaire.group.linkId Questionnaire.subjectType
Definition

An identifier that is unique within the Questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource. Identifies the types of subjects that can be the subject of the questionnaire.

Control 0..1 0..*
Binding ResourceType: Any defined Resource Type name
Type string code
Requirements Summary true
Comments

If none are specified, then the subject is unlimited.

Questionnaire.item QuestionnaireResponse does not require omitted groups to be included and may have some groups that repeat, so linkage based on position alone is not sufficient.
Comments Definition

May be omitted if there is no expectation to link answers back to a questionnaire. This ''can'' be a meaningful identifier (e.g. a LOINC code) but is not intended to have any meaning. GUIDs or sequential numbers are appropriate here. The questions and groupings of questions that make up the questionnaire.

Control 0..*
Invariants Defined on this element
que-1 : Group items must have nested items, display items cannot have nested items ( expression : (type='group' implies item.empty().not()) and (type.trace('type')='display' implies item.trace('item').empty()), xpath: not((f:type/@value='group' and not(f:item)) or (f:type/@value='display' and f:item)))
que-10 : Maximum length can only be declared for simple question types ( expression : (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url')) or maxLength.empty(), xpath: f:type/@value=('boolean', 'decimal', 'integer', 'open-choice', 'string', 'text', 'url') or not(f:maxLength))
que-3 : Display items cannot have a "concept" asserted ( expression : type!='display' or concept.empty(), xpath: not(f:type/@value='display' and f:concept))
que-4 : A question cannot have both option and options ( expression : option.empty() or options.empty(), xpath: not(f:options and f:option))
que-5 : Only 'choice' items can have options ( expression : (type ='choice' or type = 'open-choice') or (options.empty() and option.empty()), xpath: f:type/@value=('choice','open-choice') or not(f:option or f:options))
que-6 : Required and repeat aren't permitted for display items ( expression : type!='display' or (required.empty() and repeats.empty()), xpath: not(f:type/@value='display' and (f:required or f:repeats)))
que-8 : Default values can't be specified for groups or display items ( expression : (type!='group' and type!='display') or initial.empty(), xpath: not(f:type/@value=('group', 'display') and f:*[starts-with(local-name(.), 'initial')]))
que-9 : Read-only can't be specified for "display" items ( expression : type!='display' or readOnly.empty(), xpath: not(f:type/@value='display' and f:readOnly))
Affect this element
Questionnaire.group.title Questionnaire.item.linkId
Definition

The human-readable name for this section of the questionnaire. An identifier that is unique within the Questionnaire allowing linkage to the equivalent item in a QuestionnaireResponse resource.

Control 0..1
Type string
Requirements

When including text for the questionnaire with the answers, sections may have a section header. Summary true QuestionnaireResponse does not require omitted items to be included and may have some items that repeat, so linkage based on position alone is not sufficient.

Comments

The title of the "root" group is the title for the questionnaire. May be omitted if there is no expectation to link answers back to a Questionnaire. This ''can'' be a meaningful identifier (e.g. a LOINC code) but is not intended to have any meaning. GUIDs or sequential numbers are appropriate here.

Questionnaire.group.concept Questionnaire.item.concept
Definition

Identifies a how this group of questions is known in a particular terminology such as LOINC. Identifies a how this group of questions is known in a particular terminology such as LOINC.

Control 0..*
Binding Questionnaire Question Codes: Codes for groupings of questionnaire questions. ( Questionnaire Question Codes: Codes for questionnaires, groups and individual questions ( Example )
Type Coding
Requirements

Allows linking of groups of questions (and complete Questionnaire resources) to formal terminologies. Allows linking of groups of questions (and complete Questionnaire resources) to formal terminologies.

Summary true
Comments

The code(s) for the "root" group apply to the questionnaire as a whole. The code(s) for the "root" group apply to the questionnaire as a whole.

Invariants Affect this element
que-3 : Display items cannot have a "concept" asserted ( expression : type!='display' or concept.empty(), xpath: not(f:type/@value='display' and f:concept))
Questionnaire.group.text Questionnaire.item.prefix
Definition

Additional text for the group, used for display purposes. A short label for a particular group, question or set of display text within the questionnaire.

Control 0..1
Type string
Requirements

When including text for the questionnaire, each section may contain additional explanations are background text. Separating the label from the question text allows improved rendering. Also, instructions will often refer to specific prefixes, so there's a need for the questionnaire design to have control over what labels are used.

Alternate Names label
Comments

Common extensions are defined for more specialized types of display text. These are generally unique within a questionnaire, though this is not guaranteed. Some questionnaires may have multiple questions with the same label with logic to control which gets exposed.

Typically these won't be used for "text" items, though such use is not prohibited.

Systems SHOULD NOT generate their own prefixes if prefixes are defined for any items within a Questionnaire.

Questionnaire.group.required Questionnaire.item.text
Definition

If true, indicates that the group must be present and have required questions within it answered. If false, the group may be skipped when answering the questionnaire. The name of a section, the text of a question or text content for a text item.

Control 0..1
Type boolean string
Default Value Summary false true
Questionnaire.group.repeats Questionnaire.item.type
Definition

Whether the group may occur multiple times in the instance, containing multiple sets of answers. Identifies the type of questionnaire item this is - whether text for display, a grouping of other items or a particular type of data to be captured (string, integer, coded choice, etc.).

Control 0..1 1..1
Binding QuestionnaireItemType: Distinguishes groups from questions and display text and indicates data type for questions ( Required )
Type boolean code
Default Value Requirements false

Defines the format in which the user is to be prompted for the answer.

Requirements Comments

Groups may be used to create set of (related) questions that can be repeated to give multiple answers to such a set. Additional constraints on the type of answer can be conveyed by extensions.

Questionnaire.group.group Questionnaire.item.enableWhen
Definition

A sub-group within a group. The ordering of groups within this group is relevant. If present, indicates that this item should only be enabled (displayed/allow answers to be captured) when the specified condition is true.

Control 0..*
Type Is Modifier true
Requirements

Allows questionnaires to adapt based on answers to other questions; e.g. If physical gender is specified as a male, no need to capture pregnancy history. Also allows conditional display of instructions or groups of questions.

Summary true
Requirements Comments

Reports can consist of complex nested groups. If multiple repetitions of this extension are present, the item should be enabled when the condition for any of the repetitions is true. I.e. Treat "enableWhen"s as being joined by an "or" clause.

If enableWhen is present for an item, "required" is ignored unless one of the enableWhen conditions is met.

Invariants Affect this element Defined on this element que-1 : Groups may either contain questions or groups but not both (xpath: not(exists(f:group) and exists(f:question)))
que-7 : enableWhen must contain either an 'answer' or an 'answered' element ( expression : hasAnswer.exists() xor answer.exists(), xpath: count(*[starts-with(local-name(.), 'answer')]|answered) = 1)
Questionnaire.group.question Questionnaire.item.enableWhen.question
Definition

Set of questions within this group. The order of questions within the group is relevant. The linkId for the question whose answer (or lack of answer) governs whether this item is enabled.

Control 0..* 1..1
Requirements Type Must register answers to questions. Alternate Names string Responses; Contents
Invariants Comments Defined on this element que-4 : A question must use either option or options, not both (xpath: not(f:options and f:option)) Affect this element que-1 : Groups may either contain questions or groups but not both (xpath: not(exists(f:group) and exists(f:question)))

If multiple question occurrences are present for the same question (same linkId), then this refers to the nearest question occurrence reachable by tracing first the "ancestor" axis and then the "preceding" axis and then the "following" axis.

Questionnaire.group.question.linkId Questionnaire.item.enableWhen.hasAnswer
Definition

An identifier that is unique within the questionnaire allowing linkage to the equivalent group in a QuestionnaireResponse resource. If present, indicates that this item should be enabled only if the specified question is answered or not answered.

Control 0..1
Type string boolean
Requirements Comments

If answered=false and answer values are also provided, then they are treated as "or". I.e. "Enable if the question is unanswered or the answer is one of the specified values". If answered=true and answers are present, one of the specified answers must be met. (So there's little reason to specify answered=true if answers are present.).

Comments Invariants May be omitted if there is no expectation to link answers back to a questionnaire. This can be a meaningful identifier (e.g. a LOINC code) but is not intended to have any meaning. GUIDs or sequential numbers are appropriate here. Affect this element
que-7 : enableWhen must contain either an 'answer' or an 'answered' element ( expression : hasAnswer.exists() xor answer.exists(), xpath: count(*[starts-with(local-name(.), 'answer')]|answered) = 1)
Questionnaire.group.question.concept Questionnaire.item.enableWhen.answer[x]
Definition

Identifies a how this question is known in a particular terminology such as LOINC. If present, then the answer for the referenced question must match this answer for all components present in the enableWhen.answer.

Control 0..* 0..1
Binding Type Questionnaire Question Codes: Codes corresponding to individual questions. boolean | decimal | integer | date | dateTime | instant | time | string | uri | Attachment | Coding | Quantity | Reference ( Example Any )
Type [x] Note See Choice of Data Types for further information about how to use [x]
Comments

Components not specified in the answer do not need to match. For example, if enableWhen specifies code + system for a Coding, it's ok if the answer has a "display" element.

The dataType of this element must be the same as the data type of the question being referenced.

Requirements Invariants Allows linking of questions (and their answers) to formal terminologies. Affect this element
que-7 : enableWhen must contain either an 'answer' or an 'answered' element ( expression : hasAnswer.exists() xor answer.exists(), xpath: count(*[starts-with(local-name(.), 'answer')]|answered) = 1)
Questionnaire.group.question.text Questionnaire.item.required
Definition

The actual question as shown to the user to prompt them for an answer. If true, indicates that the item must be present in a "completed" QuestionnaireResponse. If false, the item may be skipped when answering the questionnaire.

Control 0..1
Type string boolean
Requirements Default Value When including text for the questionnaire, each question may contain its actual question display text. false
Comments Question

If an item that contains other items is marked as required, that does not automatically make the contained elements required (though required groups must contain at least one child element).

Comments Invariants Common extensions are defined for more specialized types of display text. Affect this element
que-6 : Required and repeat aren't permitted for display items ( expression : type!='display' or (required.empty() and repeats.empty()), xpath: not(f:type/@value='display' and (f:required or f:repeats)))
Questionnaire.group.question.type Questionnaire.item.repeats
Definition

The expected format of the answer, e.g. the type of input (string, integer) or whether a (multiple) choice is expected. Whether the item may occur multiple times in the instance, containing multiple sets of answers.

Control 0..1
Binding Type AnswerFormat: The expected format of an answer. ( Required boolean )
Type Default Value code false
Requirements

Defines the format in which the user is to be prompted for the answer. Items may be used to create set of (related) questions that can be repeated to give multiple answers to such a set.

Comments Invariants Additional constraints on the type of answer can be conveyed by extensions. Affect this element
que-6 : Required and repeat aren't permitted for display items ( expression : type!='display' or (required.empty() and repeats.empty()), xpath: not(f:type/@value='display' and (f:required or f:repeats)))
Questionnaire.group.question.required Questionnaire.item.readOnly
Definition

If true, indicates that the question must be answered and have required groups within it also present. If false, the question and any contained groups may be skipped when answering the questionnaire. If true, the value cannot be changed by a human respondent to the Questionnaire.

Control 0..1
Type boolean
Default Value Requirements false

Allows certain information to be phrased (and rendered) as a question and an answer, while keeping users from changing it. May also be useful for preventing changes to pre-populated portions of a questionnaire, for calculated values, etc.

Comments

The value of readOnly elements can be established by asserting extensions for defaultValues, linkages that support pre-population and/or extensions that support calculation based on other answers.

Invariants Affect this element
que-9 : Read-only can't be specified for "display" items ( expression : type!='display' or readOnly.empty(), xpath: not(f:type/@value='display' and f:readOnly))
Questionnaire.group.question.repeats Questionnaire.item.maxLength
Definition

If true, the question may have more than one answer. The maximum number of characters that are permitted in the answer to be considered a "valid" QuestionnaireResponse.

Control 0..1
Type boolean integer
Requirements Comments

Used for "check all that apply" types of questions or "list your top 3", etc. For base64binary, reflects the number of characters representing the encoded data, not the number of bytes of the binary data.

Comments Invariants Whether the question itself will be displayed for each answer is a rendering choice typically based on whether there are nested groups. Affect this element
que-10 : Maximum length can only be declared for simple question types ( expression : (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url')) or maxLength.empty(), xpath: f:type/@value=('boolean', 'decimal', 'integer', 'open-choice', 'string', 'text', 'url') or not(f:maxLength))
Questionnaire.group.question.options Questionnaire.item.options
Definition

Reference to a value set containing a list of codes representing permitted answers for the question. Reference to a value set containing a list of codes representing permitted answers for the question.

Control 0..1
Type Reference ( ValueSet )
Comments

LOINC defines many useful value sets for questionnaire response. See LOINC Answer Lists LOINC defines many useful value sets for questionnaire response. See LOINC Answer Lists .

Invariants Affect this element Affect this element
que-4 : A question cannot have both option and options ( expression : option.empty() or options.empty(), xpath: not(f:options and f:option))
que-5 : Only 'choice' items can have options ( expression : (type ='choice' or type = 'open-choice') or (options.empty() and option.empty()), xpath: f:type/@value=('choice','open-choice') or not(f:option or f:options))
Questionnaire.item.option
Definition

For a "choice" question, identifies one of the permitted answers for the question.

Control 0..*
Invariants Affect this element
que-4 : A question must use either option or options, not both (xpath: not(f:options and f:option)) : A question cannot have both option and options ( expression : option.empty() or options.empty(), xpath: not(f:options and f:option))
que-5 : Only 'choice' items can have options ( expression : (type ='choice' or type = 'open-choice') or (options.empty() and option.empty()), xpath: f:type/@value=('choice','open-choice') or not(f:option or f:options))
Questionnaire.group.question.option Questionnaire.item.option.value[x]
Definition

For a "choice" question, identifies one of the permitted answers for the question. Identifies a specific answer that's allowed as the answer to a question.

Control 0..* 1..1
Binding Questionnaire Answer Codes: Allowed values to answer questions. ( Questionnaire Answer Codes: Allowed values to answer questions. ( Example )
Type integer | date | time | string | Coding
Invariants [x] Note See Choice of Data Types for further information about how to use [x]
Affect this element Questionnaire.item.initial[x]
Definition

The value that should be pre-populated when rendering the questionnaire for user input.

Control 0..1
Type boolean | decimal | integer | date | dateTime | instant | time | string | uri | Attachment | Coding | Quantity | Reference ( Any )
[x] Note See Choice of Data Types for further information about how to use [x]
Requirements

In some workflows, having defaults saves time.

Invariants que-4 : A question must use either option or options, not both (xpath: not(f:options and f:option)) Affect this element
que-8 : Default values can't be specified for groups or display items ( expression : (type!='group' and type!='display') or initial.empty(), xpath: not(f:type/@value=('group', 'display') and f:*[starts-with(local-name(.), 'initial')]))
Questionnaire.group.question.group Questionnaire.item.item
Definition

Nested group, containing nested question for this question. The order of groups within the question is relevant. Allows text, questions and other groups to be nested beneath a question or group.

Control 0..*
Type See Questionnaire.group See Questionnaire.item
Requirements

It is useful to have "sub-questions", questions which normally appear when certain answers are given and which collect additional details. Reports can consist of complex nested groups.

Invariants | Version History | Table of Contents | Compare to DSTU1 Affect this element |
que-1 : Group items must have nested items, display items cannot have nested items ( expression : (type='group' implies item.empty().not()) and (type.trace('type')='display' implies item.trace('item').empty()), xpath: not((f:type/@value='group' and not(f:item)) or (f:type/@value='display' and f:item)))