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/hie-questionnaire Version: 0.1.0
Active as of 2025-11-25 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: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, hie-q-has-items
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url SΣ 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
.... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type Σ 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
.... system Σ 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value SΣ 1..1 string The value that is unique
Example General: 123456
.... assigner SΣ 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
... name SΣ 0..1 string Name for this questionnaire (computer friendly)
... title SΣ 1..1 string Name for this questionnaire (human friendly)
... status ?!SΣ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
... date SΣ 1..1 dateTime Date last changed
... description S 1..1 markdown Natural language description of the questionnaire
... item SC 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, hie-q-unique-linkid, hie-q-group-no-answers, hie-q-leaf-answerable
.... extension 0..* Extension UI hints and custom constraints
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
..... Slices for value[x] 0..1 Value of extension
Slice: Unordered, Open by type:$this
...... valueBase64Binary base64Binary
...... valueBoolean boolean
...... valueCanonical canonical(Any)
...... valueCode code
...... valueDate date
...... valueDateTime dateTime
...... valueDecimal decimal
...... valueId id
...... valueInstant instant
...... valueInteger integer
...... valueMarkdown markdown
...... valueOid oid
...... valuePositiveInt positiveInt
...... valueString string
...... valueTime time
...... valueUnsignedInt unsignedInt
...... valueUri uri
...... valueUrl url
...... valueUuid uuid
...... valueAddress Address
...... valueAge Age
...... valueAnnotation Annotation
...... valueAttachment Attachment
...... valueCodeableConcept CodeableConcept
...... valueCodeableReference CodeableReference
...... valueCoding Coding
...... valueContactPoint ContactPoint
...... valueCount Count
...... valueDistance Distance
...... valueDuration Duration
...... valueHumanName HumanName
...... valueIdentifier Identifier
...... valueMoney Money
...... valuePeriod Period
...... valueQuantity Quantity
...... valueRange Range
...... valueRatio Ratio
...... valueRatioRange RatioRange
...... valueReference Reference(Any)
...... valueSampledData SampledData
...... valueSignature Signature
...... valueTiming Timing
...... valueContactDetail ContactDetail
...... valueContributor Contributor
...... valueDataRequirement DataRequirement
...... valueExpression Expression
...... valueParameterDefinition ParameterDefinition
...... valueRelatedArtifact RelatedArtifact
...... valueTriggerDefinition TriggerDefinition
...... valueUsageContext UsageContext
...... valueDosage Dosage
...... value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId S 1..1 string Unique id for item in questionnaire
.... text S 0..1 string Primary text for the item
.... type S 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.
.... enableWhen ?!C 0..* BackboneElement Only allow data when
Constraints: que-7
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... question 1..1 string Question that determines whether item is enabled
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
..... answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... answerBoolean boolean
...... answerDecimal decimal
...... answerInteger integer
...... answerDate date
...... answerDateTime dateTime
...... answerTime time
...... answerString string
...... answerCoding Coding
...... answerQuantity Quantity
...... answerReference Reference(Resource)
.... 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.
.... required C 0..1 boolean If true, at least one answer is expected at runtime
.... answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
.... answerOption C 0..* BackboneElement Permitted answer
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueInteger integer
...... valueDate date
...... valueTime time
...... valueString string
...... valueCoding Coding
...... valueReference Reference(Resource)
.... initial C 0..* BackboneElement Initial value(s) when item is first rendered
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueBoolean boolean
...... valueDecimal decimal
...... valueInteger integer
...... valueDate date
...... valueDateTime dateTime
...... valueTime time
...... valueString string
...... valueUri uri
...... valueAttachment Attachment
...... valueCoding Coding
...... valueQuantity Quantity
...... valueReference Reference(Resource)
.... 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 Value Set 📦5.2.0 FHIR Extensions Pack v5.2
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
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()
hie-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())
hie-q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
hie-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())
hie-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: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: hie-q-has-items
... url S 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
... identifier 1..* Identifier Additional identifier for the questionnaire
.... use 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
.... system 1..1 uri The namespace for the identifier value
.... value S 1..1 string The value that is unique
.... assigner S 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
... name S 0..1 string Name for this questionnaire (computer friendly)
... status S 1..1 code draft | active | retired | unknown
... date S 1..1 dateTime Date last changed
... description S 1..1 markdown Natural language description of the questionnaire
... item SC 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: hie-q-unique-linkid, hie-q-group-no-answers, hie-q-leaf-answerable
.... extension 0..* Extension UI hints and custom constraints
..... extension 0..0 Extension
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
..... 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
...... value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
.... linkId S 1..1 string Unique id for item in questionnaire
.... text S 0..1 string Primary text for the item
.... type S 1..1 code group | display | boolean | decimal | integer | date | dateTime +
.... enableWhen
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
.... enableBehavior 0..1 code any or all
.... required 0..1 boolean If true, at least one answer is expected at runtime
.... 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 Value Set 📦5.2.0 FHIR Extensions Pack v5.2
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
hie-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())
hie-q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
hie-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())
hie-q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, hie-q-has-items
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): IETF language tag
Additional BindingsPurpose
AllLanguages Max Binding
... 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
... contained 0..* Resource Contained, inline Resources
Constraints: dom-r4b
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url SΣ 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
... identifier Σ 1..* Identifier Additional identifier for the questionnaire
.... id 0..1 id Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type Σ 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
.... system Σ 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value SΣ 1..1 string The value that is unique
Example General: 123456
.... period Σ 0..1 Period Time period when id is/was valid for use
.... assigner SΣ 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
... version Σ 0..1 string Business version of the questionnaire
... name SΣ 0..1 string Name for this questionnaire (computer friendly)
... title SΣ 1..1 string Name for this questionnaire (human friendly)
... derivedFrom 0..* canonical(Questionnaire) Instantiates protocol or definition
... status ?!SΣ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
... experimental Σ 0..1 boolean For testing purposes, not real usage
... subjectType Σ 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.
... date SΣ 1..1 dateTime Date last changed
... publisher Σ 0..1 string Name of the publisher (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher
... description S 1..1 markdown Natural language description of the questionnaire
... useContext Σ 0..* UsageContext The context that the content is intended to support
... jurisdiction Σ 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.
... purpose 0..1 markdown Why this questionnaire is defined
... copyright 0..1 markdown Use and/or publishing restrictions
... approvalDate 0..1 date When the questionnaire was approved by publisher
... lastReviewDate 0..1 date When the questionnaire was last reviewed
... effectivePeriod Σ 0..1 Period When the questionnaire is expected to be used
... code Σ 0..* Coding Concept that represents the overall questionnaire
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
... item SC 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, hie-q-unique-linkid, hie-q-group-no-answers, hie-q-leaf-answerable
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension UI hints and custom constraints
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
..... Slices for value[x] 0..1 Value of extension
Slice: Unordered, Open by type:$this
...... valueBase64Binary base64Binary
...... valueBoolean boolean
...... valueCanonical canonical(Any)
...... valueCode code
...... valueDate date
...... valueDateTime dateTime
...... valueDecimal decimal
...... valueId id
...... valueInstant instant
...... valueInteger integer
...... valueMarkdown markdown
...... valueOid oid
...... valuePositiveInt positiveInt
...... valueString string
...... valueTime time
...... valueUnsignedInt unsignedInt
...... valueUri uri
...... valueUrl url
...... valueUuid uuid
...... valueAddress Address
...... valueAge Age
...... valueAnnotation Annotation
...... valueAttachment Attachment
...... valueCodeableConcept CodeableConcept
...... valueCodeableReference CodeableReference
...... valueCoding Coding
...... valueContactPoint ContactPoint
...... valueCount Count
...... valueDistance Distance
...... valueDuration Duration
...... valueHumanName HumanName
...... valueIdentifier Identifier
...... valueMoney Money
...... valuePeriod Period
...... valueQuantity Quantity
...... valueRange Range
...... valueRatio Ratio
...... valueRatioRange RatioRange
...... valueReference Reference(Any)
...... valueSampledData SampledData
...... valueSignature Signature
...... valueTiming Timing
...... valueContactDetail ContactDetail
...... valueContributor Contributor
...... valueDataRequirement DataRequirement
...... valueExpression Expression
...... valueParameterDefinition ParameterDefinition
...... valueRelatedArtifact RelatedArtifact
...... valueTriggerDefinition TriggerDefinition
...... valueUsageContext UsageContext
...... valueDosage Dosage
...... value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId S 1..1 string Unique id for item in questionnaire
.... definition 0..1 uri ElementDefinition - details for the item
.... code C 0..* Coding Corresponding concept for this item in a terminology
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
.... prefix 0..1 string E.g. "1(a)", "2.5.3"
.... text S 0..1 string Primary text for the item
.... type S 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.
.... enableWhen ?!C 0..* BackboneElement Only allow data when
Constraints: que-7
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... question 1..1 string Question that determines whether item is enabled
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
..... answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... answerBoolean boolean
...... answerDecimal decimal
...... answerInteger integer
...... answerDate date
...... answerDateTime dateTime
...... answerTime time
...... answerString string
...... answerCoding Coding
...... answerQuantity Quantity
...... answerReference Reference(Resource)
.... 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.
.... required C 0..1 boolean If true, at least one answer is expected at runtime
.... repeats C 0..1 boolean Whether the item may repeat
.... readOnly C 0..1 boolean Don't allow human editing
.... maxLength C 0..1 integer No more than this many characters
.... answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
.... answerOption C 0..* BackboneElement Permitted answer
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueInteger integer
...... valueDate date
...... valueTime time
...... valueString string
...... valueCoding Coding
...... valueReference Reference(Resource)
..... initialSelected 0..1 boolean Whether option is selected by default
.... initial C 0..* BackboneElement Initial value(s) when item is first rendered
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueBoolean boolean
...... valueDecimal decimal
...... valueInteger integer
...... valueDate date
...... valueDateTime dateTime
...... valueTime time
...... valueString string
...... valueUri uri
...... valueAttachment Attachment
...... valueCoding Coding
...... valueQuantity Quantity
...... valueReference Reference(Resource)
.... 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 Value Set 📦5.2.0 FHIR Extensions Pack v5.2
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
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()
hie-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())
hie-q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
hie-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())
hie-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: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, hie-q-has-items
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url SΣ 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
.... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type Σ 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
.... system Σ 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value SΣ 1..1 string The value that is unique
Example General: 123456
.... assigner SΣ 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
... name SΣ 0..1 string Name for this questionnaire (computer friendly)
... title SΣ 1..1 string Name for this questionnaire (human friendly)
... status ?!SΣ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
... date SΣ 1..1 dateTime Date last changed
... description S 1..1 markdown Natural language description of the questionnaire
... item SC 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, hie-q-unique-linkid, hie-q-group-no-answers, hie-q-leaf-answerable
.... extension 0..* Extension UI hints and custom constraints
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
..... Slices for value[x] 0..1 Value of extension
Slice: Unordered, Open by type:$this
...... valueBase64Binary base64Binary
...... valueBoolean boolean
...... valueCanonical canonical(Any)
...... valueCode code
...... valueDate date
...... valueDateTime dateTime
...... valueDecimal decimal
...... valueId id
...... valueInstant instant
...... valueInteger integer
...... valueMarkdown markdown
...... valueOid oid
...... valuePositiveInt positiveInt
...... valueString string
...... valueTime time
...... valueUnsignedInt unsignedInt
...... valueUri uri
...... valueUrl url
...... valueUuid uuid
...... valueAddress Address
...... valueAge Age
...... valueAnnotation Annotation
...... valueAttachment Attachment
...... valueCodeableConcept CodeableConcept
...... valueCodeableReference CodeableReference
...... valueCoding Coding
...... valueContactPoint ContactPoint
...... valueCount Count
...... valueDistance Distance
...... valueDuration Duration
...... valueHumanName HumanName
...... valueIdentifier Identifier
...... valueMoney Money
...... valuePeriod Period
...... valueQuantity Quantity
...... valueRange Range
...... valueRatio Ratio
...... valueRatioRange RatioRange
...... valueReference Reference(Any)
...... valueSampledData SampledData
...... valueSignature Signature
...... valueTiming Timing
...... valueContactDetail ContactDetail
...... valueContributor Contributor
...... valueDataRequirement DataRequirement
...... valueExpression Expression
...... valueParameterDefinition ParameterDefinition
...... valueRelatedArtifact RelatedArtifact
...... valueTriggerDefinition TriggerDefinition
...... valueUsageContext UsageContext
...... valueDosage Dosage
...... value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId S 1..1 string Unique id for item in questionnaire
.... text S 0..1 string Primary text for the item
.... type S 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.
.... enableWhen ?!C 0..* BackboneElement Only allow data when
Constraints: que-7
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... question 1..1 string Question that determines whether item is enabled
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
..... answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... answerBoolean boolean
...... answerDecimal decimal
...... answerInteger integer
...... answerDate date
...... answerDateTime dateTime
...... answerTime time
...... answerString string
...... answerCoding Coding
...... answerQuantity Quantity
...... answerReference Reference(Resource)
.... 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.
.... required C 0..1 boolean If true, at least one answer is expected at runtime
.... answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
.... answerOption C 0..* BackboneElement Permitted answer
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueInteger integer
...... valueDate date
...... valueTime time
...... valueString string
...... valueCoding Coding
...... valueReference Reference(Resource)
.... initial C 0..* BackboneElement Initial value(s) when item is first rendered
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueBoolean boolean
...... valueDecimal decimal
...... valueInteger integer
...... valueDate date
...... valueDateTime dateTime
...... valueTime time
...... valueString string
...... valueUri uri
...... valueAttachment Attachment
...... valueCoding Coding
...... valueQuantity Quantity
...... valueReference Reference(Resource)
.... 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 Value Set 📦5.2.0 FHIR Extensions Pack v5.2
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
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()
hie-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())
hie-q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
hie-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())
hie-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: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: hie-q-has-items
... url S 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
... identifier 1..* Identifier Additional identifier for the questionnaire
.... use 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
.... system 1..1 uri The namespace for the identifier value
.... value S 1..1 string The value that is unique
.... assigner S 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
... name S 0..1 string Name for this questionnaire (computer friendly)
... status S 1..1 code draft | active | retired | unknown
... date S 1..1 dateTime Date last changed
... description S 1..1 markdown Natural language description of the questionnaire
... item SC 1..* BackboneElement Questions and sections within the Questionnaire
Constraints: hie-q-unique-linkid, hie-q-group-no-answers, hie-q-leaf-answerable
.... extension 0..* Extension UI hints and custom constraints
..... extension 0..0 Extension
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
..... 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
...... value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
.... linkId S 1..1 string Unique id for item in questionnaire
.... text S 0..1 string Primary text for the item
.... type S 1..1 code group | display | boolean | decimal | integer | date | dateTime +
.... enableWhen
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
.... enableBehavior 0..1 code any or all
.... required 0..1 boolean If true, at least one answer is expected at runtime
.... 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 Value Set 📦5.2.0 FHIR Extensions Pack v5.2
Questionnaire.item.enableWhen.​operator Base required QuestionnaireItemOperator 📦4.3.0 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
hie-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())
hie-q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
hie-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())
hie-q-unique-linkid error Questionnaire.item linkId values must be unique within the questionnaire item.select(linkId).isDistinct()

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Questionnaire C 0..* Questionnaire A structured set of questions
Constraints: que-0, que-2, hie-q-has-items
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): IETF language tag
Additional BindingsPurpose
AllLanguages Max Binding
... 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
... contained 0..* Resource Contained, inline Resources
Constraints: dom-r4b
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... url SΣ 1..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique)
... identifier Σ 1..* Identifier Additional identifier for the questionnaire
.... id 0..1 id Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ 1..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type Σ 1..1 HIECodeableConcept Description of identifier
Binding: Identifier Type Codes (extensible)
.... system Σ 1..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
.... value SΣ 1..1 string The value that is unique
Example General: 123456
.... period Σ 0..1 Period Time period when id is/was valid for use
.... assigner SΣ 0..1 HIEReference(HIE Organization) Organization that issued id (may be just text)
... version Σ 0..1 string Business version of the questionnaire
... name SΣ 0..1 string Name for this questionnaire (computer friendly)
... title SΣ 1..1 string Name for this questionnaire (human friendly)
... derivedFrom 0..* canonical(Questionnaire) Instantiates protocol or definition
... status ?!SΣ 1..1 code draft | active | retired | unknown
Binding: PublicationStatus (required): The lifecycle status of an artifact.
... experimental Σ 0..1 boolean For testing purposes, not real usage
... subjectType Σ 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.
... date SΣ 1..1 dateTime Date last changed
... publisher Σ 0..1 string Name of the publisher (organization or individual)
... contact Σ 0..* ContactDetail Contact details for the publisher
... description S 1..1 markdown Natural language description of the questionnaire
... useContext Σ 0..* UsageContext The context that the content is intended to support
... jurisdiction Σ 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable)
Binding: Jurisdiction ValueSet (extensible): Countries and regions within which this artifact is targeted for use.
... purpose 0..1 markdown Why this questionnaire is defined
... copyright 0..1 markdown Use and/or publishing restrictions
... approvalDate 0..1 date When the questionnaire was approved by publisher
... lastReviewDate 0..1 date When the questionnaire was last reviewed
... effectivePeriod Σ 0..1 Period When the questionnaire is expected to be used
... code Σ 0..* Coding Concept that represents the overall questionnaire
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
... item SC 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, hie-q-unique-linkid, hie-q-group-no-answers, hie-q-leaf-answerable
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension UI hints and custom constraints
..... id 0..1 id Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"
..... Slices for value[x] 0..1 Value of extension
Slice: Unordered, Open by type:$this
...... valueBase64Binary base64Binary
...... valueBoolean boolean
...... valueCanonical canonical(Any)
...... valueCode code
...... valueDate date
...... valueDateTime dateTime
...... valueDecimal decimal
...... valueId id
...... valueInstant instant
...... valueInteger integer
...... valueMarkdown markdown
...... valueOid oid
...... valuePositiveInt positiveInt
...... valueString string
...... valueTime time
...... valueUnsignedInt unsignedInt
...... valueUri uri
...... valueUrl url
...... valueUuid uuid
...... valueAddress Address
...... valueAge Age
...... valueAnnotation Annotation
...... valueAttachment Attachment
...... valueCodeableConcept CodeableConcept
...... valueCodeableReference CodeableReference
...... valueCoding Coding
...... valueContactPoint ContactPoint
...... valueCount Count
...... valueDistance Distance
...... valueDuration Duration
...... valueHumanName HumanName
...... valueIdentifier Identifier
...... valueMoney Money
...... valuePeriod Period
...... valueQuantity Quantity
...... valueRange Range
...... valueRatio Ratio
...... valueRatioRange RatioRange
...... valueReference Reference(Any)
...... valueSampledData SampledData
...... valueSignature Signature
...... valueTiming Timing
...... valueContactDetail ContactDetail
...... valueContributor Contributor
...... valueDataRequirement DataRequirement
...... valueExpression Expression
...... valueParameterDefinition ParameterDefinition
...... valueRelatedArtifact RelatedArtifact
...... valueTriggerDefinition TriggerDefinition
...... valueUsageContext UsageContext
...... valueDosage Dosage
...... value[x]:valueCodeableConcept 0..1 CodeableConcept Value of extension
Binding: QuestionnaireItemUIControlCodes (extensible)
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId S 1..1 string Unique id for item in questionnaire
.... definition 0..1 uri ElementDefinition - details for the item
.... code C 0..* Coding Corresponding concept for this item in a terminology
Binding: QuestionnaireQuestionCodes (example): Codes for questionnaires, groups and individual questions.
.... prefix 0..1 string E.g. "1(a)", "2.5.3"
.... text S 0..1 string Primary text for the item
.... type S 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.
.... enableWhen ?!C 0..* BackboneElement Only allow data when
Constraints: que-7
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... question 1..1 string Question that determines whether item is enabled
..... operator 1..1 code exists | = | != | > | < | >= | <=
Binding: QuestionnaireItemOperator (required)
..... answer[x] C 1..1 Value for question comparison based on operator
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... answerBoolean boolean
...... answerDecimal decimal
...... answerInteger integer
...... answerDate date
...... answerDateTime dateTime
...... answerTime time
...... answerString string
...... answerCoding Coding
...... answerQuantity Quantity
...... answerReference Reference(Resource)
.... 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.
.... required C 0..1 boolean If true, at least one answer is expected at runtime
.... repeats C 0..1 boolean Whether the item may repeat
.... readOnly C 0..1 boolean Don't allow human editing
.... maxLength C 0..1 integer No more than this many characters
.... answerValueSet C 0..1 canonical(ValueSet) Valueset containing permitted answers
.... answerOption C 0..* BackboneElement Permitted answer
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Answer value
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueInteger integer
...... valueDate date
...... valueTime time
...... valueString string
...... valueCoding Coding
...... valueReference Reference(Resource)
..... initialSelected 0..1 boolean Whether option is selected by default
.... initial C 0..* BackboneElement Initial value(s) when item is first rendered
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 1..1 Actual value for initializing the question
Binding: QuestionnaireAnswerCodes (example): Allowed values to answer questions.
...... valueBoolean boolean
...... valueDecimal decimal
...... valueInteger integer
...... valueDate date
...... valueDateTime dateTime
...... valueTime time
...... valueString string
...... valueUri uri
...... valueAttachment Attachment
...... valueCoding Coding
...... valueQuantity Quantity
...... valueReference Reference(Resource)
.... 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 Value Set 📦5.2.0 FHIR Extensions Pack v5.2
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
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()
hie-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())
hie-q-has-items error Questionnaire Questionnaire must have at least one root item item.exists()
hie-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())
hie-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