Release 4 5 Ballot

This page is part of the FHIR Specification (v4.0.1: R4 (v5.0.0-ballot: R5 Ballot - Mixed Normative and STU see ballot notes ) in it's permanent home (it will always be available at this URL). ). The current version which supercedes this version is 5.0.0 . For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

Content Examples Detailed Descriptions Mappings Profiles & Extensions R3 Conversions 2.37 Resource Questionnaire - Content

Example ValueSet/medicationrequest-status (XML)

FHIR Infrastructure Vocabulary Work Group Maturity Level : 3   Trial Use N/A Security Category Standards Status : Business Informative Compartments : Not linked to any defined compartments
A structured set of questions intended to guide the collection of answers from end-users. Questionnaires provide detailed control over order, presentation, phraseology and grouping to allow coherent, consistent data collection. 2.37.1 Scope and Usage A Questionnaire is an organized collection of questions intended to solicit information from patients, providers or other individuals involved in the healthcare domain. They may be simple flat lists of questions or can be hierarchically organized in groups and sub-groups, each containing questions. The Questionnaire defines the questions to be asked, how they are ordered and grouped, any intervening instructional text and what the constraints are on the allowed answers. The results of a Questionnaire can be communicated using the QuestionnaireResponse resource. Questionnaires cover the need to communicate data originating from forms used in medical history examinations, research questionnaires and sometimes full clinical specialty records. In many systems this data is collected using user-defined screens and forms. Questionnaires define specifics about data capture - exactly what questions were asked, in what order, what choices for answers were, etc. Each of these questions is part of the Questionnaire, and as such the Questionnaire is a separately identifiable Resource, whereas the individual questions are not. (Questionnaire questions can be linked to shared data elements using the Questionnaire.item.definition element.) Examples of Questionnaires include: Past medical history (PMH) Family diseases Social history Research questionnaires/Clinical research forms (CRFs) Quality and evaluation forms Patient intake form (e.g. clipboard) Forms to support insurance claims This resource is limited in scope to support the characteristics of simple questionnaires. However, common extensions have been defined to allow more sophisticated behavior. This includes: Questionnaire core extensions which defines the additional descriptive characteristics for questionnaires and their groups and questions Element extensions which can describe additional constraints on allowed answers for questionnaires such as string length and date and numeric ranges Additional implementation guides, in particular the Structured Data Capture Questionnaire IG provide guidance, extensions and operations that support additional capabilities and allow the definition of more sophisticated questionnaires and their corresponding responses. 2.37.2 Boundaries and Relationships Questionnaires differ from Lists because Lists group existing resources, while Questionnaires group arbitrary questions. Questionnaires are distinct from Observations and DiagnosticReports in that both of these resources are intended to capture only certain types of information (lab, imaging, vitals, etc.) and should not be used to capture the full breadth of healthcare information (allergies, medications, care plans, etc.), while Questionnaires are able to capture any information at all. More importantly, Observation and DiagnosticReport focus on capturing the discrete information in a standardized form so that the information can be used consistently regardless of where or how it is captured. Questionnaire focuses on information capture. The same information can be captured using a wide variety of questionnaires with differently phrased questions organized in different manners. As such, the Questionnaire resource provides a means to standardize the information gathering process (how information is captured), but not how data is interoperably compared, analyzed or computed upon (typically managed using Observation, DiagnosticReport as well as other resources). Questionnaire supports data-collection workflow to a limited extent, in that - once triggered - a Questionnaire can guide a user through a data collection process that ensures appropriate information is collected based on answers to particular questions. However, Questionnaire doesn't provide support for capturing sets of information at different times or highly interactive data capture. Broader workflow is typically managed using PlanDefinition and Task or using other mechanisms such as CDSHooks. Questionnaires are similar to the notion of "logical models" supported by the StructureDefinition resource. Both support the representation of a collection of data points with labels, data types and hierarchy. It will be common to find the two of them mapped together. The primary difference is that Questionnaire is focused on user-facing data collection. It describes specific questions and includes information such as what number/label should be displayed beside each question, conditions in which questions should be displayed (or not), what instructions should be provided to the user, etc. StructureDefinition, on the other hand, merely defines a data structure with no guidance on display or rules around capture mechanism, only what data should exist in the end. As well, logical models are not intended to capture data directly. Rather, they provide a basis for mapping between data capture structures. 2.37.3 Background and Context Groups and questions that make up a Questionnaire can use the definition element to refer to data elements in external code systems and StructureDefinitions . In this way, it's possible to leverage standard definitions of questions and their associated data types and answer sets across questionnaires. This also allows extraction of the data from a questionnaire response into other data structures (e.g. populating a ServiceRequest or CarePlan from information in a completed questionnaire response. It can also support other sorts of post-processing of the data contained in a questionnaire response. However, use of the definition element is not required and Questionnaires may be quite loosely defined. The section Questionnaire versus Resources below discusses the issues of collecting data in such loosely defined Questionnaires versus collecting data as well-defined separate Resources. This resource is referenced by CarePlan , Communication , Contract , FamilyMemberHistory , PlanDefinition , Procedure , itself and QuestionnaireResponse 2.37.4 Resource Content 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 for groups and questions must be unique within the questionnaire Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , 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 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 Raw XML ) 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. 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 form + » 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 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 R3 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 also see XML Format Specification 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 for groups and questions must be unique within the questionnaire Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , 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 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. 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 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 Value Setmedicationrequest Status

@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:
<?xml version="1.0" encoding="UTF-8"?>


* 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

<ValueSet xmlns="http://hl7.org/fhir">
  <id value="medicationrequest-status"/> 
  <meta> 
    <lastUpdated value="2022-09-10T04:52:37.223+10:00"/> 
    <profile value="http://hl7.org/fhir/StructureDefinition/shareablevalueset"/> 
  </meta> 
  <text> 
    <status value="generated"/> 
    <div xmlns="http://www.w3.org/1999/xhtml">
      <ul> 
        <li> Include all codes defined in 
          <a href="codesystem-medicationrequest-status.html">
            <code> http://hl7.org/fhir/CodeSystem/medicationrequest-status</code> 
          </a> 
        </li> 
      </ul> 
    </div> 
  </text> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="phx"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
    <valueCode value="trial-use"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="3"/> 
  </extension> 
  <url value="http://hl7.org/fhir/ValueSet/medicationrequest-status"/> 
  <identifier> 
    <system value="urn:ietf:rfc:3986"/> 
    <value value="urn:oid:2.16.840.1.113883.4.642.3.1320"/> 
  </identifier> 
  <version value="5.0.0-ballot"/> 
  <name value="medicationrequest Status"/> 
  <status value="draft"/> 
  <experimental value="false"/> 
  <publisher value="FHIR Project team"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://hl7.org/fhir"/> 
    </telecom> 
  </contact> 
  <description value="MedicationRequest Status Codes"/> 
  <compose> 
    <include> 
      <system value="http://hl7.org/fhir/CodeSystem/medicationrequest-status"/> 
    </include> 
  </compose> 

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
)
+
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
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
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}')
que-1
Rule
Questionnaire.item
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
Questionnaire.item
Can
only
have
multiple
initial
values
for
repeating
items
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
Documents
frequently
used
named
sections
with
Observations
to
model
Questionnaires.
Such
use
cases
should
now
use
the
Questionnaire
Resource
instead.
The
order
of
questions
within
groups,
groups
within
groups
and
groups
within
questions
is
relevant
and
must
be
retained
for
display
and
capture.
Display
items
allow
the
inclusion
of
instructions,
background
information
and
similar
content
within
a
questionnaire.
In
cases
where
it
is
necessary
or
appropriate
to
capture
the
reason
why
a
response
is
missing
(that
is,
why
a
particular
question
was
not
answered),
there
should
be
an
explicit
child
item
defined
for
the
relevant
question(s)
in
the
Questionnaire;
e.g.
add
a
child
question
of
"Reason
not
specified:"
with
an
enableWhen
operator
"not
exists"
to
the
parent
question.
2.37.5.1
Structured
Data
Capture
The
base
questionnaire
resource
is
aimed
at
the
capabilities
of
"most"
healthcare
systems
that
deal
with
forms
and
questionnaires.
While
the
resource
structure
supports
a
reasonable
degree
of
complexity,
it
doesn't
provide
the
degree
of
control
over
rendering,
question
flow
and
data
management
needed
by
some
portions
of
the
healthcare
space.
Many
of
these
more
sophisticated
requirements
are
addressed
by
a
supplemental
implementation
guide
called
Structured
Data
Capture
(SDC)
.
This
implementation
guide
covers
the
following
capabilities,
plus
several
others:
Rendering
grids
of
questions,
multi-column
drop-downs,
multi-language
questionnaires,
and
other
'advanced'
formatting
capabilities
Advanced
dynamic
questionnaires
including
calculated
scores,
enabling
of
questions
and
groups
based
on
complex
logic,
drop-downs
driven
by
answers
to
other
questions
Support
for
populating
questionnaires
from
existing
clinical
data
based
on
the
current
patient,
encounter,
etc.,
including
the
ability
to
render
the
form
as
HTML
or
to
redirect
to
a
website
to
complete
unanswered
items
Support
for
extracting
information
from
a
completed
QuestionnaireResponse
to
generate
other
FHIR
resources
such
as
Observations,
MedicationStatements,
etc.
Support
for
completing
'adaptive'
questionnaires
(see
below)
2.37.5.2
Adaptive
Questionnaires
Some
questionnaires
might
not
provide
a
full
listing
of
questions,
instead
relying
on
a
service
to
interactively
sending
partially
completed
forms
to
a
server
which
generates
the
next
set
of
questions.
As
such,
some
questionnaires
might
be
'active'
but
have
either
no
questions
or
an
insufficient
set
of
questions
for
their
purpose.
Further
guidance
on
the
use
of
such
forms,
can
be
found
in
the
SDC
implementation
guide.
2.37.5.3
Using
Questionnaires
versus
using
Resources



