This
page
is
part
of
the
FHIR
Specification
(v1.0.2:
DSTU
(v3.0.2:
STU
2).
3).
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
R3
R2
Work
Group
|
Maturity
Level
:
| Trial Use | Compartments : Not linked to any defined compartments |
A
structured
set
of
questions
intended
to
guide
the
collection
of
answers.
The
questions
are
ordered
answers
from
end-users.
Questionnaires
provide
detailed
control
over
order,
presentation,
phraseology
and
grouped
into
coherent
subsets,
corresponding
to
the
structure
of
the
grouping
of
the
underlying
questions.
to
allow
coherent,
consistent
data
collection.
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
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:
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:
Additional
profiles
such
as
the
Structured
Data
Capture
Questionnaire
profile
may
provide
additional
capabilities
for
defining
more
sophisticated
questionnaires
and
forms.
Questionnaires differ from Lists because Lists group existing resources, while Questionnaires group arbitrary questions. In theory, a Questionnaire could be expressed as a List or Composition containing DataElement resources. However, the former would disregard the "wholeness" associated with a questionnaire where questions must generally be maintained as a single structure. The latter would focus on rendering of the data elements rather than organizing the capture of information.
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 the actual information collected. Observation and DiagnosticReport standardize what information is actually captured, but not how the information is gathered.
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.
Groups
and
questions
that
make
up
a
Questionnaire
can
be
explicitly
coded
use
the
definition
element
to
refer
to
externally
defined
numbering
or
identification
data
elements
in
external
code
systems,
DataElements
and
StructureDefinitions
.
In
this
way,
it's
possible
to
leverage
standard
definitions
of
questions
and
sections
on
formally
defined
their
associated
data
types
and
answer
sets
across
questionnaires.
This
also
allows
extraction
of
the
data
on
from
a
form
and
questionnaire
response
into
other
data
structures
(e.g.
populating
a
ReferralRequest
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.
Such
coding
questionnaire
response.
However,
use
of
the
definition
element
is
not
required
however
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
,
FamilyMemberHistory
and
questionnaireresponse
QuestionnaireResponse
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I | DomainResource |
A
structured
set
of
questions
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
| Σ | 0..1 | uri | Logical URI to reference this questionnaire (globally unique) |
![]() ![]() |
Σ | 0..* | Identifier |
Additional
identifier
for
|
|
Σ | 0..1 | string |
Business
version
of
|
| Σ | 0..1 | string | Name for this questionnaire (computer friendly) |
![]() ![]() | Σ | 0..1 | string | Name for this questionnaire (human friendly) |
![]() ![]() |
?! Σ | 1..1 | code |
draft
|
|
| ?! Σ | 0..1 | boolean | For testing purposes, not real usage |
![]() ![]() |
Σ | 0..1 | dateTime |
Date
this
|
|
Σ | 0..1 | string | Name of the publisher (organization or individual) |
![]() ![]() | 0..1 | markdown | Natural language description of the questionnaire | |
|
0..1 | markdown | Why this questionnaire is defined | |
![]() ![]() | 0..1 | date | When the questionnaire was approved by publisher | |
![]() ![]() | 0..1 | date | When the questionnaire was last reviewed | |
![]() ![]() | Σ | 0..1 | Period | When the questionnaire is expected to be used |
![]() ![]() | Σ | 0..* |
|
Context
the
content
is
intended
to
support
|
![]() ![]() | Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
questionnaire
(if
applicable)
Jurisdiction ValueSet ( Extensible ) |
![]() ![]() | Σ | 0..* | ContactDetail |
Contact
|
| 0..1 | markdown | Use and/or publishing restrictions | |
![]() ![]() | Σ | 0..* | Coding |
Concept
that
represents
the
overall
questionnaire
Questionnaire Question Codes ( Example ) |
![]() ![]() |
Σ | 0..* | code |
Resource
that
can
be
subject
of
QuestionnaireResponse
ResourceType ( Required ) |
|
I | 0..* | BackboneElement |
Questions
and
sections
within
the
Questionnaire
+ Default values can't be specified for groups + Required and repeat aren't permitted for display items + Only 'choice' items can have options + A question cannot have both option and options + Display items cannot have a "code" asserted + Maximum length can only be declared for simple question types + Group items must have nested items, display items cannot have nested items |
|
1..1 | string |
Unique
id
for
item
in
questionnaire
|
|
|
0..1 |
|
ElementDefinition
-
details
for
|
|
|
Σ I | 0..* | Coding |
Corresponding
concept
for
this
Questionnaire Question Codes ( Example ) |
|
0..1 | string | E.g. "1(a)", "2.5.3" | |
|
Σ | 0..1 |
|
Primary
text
for
the
|
|
1..1 |
|
group
QuestionnaireItemType ( Required ) |
|
|
?! Σ I | 0..* | BackboneElement |
Only
allow
data
when
+ enableWhen must contain either a 'answer' or a 'hasAnswer' element |
|
1..1 | string | Question that determines whether item is enabled | |
![]() ![]() ![]() ![]() | I | 0..1 |
|
Enable
when
answered
or
|
|
I | 0..1 |
Value
question
must
have
Questionnaire Answer Codes ( Example ) | |
![]() ![]() ![]() ![]() ![]() |
boolean | |||
| decimal | |||
|
integer | |||
|
date
|
|||
| dateTime | |||
| time | |||
|
string | |||
|
uri | |||
| Attachment | |||
| Coding | |||
|
Quantity | |||
|
Reference
(
|
|||
|
I | 0..1 | boolean |
Whether
the
|
|
I | 0..1 | boolean |
Whether
the
|
|
I | 0..1 | boolean | Don't allow human editing |
![]() ![]() ![]() | I | 0..1 | integer | No more than this many characters |
![]() ![]() ![]() |
I | 0..1 | Reference ( ValueSet ) | Valueset containing permitted answers |
|
I | 0..* |
|
Permitted
answer
|
| 1..1 |
Answer
value
Questionnaire Answer Codes ( Example ) |
||
| integer | |||
| date | |||
| time | |||
![]() ![]() ![]() ![]() ![]() | string | |||
![]() ![]() ![]() ![]() ![]() | Coding | |||
![]() ![]() ![]() | I | 0..1 |
Default
value
when
item
is
first
rendered
Questionnaire Answer Codes ( Example ) | |
![]() ![]() ![]() ![]() | boolean | |||
![]() ![]() ![]() ![]() | decimal | |||
![]() ![]() ![]() ![]() | integer | |||
![]() ![]() ![]() ![]() | date | |||
![]() ![]() ![]() ![]() | dateTime | |||
![]() ![]() ![]() ![]() | time | |||
![]() ![]() ![]() ![]() | string | |||
![]() ![]() ![]() ![]() | uri | |||
![]() ![]() ![]() ![]() | Attachment | |||
![]() ![]() ![]() ![]() | Coding | |||
![]() ![]() ![]() ![]() | Quantity | |||
![]() ![]() ![]() ![]() | Reference ( Any ) | |||
![]() ![]() ![]() | I | 0..* |
see
|
Nested
questionnaire
|
Documentation
for
this
format
|
||||
UML Diagram ( Legend )
XML Template
<<Questionnaire xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
<</identifier> < < < < <</telecom> < < < < <</concept> < < < <</group> < < <</concept> < < < < <</options> <</option> <</group> </question> </group><url value="[uri]"/><!-- 0..1 Logical URI to reference this questionnaire (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the questionnaire --></identifier> <version value="[string]"/><!-- 0..1 Business version of the questionnaire --> <name value="[string]"/><!-- 0..1 Name for this questionnaire (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this questionnaire (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <description value="[markdown]"/><!-- 0..1 Natural language description of the questionnaire --> <purpose value="[markdown]"/><!-- 0..1 Why this questionnaire is defined --> <approvalDate value="[date]"/><!-- 0..1 When the questionnaire was approved by publisher --> <lastReviewDate value="[date]"/><!-- 0..1 When the questionnaire was last reviewed --> <effectivePeriod><!-- 0..1 Period When the questionnaire is expected to be used --></effectivePeriod> <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable) --></jurisdiction> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <code><!-- 0..* Coding Concept that represents the overall questionnaire --></code> <subjectType value="[code]"/><!-- 0..* Resource that can be subject of QuestionnaireResponse --> <item> <!--0..* Questions and sections within the Questionnaire --> <linkId value="[string]"/><!-- 1..1 Unique id for item in questionnaire --> <definition value="[uri]"/><!-- 0..1 ElementDefinition - details for the item --> <code><!--
0..* Coding Corresponding concept for this item in a terminology --></code> <prefix value="[string]"/><!-- 0..1 E.g. "1(a)", "2.5.3" --> <text value="[string]"/><!-- 0..1 Primary text for the item --> <type value="[code]"/><!-- 1..1 group | display | boolean | decimal | integer | date | dateTime + --> <enableWhen> <!-- 0..* Only allow data when --> <question value="[string]"/><!-- 1..1 Question that determines whether item is enabled --> <hasAnswer value="[boolean]"/><!--
0..1 Enable when answered or not --> <answer[x]><!--
0..1 boolean|decimal|integer|date|dateTime|time|string|uri| Attachment|Coding|Quantity|Reference(Any) Value question must have --></answer[x]> </enableWhen> <required value="[boolean]"/><!--
0..1 Whether the item must be included in data results --> <repeats value="[boolean]"/><!--
0..1 Whether the item may repeat --> <readOnly value="[boolean]"/><!--
0..1 Don't allow human editing --> <maxLength value="[integer]"/><!--
0..1 No more than this many characters --> <options><!--
0..1 Reference(ValueSet) Valueset containing permitted answers --></options> <option> <!--
0..* Permitted answer --> <value[x]><!-- 1..1 integer|date|time|string|Coding Answer value --></value[x]> </option> <initial[x]><!--
0..1 boolean|decimal|integer|date|dateTime|time|string|uri| Attachment|Coding|Quantity|Reference(Any) Default value when item is first rendered --></initial[x]> <item><!--
0..* Content as for Questionnaire.item Nested questionnaire items --></item> </item> </Questionnaire>
JSON Template
{ "resourceType" : "",{"resourceType" : "Questionnaire", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension
" " " " " " " " " " " " " " " " " " " " " " " " " }] }"url" : "<uri>", // Logical URI to reference this questionnaire (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the questionnaire "version" : "<string>", // Business version of the questionnaire "name" : "<string>", // Name for this questionnaire (computer friendly) "title" : "<string>", // Name for this questionnaire (human friendly) "status" : "<code>", // R! draft | active | retired | unknown "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date this was last changed "publisher" : "<string>", // Name of the publisher (organization or individual) "description" : "<markdown>", // Natural language description of the questionnaire "purpose" : "<markdown>", // Why this questionnaire is defined "approvalDate" : "<date>", // When the questionnaire was approved by publisher "lastReviewDate" : "<date>", // When the questionnaire was last reviewed "effectivePeriod" : { Period }, // When the questionnaire is expected to be used "useContext" : [{ UsageContext }], // Context the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for questionnaire (if applicable) "contact" : [{ ContactDetail }], // Contact details for the publisher "copyright" : "<markdown>", // Use and/or publishing restrictions "code" : [{ Coding }], // Concept that represents the overall questionnaire "subjectType" : ["<code>"], // Resource that can be subject of QuestionnaireResponse "item" : [{ // C? Questions and sections within the Questionnaire "linkId" : "<string>", // R! Unique id for item in questionnaire "definition" : "<uri>", // ElementDefinition - details for the item "code" : [{ Coding }], // C? Corresponding concept for this item in a terminology "prefix" : "<string>", // E.g. "1(a)", "2.5.3" "text" : "<string>", // Primary text for the item "type" : "<code>", // R! group | display | boolean | decimal | integer | date | dateTime + "enableWhen" : [{ // Only allow data when "question" : "<string>", // R! Question that determines whether item is enabled "hasAnswer" : <boolean>, // C? Enable when answered or not // answer[x]: Value question must have. One of these 12: "answerBoolean" : <boolean> "answerDecimal" : <decimal> "answerInteger" : <integer> "answerDate" : "<date>" "answerDateTime" : "<dateTime>" "answerTime" : "<time>" "answerString" : "<string>" "answerUri" : "<uri>" "answerAttachment" : { Attachment } "answerCoding" : { Coding } "answerQuantity" : { Quantity } "answerReference" : { Reference(Any) } }], "required" : <boolean>, // C? Whether the item must be included in data results "repeats" : <boolean>, // C? Whether the item may repeat "readOnly" : <boolean>, // C? Don't allow human editing "maxLength" : <integer>, // C? No more than this many characters "options" : { Reference(ValueSet) }, // C? Valueset containing permitted answers "option" : [{ // C? Permitted answer // value[x]: Answer value. One of these 5: "valueInteger" : <integer> "valueDate" : "<date>" "valueTime" : "<time>" "valueString" : "<string>" "valueCoding" : { Coding } }], // initial[x]: Default value when item is first rendered. One of these 12: "initialBoolean" : <boolean>, "initialDecimal" : <decimal>, "initialInteger" : <integer>, "initialDate" : "<date>", "initialDateTime" : "<dateTime>", "initialTime" : "<time>", "initialString" : "<string>", "initialUri" : "<uri>", "initialAttachment" : { Attachment }, "initialCoding" : { Coding }, "initialQuantity" : { Quantity }, "initialReference" : { Reference(Any) }, "item" : [{ Content as for Questionnaire.item }] // C? Nested questionnaire items }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:Questionnaire; 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:Questionnaire.url [ uri ]; # 0..1 Logical URI to reference this questionnaire (globally unique) fhir:Questionnaire.identifier [ Identifier ], ... ; # 0..* Additional identifier for the questionnaire fhir:Questionnaire.version [ string ]; # 0..1 Business version of the questionnaire fhir:Questionnaire.name [ string ]; # 0..1 Name for this questionnaire (computer friendly) fhir:Questionnaire.title [ string ]; # 0..1 Name for this questionnaire (human friendly) fhir:Questionnaire.status [ code ]; # 1..1 draft | active | retired | unknown fhir:Questionnaire.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:Questionnaire.date [ dateTime ]; # 0..1 Date this was last changed fhir:Questionnaire.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:Questionnaire.description [ markdown ]; # 0..1 Natural language description of the questionnaire fhir:Questionnaire.purpose [ markdown ]; # 0..1 Why this questionnaire is defined fhir:Questionnaire.approvalDate [ date ]; # 0..1 When the questionnaire was approved by publisher fhir:Questionnaire.lastReviewDate [ date ]; # 0..1 When the questionnaire was last reviewed fhir:Questionnaire.effectivePeriod [ Period ]; # 0..1 When the questionnaire is expected to be used fhir:Questionnaire.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support fhir:Questionnaire.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for questionnaire (if applicable) fhir:Questionnaire.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:Questionnaire.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:Questionnaire.code [ Coding ], ... ; # 0..* Concept that represents the overall questionnaire fhir:Questionnaire.subjectType [ code ], ... ; # 0..* Resource that can be subject of QuestionnaireResponse fhir:Questionnaire.item [ # 0..* Questions and sections within the Questionnaire fhir:Questionnaire.item.linkId [ string ]; # 1..1 Unique id for item in questionnaire fhir:Questionnaire.item.definition [ uri ]; # 0..1 ElementDefinition - details for the item fhir:Questionnaire.item.code [ Coding ], ... ; # 0..* Corresponding concept for this item in a terminology fhir:Questionnaire.item.prefix [ string ]; # 0..1 E.g. "1(a)", "2.5.3" fhir:Questionnaire.item.text [ string ]; # 0..1 Primary text for the item fhir:Questionnaire.item.type [ code ]; # 1..1 group | display | boolean | decimal | integer | date | dateTime + fhir:Questionnaire.item.enableWhen [ # 0..* Only allow data when fhir:Questionnaire.item.enableWhen.question [ string ]; # 1..1 Question that determines whether item is enabled fhir:Questionnaire.item.enableWhen.hasAnswer [ boolean ]; # 0..1 Enable when answered or not # Questionnaire.item.enableWhen.answer[x] : 0..1 Value question must have. One of these 12 fhir:Questionnaire.item.enableWhen.answerBoolean [ boolean ] fhir:Questionnaire.item.enableWhen.answerDecimal [ decimal ] fhir:Questionnaire.item.enableWhen.answerInteger [ integer ] fhir:Questionnaire.item.enableWhen.answerDate [ date ] fhir:Questionnaire.item.enableWhen.answerDateTime [ dateTime ] fhir:Questionnaire.item.enableWhen.answerTime [ time ] fhir:Questionnaire.item.enableWhen.answerString [ string ] fhir:Questionnaire.item.enableWhen.answerUri [ uri ] fhir:Questionnaire.item.enableWhen.answerAttachment [ Attachment ] fhir:Questionnaire.item.enableWhen.answerCoding [ Coding ] fhir:Questionnaire.item.enableWhen.answerQuantity [ Quantity ] fhir:Questionnaire.item.enableWhen.answerReference [ Reference(Any) ] ], ...; fhir:Questionnaire.item.required [ boolean ]; # 0..1 Whether the item must be included in data results fhir:Questionnaire.item.repeats [ boolean ]; # 0..1 Whether the item may repeat fhir:Questionnaire.item.readOnly [ boolean ]; # 0..1 Don't allow human editing fhir:Questionnaire.item.maxLength [ integer ]; # 0..1 No more than this many characters fhir:Questionnaire.item.options [ Reference(ValueSet) ]; # 0..1 Valueset containing permitted answers fhir:Questionnaire.item.option [ # 0..* Permitted answer # Questionnaire.item.option.value[x] : 1..1 Answer value. One of these 5 fhir:Questionnaire.item.option.valueInteger [ integer ] fhir:Questionnaire.item.option.valueDate [ date ] fhir:Questionnaire.item.option.valueTime [ time ] fhir:Questionnaire.item.option.valueString [ string ] fhir:Questionnaire.item.option.valueCoding [ Coding ] ], ...; # Questionnaire.item.initial[x] : 0..1 Default value when item is first rendered. One of these 12 fhir:Questionnaire.item.initialBoolean [ boolean ] fhir:Questionnaire.item.initialDecimal [ decimal ] fhir:Questionnaire.item.initialInteger [ integer ] fhir:Questionnaire.item.initialDate [ date ] fhir:Questionnaire.item.initialDateTime [ dateTime ] fhir:Questionnaire.item.initialTime [ time ] fhir:Questionnaire.item.initialString [ string ] fhir:Questionnaire.item.initialUri [ uri ] fhir:Questionnaire.item.initialAttachment [ Attachment ] fhir:Questionnaire.item.initialCoding [ Coding ] fhir:Questionnaire.item.initialQuantity [ Quantity ] fhir:Questionnaire.item.initialReference [ Reference(Any) ] fhir:Questionnaire.item.item [ See Questionnaire.item ], ... ; # 0..* Nested questionnaire items ], ...; ]
Changes since DSTU2
| Questionnaire | |
| Questionnaire.url |
|
| Questionnaire.name |
|
| Questionnaire.title |
|
| Questionnaire.status |
|
| Questionnaire.experimental |
|
| Questionnaire.description |
|
| Questionnaire.purpose |
|
| Questionnaire.approvalDate |
|
| Questionnaire.lastReviewDate |
|
| Questionnaire.effectivePeriod |
|
| Questionnaire.useContext |
|
| Questionnaire.jurisdiction |
|
| Questionnaire.contact |
|
| Questionnaire.copyright |
|
| Questionnaire.code |
|
| Questionnaire.item |
|
| Questionnaire.item.linkId |
|
| Questionnaire.item.definition |
|
| Questionnaire.item.code |
|
| Questionnaire.item.prefix |
|
| Questionnaire.item.type |
|
| Questionnaire.item.enableWhen |
|
| Questionnaire.item.enableWhen.question |
|
| Questionnaire.item.enableWhen.hasAnswer |
|
| Questionnaire.item.enableWhen.answer[x] |
|
| Questionnaire.item.readOnly |
|
| Questionnaire.item.maxLength |
|
| Questionnaire.item.options |
|
| Questionnaire.item.option |
|
| Questionnaire.item.option.value[x] |
|
| Questionnaire.item.initial[x] |
|
| Questionnaire.item.item |
|
| Questionnaire.telecom |
|
| Questionnaire.group.title |
|
| Questionnaire.group.concept |
|
| Questionnaire.group.group |
|
| Questionnaire.group.question |
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 6 tests that all execute ok. 4 fail round-trip testing and 5 r3 resources are invalid (109 errors). ).
Structure
| Name | Flags | Card. | Type |
Description
&
Constraints
|
|---|---|---|---|---|
|
I | DomainResource |
A
structured
set
of
questions
Elements defined in Ancestors: id , meta , implicitRules , language , text , contained , extension , modifierExtension |
|
| Σ | 0..1 | uri | Logical URI to reference this questionnaire (globally unique) |
![]() ![]() |
Σ | 0..* | Identifier |
Additional
identifier
for
|
|
Σ | 0..1 | string |
Business
version
of
|
| Σ | 0..1 | string | Name for this questionnaire (computer friendly) |
![]() ![]() | Σ | 0..1 | string | Name for this questionnaire (human friendly) |
![]() ![]() |
?! Σ | 1..1 | code |
draft
|
|
| ?! Σ | 0..1 | boolean | For testing purposes, not real usage |
![]() ![]() |
Σ | 0..1 | dateTime |
Date
this
|
|
Σ | 0..1 | string | Name of the publisher (organization or individual) |
![]() ![]() | 0..1 | markdown | Natural language description of the questionnaire | |
|
0..1 | markdown | Why this questionnaire is defined | |
![]() ![]() | 0..1 | date | When the questionnaire was approved by publisher | |
![]() ![]() | 0..1 | date | When the questionnaire was last reviewed | |
![]() ![]() | Σ | 0..1 | Period | When the questionnaire is expected to be used |
![]() ![]() | Σ | 0..* |
|
Context
the
content
is
intended
to
support
|
![]() ![]() | Σ | 0..* | CodeableConcept |
Intended
jurisdiction
for
questionnaire
(if
applicable)
Jurisdiction ValueSet ( Extensible ) |
![]() ![]() | Σ | 0..* | ContactDetail |
Contact
|
| 0..1 | markdown | Use and/or publishing restrictions | |
![]() ![]() | Σ | 0..* | Coding |
Concept
that
represents
the
overall
questionnaire
Questionnaire Question Codes ( Example ) |
![]() ![]() |
Σ | 0..* | code |
Resource
that
can
be
subject
of
QuestionnaireResponse
ResourceType ( Required ) |
|
I | 0..* | BackboneElement |
Questions
and
sections
within
the
Questionnaire
+ Default values can't be specified for groups + Required and repeat aren't permitted for display items + Only 'choice' items can have options + A question cannot have both option and options + Display items cannot have a "code" asserted + Maximum length can only be declared for simple question types + Group items must have nested items, display items cannot have nested items |
|
1..1 | string |
Unique
id
for
item
in
questionnaire
|
|
|
0..1 |
|
ElementDefinition
-
details
for
|
|
|
Σ I | 0..* | Coding |
Corresponding
concept
for
this
Questionnaire Question Codes ( Example ) |
|
0..1 | string | E.g. "1(a)", "2.5.3" | |
|
Σ | 0..1 |
|
Primary
text
for
the
|
|
1..1 |
|
group
QuestionnaireItemType ( Required ) |
|
|
?! Σ I | 0..* | BackboneElement |
Only
allow
data
when
+ enableWhen must contain either a 'answer' or a 'hasAnswer' element |
|
1..1 | string | Question that determines whether item is enabled | |
![]() ![]() ![]() ![]() | I | 0..1 |
|
Enable
when
answered
or
|
|
I | 0..1 |
Value
question
must
have
Questionnaire Answer Codes ( Example ) | |
![]() ![]() ![]() ![]() ![]() |
boolean | |||
| decimal | |||
|
integer | |||
|
date
|
|||
| dateTime | |||
| time | |||
|
string | |||
|
uri | |||
| Attachment | |||
| Coding | |||
|
Quantity | |||
|
Reference
(
|
|||
|
I | 0..1 | boolean |
Whether
the
|
|
I | 0..1 | boolean |
Whether
the
|
|
I | 0..1 | boolean | Don't allow human editing |
![]() ![]() ![]() | I | 0..1 | integer | No more than this many characters |
![]() ![]() ![]() |
I | 0..1 | Reference ( ValueSet ) | Valueset containing permitted answers |
|
I | 0..* |
|
Permitted
answer
|
| 1..1 |
Answer
value
Questionnaire Answer Codes ( Example ) |
||
| integer | |||
| date | |||
| time | |||
![]() ![]() ![]() ![]() ![]() | string | |||
![]() ![]() ![]() ![]() ![]() | Coding | |||
![]() ![]() ![]() | I | 0..1 |
Default
value
when
item
is
first
rendered
Questionnaire Answer Codes ( Example ) | |
![]() ![]() ![]() ![]() | boolean | |||
![]() ![]() ![]() ![]() | decimal | |||
![]() ![]() ![]() ![]() | integer | |||
![]() ![]() ![]() ![]() | date | |||
![]() ![]() ![]() ![]() | dateTime | |||
![]() ![]() ![]() ![]() | time | |||
![]() ![]() ![]() ![]() | string | |||
![]() ![]() ![]() ![]() | uri | |||
![]() ![]() ![]() ![]() | Attachment | |||
![]() ![]() ![]() ![]() | Coding | |||
![]() ![]() ![]() ![]() | Quantity | |||
![]() ![]() ![]() ![]() | Reference ( Any ) | |||
![]() ![]() ![]() | I | 0..* |
see
|
Nested
questionnaire
|
Documentation
for
this
format
|
||||
XML Template
<<Questionnaire xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
<</identifier> < < < < <</telecom> < < < < <</concept> < < < <</group> < < <</concept> < < < < <</options> <</option> <</group> </question> </group><url value="[uri]"/><!-- 0..1 Logical URI to reference this questionnaire (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the questionnaire --></identifier> <version value="[string]"/><!-- 0..1 Business version of the questionnaire --> <name value="[string]"/><!-- 0..1 Name for this questionnaire (computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this questionnaire (human friendly) --> <status value="[code]"/><!-- 1..1 draft | active | retired | unknown --> <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage --> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <description value="[markdown]"/><!-- 0..1 Natural language description of the questionnaire --> <purpose value="[markdown]"/><!-- 0..1 Why this questionnaire is defined --> <approvalDate value="[date]"/><!-- 0..1 When the questionnaire was approved by publisher --> <lastReviewDate value="[date]"/><!-- 0..1 When the questionnaire was last reviewed --> <effectivePeriod><!-- 0..1 Period When the questionnaire is expected to be used --></effectivePeriod> <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for questionnaire (if applicable) --></jurisdiction> <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <code><!-- 0..* Coding Concept that represents the overall questionnaire --></code> <subjectType value="[code]"/><!-- 0..* Resource that can be subject of QuestionnaireResponse --> <item> <!--0..* Questions and sections within the Questionnaire --> <linkId value="[string]"/><!-- 1..1 Unique id for item in questionnaire --> <definition value="[uri]"/><!-- 0..1 ElementDefinition - details for the item --> <code><!--
0..* Coding Corresponding concept for this item in a terminology --></code> <prefix value="[string]"/><!-- 0..1 E.g. "1(a)", "2.5.3" --> <text value="[string]"/><!-- 0..1 Primary text for the item --> <type value="[code]"/><!-- 1..1 group | display | boolean | decimal | integer | date | dateTime + --> <enableWhen> <!-- 0..* Only allow data when --> <question value="[string]"/><!-- 1..1 Question that determines whether item is enabled --> <hasAnswer value="[boolean]"/><!--
0..1 Enable when answered or not --> <answer[x]><!--
0..1 boolean|decimal|integer|date|dateTime|time|string|uri| Attachment|Coding|Quantity|Reference(Any) Value question must have --></answer[x]> </enableWhen> <required value="[boolean]"/><!--
0..1 Whether the item must be included in data results --> <repeats value="[boolean]"/><!--
0..1 Whether the item may repeat --> <readOnly value="[boolean]"/><!--
0..1 Don't allow human editing --> <maxLength value="[integer]"/><!--
0..1 No more than this many characters --> <options><!--
0..1 Reference(ValueSet) Valueset containing permitted answers --></options> <option> <!--
0..* Permitted answer --> <value[x]><!-- 1..1 integer|date|time|string|Coding Answer value --></value[x]> </option> <initial[x]><!--
0..1 boolean|decimal|integer|date|dateTime|time|string|uri| Attachment|Coding|Quantity|Reference(Any) Default value when item is first rendered --></initial[x]> <item><!--
0..* Content as for Questionnaire.item Nested questionnaire items --></item> </item> </Questionnaire>
JSON Template
{ "resourceType" : "",{"resourceType" : "Questionnaire", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension
" " " " " " " " " " " " " " " " " " " " " " " " " }] }"url" : "<uri>", // Logical URI to reference this questionnaire (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the questionnaire "version" : "<string>", // Business version of the questionnaire "name" : "<string>", // Name for this questionnaire (computer friendly) "title" : "<string>", // Name for this questionnaire (human friendly) "status" : "<code>", // R! draft | active | retired | unknown "experimental" : <boolean>, // For testing purposes, not real usage "date" : "<dateTime>", // Date this was last changed "publisher" : "<string>", // Name of the publisher (organization or individual) "description" : "<markdown>", // Natural language description of the questionnaire "purpose" : "<markdown>", // Why this questionnaire is defined "approvalDate" : "<date>", // When the questionnaire was approved by publisher "lastReviewDate" : "<date>", // When the questionnaire was last reviewed "effectivePeriod" : { Period }, // When the questionnaire is expected to be used "useContext" : [{ UsageContext }], // Context the content is intended to support "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for questionnaire (if applicable) "contact" : [{ ContactDetail }], // Contact details for the publisher "copyright" : "<markdown>", // Use and/or publishing restrictions "code" : [{ Coding }], // Concept that represents the overall questionnaire "subjectType" : ["<code>"], // Resource that can be subject of QuestionnaireResponse "item" : [{ // C? Questions and sections within the Questionnaire "linkId" : "<string>", // R! Unique id for item in questionnaire "definition" : "<uri>", // ElementDefinition - details for the item "code" : [{ Coding }], // C? Corresponding concept for this item in a terminology "prefix" : "<string>", // E.g. "1(a)", "2.5.3" "text" : "<string>", // Primary text for the item "type" : "<code>", // R! group | display | boolean | decimal | integer | date | dateTime + "enableWhen" : [{ // Only allow data when "question" : "<string>", // R! Question that determines whether item is enabled "hasAnswer" : <boolean>, // C? Enable when answered or not // answer[x]: Value question must have. One of these 12: "answerBoolean" : <boolean> "answerDecimal" : <decimal> "answerInteger" : <integer> "answerDate" : "<date>" "answerDateTime" : "<dateTime>" "answerTime" : "<time>" "answerString" : "<string>" "answerUri" : "<uri>" "answerAttachment" : { Attachment } "answerCoding" : { Coding } "answerQuantity" : { Quantity } "answerReference" : { Reference(Any) } }], "required" : <boolean>, // C? Whether the item must be included in data results "repeats" : <boolean>, // C? Whether the item may repeat "readOnly" : <boolean>, // C? Don't allow human editing "maxLength" : <integer>, // C? No more than this many characters "options" : { Reference(ValueSet) }, // C? Valueset containing permitted answers "option" : [{ // C? Permitted answer // value[x]: Answer value. One of these 5: "valueInteger" : <integer> "valueDate" : "<date>" "valueTime" : "<time>" "valueString" : "<string>" "valueCoding" : { Coding } }], // initial[x]: Default value when item is first rendered. One of these 12: "initialBoolean" : <boolean>, "initialDecimal" : <decimal>, "initialInteger" : <integer>, "initialDate" : "<date>", "initialDateTime" : "<dateTime>", "initialTime" : "<time>", "initialString" : "<string>", "initialUri" : "<uri>", "initialAttachment" : { Attachment }, "initialCoding" : { Coding }, "initialQuantity" : { Quantity }, "initialReference" : { Reference(Any) }, "item" : [{ Content as for Questionnaire.item }] // C? Nested questionnaire items }] }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:Questionnaire; 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:Questionnaire.url [ uri ]; # 0..1 Logical URI to reference this questionnaire (globally unique) fhir:Questionnaire.identifier [ Identifier ], ... ; # 0..* Additional identifier for the questionnaire fhir:Questionnaire.version [ string ]; # 0..1 Business version of the questionnaire fhir:Questionnaire.name [ string ]; # 0..1 Name for this questionnaire (computer friendly) fhir:Questionnaire.title [ string ]; # 0..1 Name for this questionnaire (human friendly) fhir:Questionnaire.status [ code ]; # 1..1 draft | active | retired | unknown fhir:Questionnaire.experimental [ boolean ]; # 0..1 For testing purposes, not real usage fhir:Questionnaire.date [ dateTime ]; # 0..1 Date this was last changed fhir:Questionnaire.publisher [ string ]; # 0..1 Name of the publisher (organization or individual) fhir:Questionnaire.description [ markdown ]; # 0..1 Natural language description of the questionnaire fhir:Questionnaire.purpose [ markdown ]; # 0..1 Why this questionnaire is defined fhir:Questionnaire.approvalDate [ date ]; # 0..1 When the questionnaire was approved by publisher fhir:Questionnaire.lastReviewDate [ date ]; # 0..1 When the questionnaire was last reviewed fhir:Questionnaire.effectivePeriod [ Period ]; # 0..1 When the questionnaire is expected to be used fhir:Questionnaire.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support fhir:Questionnaire.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for questionnaire (if applicable) fhir:Questionnaire.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:Questionnaire.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:Questionnaire.code [ Coding ], ... ; # 0..* Concept that represents the overall questionnaire fhir:Questionnaire.subjectType [ code ], ... ; # 0..* Resource that can be subject of QuestionnaireResponse fhir:Questionnaire.item [ # 0..* Questions and sections within the Questionnaire fhir:Questionnaire.item.linkId [ string ]; # 1..1 Unique id for item in questionnaire fhir:Questionnaire.item.definition [ uri ]; # 0..1 ElementDefinition - details for the item fhir:Questionnaire.item.code [ Coding ], ... ; # 0..* Corresponding concept for this item in a terminology fhir:Questionnaire.item.prefix [ string ]; # 0..1 E.g. "1(a)", "2.5.3" fhir:Questionnaire.item.text [ string ]; # 0..1 Primary text for the item fhir:Questionnaire.item.type [ code ]; # 1..1 group | display | boolean | decimal | integer | date | dateTime + fhir:Questionnaire.item.enableWhen [ # 0..* Only allow data when fhir:Questionnaire.item.enableWhen.question [ string ]; # 1..1 Question that determines whether item is enabled fhir:Questionnaire.item.enableWhen.hasAnswer [ boolean ]; # 0..1 Enable when answered or not # Questionnaire.item.enableWhen.answer[x] : 0..1 Value question must have. One of these 12 fhir:Questionnaire.item.enableWhen.answerBoolean [ boolean ] fhir:Questionnaire.item.enableWhen.answerDecimal [ decimal ] fhir:Questionnaire.item.enableWhen.answerInteger [ integer ] fhir:Questionnaire.item.enableWhen.answerDate [ date ] fhir:Questionnaire.item.enableWhen.answerDateTime [ dateTime ] fhir:Questionnaire.item.enableWhen.answerTime [ time ] fhir:Questionnaire.item.enableWhen.answerString [ string ] fhir:Questionnaire.item.enableWhen.answerUri [ uri ] fhir:Questionnaire.item.enableWhen.answerAttachment [ Attachment ] fhir:Questionnaire.item.enableWhen.answerCoding [ Coding ] fhir:Questionnaire.item.enableWhen.answerQuantity [ Quantity ] fhir:Questionnaire.item.enableWhen.answerReference [ Reference(Any) ] ], ...; fhir:Questionnaire.item.required [ boolean ]; # 0..1 Whether the item must be included in data results fhir:Questionnaire.item.repeats [ boolean ]; # 0..1 Whether the item may repeat fhir:Questionnaire.item.readOnly [ boolean ]; # 0..1 Don't allow human editing fhir:Questionnaire.item.maxLength [ integer ]; # 0..1 No more than this many characters fhir:Questionnaire.item.options [ Reference(ValueSet) ]; # 0..1 Valueset containing permitted answers fhir:Questionnaire.item.option [ # 0..* Permitted answer # Questionnaire.item.option.value[x] : 1..1 Answer value. One of these 5 fhir:Questionnaire.item.option.valueInteger [ integer ] fhir:Questionnaire.item.option.valueDate [ date ] fhir:Questionnaire.item.option.valueTime [ time ] fhir:Questionnaire.item.option.valueString [ string ] fhir:Questionnaire.item.option.valueCoding [ Coding ] ], ...; # Questionnaire.item.initial[x] : 0..1 Default value when item is first rendered. One of these 12 fhir:Questionnaire.item.initialBoolean [ boolean ] fhir:Questionnaire.item.initialDecimal [ decimal ] fhir:Questionnaire.item.initialInteger [ integer ] fhir:Questionnaire.item.initialDate [ date ] fhir:Questionnaire.item.initialDateTime [ dateTime ] fhir:Questionnaire.item.initialTime [ time ] fhir:Questionnaire.item.initialString [ string ] fhir:Questionnaire.item.initialUri [ uri ] fhir:Questionnaire.item.initialAttachment [ Attachment ] fhir:Questionnaire.item.initialCoding [ Coding ] fhir:Questionnaire.item.initialQuantity [ Quantity ] fhir:Questionnaire.item.initialReference [ Reference(Any) ] fhir:Questionnaire.item.item [ See Questionnaire.item ], ... ; # 0..* Nested questionnaire items ], ...; ]
Changes since DSTU2
| Questionnaire | |
| Questionnaire.url |
|
| Questionnaire.name |
|
| Questionnaire.title |
|
| Questionnaire.status |
|
| Questionnaire.experimental |
|
| Questionnaire.description |
|
| Questionnaire.purpose |
|
| Questionnaire.approvalDate |
|
| Questionnaire.lastReviewDate |
|
| Questionnaire.effectivePeriod |
|
| Questionnaire.useContext |
|
| Questionnaire.jurisdiction |
|
| Questionnaire.contact |
|
| Questionnaire.copyright |
|
| Questionnaire.code |
|
| Questionnaire.item |
|
| Questionnaire.item.linkId |
|
| Questionnaire.item.definition |
|
| Questionnaire.item.code |
|
| Questionnaire.item.prefix |
|
| Questionnaire.item.type |
|
| Questionnaire.item.enableWhen |
|
| Questionnaire.item.enableWhen.question |
|
| Questionnaire.item.enableWhen.hasAnswer |
|
| Questionnaire.item.enableWhen.answer[x] |
|
| Questionnaire.item.readOnly |
|
| Questionnaire.item.maxLength |
|
| Questionnaire.item.options |
|
| Questionnaire.item.option |
|
| Questionnaire.item.option.value[x] |
|
| Questionnaire.item.initial[x] |
|
| Questionnaire.item.item |
|
| Questionnaire.telecom |
|
| Questionnaire.group.title |
|
| Questionnaire.group.concept |
|
| Questionnaire.group.group |
|
| Questionnaire.group.question |
|
See the Full Difference for further information
This analysis is available as XML or JSON .
See R2 <--> R3 Conversion Maps (status = 6 tests that all execute ok. 4 fail round-trip testing and 5 r3 resources are invalid (109 errors). ).
Alternate
definitions:
Schema
/
Schematron
,
Resource
Profile
Master
Definition
(
XML
,
JSON
),
Questionnaire
XML
Schema
/
Schematron
(for
)
+
JSON
Schema
,
ShEx
(for
Turtle
)
| Path | Definition | Type | Reference |
|---|---|---|---|
| Questionnaire.status |
|
Required |
|
| Questionnaire.jurisdiction |
|
|
|
|
Questionnaire.code
Questionnaire.item.code |
Codes
for
|
Example | Questionnaire Question Codes |
| Questionnaire.subjectType |
|
|
|
| Questionnaire.item.type |
|
Required |
|
|
Questionnaire.item.enableWhen.answer[x]
Questionnaire.item.initial[x] | Allowed values to answer questions. | Example | Questionnaire Answer Codes |
| Questionnaire.item.option.value[x] | Allowed values to answer questions. | Example | Questionnaire Answer Codes |
on
on
Questionnaire.item:
(type
in
('boolean'
|
'decimal'
|
'integer'
|
'string'
|
'text'
|
'url'))
or
maxLength.empty()
)
:
on
Questionnaire.item:
on
Questionnaire.item:
option.empty()
or
options.empty()
)
on
Questionnaire.item:
(type
='choice'
or
type
=
'open-choice')
or
(options.empty()
and
option.empty())
)
on
Questionnaire.item:
type!='display'
or
(required.empty()
and
repeats.empty())
)
on
on
Questionnaire.item:
(type!='group'
and
on
Questionnaire.item:
type!='display'
or
readOnly.empty()
)
,
CDA
Documents
frequently
used
named
sections
with
Observations
to
model
Questionnaires.
Such
use
cases
should
now
There
is
considerable
overlap
between
the
information
covered
by
Questionnaires
and
other
Resources
(especially
FamilyMemberHistory
,
MedicationStatement
,
Observation
,
Procedure
,
etc.):
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
may
not
find
all
desired
data,
depending
on
how
the
questions
may
have
been
phrased
or
encoded
over
time
or
by
different
clinicians.
Moreover,
interoperability
of
such
Questionnaires
is
limited
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
other,
more
specific,
Resources
specific
resources
increases
the
ability
and
consistency
with
which
it
can
be
understood
and
queried.
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",
that
can
then
result
in
the
creation
of
an
Observation
with
the
appropriate
Observation.code
and
the
specified
answer
as
the
Observation.valueQuantity
can
be
created.
.
A
Questionnaire
is
built
out
of
three
components:
two
components,
Questionnaire
and
item:
concept
type
text
type
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
expected
to
be
introduced
as
handled
using
extensions.
There
are
three
different
"identifying"
elements
within
Questionnaire:
identifier
,
id
and
linkId
.
Each
serves
very
distinct
purposes:
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.
There
are
two
mechanisms
defined
in
the
specification
for
linking
a
Question
(or
Group)
Items
can
be
directly
linked
to
an
ElementDefinition
using
Questionnaire.item.definition
which
provides
details
for
the
item.
If
a
standardized
definition
is
provided,
then
the
following
element
values
can
be
derived
from
the
definition:
Any
information
provided
in
these
elements
overrides
the
information
from
the
definition.
The
url
refers
to
a
an
individual
question,
ElementDefinition
in
either
a
group
of
questions
StructureDefinition
or
even
the
questionnaire
as
a
whole
to
be
associated
DataElement
,
and
always
starts
with
the
canonical
URL
for
the
target
resource.
When
referring
to
a
pre-defined
terminology
of
questions
and
question
groups
such
as
LOINC
The
deReference
extension
allows
StructureDefinition,
a
question
or
group
fragment
identifier
is
used
to
be
associated
with
specify
the
DataElement
(DE)
resource
that
formally
defines
element
definition
by
its
id
(Element.id).
E.g.
http://hl7.org/fhir/StructureDefinition/Observation#Observation.value[x].
In
the
data
element.
Linking
to
formal
definitions
absence
of
a
question
allows
data
captured
by
distinct
questionnaires
to
be
compared.
If
systems
have
fragment
identifier,
the
necessary
mappings
to
first/root
element
definition
in
the
formal
definition,
linkages
to
formal
target
is
the
matching
element
definition.
Note that LOINC codes implicitly define DataElement resources.
The definitions may also be used to automatically pre-populate answers, or extract data from a corresponding QuestionnaireResponse resource.
NOTE:
Even
if
a
standard
question
definitions
are
referenced
using
concept
or
the
deReference
extension,
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
may
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
may
not
be
able
to
to
render
or
use
the
Questionnaire.
If
an
external
reference
(
concept
or
deReference
extension)
definition
is
included
along
with
question
information
such
as
question
text,
data
type
or
value
set,
it
is
expected
that
the
content
for
the
question
and
the
referenced
definition
would
be
in
alignment.
However,
FHIR
does
not
dictate
what
degree
of
alignment
is
required;
e.g.
Does
the
question
text
need
to
match
exactly?
Is
it
legitimate
for
a
question
to
constrain
the
allowed
value
set
of
possible
answers?
These
rules
will
need
to
be
established
within
implementation
environments.
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) |
Many
questionnaires
place
constraints
on
the
allowed
list
of
values
for
a
given
question.
FHIR
supports
this
notion
through
the
...question.choices
item.options
or
the
item.option
element.
However,
rather
The
"option"
mechanism
is
simplest
-
all
options
are
listed
in-line
with
the
question
using
the
item.option
element.
Maintenance
of
the
set
of
permitted
question
answers
involves
maintenance
of
the
questionnaire
itself.
The
"options"
mechanism
is
more
sophisticated.
Rather
than
listing
the
choices
options
directly,
the
choices
item.options
element
points
to
a
ValueSet
resource.
This
approach
adds
complexity
for
questionnaires
having
a
simple
list
of
strings
as
choices
for
a
question,
but
provides
several
benefits:
benefits,
including:
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
are
referenced
by
the
individual
questions
as
necessary.
Alternatively,
the
item.options
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.
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 part of the questionnaire:
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.
While
not
defined
(yet)
at
the
international
level,
extensions
may
be
defined
to
perform
mathematical
functions
Many
questionnaires
involve
computations
on
questionnaire
responses.
For
example,
answers,
e.g.
tabulating
scores.
One
extension
that
is
defined
that
may
be
useful
in
this
process
is
the
Ordinal
extension.
This
allows
a
To
help
with
associating
numeric
value
values
to
be
associated
with
a
coded
data
element.
There
answers,
there
are
two
extensions
defined
-
one
for
defining
the
numeric
weighting
of
a
code
defined
in
a
value
set
-
valueset-ordinalValue
and
the
other
is
for
defining
a
code
that
can
appear
within
a
Coding
itself
-
iso21090-CO-value
.
The
core
elements
defined
in
the
questionnaire
resource
In
addition,
there
are
sufficient
extensions
for
simple
questionnaires.
defining
the
dynamic
value
of
an
element
usings
expressions.
For
more
sophisticated
capabilities,
a
number
of
"common"
extensions
are
defined
in
information,
see
the
Questionnaire
Core
extensions
Using
Expressions
and
the
Element
extensions
Documentation
Template
profiles.
For
example,
strict
control
over
allowed
number
of
conditions,
conditional
display
of
questionnaire
content,
etc.
The
conditional
display
extension
[enable-when]
can
be
used
to
enable
groups
nested
beneath
a
question
based
on
the
selection
of
a
specific
answer,
giving
topics
in
the
behavior
of
"questions
under
answers"
where
this
sort
of
more
sophisticated
behavior
is
needed.
Clinical
Reasoning
module.
Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
| Name | Type | Description |
| In Common |
| code | token |
A
code
that
corresponds
to
|
|
|
| date | date |
|
Questionnaire.date | |
| 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 |
|
Questionnaire.identifier | |
| jurisdiction | token | Intended jurisdiction for the questionnaire | Questionnaire.jurisdiction | |
| name | string | Computationally friendly name of the questionnaire | Questionnaire.name | |
| publisher | string |
|
Questionnaire.publisher | |
| status | token | The current status of the questionnaire | Questionnaire.status | |
| title | string |
|
Questionnaire.title | |
| url | uri |
The
uri
that
identifies
the
|
|
|
| version |
|
The business version of the questionnaire | Questionnaire.version |