SIL HIE Implementation Guide
0.1.0 - sil-hie-active

SIL HIE Implementation Guide, published by Kathurima Kimathi. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/savannahghi/hie-fhir-ig-profile/ and changes regularly. See the Directory of published versions

Resource Profile: HIE Questionnaire

Official URL: https://nshr.dha.go.ke/fhir/StructureDefinition/questionnaire Version: 0.1.0
Active as of 2026-10-20 Computable Name: HIEQuestionnaire

R4B Questionnaire profiled for HIE data capture. Emphasizes status, metadata, subject typing, stable linkIds, clear item typing, conditional logic, and controlled answer options.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, q-has-items
Questionnaire.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Questionnaire.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Questionnaire.url This element must be supported. This element is included in summaries. 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
Questionnaire.identifier This element is included in summaries. 1..* Identifier Additional identifier for the questionnaire
Questionnaire.identifier.use This element is a modifier element. This element is included in summaries. 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
Questionnaire.identifier.type This element is included in summaries. C 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
Constraints: cc-text-or-code
Questionnaire.identifier.system This element is included in summaries. 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
Questionnaire.identifier.value This element must be supported. This element is included in summaries. 1..1 string The value that is unique
Example General: 123456
Questionnaire.identifier.assigner This element must be supported. This element is included in summaries. 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
Questionnaire.name This element must be supported. This element is included in summaries. 0..1 string Name for this questionnaire (computer friendly)
Questionnaire.title This element must be supported. This element is included in summaries. 1..1 string Name for this questionnaire (human friendly)
Questionnaire.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
Questionnaire.date This element must be supported. This element is included in summaries. 1..1 dateTime Date last changed
Questionnaire.description This element must be supported. 1..1 markdown Natural language description of the questionnaire
Questionnaire.item This element must be supported. C 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: que-1a, que-1b, que-1c, que-3, que-4, que-5, que-6, que-8, que-9, que-10, que-11, que-12, que-13, q-unique-linkid, q-group-no-answers, q-leaf-answerable
Questionnaire.item.extension 0..* Extension UI hints and custom constraints
Questionnaire.item.extension.extension 0..0 Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Questionnaire.item.extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
Questionnaire.item.extension.Slices for value[x] 0..1 Value of extension
Slice: Unordered, Closed by type:$this
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them Other type slices that contain no new information are not shown in this view
Questionnaire.item.extension.Slices for value[x].valueBase64Binary base64Binary
Questionnaire.item.extension.Slices for value[x].valueBoolean boolean
Questionnaire.item.extension.Slices for value[x].valueCanonical canonical(Any)
Questionnaire.item.extension.Slices for value[x].valueCode code
Questionnaire.item.extension.Slices for value[x].valueDate date
Questionnaire.item.extension.Slices for value[x].valueDateTime dateTime
Questionnaire.item.extension.Slices for value[x].valueDecimal decimal
Questionnaire.item.extension.Slices for value[x].valueId id
Questionnaire.item.extension.Slices for value[x].valueInstant instant
Questionnaire.item.extension.Slices for value[x].valueInteger integer
Questionnaire.item.extension.Slices for value[x].valueMarkdown markdown
Questionnaire.item.extension.Slices for value[x].valueOid oid
Questionnaire.item.extension.Slices for value[x].valuePositiveInt positiveInt
Questionnaire.item.extension.Slices for value[x].valueString string
Questionnaire.item.extension.Slices for value[x].valueTime time
Questionnaire.item.extension.Slices for value[x].valueUnsignedInt unsignedInt
Questionnaire.item.extension.Slices for value[x].valueUri uri
Questionnaire.item.extension.Slices for value[x].valueUrl url
Questionnaire.item.extension.Slices for value[x].valueUuid uuid
Questionnaire.item.extension.Slices for value[x].valueAddress Address
Questionnaire.item.extension.Slices for value[x].valueAge Age
Questionnaire.item.extension.Slices for value[x].valueAnnotation Annotation
Questionnaire.item.extension.Slices for value[x].valueAttachment Attachment
Questionnaire.item.extension.Slices for value[x].valueCodeableConcept CodeableConcept
Questionnaire.item.extension.Slices for value[x].valueCodeableReference CodeableReference
Questionnaire.item.extension.Slices for value[x].valueCoding Coding
Questionnaire.item.extension.Slices for value[x].valueContactPoint ContactPoint
Questionnaire.item.extension.Slices for value[x].valueCount Count
Questionnaire.item.extension.Slices for value[x].valueDistance Distance
Questionnaire.item.extension.Slices for value[x].valueDuration Duration
Questionnaire.item.extension.Slices for value[x].valueHumanName HumanName
Questionnaire.item.extension.Slices for value[x].valueIdentifier Identifier
Questionnaire.item.extension.Slices for value[x].valueMoney Money
Questionnaire.item.extension.Slices for value[x].valuePeriod Period
Questionnaire.item.extension.Slices for value[x].valueQuantity Quantity
Questionnaire.item.extension.Slices for value[x].valueRange Range
Questionnaire.item.extension.Slices for value[x].valueRatio Ratio
Questionnaire.item.extension.Slices for value[x].valueRatioRange RatioRange
Questionnaire.item.extension.Slices for value[x].valueReference Reference(Any)
Questionnaire.item.extension.Slices for value[x].valueSampledData SampledData
Questionnaire.item.extension.Slices for value[x].valueSignature Signature
Questionnaire.item.extension.Slices for value[x].valueTiming Timing
Questionnaire.item.extension.Slices for value[x].valueContactDetail ContactDetail
Questionnaire.item.extension.Slices for value[x].valueContributor Contributor
Questionnaire.item.extension.Slices for value[x].valueDataRequirement DataRequirement
Questionnaire.item.extension.Slices for value[x].valueExpression Expression
Questionnaire.item.extension.Slices for value[x].valueParameterDefinition ParameterDefinition
Questionnaire.item.extension.Slices for value[x].valueRelatedArtifact RelatedArtifact
Questionnaire.item.extension.Slices for value[x].valueTriggerDefinition TriggerDefinition
Questionnaire.item.extension.Slices for value[x].valueUsageContext UsageContext
Questionnaire.item.extension.Slices for value[x].valueDosage Dosage
Questionnaire.item.extension.Slices for value[x].value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
Questionnaire.item.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.linkId This element must be supported. 1..1 string Unique id for item in questionnaire
Questionnaire.item.text This element must be supported. 0..1 string Primary text for the item
Questionnaire.item.type This element must be supported. 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Binding: QuestionnaireItemType (required): Distinguishes groups from questions and display text and indicates data type for questions.
Questionnaire.item.enableWhen This element is a modifier element. C 0..* BackboneElement Only allow data when
Constraints: que-7
Questionnaire.item.enableWhen.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.enableWhen.question 1..1 string Question that determines whether item is enabled
Questionnaire.item.enableWhen.operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
Questionnaire.item.enableWhen.answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.enableWhen.answer[x].answerBoolean boolean
Questionnaire.item.enableWhen.answer[x].answerDecimal decimal
Questionnaire.item.enableWhen.answer[x].answerInteger integer
Questionnaire.item.enableWhen.answer[x].answerDate date
Questionnaire.item.enableWhen.answer[x].answerDateTime dateTime
Questionnaire.item.enableWhen.answer[x].answerTime time
Questionnaire.item.enableWhen.answer[x].answerString string
Questionnaire.item.enableWhen.answer[x].answerCoding Coding
Questionnaire.item.enableWhen.answer[x].answerQuantity Quantity
Questionnaire.item.enableWhen.answer[x].answerReference Reference(Resource)
Questionnaire.item.enableBehavior C 0..1 code any or all
Binding: EnableWhenBehavior (required): Controls how multiple enableWhen values are interpreted - whether all or any must be true.
Questionnaire.item.required C 0..1 boolean If true, at least one answer is expected at runtime
Questionnaire.item.answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
Questionnaire.item.answerOption C 0..* BackboneElement Permitted answer
Questionnaire.item.answerOption.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.answerOption.value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.answerOption.value[x].valueInteger integer
Questionnaire.item.answerOption.value[x].valueDate date
Questionnaire.item.answerOption.value[x].valueTime time
Questionnaire.item.answerOption.value[x].valueString string
Questionnaire.item.answerOption.value[x].valueCoding Coding
Questionnaire.item.answerOption.value[x].valueReference Reference(Resource)
Questionnaire.item.initial C 0..* BackboneElement Initial value(s) when item is first rendered
Questionnaire.item.initial.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.initial.value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.initial.value[x].valueBoolean boolean
Questionnaire.item.initial.value[x].valueDecimal decimal
Questionnaire.item.initial.value[x].valueInteger integer
Questionnaire.item.initial.value[x].valueDate date
Questionnaire.item.initial.value[x].valueDateTime dateTime
Questionnaire.item.initial.value[x].valueTime time
Questionnaire.item.initial.value[x].valueString string
Questionnaire.item.initial.value[x].valueUri uri
Questionnaire.item.initial.value[x].valueAttachment Attachment
Questionnaire.item.initial.value[x].valueCoding Coding
Questionnaire.item.initial.value[x].valueQuantity Quantity
Questionnaire.item.initial.value[x].valueReference Reference(Resource)
Questionnaire.item.item C 0..* See item (Questionnaire) Nested questionnaire items

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.identifier.​use Base required IdentifierUse 📦4.3.0 FHIR Std.
Questionnaire.identifier.​type Base extensible IdentifierType 📦4.3.0 FHIR Std.
Questionnaire.status Base required PublicationStatus 📍4.3.0 FHIR Std.
Questionnaire.item.extension.​value[x]:valueCodeableConcept Base extensible Questionnaire Item UI Control Codes 📦4.3.0 FHIR Std.
Questionnaire.item.type Base required QuestionnaireItemType 📍4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​answer[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.enableBehavior Base required EnableWhenBehavior 📍4.3.0 FHIR Std.
Questionnaire.item.answerOption.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.initial.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
cc-text-or-code warning Questionnaire.identifier.type Text is optional, coding is required coding.exists()
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where(((id.exists() and ('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url)))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
q-group-no-answers error Questionnaire.item Group items do not have answers, initial, or answer value sets (type != 'group') or (answerOption.empty() and answerValueSet.empty() and initial.empty())
q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
q-leaf-answerable warning Questionnaire.item Non-group, non-display items must be answerable or descriptive (type in {'group','display'}) or (answerOption.exists() or answerValueSet.exists() or type.exists())
q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.exists() implies name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-1a error Questionnaire.item Group items must have nested items when Questionanire is complete (type='group' and %resource.status='complete') implies item.empty().not()
que-1b warning Questionnaire.item Groups should have items type='group' implies item.empty().not()
que-1c error Questionnaire.item Display items cannot have child items type='display' implies item.empty()
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()
que-3 error Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty()
que-4 error Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty()
que-5 error Questionnaire.item Only 'choice' and 'open-choice' items can have answerValueSet (type ='choice' or type = 'open-choice' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 error Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty())
que-7 error Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is boolean)
que-8 error Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty()
que-9 error Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty()
que-10 error Questionnaire.item Maximum length can only be declared for simple question types (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url' | 'open-choice')) or maxLength.empty()
que-11 error Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty()
que-12 error Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 1 implies enableBehavior.exists()
que-13 error Questionnaire.item Can only have multiple initial values for repeating items repeats=true or initial.count() <= 1

This structure is derived from Questionnaire

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: q-has-items
Questionnaire.url This element must be supported. 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
Questionnaire.identifier 1..* Identifier Additional identifier for the questionnaire
Questionnaire.identifier.use 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
Questionnaire.identifier.type 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
Questionnaire.identifier.system 1..1 uri The namespace for the identifier value
Questionnaire.identifier.value This element must be supported. 1..1 string The value that is unique
Questionnaire.identifier.assigner This element must be supported. 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
Questionnaire.name This element must be supported. 0..1 string Name for this questionnaire (computer friendly)
Questionnaire.status This element must be supported. 1..1 code draft | active | retired | unknown
Questionnaire.date This element must be supported. 1..1 dateTime Date last changed
Questionnaire.description This element must be supported. 1..1 markdown Natural language description of the questionnaire
Questionnaire.item This element must be supported. C 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: q-unique-linkid, q-group-no-answers, q-leaf-answerable
Questionnaire.item.extension 0..* Extension UI hints and custom constraints
Questionnaire.item.extension.extension 0..0 Extension
Questionnaire.item.extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
Questionnaire.item.extension.Slices for value[x] 0..1 base64Binary, boolean, canonical(), code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference(), Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference(), SampledData, Signature, Timing, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage Value of extension
Slice: Unordered, Open by type:$this
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them Other type slices that contain no new information are not shown in this view
Questionnaire.item.extension.Slices for value[x].value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
Questionnaire.item.linkId This element must be supported. 1..1 string Unique id for item in questionnaire
Questionnaire.item.text This element must be supported. 0..1 string Primary text for the item
Questionnaire.item.type This element must be supported. 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Questionnaire.item.enableWhen
Questionnaire.item.enableWhen.operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
Questionnaire.item.enableBehavior 0..1 code any or all
Questionnaire.item.required 0..1 boolean If true, at least one answer is expected at runtime
Questionnaire.item.item 0..* BackboneElement Nested questionnaire items

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Questionnaire.identifier.​use Base required IdentifierUse 📦4.3.0 FHIR Std.
Questionnaire.identifier.​type Base extensible IdentifierType 📦4.3.0 FHIR Std.
Questionnaire.item.extension.​value[x]:valueCodeableConcept Base extensible Questionnaire Item UI Control Codes 📦4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
q-group-no-answers error Questionnaire.item Group items do not have answers, initial, or answer value sets (type != 'group') or (answerOption.empty() and answerValueSet.empty() and initial.empty())
q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
q-leaf-answerable warning Questionnaire.item Non-group, non-display items must be answerable or descriptive (type in {'group','display'}) or (answerOption.exists() or answerValueSet.exists() or type.exists())
q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()
NameFlagsCard.TypeDescription & Constraints    Filter: doco
Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, q-has-items
Questionnaire.id This element is included in summaries. 0..1 id Logical id of this artifact
Questionnaire.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Questionnaire.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Questionnaire.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): IETF language tag
Additional BindingsPurpose
AllLanguages Max Binding
Questionnaire.text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
Questionnaire.contained 0..* Resource Contained, inline Resources
Constraints: dom-r4b
Questionnaire.extension 0..* Extension Additional content defined by implementations
Questionnaire.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Questionnaire.url This element must be supported. This element is included in summaries. 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
Questionnaire.identifier This element is included in summaries. 1..* Identifier Additional identifier for the questionnaire
Questionnaire.identifier.id 0..1 id Unique id for inter-element referencing
Questionnaire.identifier.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Questionnaire.identifier.use This element is a modifier element. This element is included in summaries. 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
Questionnaire.identifier.type This element is included in summaries. C 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
Constraints: cc-text-or-code
Questionnaire.identifier.system This element is included in summaries. 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
Questionnaire.identifier.value This element must be supported. This element is included in summaries. 1..1 string The value that is unique
Example General: 123456
Questionnaire.identifier.period This element is included in summaries. 0..1 Period Time period when id is/was valid for use
Questionnaire.identifier.assigner This element must be supported. This element is included in summaries. 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
Questionnaire.version This element is included in summaries. 0..1 string Business version of the questionnaire
Questionnaire.name This element must be supported. This element is included in summaries. 0..1 string Name for this questionnaire (computer friendly)
Questionnaire.title This element must be supported. This element is included in summaries. 1..1 string Name for this questionnaire (human friendly)
Questionnaire.derivedFrom 0..* canonical(Questionnaire) Instantiates protocol or definition
Questionnaire.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
Questionnaire.experimental This element is included in summaries. 0..1 boolean For testing purposes, not real usage
Questionnaire.subjectType This element is included in summaries. 0..* code Resource that can be subject of QuestionnaireResponse
Binding: ResourceType (required): One of the resource types defined as part of this version of FHIR.
Questionnaire.date This element must be supported. This element is included in summaries. 1..1 dateTime Date last changed
Questionnaire.publisher This element is included in summaries. 0..1 string Name of the publisher (organization or individual)
Questionnaire.contact This element is included in summaries. 0..* ContactDetail Contact details for the publisher
Questionnaire.description This element must be supported. 1..1 markdown Natural language description of the questionnaire
Questionnaire.useContext This element is included in summaries. 0..* UsageContext The context that the content is intended to support
Questionnaire.jurisdiction This element is included in summaries. 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.
Questionnaire.purpose 0..1 markdown Why this questionnaire is defined
Questionnaire.copyright 0..1 markdown Use and/or publishing restrictions
Questionnaire.approvalDate 0..1 date When the questionnaire was approved by publisher
Questionnaire.lastReviewDate 0..1 date When the questionnaire was last reviewed
Questionnaire.effectivePeriod This element is included in summaries. 0..1 Period When the questionnaire is expected to be used
Questionnaire.code This element is included in summaries. 0..* Coding Concept that represents the overall questionnaire
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
Questionnaire.item This element must be supported. C 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: que-1a, que-1b, que-1c, que-3, que-4, que-5, que-6, que-8, que-9, que-10, que-11, que-12, que-13, q-unique-linkid, q-group-no-answers, q-leaf-answerable
Questionnaire.item.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.extension 0..* Extension UI hints and custom constraints
Questionnaire.item.extension.id 0..1 id Unique id for inter-element referencing
Questionnaire.item.extension.extension 0..0 Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Questionnaire.item.extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
Questionnaire.item.extension.Slices for value[x] 0..1 Value of extension
Slice: Unordered, Closed by type:$this
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them Other type slices that contain no new information are not shown in this view
Questionnaire.item.extension.Slices for value[x].valueBase64Binary base64Binary
Questionnaire.item.extension.Slices for value[x].valueBoolean boolean
Questionnaire.item.extension.Slices for value[x].valueCanonical canonical(Any)
Questionnaire.item.extension.Slices for value[x].valueCode code
Questionnaire.item.extension.Slices for value[x].valueDate date
Questionnaire.item.extension.Slices for value[x].valueDateTime dateTime
Questionnaire.item.extension.Slices for value[x].valueDecimal decimal
Questionnaire.item.extension.Slices for value[x].valueId id
Questionnaire.item.extension.Slices for value[x].valueInstant instant
Questionnaire.item.extension.Slices for value[x].valueInteger integer
Questionnaire.item.extension.Slices for value[x].valueMarkdown markdown
Questionnaire.item.extension.Slices for value[x].valueOid oid
Questionnaire.item.extension.Slices for value[x].valuePositiveInt positiveInt
Questionnaire.item.extension.Slices for value[x].valueString string
Questionnaire.item.extension.Slices for value[x].valueTime time
Questionnaire.item.extension.Slices for value[x].valueUnsignedInt unsignedInt
Questionnaire.item.extension.Slices for value[x].valueUri uri
Questionnaire.item.extension.Slices for value[x].valueUrl url
Questionnaire.item.extension.Slices for value[x].valueUuid uuid
Questionnaire.item.extension.Slices for value[x].valueAddress Address
Questionnaire.item.extension.Slices for value[x].valueAge Age
Questionnaire.item.extension.Slices for value[x].valueAnnotation Annotation
Questionnaire.item.extension.Slices for value[x].valueAttachment Attachment
Questionnaire.item.extension.Slices for value[x].valueCodeableConcept CodeableConcept
Questionnaire.item.extension.Slices for value[x].valueCodeableReference CodeableReference
Questionnaire.item.extension.Slices for value[x].valueCoding Coding
Questionnaire.item.extension.Slices for value[x].valueContactPoint ContactPoint
Questionnaire.item.extension.Slices for value[x].valueCount Count
Questionnaire.item.extension.Slices for value[x].valueDistance Distance
Questionnaire.item.extension.Slices for value[x].valueDuration Duration
Questionnaire.item.extension.Slices for value[x].valueHumanName HumanName
Questionnaire.item.extension.Slices for value[x].valueIdentifier Identifier
Questionnaire.item.extension.Slices for value[x].valueMoney Money
Questionnaire.item.extension.Slices for value[x].valuePeriod Period
Questionnaire.item.extension.Slices for value[x].valueQuantity Quantity
Questionnaire.item.extension.Slices for value[x].valueRange Range
Questionnaire.item.extension.Slices for value[x].valueRatio Ratio
Questionnaire.item.extension.Slices for value[x].valueRatioRange RatioRange
Questionnaire.item.extension.Slices for value[x].valueReference Reference(Any)
Questionnaire.item.extension.Slices for value[x].valueSampledData SampledData
Questionnaire.item.extension.Slices for value[x].valueSignature Signature
Questionnaire.item.extension.Slices for value[x].valueTiming Timing
Questionnaire.item.extension.Slices for value[x].valueContactDetail ContactDetail
Questionnaire.item.extension.Slices for value[x].valueContributor Contributor
Questionnaire.item.extension.Slices for value[x].valueDataRequirement DataRequirement
Questionnaire.item.extension.Slices for value[x].valueExpression Expression
Questionnaire.item.extension.Slices for value[x].valueParameterDefinition ParameterDefinition
Questionnaire.item.extension.Slices for value[x].valueRelatedArtifact RelatedArtifact
Questionnaire.item.extension.Slices for value[x].valueTriggerDefinition TriggerDefinition
Questionnaire.item.extension.Slices for value[x].valueUsageContext UsageContext
Questionnaire.item.extension.Slices for value[x].valueDosage Dosage
Questionnaire.item.extension.Slices for value[x].value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
Questionnaire.item.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.linkId This element must be supported. 1..1 string Unique id for item in questionnaire
Questionnaire.item.definition 0..1 uri ElementDefinition - details for the item
Questionnaire.item.code C 0..* Coding Corresponding concept for this item in a terminology
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
Questionnaire.item.prefix 0..1 string E.g. "1(a)", "2.5.3"
Questionnaire.item.text This element must be supported. 0..1 string Primary text for the item
Questionnaire.item.type This element must be supported. 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Binding: QuestionnaireItemType (required): Distinguishes groups from questions and display text and indicates data type for questions.
Questionnaire.item.enableWhen This element is a modifier element. C 0..* BackboneElement Only allow data when
Constraints: que-7
Questionnaire.item.enableWhen.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.enableWhen.extension 0..* Extension Additional content defined by implementations
Questionnaire.item.enableWhen.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.enableWhen.question 1..1 string Question that determines whether item is enabled
Questionnaire.item.enableWhen.operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
Questionnaire.item.enableWhen.answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.enableWhen.answer[x].answerBoolean boolean
Questionnaire.item.enableWhen.answer[x].answerDecimal decimal
Questionnaire.item.enableWhen.answer[x].answerInteger integer
Questionnaire.item.enableWhen.answer[x].answerDate date
Questionnaire.item.enableWhen.answer[x].answerDateTime dateTime
Questionnaire.item.enableWhen.answer[x].answerTime time
Questionnaire.item.enableWhen.answer[x].answerString string
Questionnaire.item.enableWhen.answer[x].answerCoding Coding
Questionnaire.item.enableWhen.answer[x].answerQuantity Quantity
Questionnaire.item.enableWhen.answer[x].answerReference Reference(Resource)
Questionnaire.item.enableBehavior C 0..1 code any or all
Binding: EnableWhenBehavior (required): Controls how multiple enableWhen values are interpreted - whether all or any must be true.
Questionnaire.item.required C 0..1 boolean If true, at least one answer is expected at runtime
Questionnaire.item.repeats C 0..1 boolean Whether the item may repeat
Questionnaire.item.readOnly C 0..1 boolean Don't allow human editing
Questionnaire.item.maxLength C 0..1 integer No more than this many characters
Questionnaire.item.answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
Questionnaire.item.answerOption C 0..* BackboneElement Permitted answer
Questionnaire.item.answerOption.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.answerOption.extension 0..* Extension Additional content defined by implementations
Questionnaire.item.answerOption.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.answerOption.value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.answerOption.value[x].valueInteger integer
Questionnaire.item.answerOption.value[x].valueDate date
Questionnaire.item.answerOption.value[x].valueTime time
Questionnaire.item.answerOption.value[x].valueString string
Questionnaire.item.answerOption.value[x].valueCoding Coding
Questionnaire.item.answerOption.value[x].valueReference Reference(Resource)
Questionnaire.item.answerOption.initialSelected 0..1 boolean Whether option is selected by default
Questionnaire.item.initial C 0..* BackboneElement Initial value(s) when item is first rendered
Questionnaire.item.initial.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.initial.extension 0..* Extension Additional content defined by implementations
Questionnaire.item.initial.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.initial.value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.initial.value[x].valueBoolean boolean
Questionnaire.item.initial.value[x].valueDecimal decimal
Questionnaire.item.initial.value[x].valueInteger integer
Questionnaire.item.initial.value[x].valueDate date
Questionnaire.item.initial.value[x].valueDateTime dateTime
Questionnaire.item.initial.value[x].valueTime time
Questionnaire.item.initial.value[x].valueString string
Questionnaire.item.initial.value[x].valueUri uri
Questionnaire.item.initial.value[x].valueAttachment Attachment
Questionnaire.item.initial.value[x].valueCoding Coding
Questionnaire.item.initial.value[x].valueQuantity Quantity
Questionnaire.item.initial.value[x].valueReference Reference(Resource)
Questionnaire.item.item C 0..* See item (Questionnaire) Nested questionnaire items

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.language Base preferred Common Languages 📍4.3.0 FHIR Std.
Questionnaire.identifier.​use Base required IdentifierUse 📦4.3.0 FHIR Std.
Questionnaire.identifier.​type Base extensible IdentifierType 📦4.3.0 FHIR Std.
Questionnaire.status Base required PublicationStatus 📍4.3.0 FHIR Std.
Questionnaire.subjectType Base required ResourceType 📍4.3.0 FHIR Std.
Questionnaire.jurisdiction Base extensible Jurisdiction 📍4.3.0 FHIR Std.
Questionnaire.code Base example Questionnaire Question Codes 📍4.3.0 FHIR Std.
Questionnaire.item.extension.​value[x]:valueCodeableConcept Base extensible Questionnaire Item UI Control Codes 📦4.3.0 FHIR Std.
Questionnaire.item.code Base example Questionnaire Question Codes 📍4.3.0 FHIR Std.
Questionnaire.item.type Base required QuestionnaireItemType 📍4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​answer[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.enableBehavior Base required EnableWhenBehavior 📍4.3.0 FHIR Std.
Questionnaire.item.answerOption.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.initial.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
cc-text-or-code warning Questionnaire.identifier.type Text is optional, coding is required coding.exists()
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where(((id.exists() and ('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url)))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
dom-r4b warning Questionnaire.contained Containing new R4B resources within R4 resources may cause interoperability issues if instances are shared with R4 systems ($this is Citation or $this is Evidence or $this is EvidenceReport or $this is EvidenceVariable or $this is MedicinalProductDefinition or $this is PackagedProductDefinition or $this is AdministrableProductDefinition or $this is Ingredient or $this is ClinicalUseDefinition or $this is RegulatedAuthorization or $this is SubstanceDefinition or $this is SubscriptionStatus or $this is SubscriptionTopic) implies (%resource is Citation or %resource is Evidence or %resource is EvidenceReport or %resource is EvidenceVariable or %resource is MedicinalProductDefinition or %resource is PackagedProductDefinition or %resource is AdministrableProductDefinition or %resource is Ingredient or %resource is ClinicalUseDefinition or %resource is RegulatedAuthorization or %resource is SubstanceDefinition or %resource is SubscriptionStatus or %resource is SubscriptionTopic)
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
q-group-no-answers error Questionnaire.item Group items do not have answers, initial, or answer value sets (type != 'group') or (answerOption.empty() and answerValueSet.empty() and initial.empty())
q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
q-leaf-answerable warning Questionnaire.item Non-group, non-display items must be answerable or descriptive (type in {'group','display'}) or (answerOption.exists() or answerValueSet.exists() or type.exists())
q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.exists() implies name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-1a error Questionnaire.item Group items must have nested items when Questionanire is complete (type='group' and %resource.status='complete') implies item.empty().not()
que-1b warning Questionnaire.item Groups should have items type='group' implies item.empty().not()
que-1c error Questionnaire.item Display items cannot have child items type='display' implies item.empty()
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()
que-3 error Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty()
que-4 error Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty()
que-5 error Questionnaire.item Only 'choice' and 'open-choice' items can have answerValueSet (type ='choice' or type = 'open-choice' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 error Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty())
que-7 error Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is boolean)
que-8 error Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty()
que-9 error Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty()
que-10 error Questionnaire.item Maximum length can only be declared for simple question types (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url' | 'open-choice')) or maxLength.empty()
que-11 error Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty()
que-12 error Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 1 implies enableBehavior.exists()
que-13 error Questionnaire.item Can only have multiple initial values for repeating items repeats=true or initial.count() <= 1

This structure is derived from Questionnaire

Summary

Mandatory: 10 elements
Must-Support: 12 elements
Fixed: 1 element
Prohibited: 1 element

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Questionnaire.item.extension.value[x]

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, q-has-items
Questionnaire.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Questionnaire.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Questionnaire.url This element must be supported. This element is included in summaries. 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
Questionnaire.identifier This element is included in summaries. 1..* Identifier Additional identifier for the questionnaire
Questionnaire.identifier.use This element is a modifier element. This element is included in summaries. 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
Questionnaire.identifier.type This element is included in summaries. C 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
Constraints: cc-text-or-code
Questionnaire.identifier.system This element is included in summaries. 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
Questionnaire.identifier.value This element must be supported. This element is included in summaries. 1..1 string The value that is unique
Example General: 123456
Questionnaire.identifier.assigner This element must be supported. This element is included in summaries. 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
Questionnaire.name This element must be supported. This element is included in summaries. 0..1 string Name for this questionnaire (computer friendly)
Questionnaire.title This element must be supported. This element is included in summaries. 1..1 string Name for this questionnaire (human friendly)
Questionnaire.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
Questionnaire.date This element must be supported. This element is included in summaries. 1..1 dateTime Date last changed
Questionnaire.description This element must be supported. 1..1 markdown Natural language description of the questionnaire
Questionnaire.item This element must be supported. C 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: que-1a, que-1b, que-1c, que-3, que-4, que-5, que-6, que-8, que-9, que-10, que-11, que-12, que-13, q-unique-linkid, q-group-no-answers, q-leaf-answerable
Questionnaire.item.extension 0..* Extension UI hints and custom constraints
Questionnaire.item.extension.extension 0..0 Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Questionnaire.item.extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
Questionnaire.item.extension.Slices for value[x] 0..1 Value of extension
Slice: Unordered, Closed by type:$this
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them Other type slices that contain no new information are not shown in this view
Questionnaire.item.extension.Slices for value[x].valueBase64Binary base64Binary
Questionnaire.item.extension.Slices for value[x].valueBoolean boolean
Questionnaire.item.extension.Slices for value[x].valueCanonical canonical(Any)
Questionnaire.item.extension.Slices for value[x].valueCode code
Questionnaire.item.extension.Slices for value[x].valueDate date
Questionnaire.item.extension.Slices for value[x].valueDateTime dateTime
Questionnaire.item.extension.Slices for value[x].valueDecimal decimal
Questionnaire.item.extension.Slices for value[x].valueId id
Questionnaire.item.extension.Slices for value[x].valueInstant instant
Questionnaire.item.extension.Slices for value[x].valueInteger integer
Questionnaire.item.extension.Slices for value[x].valueMarkdown markdown
Questionnaire.item.extension.Slices for value[x].valueOid oid
Questionnaire.item.extension.Slices for value[x].valuePositiveInt positiveInt
Questionnaire.item.extension.Slices for value[x].valueString string
Questionnaire.item.extension.Slices for value[x].valueTime time
Questionnaire.item.extension.Slices for value[x].valueUnsignedInt unsignedInt
Questionnaire.item.extension.Slices for value[x].valueUri uri
Questionnaire.item.extension.Slices for value[x].valueUrl url
Questionnaire.item.extension.Slices for value[x].valueUuid uuid
Questionnaire.item.extension.Slices for value[x].valueAddress Address
Questionnaire.item.extension.Slices for value[x].valueAge Age
Questionnaire.item.extension.Slices for value[x].valueAnnotation Annotation
Questionnaire.item.extension.Slices for value[x].valueAttachment Attachment
Questionnaire.item.extension.Slices for value[x].valueCodeableConcept CodeableConcept
Questionnaire.item.extension.Slices for value[x].valueCodeableReference CodeableReference
Questionnaire.item.extension.Slices for value[x].valueCoding Coding
Questionnaire.item.extension.Slices for value[x].valueContactPoint ContactPoint
Questionnaire.item.extension.Slices for value[x].valueCount Count
Questionnaire.item.extension.Slices for value[x].valueDistance Distance
Questionnaire.item.extension.Slices for value[x].valueDuration Duration
Questionnaire.item.extension.Slices for value[x].valueHumanName HumanName
Questionnaire.item.extension.Slices for value[x].valueIdentifier Identifier
Questionnaire.item.extension.Slices for value[x].valueMoney Money
Questionnaire.item.extension.Slices for value[x].valuePeriod Period
Questionnaire.item.extension.Slices for value[x].valueQuantity Quantity
Questionnaire.item.extension.Slices for value[x].valueRange Range
Questionnaire.item.extension.Slices for value[x].valueRatio Ratio
Questionnaire.item.extension.Slices for value[x].valueRatioRange RatioRange
Questionnaire.item.extension.Slices for value[x].valueReference Reference(Any)
Questionnaire.item.extension.Slices for value[x].valueSampledData SampledData
Questionnaire.item.extension.Slices for value[x].valueSignature Signature
Questionnaire.item.extension.Slices for value[x].valueTiming Timing
Questionnaire.item.extension.Slices for value[x].valueContactDetail ContactDetail
Questionnaire.item.extension.Slices for value[x].valueContributor Contributor
Questionnaire.item.extension.Slices for value[x].valueDataRequirement DataRequirement
Questionnaire.item.extension.Slices for value[x].valueExpression Expression
Questionnaire.item.extension.Slices for value[x].valueParameterDefinition ParameterDefinition
Questionnaire.item.extension.Slices for value[x].valueRelatedArtifact RelatedArtifact
Questionnaire.item.extension.Slices for value[x].valueTriggerDefinition TriggerDefinition
Questionnaire.item.extension.Slices for value[x].valueUsageContext UsageContext
Questionnaire.item.extension.Slices for value[x].valueDosage Dosage
Questionnaire.item.extension.Slices for value[x].value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
Questionnaire.item.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.linkId This element must be supported. 1..1 string Unique id for item in questionnaire
Questionnaire.item.text This element must be supported. 0..1 string Primary text for the item
Questionnaire.item.type This element must be supported. 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Binding: QuestionnaireItemType (required): Distinguishes groups from questions and display text and indicates data type for questions.
Questionnaire.item.enableWhen This element is a modifier element. C 0..* BackboneElement Only allow data when
Constraints: que-7
Questionnaire.item.enableWhen.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.enableWhen.question 1..1 string Question that determines whether item is enabled
Questionnaire.item.enableWhen.operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
Questionnaire.item.enableWhen.answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.enableWhen.answer[x].answerBoolean boolean
Questionnaire.item.enableWhen.answer[x].answerDecimal decimal
Questionnaire.item.enableWhen.answer[x].answerInteger integer
Questionnaire.item.enableWhen.answer[x].answerDate date
Questionnaire.item.enableWhen.answer[x].answerDateTime dateTime
Questionnaire.item.enableWhen.answer[x].answerTime time
Questionnaire.item.enableWhen.answer[x].answerString string
Questionnaire.item.enableWhen.answer[x].answerCoding Coding
Questionnaire.item.enableWhen.answer[x].answerQuantity Quantity
Questionnaire.item.enableWhen.answer[x].answerReference Reference(Resource)
Questionnaire.item.enableBehavior C 0..1 code any or all
Binding: EnableWhenBehavior (required): Controls how multiple enableWhen values are interpreted - whether all or any must be true.
Questionnaire.item.required C 0..1 boolean If true, at least one answer is expected at runtime
Questionnaire.item.answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
Questionnaire.item.answerOption C 0..* BackboneElement Permitted answer
Questionnaire.item.answerOption.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.answerOption.value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.answerOption.value[x].valueInteger integer
Questionnaire.item.answerOption.value[x].valueDate date
Questionnaire.item.answerOption.value[x].valueTime time
Questionnaire.item.answerOption.value[x].valueString string
Questionnaire.item.answerOption.value[x].valueCoding Coding
Questionnaire.item.answerOption.value[x].valueReference Reference(Resource)
Questionnaire.item.initial C 0..* BackboneElement Initial value(s) when item is first rendered
Questionnaire.item.initial.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.initial.value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.initial.value[x].valueBoolean boolean
Questionnaire.item.initial.value[x].valueDecimal decimal
Questionnaire.item.initial.value[x].valueInteger integer
Questionnaire.item.initial.value[x].valueDate date
Questionnaire.item.initial.value[x].valueDateTime dateTime
Questionnaire.item.initial.value[x].valueTime time
Questionnaire.item.initial.value[x].valueString string
Questionnaire.item.initial.value[x].valueUri uri
Questionnaire.item.initial.value[x].valueAttachment Attachment
Questionnaire.item.initial.value[x].valueCoding Coding
Questionnaire.item.initial.value[x].valueQuantity Quantity
Questionnaire.item.initial.value[x].valueReference Reference(Resource)
Questionnaire.item.item C 0..* See item (Questionnaire) Nested questionnaire items

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.identifier.​use Base required IdentifierUse 📦4.3.0 FHIR Std.
Questionnaire.identifier.​type Base extensible IdentifierType 📦4.3.0 FHIR Std.
Questionnaire.status Base required PublicationStatus 📍4.3.0 FHIR Std.
Questionnaire.item.extension.​value[x]:valueCodeableConcept Base extensible Questionnaire Item UI Control Codes 📦4.3.0 FHIR Std.
Questionnaire.item.type Base required QuestionnaireItemType 📍4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​answer[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.enableBehavior Base required EnableWhenBehavior 📍4.3.0 FHIR Std.
Questionnaire.item.answerOption.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.initial.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
cc-text-or-code warning Questionnaire.identifier.type Text is optional, coding is required coding.exists()
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where(((id.exists() and ('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url)))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
q-group-no-answers error Questionnaire.item Group items do not have answers, initial, or answer value sets (type != 'group') or (answerOption.empty() and answerValueSet.empty() and initial.empty())
q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
q-leaf-answerable warning Questionnaire.item Non-group, non-display items must be answerable or descriptive (type in {'group','display'}) or (answerOption.exists() or answerValueSet.exists() or type.exists())
q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.exists() implies name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-1a error Questionnaire.item Group items must have nested items when Questionanire is complete (type='group' and %resource.status='complete') implies item.empty().not()
que-1b warning Questionnaire.item Groups should have items type='group' implies item.empty().not()
que-1c error Questionnaire.item Display items cannot have child items type='display' implies item.empty()
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()
que-3 error Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty()
que-4 error Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty()
que-5 error Questionnaire.item Only 'choice' and 'open-choice' items can have answerValueSet (type ='choice' or type = 'open-choice' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 error Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty())
que-7 error Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is boolean)
que-8 error Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty()
que-9 error Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty()
que-10 error Questionnaire.item Maximum length can only be declared for simple question types (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url' | 'open-choice')) or maxLength.empty()
que-11 error Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty()
que-12 error Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 1 implies enableBehavior.exists()
que-13 error Questionnaire.item Can only have multiple initial values for repeating items repeats=true or initial.count() <= 1

Differential View

This structure is derived from Questionnaire

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: q-has-items
Questionnaire.url This element must be supported. 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
Questionnaire.identifier 1..* Identifier Additional identifier for the questionnaire
Questionnaire.identifier.use 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
Questionnaire.identifier.type 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
Questionnaire.identifier.system 1..1 uri The namespace for the identifier value
Questionnaire.identifier.value This element must be supported. 1..1 string The value that is unique
Questionnaire.identifier.assigner This element must be supported. 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
Questionnaire.name This element must be supported. 0..1 string Name for this questionnaire (computer friendly)
Questionnaire.title This element must be supported. 1..1 string Name for this questionnaire (human friendly)
Questionnaire.status This element must be supported. 1..1 code draft | active | retired | unknown
Questionnaire.date This element must be supported. 1..1 dateTime Date last changed
Questionnaire.description This element must be supported. 1..1 markdown Natural language description of the questionnaire
Questionnaire.item This element must be supported. C 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: q-unique-linkid, q-group-no-answers, q-leaf-answerable
Questionnaire.item.extension 0..* Extension UI hints and custom constraints
Questionnaire.item.extension.extension 0..0 Extension
Questionnaire.item.extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
Questionnaire.item.extension.Slices for value[x] 0..1 base64Binary, boolean, canonical(), code, date, dateTime, decimal, id, instant, integer, markdown, oid, positiveInt, string, time, unsignedInt, uri, url, uuid, Address, Age, Annotation, Attachment, CodeableConcept, CodeableReference(), Coding, ContactPoint, Count, Distance, Duration, HumanName, Identifier, Money, Period, Quantity, Range, Ratio, RatioRange, Reference(), SampledData, Signature, Timing, ContactDetail, Contributor, DataRequirement, Expression, ParameterDefinition, RelatedArtifact, TriggerDefinition, UsageContext, Dosage Value of extension
Slice: Unordered, Open by type:$this
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them Other type slices that contain no new information are not shown in this view
Questionnaire.item.extension.Slices for value[x].value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
Questionnaire.item.linkId This element must be supported. 1..1 string Unique id for item in questionnaire
Questionnaire.item.text This element must be supported. 0..1 string Primary text for the item
Questionnaire.item.type This element must be supported. 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Questionnaire.item.enableWhen
Questionnaire.item.enableWhen.operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
Questionnaire.item.enableBehavior 0..1 code any or all
Questionnaire.item.required 0..1 boolean If true, at least one answer is expected at runtime
Questionnaire.item.item 0..* BackboneElement Nested questionnaire items

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Questionnaire.identifier.​use Base required IdentifierUse 📦4.3.0 FHIR Std.
Questionnaire.identifier.​type Base extensible IdentifierType 📦4.3.0 FHIR Std.
Questionnaire.item.extension.​value[x]:valueCodeableConcept Base extensible Questionnaire Item UI Control Codes 📦4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
q-group-no-answers error Questionnaire.item Group items do not have answers, initial, or answer value sets (type != 'group') or (answerOption.empty() and answerValueSet.empty() and initial.empty())
q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
q-leaf-answerable warning Questionnaire.item Non-group, non-display items must be answerable or descriptive (type in {'group','display'}) or (answerOption.exists() or answerValueSet.exists() or type.exists())
q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, q-has-items
Questionnaire.id This element is included in summaries. 0..1 id Logical id of this artifact
Questionnaire.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Questionnaire.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Questionnaire.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): IETF language tag
Additional BindingsPurpose
AllLanguages Max Binding
Questionnaire.text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
Questionnaire.contained 0..* Resource Contained, inline Resources
Constraints: dom-r4b
Questionnaire.extension 0..* Extension Additional content defined by implementations
Questionnaire.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Questionnaire.url This element must be supported. This element is included in summaries. 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
Questionnaire.identifier This element is included in summaries. 1..* Identifier Additional identifier for the questionnaire
Questionnaire.identifier.id 0..1 id Unique id for inter-element referencing
Questionnaire.identifier.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Questionnaire.identifier.use This element is a modifier element. This element is included in summaries. 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
Questionnaire.identifier.type This element is included in summaries. C 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
Constraints: cc-text-or-code
Questionnaire.identifier.system This element is included in summaries. 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
Questionnaire.identifier.value This element must be supported. This element is included in summaries. 1..1 string The value that is unique
Example General: 123456
Questionnaire.identifier.period This element is included in summaries. 0..1 Period Time period when id is/was valid for use
Questionnaire.identifier.assigner This element must be supported. This element is included in summaries. 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
Questionnaire.version This element is included in summaries. 0..1 string Business version of the questionnaire
Questionnaire.name This element must be supported. This element is included in summaries. 0..1 string Name for this questionnaire (computer friendly)
Questionnaire.title This element must be supported. This element is included in summaries. 1..1 string Name for this questionnaire (human friendly)
Questionnaire.derivedFrom 0..* canonical(Questionnaire) Instantiates protocol or definition
Questionnaire.status This element is a modifier element. This element must be supported. This element is included in summaries. 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
Questionnaire.experimental This element is included in summaries. 0..1 boolean For testing purposes, not real usage
Questionnaire.subjectType This element is included in summaries. 0..* code Resource that can be subject of QuestionnaireResponse
Binding: ResourceType (required): One of the resource types defined as part of this version of FHIR.
Questionnaire.date This element must be supported. This element is included in summaries. 1..1 dateTime Date last changed
Questionnaire.publisher This element is included in summaries. 0..1 string Name of the publisher (organization or individual)
Questionnaire.contact This element is included in summaries. 0..* ContactDetail Contact details for the publisher
Questionnaire.description This element must be supported. 1..1 markdown Natural language description of the questionnaire
Questionnaire.useContext This element is included in summaries. 0..* UsageContext The context that the content is intended to support
Questionnaire.jurisdiction This element is included in summaries. 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.
Questionnaire.purpose 0..1 markdown Why this questionnaire is defined
Questionnaire.copyright 0..1 markdown Use and/or publishing restrictions
Questionnaire.approvalDate 0..1 date When the questionnaire was approved by publisher
Questionnaire.lastReviewDate 0..1 date When the questionnaire was last reviewed
Questionnaire.effectivePeriod This element is included in summaries. 0..1 Period When the questionnaire is expected to be used
Questionnaire.code This element is included in summaries. 0..* Coding Concept that represents the overall questionnaire
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
Questionnaire.item This element must be supported. C 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: que-1a, que-1b, que-1c, que-3, que-4, que-5, que-6, que-8, que-9, que-10, que-11, que-12, que-13, q-unique-linkid, q-group-no-answers, q-leaf-answerable
Questionnaire.item.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.extension 0..* Extension UI hints and custom constraints
Questionnaire.item.extension.id 0..1 id Unique id for inter-element referencing
Questionnaire.item.extension.extension 0..0 Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Questionnaire.item.extension.url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
Questionnaire.item.extension.Slices for value[x] 0..1 Value of extension
Slice: Unordered, Closed by type:$this
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them Other type slices that contain no new information are not shown in this view
Questionnaire.item.extension.Slices for value[x].valueBase64Binary base64Binary
Questionnaire.item.extension.Slices for value[x].valueBoolean boolean
Questionnaire.item.extension.Slices for value[x].valueCanonical canonical(Any)
Questionnaire.item.extension.Slices for value[x].valueCode code
Questionnaire.item.extension.Slices for value[x].valueDate date
Questionnaire.item.extension.Slices for value[x].valueDateTime dateTime
Questionnaire.item.extension.Slices for value[x].valueDecimal decimal
Questionnaire.item.extension.Slices for value[x].valueId id
Questionnaire.item.extension.Slices for value[x].valueInstant instant
Questionnaire.item.extension.Slices for value[x].valueInteger integer
Questionnaire.item.extension.Slices for value[x].valueMarkdown markdown
Questionnaire.item.extension.Slices for value[x].valueOid oid
Questionnaire.item.extension.Slices for value[x].valuePositiveInt positiveInt
Questionnaire.item.extension.Slices for value[x].valueString string
Questionnaire.item.extension.Slices for value[x].valueTime time
Questionnaire.item.extension.Slices for value[x].valueUnsignedInt unsignedInt
Questionnaire.item.extension.Slices for value[x].valueUri uri
Questionnaire.item.extension.Slices for value[x].valueUrl url
Questionnaire.item.extension.Slices for value[x].valueUuid uuid
Questionnaire.item.extension.Slices for value[x].valueAddress Address
Questionnaire.item.extension.Slices for value[x].valueAge Age
Questionnaire.item.extension.Slices for value[x].valueAnnotation Annotation
Questionnaire.item.extension.Slices for value[x].valueAttachment Attachment
Questionnaire.item.extension.Slices for value[x].valueCodeableConcept CodeableConcept
Questionnaire.item.extension.Slices for value[x].valueCodeableReference CodeableReference
Questionnaire.item.extension.Slices for value[x].valueCoding Coding
Questionnaire.item.extension.Slices for value[x].valueContactPoint ContactPoint
Questionnaire.item.extension.Slices for value[x].valueCount Count
Questionnaire.item.extension.Slices for value[x].valueDistance Distance
Questionnaire.item.extension.Slices for value[x].valueDuration Duration
Questionnaire.item.extension.Slices for value[x].valueHumanName HumanName
Questionnaire.item.extension.Slices for value[x].valueIdentifier Identifier
Questionnaire.item.extension.Slices for value[x].valueMoney Money
Questionnaire.item.extension.Slices for value[x].valuePeriod Period
Questionnaire.item.extension.Slices for value[x].valueQuantity Quantity
Questionnaire.item.extension.Slices for value[x].valueRange Range
Questionnaire.item.extension.Slices for value[x].valueRatio Ratio
Questionnaire.item.extension.Slices for value[x].valueRatioRange RatioRange
Questionnaire.item.extension.Slices for value[x].valueReference Reference(Any)
Questionnaire.item.extension.Slices for value[x].valueSampledData SampledData
Questionnaire.item.extension.Slices for value[x].valueSignature Signature
Questionnaire.item.extension.Slices for value[x].valueTiming Timing
Questionnaire.item.extension.Slices for value[x].valueContactDetail ContactDetail
Questionnaire.item.extension.Slices for value[x].valueContributor Contributor
Questionnaire.item.extension.Slices for value[x].valueDataRequirement DataRequirement
Questionnaire.item.extension.Slices for value[x].valueExpression Expression
Questionnaire.item.extension.Slices for value[x].valueParameterDefinition ParameterDefinition
Questionnaire.item.extension.Slices for value[x].valueRelatedArtifact RelatedArtifact
Questionnaire.item.extension.Slices for value[x].valueTriggerDefinition TriggerDefinition
Questionnaire.item.extension.Slices for value[x].valueUsageContext UsageContext
Questionnaire.item.extension.Slices for value[x].valueDosage Dosage
Questionnaire.item.extension.Slices for value[x].value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
Questionnaire.item.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.linkId This element must be supported. 1..1 string Unique id for item in questionnaire
Questionnaire.item.definition 0..1 uri ElementDefinition - details for the item
Questionnaire.item.code C 0..* Coding Corresponding concept for this item in a terminology
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
Questionnaire.item.prefix 0..1 string E.g. "1(a)", "2.5.3"
Questionnaire.item.text This element must be supported. 0..1 string Primary text for the item
Questionnaire.item.type This element must be supported. 1..1 code group | display | boolean | decimal | integer | date | dateTime +
Binding: QuestionnaireItemType (required): Distinguishes groups from questions and display text and indicates data type for questions.
Questionnaire.item.enableWhen This element is a modifier element. C 0..* BackboneElement Only allow data when
Constraints: que-7
Questionnaire.item.enableWhen.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.enableWhen.extension 0..* Extension Additional content defined by implementations
Questionnaire.item.enableWhen.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.enableWhen.question 1..1 string Question that determines whether item is enabled
Questionnaire.item.enableWhen.operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
Questionnaire.item.enableWhen.answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.enableWhen.answer[x].answerBoolean boolean
Questionnaire.item.enableWhen.answer[x].answerDecimal decimal
Questionnaire.item.enableWhen.answer[x].answerInteger integer
Questionnaire.item.enableWhen.answer[x].answerDate date
Questionnaire.item.enableWhen.answer[x].answerDateTime dateTime
Questionnaire.item.enableWhen.answer[x].answerTime time
Questionnaire.item.enableWhen.answer[x].answerString string
Questionnaire.item.enableWhen.answer[x].answerCoding Coding
Questionnaire.item.enableWhen.answer[x].answerQuantity Quantity
Questionnaire.item.enableWhen.answer[x].answerReference Reference(Resource)
Questionnaire.item.enableBehavior C 0..1 code any or all
Binding: EnableWhenBehavior (required): Controls how multiple enableWhen values are interpreted - whether all or any must be true.
Questionnaire.item.required C 0..1 boolean If true, at least one answer is expected at runtime
Questionnaire.item.repeats C 0..1 boolean Whether the item may repeat
Questionnaire.item.readOnly C 0..1 boolean Don't allow human editing
Questionnaire.item.maxLength C 0..1 integer No more than this many characters
Questionnaire.item.answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
Questionnaire.item.answerOption C 0..* BackboneElement Permitted answer
Questionnaire.item.answerOption.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.answerOption.extension 0..* Extension Additional content defined by implementations
Questionnaire.item.answerOption.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.answerOption.value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.answerOption.value[x].valueInteger integer
Questionnaire.item.answerOption.value[x].valueDate date
Questionnaire.item.answerOption.value[x].valueTime time
Questionnaire.item.answerOption.value[x].valueString string
Questionnaire.item.answerOption.value[x].valueCoding Coding
Questionnaire.item.answerOption.value[x].valueReference Reference(Resource)
Questionnaire.item.answerOption.initialSelected 0..1 boolean Whether option is selected by default
Questionnaire.item.initial C 0..* BackboneElement Initial value(s) when item is first rendered
Questionnaire.item.initial.id 0..1 string Unique id for inter-element referencing
Questionnaire.item.initial.extension 0..* Extension Additional content defined by implementations
Questionnaire.item.initial.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Questionnaire.item.initial.value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
Questionnaire.item.initial.value[x].valueBoolean boolean
Questionnaire.item.initial.value[x].valueDecimal decimal
Questionnaire.item.initial.value[x].valueInteger integer
Questionnaire.item.initial.value[x].valueDate date
Questionnaire.item.initial.value[x].valueDateTime dateTime
Questionnaire.item.initial.value[x].valueTime time
Questionnaire.item.initial.value[x].valueString string
Questionnaire.item.initial.value[x].valueUri uri
Questionnaire.item.initial.value[x].valueAttachment Attachment
Questionnaire.item.initial.value[x].valueCoding Coding
Questionnaire.item.initial.value[x].valueQuantity Quantity
Questionnaire.item.initial.value[x].valueReference Reference(Resource)
Questionnaire.item.item C 0..* See item (Questionnaire) Nested questionnaire items

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Questionnaire.language Base preferred Common Languages 📍4.3.0 FHIR Std.
Questionnaire.identifier.​use Base required IdentifierUse 📦4.3.0 FHIR Std.
Questionnaire.identifier.​type Base extensible IdentifierType 📦4.3.0 FHIR Std.
Questionnaire.status Base required PublicationStatus 📍4.3.0 FHIR Std.
Questionnaire.subjectType Base required ResourceType 📍4.3.0 FHIR Std.
Questionnaire.jurisdiction Base extensible Jurisdiction 📍4.3.0 FHIR Std.
Questionnaire.code Base example Questionnaire Question Codes 📍4.3.0 FHIR Std.
Questionnaire.item.extension.​value[x]:valueCodeableConcept Base extensible Questionnaire Item UI Control Codes 📦4.3.0 FHIR Std.
Questionnaire.item.code Base example Questionnaire Question Codes 📍4.3.0 FHIR Std.
Questionnaire.item.type Base required QuestionnaireItemType 📍4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.
Questionnaire.item.enableWhen.​answer[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.enableBehavior Base required EnableWhenBehavior 📍4.3.0 FHIR Std.
Questionnaire.item.answerOption.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.
Questionnaire.item.initial.​value[x] Base example Questionnaire Answer Codes 📍4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
cc-text-or-code warning Questionnaire.identifier.type Text is optional, coding is required coding.exists()
dom-2 error Questionnaire If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Questionnaire If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where(((id.exists() and ('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url)))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Questionnaire If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Questionnaire A resource should have narrative for robust management text.`div`.exists()
dom-r4b warning Questionnaire.contained Containing new R4B resources within R4 resources may cause interoperability issues if instances are shared with R4 systems ($this is Citation or $this is Evidence or $this is EvidenceReport or $this is EvidenceVariable or $this is MedicinalProductDefinition or $this is PackagedProductDefinition or $this is AdministrableProductDefinition or $this is Ingredient or $this is ClinicalUseDefinition or $this is RegulatedAuthorization or $this is SubstanceDefinition or $this is SubscriptionStatus or $this is SubscriptionTopic) implies (%resource is Citation or %resource is Evidence or %resource is EvidenceReport or %resource is EvidenceVariable or %resource is MedicinalProductDefinition or %resource is PackagedProductDefinition or %resource is AdministrableProductDefinition or %resource is Ingredient or %resource is ClinicalUseDefinition or %resource is RegulatedAuthorization or %resource is SubstanceDefinition or %resource is SubscriptionStatus or %resource is SubscriptionTopic)
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
q-group-no-answers error Questionnaire.item Group items do not have answers, initial, or answer value sets (type != 'group') or (answerOption.empty() and answerValueSet.empty() and initial.empty())
q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
q-leaf-answerable warning Questionnaire.item Non-group, non-display items must be answerable or descriptive (type in {'group','display'}) or (answerOption.exists() or answerValueSet.exists() or type.exists())
q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()
que-0 warning Questionnaire Name should be usable as an identifier for the module by machine processing applications such as code generation name.exists() implies name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
que-1a error Questionnaire.item Group items must have nested items when Questionanire is complete (type='group' and %resource.status='complete') implies item.empty().not()
que-1b warning Questionnaire.item Groups should have items type='group' implies item.empty().not()
que-1c error Questionnaire.item Display items cannot have child items type='display' implies item.empty()
que-2 error Questionnaire The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct()
que-3 error Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty()
que-4 error Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty()
que-5 error Questionnaire.item Only 'choice' and 'open-choice' items can have answerValueSet (type ='choice' or type = 'open-choice' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 error Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty())
que-7 error Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is boolean)
que-8 error Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty()
que-9 error Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty()
que-10 error Questionnaire.item Maximum length can only be declared for simple question types (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url' | 'open-choice')) or maxLength.empty()
que-11 error Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty()
que-12 error Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 1 implies enableBehavior.exists()
que-13 error Questionnaire.item Can only have multiple initial values for repeating items repeats=true or initial.count() <= 1

This structure is derived from Questionnaire

Summary

Mandatory: 10 elements
Must-Support: 12 elements
Fixed: 1 element
Prohibited: 1 element

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Questionnaire.item.extension.value[x]

 

Other representations of profile: CSV, Excel, Schematron