There
is
considerable
overlap
between
the
information
covered
by
Questionnaires
and
other
Resources
(especially
FamilyMemberHistory
,
MedicationStatement
,
Observation
,
Procedure
,
etc.).
Questionnaire's
flexible
structure
can
easily
be
misused
to
capture
any
data,
even
data
that
should
be
captured
as
separate
Resources.
The
choice
between
using
Questionnaires
or
separate
Resources
may
be
dictated
by
the
procedure
of
collection
and
recording;
e.g.
if
the
data
is
captured
as
a
physician-agreed
(electronic)
form,
it
might
be
impossible
or
undesirable
to
distill
separate
resources
from
it
and
capturing
the
data
in
a
Questionnaire
would
be
most
appropriate.

However, data captured only in Questionnaires can be difficult to query after-the-fact. Queries against other Resources will not return data captured only in Questionnaires and querying against Questionnaires directly might not find all desired data, depending on how the questions may have Usage note: every effort has been phrased or encoded over time or by different clinicians. Moreover, interoperability of such Questionnaires is limited, as interpretation of its contents is only known to the circle of parties that were involved in its definition: encoding data from such Questionnaires using more specific resources increases the availability of the information they contain. It is entirely possible for data to exist in both QuestionnaireResponse and in other resources. For example, data may be captured in QuestionnaireResponse as part of an intake questionnaire. That data may then be propagated into the Patient resource (demographics), FamilyMemberHistory , AllergyIntolerance , MedicationStatement and Observation resources to allow the data to be queried and analyzed. The original QuestionnaireResponse instance can be retained for traceability purposes. If desired, a Provenance resource can be used to identify the Questionnaire as the data source for the other resources. For example, if a questionnaire question asks "what is your weight", an Observation with the appropriate Observation.code and the specified answer as the Observation.valueQuantity can be created. 2.37.5.4 Structure of the Questionnaire A Questionnaire is built out of two components, Questionnaire and item: The main component is Questionnaire, which holds information about the Questionnaire, like the identifier, publisher, date authored, title, etc. The Questionnaire contains zero or more items which define the content of the questionnaire (zero items allows for the possibility of narrative-only questionnaires, though these provide little computable information). Items have one of three sub-types, distinguished by the type element: display items convey text to be rendered on the form that won't capture data and which won't contain nested items. This might include copyright or authorship information, instructions or other background information. group items organize content of the questionnaire into sections, sub-sections, etc. Groups don't have answers associated with them directly, but generally contain child 'question' items which do. question items ask a specific question to which an answer may be given. There isn't a single type for question items. Instead, the type conveys the data type of the answer for the question. If an item isn't a 'display' or a 'group', then it's a question which allows a particular type of answer to be gathered. Questions may also have nested content - groups and/or other questions. This way, one can model "panels" of questions which would only be relevant (and thus would only be displayed) depending on the answers of a parent question; e.g. a question "Did the patient receive treatment in the past six months?" would contain a nested group of questions asking for further details about the treatment. See an example from the Australian New South Wales blue book Specific controls on dynamic display of groups, questions, etc. based on the answers to other questions is outside the scope of the base resource and are handled using extensions. Group text is intended to provide a "label" for a collection of nested items. The text will often be rendered in a "heading" style. As such, it should be kept relatively short. Detailed instructions should be conveyed by a nested "display" item. It's not necessary to create groups in order to relate an instruction made to a collection of questions - you can simply intermix display items and questions or groups, with the expectation ensure that users will see the display text before encountering the following questions. 2.37.5.5 Identifiers within Questionnaire There are three different "identifying" elements within Questionnaire: identifier , id and linkId . Each serves very distinct purposes: The identifier element is used to reference the overall questionnaire in business terms. It is the number printed across the top of the form or listed beside the form when making a choice between alternate forms. The id attribute supported on each element is used for references within a resource, for example linking narrative to discrete elements. Ids are not generally displayed to end users The linkId element on questions and groups establishes a link between elements in a QuestionnaireResponse and their definition inside a Questionnaire. This is the only way to link between the groups and questions in a Questionnaire and QuestionnaireResponse. These are also not displayed to end users 2.37.5.6 Question Definitions Questionnaires can be crafted using any questions the author can conceive and can be phrased in whatever manner is appropriate or convenient. However, standardization of questions and the constraints enforced on the accompanying answers increases the ability to compare data gathered across questionnaires. Items can be directly linked to an ElementDefinition using Questionnaire.item.definition which provides details for the item. If a definition is provided, then the following element values can be derived from the definition: concept (from ElementDefinition.code) type (from ElementDefinition.type) required (from ElementDefinition.min) repeats (from ElementDefinition.max) maxLength (from ElementDefinition.maxLength) answerValueSet (from ElementDefinition.binding.valueSet) Any information provided in these elements overrides the information from the definition, and some examples 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 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 "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 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 correct 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: 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) 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 to a ValueSet resource. This approach adds complexity for questionnaires having a simple list of strings as choices for a question, useful, but provides several benefits, including: Questionnaires 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 are listed together and then 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