Release 4 Snapshot 3: Connectathon 32 Base
This resource is referenced by CarePlan , Communication , Contract , FamilyMemberHistory , PlanDefinition , Procedure , itself and QuestionnaireResponse 2.37.4 Resource Content Structure UML XML
Questionnaire.item.enableWhen.answer[x] Min Cardinality changed from 0 to 1 Remove Types uri, Attachment Questionnaire.item.enableBehavior Added Element Questionnaire.item.required Default Value "false" removed Questionnaire.item.repeats Default Value "false" removed Questionnaire.item.answerValueSet Renamed from options to answerValueSet Type changed from Reference(ValueSet) to canonical(ValueSet) Questionnaire.item.answerOption Renamed from option to answerOption Questionnaire.item.answerOption.value[x] Moved from Questionnaire.item.option to Questionnaire.item.answerOption Add Type Reference(Resource) Questionnaire.item.answerOption.initialSelected Added Element Questionnaire.item.initial Renamed from initial[x] to initial Max Cardinality changed from 1 to * Remove Types boolean, decimal, integer, date, dateTime, time, string, uri, Attachment, Coding, Quantity, Reference(Resource) Questionnaire.item.initial.value[x] Added Mandatory Element Questionnaire.item.enableWhen.hasAnswer deleted See the Full Difference for further information This analysis is available as XML or JSON . See R3 <--> R4 Conversion Maps (status = 6 tests that all execute ok. All tests pass round-trip testing and 5 r3 resources are invalid (0 errors). )
Structure Name Flags Card. Type Description & Constraints Questionnaire I TU DomainResource A structured set of questions + Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation + Rule: The link ids

