This page is part of the FHIR Specification (v5.0.0: R5 - STU). This is the current published version. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2
FHIR Infrastructure Work Group | Maturity Level: 5 | Trial Use | Security Category: Patient | Compartments: Device, Encounter, Patient, Practitioner, RelatedPerson |
A structured set of questions and their answers. The questions are ordered and grouped into coherent subsets, corresponding to the structure of the grouping of the questionnaire being responded to.
QuestionnaireResponse provides a complete or partial list of answers to a set of questions filled when responding to a questionnaire. The questions may be included directly or by reference to a Questionnaire resource that defines the questions as well as the constraints on the allowed answers. In some cases, both formal rules for editing the questionnaire (via link to Questionnaire) as well as sufficient local information to allow rendering of the questionnaire may be provided.
Each time a questionnaire is completed for a different subject or at a different time, a distinct QuestionnaireResponse is generated, though it may be possible for a previously entered set of answers to be edited or updated.
Questionnaire responses 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. Questionnaire responses record specifics about data capture - exactly what questions were asked, in what order, what answers were given, 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.
Examples of Questionnaires include:
QuestionnaireResponse resources can be validated against their corresponding Questionnaire to verify that required groups and questions are answered and that answers fit constraints in terms of cardinality, data type, etc.
The QuestionnaireResponse resource captures the responses to a questionnaire, while Questionnaire represents the definition of the questionnaire form, including what questions are asked, how they're organized and the constraints on the allowed answers.
While Observation, with its nested component
structure, can create complex hierarchies of
questions and answers, the focus is different. First, Observation is used primarily for capturing data elements that
are "true" observations - lab measurements, vital signs, social assessments, etc., while QuestionnaireResponse can be used to capture
any types of data, including data that would typically map to other resources (Procedure, Patient,
MedicationStatement, etc.). Second, the focus of QuestionnaireResponse includes the specific phrasing
and organization of the questions. All data must be explicitly captured as a question. With Observation, the focus is
only on the meaning of the answer, not what question was asked (assuming a question was even asked at all). Additional information such as normal
ranges, interpretation, date, etc., may also be captured.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
QuestionnaireResponse | TU | DomainResource | A structured set of questions and their answers Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | Business identifier for this set of answers |
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest) | Request fulfilled by this QuestionnaireResponse |
partOf | Σ | 0..* | Reference(Observation | Procedure) | Part of referenced event |
questionnaire | Σ | 1..1 | canonical(Questionnaire) | Canonical URL of Questionnaire being answered |
status | ?!Σ | 1..1 | code | in-progress | completed | amended | entered-in-error | stopped Binding: Questionnaire Response Status (Required) |
subject | Σ | 0..1 | Reference(Any) | The subject of the questions |
encounter | Σ | 0..1 | Reference(Encounter) | Encounter the questionnaire response is part of |
authored | Σ | 0..1 | dateTime | Date the answers were gathered |
author | Σ | 0..1 | Reference(Device | Practitioner | PractitionerRole | Patient | RelatedPerson | Organization) | The individual or device that received and recorded the answers |
source | Σ | 0..1 | Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson) | The individual or device that answered the questions |
item | C | 0..* | BackboneElement | Groups and questions + Rule: Item cannot contain both item and answer + Rule: Repeated answers are combined in the answers array of a single item |
linkId | C | 1..1 | string | Pointer to specific item from Questionnaire |
definition | 0..1 | uri | ElementDefinition - details for the item | |
text | 0..1 | string | Name for group or question text | |
answer | C | 0..* | BackboneElement | The response(s) to the question |
value[x] | C | 1..1 | Single-valued answer to the question Binding: 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 | SimpleQuantity | |||
valueReference | Reference(Any) | |||
item | 0..* | see item | Child items of question | |
item | 0..* | see item | Child items of group item | |
Documentation for this format |
See the Extensions for this resource
UML Diagram (Legend)
XML Template
<QuestionnaireResponse xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Business identifier for this set of answers --></identifier> <basedOn><!-- 0..* Reference(CarePlan|ServiceRequest) Request fulfilled by this QuestionnaireResponse --></basedOn> <partOf><!-- 0..* Reference(Observation|Procedure) Part of referenced event --></partOf> <questionnaire><!-- 1..1 canonical(Questionnaire) Canonical URL of Questionnaire being answered --></questionnaire> <status value="[code]"/><!-- 1..1 in-progress | completed | amended | entered-in-error | stopped --> <subject><!-- 0..1 Reference(Any) The subject of the questions --></subject> <encounter><!-- 0..1 Reference(Encounter) Encounter the questionnaire response is part of --></encounter> <authored value="[dateTime]"/><!-- 0..1 Date the answers were gathered --> <author><!-- 0..1 Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) The individual or device that received and recorded the answers --></author> <source><!-- 0..1 Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) The individual or device that answered the questions --></source> <item> <!-- 0..* Groups and questions --> <linkId value="[string]"/><!-- I 1..1 Pointer to specific item from Questionnaire --> <definition value="[uri]"/><!-- 0..1 ElementDefinition - details for the item --> <text value="[string]"/><!-- 0..1 Name for group or question text --> <answer> <!-- I 0..* The response(s) to the question --> <value[x]><!-- I 1..1 boolean|decimal|integer|date|dateTime|time|string|uri| Attachment|Coding|Quantity(SimpleQuantity)|Reference(Any) Single-valued answer to the question --></value[x]> <item><!-- 0..* Content as for QuestionnaireResponse.item Child items of question --></item> </answer> <item><!-- 0..* Content as for QuestionnaireResponse.item Child items of group item --></item> </item> </QuestionnaireResponse>
JSON Template
{ "resourceType" : "QuestionnaireResponse", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // Business identifier for this set of answers "basedOn" : [{ Reference(CarePlan|ServiceRequest) }], // Request fulfilled by this QuestionnaireResponse "partOf" : [{ Reference(Observation|Procedure) }], // Part of referenced event "questionnaire" : "<canonical(Questionnaire)>", // R! Canonical URL of Questionnaire being answered "status" : "<code>", // R! in-progress | completed | amended | entered-in-error | stopped "subject" : { Reference(Any) }, // The subject of the questions "encounter" : { Reference(Encounter) }, // Encounter the questionnaire response is part of "authored" : "<dateTime>", // Date the answers were gathered "author" : { Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) }, // The individual or device that received and recorded the answers "source" : { Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) }, // The individual or device that answered the questions "item" : [{ // Groups and questions "linkId" : "<string>", // I R! Pointer to specific item from Questionnaire "definition" : "<uri>", // ElementDefinition - details for the item "text" : "<string>", // Name for group or question text "answer" : [{ // I The response(s) to the question // value[x]: Single-valued answer to the question. One of these 12: "valueBoolean" : <boolean>, "valueDecimal" : <decimal>, "valueInteger" : <integer>, "valueDate" : "<date>", "valueDateTime" : "<dateTime>", "valueTime" : "<time>", "valueString" : "<string>", "valueUri" : "<uri>", "valueAttachment" : { Attachment }, "valueCoding" : { Coding }, "valueQuantity" : { Quantity(SimpleQuantity) }, "valueReference" : { Reference(Any) }, "item" : [{ Content as for QuestionnaireResponse.item }] // Child items of question }], "item" : [{ Content as for QuestionnaireResponse.item }] // Child items of group item }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:QuestionnaireResponse; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* Business identifier for this set of answers fhir:basedOn ( [ Reference(CarePlan|ServiceRequest) ] ... ) ; # 0..* Request fulfilled by this QuestionnaireResponse fhir:partOf ( [ Reference(Observation|Procedure) ] ... ) ; # 0..* Part of referenced event fhir:questionnaire [ canonical(Questionnaire) ] ; # 1..1 Canonical URL of Questionnaire being answered fhir:status [ code ] ; # 1..1 in-progress | completed | amended | entered-in-error | stopped fhir:subject [ Reference(Any) ] ; # 0..1 The subject of the questions fhir:encounter [ Reference(Encounter) ] ; # 0..1 Encounter the questionnaire response is part of fhir:authored [ dateTime ] ; # 0..1 Date the answers were gathered fhir:author [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 The individual or device that received and recorded the answers fhir:source [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 The individual or device that answered the questions fhir:item ( [ # 0..* Groups and questions fhir:linkId [ string ] ; # 1..1 I Pointer to specific item from Questionnaire fhir:definition [ uri ] ; # 0..1 ElementDefinition - details for the item fhir:text [ string ] ; # 0..1 Name for group or question text fhir:answer ( [ # 0..* I The response(s) to the question # value[x] : 1..1 I Single-valued answer to the question. One of these 12 fhir:value [ a fhir:boolean ; boolean ] fhir:value [ a fhir:decimal ; decimal ] fhir:value [ a fhir:integer ; integer ] fhir:value [ a fhir:date ; date ] fhir:value [ a fhir:dateTime ; dateTime ] fhir:value [ a fhir:time ; time ] fhir:value [ a fhir:string ; string ] fhir:value [ a fhir:uri ; uri ] fhir:value [ a fhir:Attachment ; Attachment ] fhir:value [ a fhir:Coding ; Coding ] fhir:value [ a fhir:SimpleQuantity ; Quantity(SimpleQuantity) ] fhir:value [ a fhir:Reference ; Reference(Any) ] fhir:item ( [ See QuestionnaireResponse.item ] ... ) ; # 0..* Child items of question ] ... ) ; fhir:item ( [ See QuestionnaireResponse.item ] ... ) ; # 0..* Child items of group item ] ... ) ; ]
Changes from both R4 and R4B
QuestionnaireResponse | |
QuestionnaireResponse.identifier |
|
QuestionnaireResponse.questionnaire |
|
QuestionnaireResponse.source |
|
QuestionnaireResponse.item.answer.value[x] |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
QuestionnaireResponse | TU | DomainResource | A structured set of questions and their answers Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | Business identifier for this set of answers |
basedOn | Σ | 0..* | Reference(CarePlan | ServiceRequest) | Request fulfilled by this QuestionnaireResponse |
partOf | Σ | 0..* | Reference(Observation | Procedure) | Part of referenced event |
questionnaire | Σ | 1..1 | canonical(Questionnaire) | Canonical URL of Questionnaire being answered |
status | ?!Σ | 1..1 | code | in-progress | completed | amended | entered-in-error | stopped Binding: Questionnaire Response Status (Required) |
subject | Σ | 0..1 | Reference(Any) | The subject of the questions |
encounter | Σ | 0..1 | Reference(Encounter) | Encounter the questionnaire response is part of |
authored | Σ | 0..1 | dateTime | Date the answers were gathered |
author | Σ | 0..1 | Reference(Device | Practitioner | PractitionerRole | Patient | RelatedPerson | Organization) | The individual or device that received and recorded the answers |
source | Σ | 0..1 | Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson) | The individual or device that answered the questions |
item | C | 0..* | BackboneElement | Groups and questions + Rule: Item cannot contain both item and answer + Rule: Repeated answers are combined in the answers array of a single item |
linkId | C | 1..1 | string | Pointer to specific item from Questionnaire |
definition | 0..1 | uri | ElementDefinition - details for the item | |
text | 0..1 | string | Name for group or question text | |
answer | C | 0..* | BackboneElement | The response(s) to the question |
value[x] | C | 1..1 | Single-valued answer to the question Binding: 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 | SimpleQuantity | |||
valueReference | Reference(Any) | |||
item | 0..* | see item | Child items of question | |
item | 0..* | see item | Child items of group item | |
Documentation for this format |
See the Extensions for this resource
XML Template
<QuestionnaireResponse xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier Business identifier for this set of answers --></identifier> <basedOn><!-- 0..* Reference(CarePlan|ServiceRequest) Request fulfilled by this QuestionnaireResponse --></basedOn> <partOf><!-- 0..* Reference(Observation|Procedure) Part of referenced event --></partOf> <questionnaire><!-- 1..1 canonical(Questionnaire) Canonical URL of Questionnaire being answered --></questionnaire> <status value="[code]"/><!-- 1..1 in-progress | completed | amended | entered-in-error | stopped --> <subject><!-- 0..1 Reference(Any) The subject of the questions --></subject> <encounter><!-- 0..1 Reference(Encounter) Encounter the questionnaire response is part of --></encounter> <authored value="[dateTime]"/><!-- 0..1 Date the answers were gathered --> <author><!-- 0..1 Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) The individual or device that received and recorded the answers --></author> <source><!-- 0..1 Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) The individual or device that answered the questions --></source> <item> <!-- 0..* Groups and questions --> <linkId value="[string]"/><!-- I 1..1 Pointer to specific item from Questionnaire --> <definition value="[uri]"/><!-- 0..1 ElementDefinition - details for the item --> <text value="[string]"/><!-- 0..1 Name for group or question text --> <answer> <!-- I 0..* The response(s) to the question --> <value[x]><!-- I 1..1 boolean|decimal|integer|date|dateTime|time|string|uri| Attachment|Coding|Quantity(SimpleQuantity)|Reference(Any) Single-valued answer to the question --></value[x]> <item><!-- 0..* Content as for QuestionnaireResponse.item Child items of question --></item> </answer> <item><!-- 0..* Content as for QuestionnaireResponse.item Child items of group item --></item> </item> </QuestionnaireResponse>
JSON Template
{ "resourceType" : "QuestionnaireResponse", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // Business identifier for this set of answers "basedOn" : [{ Reference(CarePlan|ServiceRequest) }], // Request fulfilled by this QuestionnaireResponse "partOf" : [{ Reference(Observation|Procedure) }], // Part of referenced event "questionnaire" : "<canonical(Questionnaire)>", // R! Canonical URL of Questionnaire being answered "status" : "<code>", // R! in-progress | completed | amended | entered-in-error | stopped "subject" : { Reference(Any) }, // The subject of the questions "encounter" : { Reference(Encounter) }, // Encounter the questionnaire response is part of "authored" : "<dateTime>", // Date the answers were gathered "author" : { Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) }, // The individual or device that received and recorded the answers "source" : { Reference(Device|Organization|Patient|Practitioner| PractitionerRole|RelatedPerson) }, // The individual or device that answered the questions "item" : [{ // Groups and questions "linkId" : "<string>", // I R! Pointer to specific item from Questionnaire "definition" : "<uri>", // ElementDefinition - details for the item "text" : "<string>", // Name for group or question text "answer" : [{ // I The response(s) to the question // value[x]: Single-valued answer to the question. One of these 12: "valueBoolean" : <boolean>, "valueDecimal" : <decimal>, "valueInteger" : <integer>, "valueDate" : "<date>", "valueDateTime" : "<dateTime>", "valueTime" : "<time>", "valueString" : "<string>", "valueUri" : "<uri>", "valueAttachment" : { Attachment }, "valueCoding" : { Coding }, "valueQuantity" : { Quantity(SimpleQuantity) }, "valueReference" : { Reference(Any) }, "item" : [{ Content as for QuestionnaireResponse.item }] // Child items of question }], "item" : [{ Content as for QuestionnaireResponse.item }] // Child items of group item }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:QuestionnaireResponse; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:identifier ( [ Identifier ] ... ) ; # 0..* Business identifier for this set of answers fhir:basedOn ( [ Reference(CarePlan|ServiceRequest) ] ... ) ; # 0..* Request fulfilled by this QuestionnaireResponse fhir:partOf ( [ Reference(Observation|Procedure) ] ... ) ; # 0..* Part of referenced event fhir:questionnaire [ canonical(Questionnaire) ] ; # 1..1 Canonical URL of Questionnaire being answered fhir:status [ code ] ; # 1..1 in-progress | completed | amended | entered-in-error | stopped fhir:subject [ Reference(Any) ] ; # 0..1 The subject of the questions fhir:encounter [ Reference(Encounter) ] ; # 0..1 Encounter the questionnaire response is part of fhir:authored [ dateTime ] ; # 0..1 Date the answers were gathered fhir:author [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 The individual or device that received and recorded the answers fhir:source [ Reference(Device|Organization|Patient|Practitioner|PractitionerRole|RelatedPerson) ] ; # 0..1 The individual or device that answered the questions fhir:item ( [ # 0..* Groups and questions fhir:linkId [ string ] ; # 1..1 I Pointer to specific item from Questionnaire fhir:definition [ uri ] ; # 0..1 ElementDefinition - details for the item fhir:text [ string ] ; # 0..1 Name for group or question text fhir:answer ( [ # 0..* I The response(s) to the question # value[x] : 1..1 I Single-valued answer to the question. One of these 12 fhir:value [ a fhir:boolean ; boolean ] fhir:value [ a fhir:decimal ; decimal ] fhir:value [ a fhir:integer ; integer ] fhir:value [ a fhir:date ; date ] fhir:value [ a fhir:dateTime ; dateTime ] fhir:value [ a fhir:time ; time ] fhir:value [ a fhir:string ; string ] fhir:value [ a fhir:uri ; uri ] fhir:value [ a fhir:Attachment ; Attachment ] fhir:value [ a fhir:Coding ; Coding ] fhir:value [ a fhir:SimpleQuantity ; Quantity(SimpleQuantity) ] fhir:value [ a fhir:Reference ; Reference(Any) ] fhir:item ( [ See QuestionnaireResponse.item ] ... ) ; # 0..* Child items of question ] ... ) ; fhir:item ( [ See QuestionnaireResponse.item ] ... ) ; # 0..* Child items of group item ] ... ) ; ]
Changes from both R4 and R4B
QuestionnaireResponse | |
QuestionnaireResponse.identifier |
|
QuestionnaireResponse.questionnaire |
|
QuestionnaireResponse.source |
|
QuestionnaireResponse.item.answer.value[x] |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis
Path | ValueSet | Type | Documentation |
---|---|---|---|
QuestionnaireResponse.status | QuestionnaireResponseStatus | Required | Lifecycle status of the questionnaire response. |
QuestionnaireResponse.item.answer.value[x] | QuestionnaireAnswerCodes (a valid code from SNOMED CT ) | Example | Example list of codes for answers to questions. (Not complete or necessarily appropriate.) |
UniqueKey | Level | Location | Description | Expression |
qrs-1 | Rule | QuestionnaireResponse.item | Item cannot contain both item and answer | (answer.exists() and item.exists()).not() |
qrs-2 | Rule | QuestionnaireResponse.item | Repeated answers are combined in the answers array of a single item | repeat(answer|item).select(item.where(answer.value.exists()).linkId.isDistinct()).allTrue() |
Refer to additional guidance provided in the Questionnaire resource dealing with the design of questionnaires.
A QuestionnaireResponse
may be stand-alone or may point to the definition of the questions in Questionnaire.
If the QuestionnaireResponse refers to a Questionnaire:
linkId
elementdisplay
. When the QuestionnaireResponse is not yet marked as 'completed',
this might also include items that are not enabled based on what answers are currently present. However, once a
QuestionnaireResponse is marked as "completed", the QuestionnaireResponse SHALL only include items that are 'enabled'. I.e. stuff that was perhaps answered through populate or user-action but
subsequently got disabled due to other answers must not be included in a final QuestionnaireResponse.
The diagram above shows a Questionnaire with a hierarchy of group and question items, some marked as 'repeats'=true, and others false and with similar variation in 'required'=true and false. It also shows a hypothetical QuestionnaireResponse that is valid against that questionnaire with appropriate nesting of items and answers and linkIds showing the alignment between the Questionnaire and QuestionnaireResponse items.
Rules imposed by a Questionnaire about expectations for answers are not expected to be met until a Questionnaire is deemed to be 'completed' (or 'amended'). For example, items that are marked as 'required' may be omitted, minimum numbers of answers might not be met, length requirement for answers, co-occurrence constraints, etc. might all be violated when the QuestionnaireResponse is still in the process of being completed. QuestionnaireResponses may be stored in this 'incomplete' state. Such QuestionnaireResponses might also include data for disabled questions, entries and text for non-answered questions, etc. However, once a QuestionnaireResponse is marked as 'completed' (including if it is subsequently changed to 'amended'), all requirements of the associated Questionnaire must be met, all non-answered question items must be removed, all non-enabled items must be removed, etc. (Display items MAY be retained. Certain extensions on the Questionnaire item may mandate that a display item needed for a human reviewer to interpret the QuestionnaireResponse be retained in a completed QuestionnaireResponse.)
QuestioinnaireResponse has two different mechanisms to support nesting of items - item.item
and item.answer.item
. The former is used when nesting items within a
'group' and the latter is always used when nesting items within a question. This is because items nested within a question always nest within each answer to the question. If the
question allows multiple answers, each will have its own set of nested items.
QuestionnaireResponse resources can have answers with values of type Attachment. These attachments will typically be selected by the user answering the questionnaire and this selection may be done in an uncontrolled environment. Systems should ensure that the attachment is of the desired type and should take precautions before rendering or executing any attached content.
For most resources, the type of information that can be conveyed in the resource is determined by the resource, and the key attributes that determine the sensitivity level of the information are also known; e.g., drug, observation type, clinical trial randomization status, etc. However, for QuestionnaireResponse, the sensitivity of an instance is dependent on what type of Questionnaire it is associated with. And the data elements that determine that sensitivity could be the answers to any of the questions. This makes automatically enforcing access control rules more challenging. Designers should take these challenges into account and may need to place stricter access controls around QuestionnaireResponse to ensure that access to information is not granted improperly.
It is possible to profile QuestionnaireResponse in the same way as any other resource. However, such profiling should not be used to constrain QuestionnaireResponse to only be able to capture the answers associated with a single type of form - that is what the Questionnaire resource is for. Profiling QuestionnaireResponse is appropriate when there's a need to enforce that certain metadata is always present, to indicate limitations on what types of answers can be handled, etc. - independent of what Questionnaire is being completed.
Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
Name | Type | Description | Expression | In Common |
author | reference | The author of the questionnaire response | QuestionnaireResponse.author (Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson) | |
authored | date | When the questionnaire response was last changed | QuestionnaireResponse.authored | |
based-on | reference | Plan/proposal/order fulfilled by this questionnaire response | QuestionnaireResponse.basedOn (CarePlan, ServiceRequest) | |
encounter | reference | Encounter associated with the questionnaire response | QuestionnaireResponse.encounter (Encounter) | 29 Resources |
identifier | token | The unique identifier for the questionnaire response | QuestionnaireResponse.identifier | 65 Resources |
item-subject | reference | Allows searching for QuestionnaireResponses by item value where the item has isSubject=true | QuestionnaireResponse.item.where(extension('http://hl7.org/fhir/StructureDefinition/questionnaireresponse-isSubject').exists()).answer.value.ofType(Reference) | |
part-of | reference | Procedure or observation this questionnaire response was performed as a part of | QuestionnaireResponse.partOf (Observation, Procedure) | |
patient | reference | The patient that is the subject of the questionnaire response | QuestionnaireResponse.subject.where(resolve() is Patient) (Patient) | 66 Resources |
questionnaire | reference | The questionnaire the answers are provided for | QuestionnaireResponse.questionnaire (Questionnaire) | |
source | reference | The individual providing the information reflected in the questionnaire respose | QuestionnaireResponse.source (Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson) | |
status | token | The status of the questionnaire response | QuestionnaireResponse.status | |
subject | reference | The subject of the questionnaire response | QuestionnaireResponse.subject (Any) |