This is Snapshot #3 for groups and questions must be unique within the questionnaire Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension FHIR R5 , modifierExtension url Σ 0..1 uri Canonical identifier for this questionnaire, represented as a URI (globally unique) identifier Σ 0..* Identifier Additional identifier for the questionnaire version Σ 0..1 string Business version of the questionnaire name Σ I 0..1 string Name for this questionnaire (computer friendly) title Σ 0..1 string Name for this questionnaire (human friendly) derivedFrom 0..* canonical ( Questionnaire ) Instantiates protocol or definition status ?! Σ 1..1 code draft | active | retired | unknown PublicationStatus ( Required ) experimental Σ 0..1 boolean For testing purposes, not real usage subjectType Σ 0..* code Resource that can be subject of QuestionnaireResponse ResourceType ( Required ) date Σ 0..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 0..1 markdown Natural language description of the questionnaire useContext Σ 0..* UsageContext The context that the content is intended released to support jurisdiction Σ 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable) Jurisdiction ( Extensible ) 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 Questionnaire Question Codes ( Example ) item I 0..* BackboneElement Questions and sections within the Questionnaire + Rule: Group items must have nested items, display items cannot have nested items + Rule: Display items cannot have a "code" asserted + Rule: A question cannot have both answerOption and answerValueSet + Rule: Only 'choice' and 'open-choice' items can have answerValueSet + Rule: Required and repeat aren't permitted for display items + Rule: Initial values can't be specified for groups or display items + Rule: Read-only can't be specified for "display" items + Rule: Maximum length can only be declared for simple question types + Rule: If one or more answerOption is present, initial[x] must be missing + Rule: If there are more than one enableWhen, enableBehavior must be specified + Rule: Can only have multiple initial values for repeating items linkId 1..1 string Unique id for item in questionnaire definition 0..1 uri ElementDefinition - details for the item code I 0..* Coding Corresponding concept for this item in a terminology Questionnaire Question Codes ( Example ) prefix 0..1 string E.g. "1(a)", "2.5.3" text 0..1 string Primary text for the item type 1..1 code group | display | boolean | decimal | integer | date | dateTime + QuestionnaireItemType ( Required ) enableWhen ?! I 0..* BackboneElement Only allow data when + Rule: If the operator is 'exists', the value must be a boolean question 1..1 string Question that determines whether item is enabled operator 1..1 code exists | = | != | > | < | >= | <= QuestionnaireItemOperator ( Required ) answer[x] I 1..1 Value for question comparison based on operator Questionnaire Answer Codes ( Example ) answerBoolean boolean answerDecimal decimal answerInteger integer answerDate date answerDateTime dateTime answerTime time answerString string answerCoding Coding answerQuantity Quantity answerReference Reference ( Any ) enableBehavior I 0..1 code all | any EnableWhenBehavior ( Required ) required I 0..1 boolean Whether the item must be included in data results repeats I 0..1 boolean Whether the item may repeat readOnly I 0..1 boolean Don't allow human editing maxLength I 0..1 integer No more than this many characters answerValueSet I 0..1 canonical ( ValueSet ) Valueset containing permitted answers answerOption I 0..* BackboneElement Permitted answer value[x] 1..1 Answer value Questionnaire Answer Codes ( Example ) valueInteger integer valueDate date valueTime time valueString string valueCoding Coding valueReference Reference ( Any ) initialSelected 0..1 boolean Whether option is selected by default initial I 0..* BackboneElement Initial value(s) when item is first rendered value[x] 1..1 Actual value for initializing the question Questionnaire Answer Codes ( Example ) valueBoolean boolean valueDecimal decimal valueInteger integer valueDate date valueDateTime dateTime valueTime time valueString string valueUri uri valueAttachment Attachment valueCoding Coding valueQuantity Quantity valueReference Reference ( Any ) item I 0..* see item Nested questionnaire items Documentation for this format UML Diagram ( Legend ) Questionnaire ( DomainResource ) An absolute URI that is used to identify this questionnaire when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this questionnaire is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the questionnaire is stored on different servers url : uri [0..1] A formal identifier that is used to identify this questionnaire when it is represented in other formats, or referenced in a specification, model, design or an instance identifier : Identifier [0..*] The identifier that is used to identify this version of the questionnaire when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the questionnaire author and is not expected to be globally unique. Connectathon 32 . For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence version : string [0..1] A natural language name identifying the questionnaire. This name should be usable as an identifier for the module by machine processing applications such as code generation name : string [0..1] A short, descriptive, user-friendly title for the questionnaire title : string [0..1] The URL of a Questionnaire that this Questionnaire is based on derivedFrom : canonical [0..*] « Questionnaire » The status of this questionnaire. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements) status : code [1..1] « The lifecycle status of an artifact. (Strength=Required) PublicationStatus ! » A Boolean value to indicate that this questionnaire is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage experimental : boolean [0..1] The types of subjects that can be the subject of responses created for the questionnaire subjectType : code [0..*] « One of the resource types defined as part of this version of FHIR. (Strength=Required) ResourceType ! » The date (and optionally time) when the questionnaire was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the questionnaire changes date : dateTime [0..1] The name of the organization or individual that published the questionnaire publisher : string [0..1] Contact details to assist a user in finding and communicating with the publisher contact : ContactDetail [0..*] A free text natural language description of the questionnaire from a consumer's perspective description : markdown [0..1] The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate questionnaire instances useContext : UsageContext [0..*] A legal or geographic region in which the questionnaire is intended to be used jurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible) Jurisdiction ValueSet + » Explanation of why this questionnaire is needed and why it has been designed as it has purpose : markdown [0..1] A copyright statement relating to the questionnaire and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the questionnaire copyright : markdown [0..1] The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage approvalDate : date [0..1] The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date lastReviewDate : date [0..1] The period during which the questionnaire content was or is planned to be in active use effectivePeriod : Period [0..1] An identifier for this question or group of questions in a particular terminology such as LOINC code : Coding [0..*] « Codes for questionnaires, groups and individual questions. (Strength=Example) QuestionnaireQuestionCodes ?? » Item An identifier that is unique within the Questionnaire allowing linkage to the equivalent item in a QuestionnaireResponse resource linkId : string [1..1] This element is a URI that refers to an [[[ElementDefinition]]] that provides information about this item, including information that might otherwise be included in the instance of the Questionnaire resource. A detailed description of the construction of the URI is shown in Comments, below. If this element is present then the following element values MAY be derived from the Element Definition if the corresponding elements of this Questionnaire resource instance have no value: * code (ElementDefinition.code) * type (ElementDefinition.type) * required (ElementDefinition.min) * repeats (ElementDefinition.max) * maxLength (ElementDefinition.maxLength) * answerValueSet (ElementDefinition.binding) * options (ElementDefinition.binding) definition : uri [0..1] A terminology code that corresponds to this group or question (e.g. a code from LOINC, which defines many questions and answers) code : Coding [0..*] « Codes for questionnaires, groups and individual questions. (Strength=Example) QuestionnaireQuestionCodes ?? » A short label for a particular group, question or set of display text within the questionnaire used for reference by the individual completing the questionnaire prefix : string [0..1] The name of a section, the text of a question or text content for a display item text : string [0..1] The type of questionnaire item this is - whether text for display, a grouping of other items or a particular type of data to be captured (string, integer, coded choice, etc.) type : code [1..1] « Distinguishes groups from questions and display text and indicates data type for questions. (Strength=Required) QuestionnaireItemType ! » Controls how multiple enableWhen values are interpreted - whether all or any must be true enableBehavior : code [0..1] « Controls how multiple enableWhen values are interpreted - whether all or any must be true. (Strength=Required) EnableWhenBehavior ! » An indication, if true, that the item must be present in a "completed" QuestionnaireResponse. If false, the item may be skipped when answering the questionnaire required : boolean [0..1] An indication, if true, that the item may occur multiple times in the response, collecting multiple answers for questions or multiple sets of answers for groups repeats : boolean [0..1] An indication, when true, that the value cannot be changed by a human respondent to the Questionnaire readOnly : boolean [0..1] The maximum number of characters that are permitted in the answer to be considered a "valid" QuestionnaireResponse maxLength : integer [0..1] A reference to a value set containing a list of codes representing permitted answers for a "choice" or "open-choice" question answerValueSet : canonical [0..1] « ValueSet » EnableWhen The linkId for the question whose answer (or lack of answer) governs whether this item is enabled question : string [1..1] Specifies the criteria by which the question is enabled operator : code [1..1] « The criteria by which a question is enabled. (Strength=Required) QuestionnaireItemOperator ! » A value that the referenced question is tested using the specified operator in order for the item to be enabled answer[x] : Type [1..1] « boolean | decimal | integer | date | dateTime | time | string | Coding | Quantity | Reference ( Any ); Allowed values to answer questions. (Strength=Example) QuestionnaireAnswerCodes ?? » AnswerOption A potential answer that's allowed as the answer to this question value[x] : Type [1..1] « integer | date | time | string | Coding | Reference ( Any ); Allowed values to answer questions. (Strength=Example) QuestionnaireAnswerCodes ?? » Indicates whether the answer value is selected when the full list of possible answers is initially shown initialSelected : boolean [0..1] Initial The actual value to for an initial answer value[x] : Type [1..1] « boolean | decimal | integer | date | dateTime | time | string | uri | Attachment | Coding | Quantity | Reference ( Any ); Allowed values to answer questions. (Strength=Example) QuestionnaireAnswerCodes ?? » A constraint indicating that this item should only be enabled (displayed/allow answers to be captured) when the specified condition is true (this element modifies the meaning of other elements) enableWhen [0..*] One of the permitted answers for a "choice" or "open-choice" question answerOption [0..*] One or more values that should be pre-populated in the answer when initially rendering the questionnaire for user input initial [0..*] Text, questions and other groups to be nested beneath a question or group item [0..*] A particular question, question grouping or display text that is part of the questionnaire item [0..*] XML Template < <!-- from --> <!-- from --> < <</identifier> < < < <</derivedFrom> < < < < < <</contact> < <</useContext> <</jurisdiction> < < < < <</effectivePeriod> <</code> < < <<a href="questionnaire-definitions.html#Questionnaire.item.definition" title="This element is a URI that refers to an [[[ElementDefinition]]] that provides information about this item, including information that might otherwise be included in the instance of the Questionnaire resource. A detailed description of the construction of the URI is shown in Comments, below. If this element is present then the following element values MAY be derived from the Element Definition if the corresponding elements of this Questionnaire resource instance have no value: * code (ElementDefinition.code) * type (ElementDefinition.type) * required (ElementDefinition.min) * repeats (ElementDefinition.max) * maxLength (ElementDefinition.maxLength) * answerValueSet (ElementDefinition.binding) * options (ElementDefinition.binding)." class="dict"> <</code> < < < < < < <| </answer[x]> </enableWhen> < < < < < <</answerValueSet> < <</value[x]> < </answerOption> < <| </value[x]> </initial> <</item> </item> </Questionnaire> JSON Template { "resourceType" : "", // from // from " " " " " " " " " " " " " " " " " " " " " " " "<a href="questionnaire-definitions.html#Questionnaire.item.definition" title="This element is a URI that refers to an [[[ElementDefinition]]] that provides information about this item, including information that might otherwise be included in the instance of the Questionnaire resource. A detailed description of the construction of the URI is shown in Comments, below. If this element is present then the following element values MAY be derived from the Element Definition if the corresponding elements of this Questionnaire resource instance have no value: * code (ElementDefinition.code) * type (ElementDefinition.type) * required (ElementDefinition.min) * repeats (ElementDefinition.max) * maxLength (ElementDefinition.maxLength) * answerValueSet (ElementDefinition.binding) * options (ElementDefinition.binding)." class="dict">definition " " " " " " " "> "> "> ">" ">" ">" ">" " } " } " } }], " " " " " " " ">, ">", ">", ">", " }, " }, " }], " "> "> "> ">" ">" ">" ">" ">" " } " } " } " } }], " }] } Turtle Template @prefix fhir: <http://hl7.org/fhir/> . [ a fhir:; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from # from fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir: fhir:<a href="questionnaire-definitions.html#Questionnaire.item.definition" title="This element is a URI that refers to an [[[ElementDefinition]]] that provides information about this item, including information that might otherwise be included in the instance of the Questionnaire resource. A detailed description of the construction of the URI is shown in Comments, below. If this element is present then the following element values MAY be derived from the Element Definition if the corresponding elements of this Questionnaire resource instance have no value: * code (ElementDefinition.code) * type (ElementDefinition.type) * required (ElementDefinition.min) * repeats (ElementDefinition.max) * maxLength (ElementDefinition.maxLength) * answerValueSet (ElementDefinition.binding) * options (ElementDefinition.binding)." class="dict">Questionnaire.item.definition fhir: fhir: fhir: fhir: fhir: fhir: fhir: # . One of these 10 fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir:) ] ], ...; fhir: fhir: fhir: fhir: fhir: fhir: fhir: # . One of these 6 fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir:) ] fhir: ], ...; fhir: # . One of these 12 fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir: ] fhir:) ] ], ...; fhir: ], ...; ] Changes since Release 3 Questionnaire Questionnaire.derivedFrom Added Element Questionnaire.status Change value set from http://hl7.org/fhir/ValueSet/publication-status to http://hl7.org/fhir/ValueSet/publication-status|4.0.1 Questionnaire.experimental No longer marked as Modifier Questionnaire.subjectType Change value set from http://hl7.org/fhir/ValueSet/resource-types to http://hl7.org/fhir/ValueSet/resource-types|4.0.1 Questionnaire.item.type Change value set from http://hl7.org/fhir/ValueSet/item-type to http://hl7.org/fhir/ValueSet/item-type|4.0.1 Questionnaire.item.enableWhen.operator Added Mandatory Element Questionnaire.item.enableWhen.answer[x] Min Cardinality changed from 0 to 1 Remove Types uri, Attachment Questionnaire.item.enableBehavior Added Element Questionnaire.item.required Default Value "false" removed Questionnaire.item.repeats Default Value "false" removed Questionnaire.item.answerValueSet Renamed from options to answerValueSet Type changed from Reference(ValueSet) to canonical(ValueSet) Questionnaire.item.answerOption Renamed from option to answerOption Questionnaire.item.answerOption.value[x] Moved from Questionnaire.item.option to Questionnaire.item.answerOption Add Type Reference(Resource) Questionnaire.item.answerOption.initialSelected Added Element Questionnaire.item.initial Renamed from initial[x] to initial Max Cardinality changed from 1 to * Remove Types boolean, decimal, integer, date, dateTime, time, string, uri, Attachment, Coding, Quantity, Reference(Resource) Questionnaire.item.initial.value[x] Added Mandatory Element Questionnaire.item.enableWhen.hasAnswer deleted See the Full Difference for further information This analysis is available as XML or JSON . See R3 <--> R4 Conversion Maps (status = 6 tests that all execute ok. All tests pass round-trip testing and 5 r3 resources are invalid (0 errors). )   See the Profiles & Extensions and the alternate definitions: Master Definition XML + JSON , XML Schema / Schematron + JSON Schema , ShEx (for Turtle ) + versions, see the extensions & the dependency analysis 2.37.4.1 Terminology Bindings Path Definition Type Reference Questionnaire.status The lifecycle status of an artifact. Required PublicationStatus Questionnaire.subjectType One of the resource types defined as part of this version Directory of FHIR. Required Resource Types Questionnaire.jurisdiction Countries and regions within which this artifact is targeted for use. Extensible Jurisdiction ValueSet Questionnaire.code Questionnaire.item.code Codes for questionnaires, groups and individual questions. Example QuestionnaireQuestionCodes Questionnaire.item.type Distinguishes groups from questions and display text and indicates data type for questions. Required QuestionnaireItemType Questionnaire.item.enableWhen.operator The criteria by which a question is enabled. Required QuestionnaireItemOperator Questionnaire.item.enableWhen.answer[x] Allowed values to answer questions. Example QuestionnaireAnswerCodes Questionnaire.item.enableBehavior Controls how multiple enableWhen values are interpreted - whether all or any must be true. Required EnableWhenBehavior Questionnaire.item.answerOption.value[x] Allowed values to answer questions. Example QuestionnaireAnswerCodes Questionnaire.item.initial.value[x] Allowed values to answer questions. Example QuestionnaireAnswerCodes published versions .

2.37.4.2 Constraints id Level Location Description Expression que-0 Warning (base) Name should be usable as an identifier for the module by machine processing applications such as code generation name.matches('[A-Z]([A-Za-z0-9_]){0,254}')

Example StructureDefinition/auditevent-Lifecycle (XML)

Questionnaire.item
que-1 Rule Security Questionnaire.item Work Group items must have nested items, display items cannot have nested items (type='group' implies item.empty().not()) and (type.trace('type')='display' implies item.trace('item').empty()) que-2 Rule (base) The link ids for groups and questions must be unique within the questionnaire descendants().linkId.isDistinct() que-3 Rule Questionnaire.item Display items cannot have a "code" asserted type!='display' or code.empty() que-4 Rule Questionnaire.item A question cannot have both answerOption and answerValueSet answerOption.empty() or answerValueSet.empty() que-5 Rule 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 Rule Questionnaire.item Required and repeat aren't permitted for display items type!='display' or (required.empty() and repeats.empty()) que-7 Rule Questionnaire.item.enableWhen If the operator is 'exists', the value must be a boolean operator = 'exists' implies (answer is Boolean) que-8 Rule Questionnaire.item Initial values can't be specified for groups or display items (type!='group' and type!='display') or initial.empty() que-9 Rule Questionnaire.item Read-only can't be specified for "display" items type!='display' or readOnly.empty() que-10 Rule 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 Rule Questionnaire.item If one or more answerOption is present, initial[x] must be missing answerOption.empty() or initial.empty() que-12 Rule Questionnaire.item If there are more than one enableWhen, enableBehavior must be specified enableWhen.count() > 2 implies enableBehavior.exists() que-13 Rule Maturity Level : N/A Can only have multiple initial values for repeating items Standards Status : Informative repeats=true or initial.count() <= 1
2.37.5 Notes: Questionnaires may be used to represent predefined forms or panels, referenced using items of type "group" Questions may be nested. The Questionnaire resource supports nested items beneath both items of type "group" (which doesn't capture an answer of its own) as well as beneath questions Groups and Questions may have linkIds allowing groups and question answers captured in a QuestionnaireResponse to be associated with their corresponding group or question. Questionnaire allows for flexible naming and structuring of its contents to reflect the flexible and varying nature of forms and questionnaires. It explicitly does not try to standardize or streamline exchange of its contents outside its context of use, although exchanging partners may further constrain its structure and flexibility using profiles to define standardized, reusable forms. Because of the lack of explicit support for Questionnaires in HL7 v3 , CDA

Any information provided in these elements overrides the information from the definition, and some are always required to be populated so that invariants can be enforced, etc. The url refers to an ElementDefinition in StructureDefinition , and always starts with the Raw XML ( canonical URL for the target resource. When referring to a StructureDefinition, a fragment identifier is used to specify the element definition by its id (Element.id). E.g. http://hl7.org/fhir/StructureDefinition/Observation#Observation.value[x]. In the absence of a fragment identifier, the first/root element definition in the target is the matching element definition. Examples: Value of definition Explanation http://hl7.org/fhir/StructureDefinition/Observation#Observation.comment A reference to the standard Observation element comment http://example.org/definitions/xxx A reference to the logical model form "xxx" that represents a data element http://example.org/StructureDefinition/Oedema#Observation.category:XXX A reference to slice XXX on the Observation category element on an Oedema Scale profile http://example.org/StructureDefinition/Oedema|2.0#Observation.category:XXX A reference to slice XXX on the Observation category element on an Oedema Scale profile, specifying version 2.0 The definitions may + also be used to automatically pre-populate answers, or extract data from a corresponding pre-existing QuestionnaireResponse resource. Note that LOINC codes implicitly see XML Format Specification define logical models whose elements can be considered question definitions. NOTE: Even if a standard question definition is provided , information such as the question text, data type and value set SHOULD still be declared for the question. Systems processing the questionnaire might not have access to or support the ability to look up the question definitions from external sources. If the information is not included in-line within the questionnaire, other systems might not be able to render or use the Questionnaire. If an external definition is included along with question information such as question text, data type or value set, it is expected that the content for the question and the referenced definition would be in alignment. However, FHIR does not dictate what degree of alignment is required; e.g. Does the question text need to match exactly? Is it legitimate for a question to constrain the allowed value set of possible answers? These rules will need to be established within implementation environments. )

2.37.5.7 Question types

The codes for the data type for each question are slightly different than the data types allowed in the QuestionnaireResponse resource. Where the names are the same (ignoring case), the "answer" must use the specified type. Where the names are different, the mappings are as follows: AELifecycle

Questionnaire AnswerFormat code QuestionnaireResponse data type text string url uri choice Coding open-choice Coding (if choosing from one of the listed choices) or string (if a different value is provided)
<?xml version="1.0" encoding="UTF-8"?>

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="auditevent-Lifecycle"/> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="sec"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="1"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
    <valueCode value="trial-use"/> 
  </extension> 
  <url value="http://hl7.org/fhir/StructureDefinition/auditevent-Lifecycle"/> 
  <identifier> 
    <system value="urn:ietf:rfc:3986"/> 
    <value value="urn:oid:2.16.840.1.113883.4.642.5.1007"/> 
  </identifier> 
  <version value="5.0.0-snapshot3"/> 
  <name value="AELifecycle"/> 
  <title value="AuditEvent Lifecycle"/> 
  <status value="draft"/> 
  <experimental value="false"/> 
  <date value="2021-10-02T16:55:11+11:00"/> 
  <publisher value="Health Level Seven, Inc. - Security WG"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://www.hl7.org/Special/committees/security/index.cfm"/> 
    </telecom> 
  </contact> 
  <description value="An Lifecycle event associated with this participant object."/> 
  <fhirVersion value="5.0.0"/> 
  <mapping> 
    <identity value="dicom"/> 
    <uri value="http://nema.org/dicom"/> 
    <name value="DICOM Tag Mapping"/> 
  </mapping> 
  <mapping> 
    <identity value="rim"/> 
    <uri value="http://hl7.org/v3"/> 
    <name value="RIM Mapping"/> 
  </mapping> 
  <kind value="complex-type"/> 
  <abstract value="false"/> 
  <context> 
    <type value="element"/> 
    <expression value="AuditEvent.entity"/> 
  </context> 
  <type value="Extension"/> 
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
  <derivation value="constraint"/> 
  <snapshot> 
    <element id="Extension">
      <path value="Extension"/> 
      <short value="Lifecycle"/> 
      <definition value="An Lifecycle event associated with this participant object."/> 
      <min value="0"/> 
      <max value="*"/> 
      <base> 
        <path value="Extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <mapping> 
        <identity value="dicom"/> 
        <map value="ParticipantObjectDataLifeCycle"/> 
      </mapping> 
    </element> 
    <element id="Extension.id">
      <path value="Extension.id"/> 
      <representation value="xmlAttr"/> 
      <short value="Unique id for inter-element referencing"/> 
      <definition value="Unique id for the element within a resource (for internal references). This may

       be any string value that does not contain spaces."/> 
      <min value="0"/> 
      <max value="1"/> 
      <base> 
        <path value="Element.id"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="id"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="n/a"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension">
      <path value="Extension.extension"/> 
      <slicing> 
        <discriminator> 
          <type value="value"/> 
          <path value="url"/> 
        </discriminator> 
        <description value="Extensions are always sliced by (at least) url"/> 
        <rules value="open"/> 
      </slicing> 
      <short value="Extension"/> 
      <definition value="An Extension"/> 
      <min value="0"/> 
      <max value="0"/> 
      <base> 
        <path value="Element.extension"/> 
        <min value="0"/> 
        <max value="*"/> 
      </base> 
      <type> 
        <code value="Extension"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <constraint> 
        <key value="ext-1"/> 
        <severity value="error"/> 
        <human value="Must have either extensions or value[x], not both"/> 
        <expression value="extension.exists() != value.exists()"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Extension"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
    </element> 
    <element id="Extension.url">
      <path value="Extension.url"/> 
      <representation value="xmlAttr"/> 
      <short value="identifies the meaning of the extension"/> 
      <definition value="Source of the definition for the extension code - a logical name or a URL."/> 
      <comment value="The definition may point directly to a computable or human-readable definition

       of the extensibility codes, or it may be a logical URI as declared in some other
       specification. The definition SHALL be a URI for the Structure Definition defining
       the extension."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.url"/> 
        <min value="1"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type">
          <valueUrl value="uri"/> 
        </extension> 
        <code value="http://hl7.org/fhirpath/System.String"/> 
      </type> 
      <fixedUri value="http://hl7.org/fhir/StructureDefinition/auditevent-Lifecycle"/> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/> 
      <short value="Value of extension"/> 
      <definition value="Value of extension - must be one of a constrained set of the data types (see [Extensibility](

      extensibility.html) for a list)."/> 
      <min value="1"/> 
      <max value="1"/> 
      <base> 
        <path value="Extension.value[x]"/> 
        <min value="0"/> 
        <max value="1"/> 
      </base> 
      <type> 
        <code value="CodeableConcept"/> 
      </type> 
      <constraint> 
        <key value="ele-1"/> 
        <severity value="error"/> 
        <human value="All FHIR elements must have a @value or children"/> 
        <expression value="hasValue() or (children().count() &gt; id.count())"/> 
        <source value="http://hl7.org/fhir/StructureDefinition/Element"/> 
      </constraint> 
      <isModifier value="false"/> 
      <isSummary value="false"/> 
      <binding> 
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="AuditEventEntityLifecycle"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/build/StructureDefinition/copyright">
          <valueString value="These codes are excerpted from Digital Imaging and Communications in Medicine (DICOM)

           Standard, Part 16: Content Mapping Resource, Copyright © 2011 by the National Electrical
           Manufacturers Association."/> 
        </extension> 
        <strength value="preferred"/> 
        <description value="Identifier for the data life-cycle stage for the entity."/> 
        <valueSet value="http://hl7.org/fhir/ValueSet/object-lifecycle-events"/> 
      </binding> 
      <mapping> 
        <identity value="rim"/> 
        <map value="N/A"/> 
      </mapping> 
    </element> 
  </snapshot> 
  <differential> 
    <element id="Extension">
      <path value="Extension"/> 
      <short value="Lifecycle"/> 
      <definition value="An Lifecycle event associated with this participant object."/> 
      <min value="0"/> 
      <max value="*"/> 
      <mapping> 
        <identity value="dicom"/> 
        <map value="ParticipantObjectDataLifeCycle"/> 
      </mapping> 
    </element> 
    <element id="Extension.extension">
      <path value="Extension.extension"/> 
      <max value="0"/> 
    </element> 
    <element id="Extension.url">
      <path value="Extension.url"/> 
      <fixedUri value="http://hl7.org/fhir/StructureDefinition/auditevent-Lifecycle"/> 
    </element> 
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/> 
      <min value="1"/> 
      <type> 
        <code value="CodeableConcept"/> 
      </type> 
      <binding> 
        <extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName">
          <valueString value="AuditEventEntityLifecycle"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/build/StructureDefinition/copyright">
          <valueString value="These codes are excerpted from Digital Imaging and Communications in Medicine (DICOM)

           Standard, Part 16: Content Mapping Resource, Copyright © 2011 by the National Electrical
           Manufacturers Association."/> 
        </extension> 
        <strength value="preferred"/> 
        <description value="Identifier for the data life-cycle stage for the entity."/> 
        <valueSet value="http://hl7.org/fhir/ValueSet/object-lifecycle-events"/> 
      </binding> 
    </element> 
  </differential> 


</

StructureDefinition


2.37.5.8

>


Permitted
values
for
questions



Many
questionnaires
place
constraints
on
the
allowed
list
of
values
for
a
given
question.
FHIR
supports
this
notion
through
the
item.answerValueSet
or
the
item.answerOption
element.
The
"answerOption"
mechanism
is
simplest
-
all
possible
answers
are
listed
in-line
with
the
question
using
the
item.answerOption
element.
Maintenance
of
the
set
of
permitted
question
answers
involves
maintenance
of
the
questionnaire
itself.

The "answerValueSet" mechanism is more sophisticated. Rather than listing the possible answers directly, the item.answerValueSet element refers Usage note: every effort has been made to a ValueSet resource. This approach adds complexity for questionnaires having a simple list of strings as choices for a question, but provides several benefits, including: Questionnaires ensure that reference codes from externally defined code systems have a means of doing so Answer sets can be shared across questions (and there are many questionnaires where this capability is useful) The full capability of value sets can be brought into play, including the ability to use ConceptMap to link and translate from questionnaire-specific codes to other codes, the use of multiple display names (e.g. different languages), the ability to use coded ordinals, and the ability to allow choices from larger value sets (e.g. "all SNOMED CT procedure codes") In many cases, the set of code choices will be specific to a given questionnaire and should be maintained as part of the questionnaire. In this case, the referenced ValueSet can be included as a contained resource. All contained ValueSets examples are listed together correct and then useful, but they are referenced by the individual questions as necessary. Alternatively, the item.answerValueSet element can reference the value set in a version-specific manner. This ensures that the Questionnaire will not adopt a new version of the referenced value set without revising the Questionnaire to point to that new version - putting the author of the Questionnaire in control of any changes. 2.37.5.9 Useful Value Sets Many questions have a common set of possible codes for their answer. These value sets may be useful to help, and when referenced by full URL, do not need to be provided as normative part of the questionnaire: Yes | No | Don't Know : http://hl7.org/fhir/ValueSet/yesnodontknow 2.37.5.10 Questions with multiple answer types In some questionnaires, it may be possible to respond to a question with multiple types of answers. For example, capturing a coded answer plus free text, capturing a coded value plus a numeric priority, etc. In FHIR, this is handled through nested questions. Each question has a single data type. However, each question can have nested child questions. These nested child questions can have text (e.g. "Please specify") or can have no text at all if the appropriate guidance is provided by the parent question or group. 2.37.5.11 Questionnaires with Math Many questionnaires involve computations on questionnaire answers, e.g. tabulating scores. To help with associating numeric values to coded answers, the ordinalValue extension can be used to define the numeric weighting of a code defined in a value set or in the questionnaire itself. In addition, there are extensions for defining the dynamic value of an element using expressions. For more information, see the Using Expressions and Documentation Template topics in the Clinical Reasoning module. 2.37.5.12 More advanced questionnaires The capabilities of the Questionnaire resource are fairly simple and try to adhere to what most systems that deal with questionnaires would be capable of. However, there are lots of systems that require more sophisticated capabilities, such as: Greater control over rendering, including tables, read-only values, hidden answers, multi-column drop-downs Greater control over question flow, including formula-based rules for conditional display of elements Ability to pre-populate forms with data found in the client system Ability to define how to convert a completed QuestionnaireResponse for a Questionnaire into a collection of Observations and/or other resources Extensions have been defined for all of these purposes and many more. (Questionnaire has the most 'core' extensions of any resource to-date.) A list of these extensions can be found here . However, some of the extensions are complex and work together in particular ways. To support more advanced questionnaire implementation, the Structured Data Capture (SDC) implementation guide has been created to provide non-country-specific guidance on the use of most of these extensions and sets expectations for systems wishing to support more complex forms. 2.37.6 Search Parameters Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services. specification.

Name Type Description Expression In Common code token A code that corresponds to one of its items in the questionnaire Questionnaire.item.code context token A use context assigned to the questionnaire (Questionnaire.useContext.value as CodeableConcept) context-quantity quantity A quantity- or range-valued use context assigned to the questionnaire (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) context-type token A type of use context assigned to the questionnaire Questionnaire.useContext.code context-type-quantity composite A use context type and quantity- or range-based value assigned to the questionnaire On Questionnaire.useContext:   context-type: code   context-quantity: value.as(Quantity) | value.as(Range) context-type-value composite A use context type and value assigned to the questionnaire On Questionnaire.useContext:   context-type: code   context: value.as(CodeableConcept) date date The questionnaire publication date Questionnaire.date definition uri ElementDefinition - details for the item Questionnaire.item.definition description string The description of the questionnaire Questionnaire.description effective date The time during which the questionnaire is intended to be in use Questionnaire.effectivePeriod identifier token External identifier for the questionnaire Questionnaire.identifier jurisdiction token Intended jurisdiction for the questionnaire Questionnaire.jurisdiction name string Computationally friendly name of the questionnaire Questionnaire.name publisher string Name of the publisher of the questionnaire Questionnaire.publisher status token The current status of the questionnaire Questionnaire.status subject-type token Resource that can be subject of QuestionnaireResponse Questionnaire.subjectType title string The human-friendly name of the questionnaire Questionnaire.title url uri The uri that identifies the questionnaire Questionnaire.url version token The business version of the questionnaire Questionnaire.version