Structured Data Capture
4.0.0-ballot - STU 4 ballot International flag

Structured Data Capture, published by HL7 International / FHIR Infrastructure. This guide is not an authorized publication; it is the continuous build for version 4.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/sdc/ and changes regularly. See the Directory of published versions

Artifact List

Page standards status: Informative

This page provides a list of the FHIR artifacts defined as part of this implementation guide.

Global profiles

There are no Global profiles defined

Behavior: Capability Statements

The following artifacts define the specific capabilities that different types of systems are expected to have in order to comply with this implementation guide. Systems conforming to this implementation guide are expected to declare conformance to one or more of the following capability statements.

SDC Form Archiver

SDC System for archiving and retrieving the completed forms

SDC Form Designer

SDC Form authoring system

SDC Form Filler

SDC System for completing forms

SDC Form Manager

SDC Repository for forms

SDC Form Receiver

SDC Repository for completed forms

SDC Form Response Manager

SDC Form response management system

Behavior: Operation Definitions

These are custom operations that can be supported by and/or invoked by systems conforming to this implementation guide.

Adaptive questionnaire next question

Returns the next question or set of questions for an adaptive questionnaire

Assemble Modular Questionnaire Operation

The $assemble operation takes a modular questionnaire (one that references sub-questionnaires and/or relies on definition elements to contain the content for item definitions) and produces the equivalent fully-inline Questionnaire. Full details on the process can be found here.

Populate HTML Questionnaire

Generates an HTML representation of the Questionnaire as a form, possibly partially populated with data

Populate Questionnaire

Generates a QuestionnaireResponse from a Questionnaire, possibly with data partially populated

Populate Questionnaire Link

Generates a link to an HTML page that can be used to complete the Questionnaire, possibly partially populated with data

Questionnaire process response

Allows submission of a QuestionnaireRespone for 'processing' by the target server

Questionnaire response extract to resource(s)

Converts a QuestionnaireResponse to a clinical or administrative resource or a Transaction Bundle of them

Behavior: Search Parameters

These define the properties by which a RESTful server can be searched. They can also be used for sorting and including related resources.

Questionnaire Assembled From Search Parameter

Allows searching by 'assembledFrom' extension on a Questionnaire

Questionnaire Is Modular Search Parameter

Allows searching by 'assemble-expectation' extension on a Questionnaire

Questionnaire Item definition

Allows searching by 'definition' element within a Questionnaire's items

Structures: Logical Models

These define data models that represent the domain covered by this implementation guide in more business-friendly terms than the underlying FHIR resources.

Patient Gender

Data element SDC Profile Example

SDC Question Library

An example library of questions showing how questions can be compiled into a library for use by modular questionnaires

Structures: Questionnaires

These define forms used by systems conforming to this implementation guide to capture or expose data to end users.

Complex Extract Demonstration - Definition

Complex definition-based extraction example

Complex Extract Demonstration - StructureMap

Complex StructureMap extraction questionnaire example

Complex Extract Demonstration - Template

Complex template-based extraction example

Complex Extract Demonstration - Template Bundle

Example Questionnaire demonstrating extraction using the template approach

Structures: Abstract Profiles

These are profiles on resources or data types that describe patterns used by other profiles, but cannot be instantiated directly. I.e. instances can conform to profiles based on these abstract profiles, but do not declare conformance to the abstract profiles themselves.

SDC Questionnaire Common Elements

Defines common elements for all SDC Questionnaires (regular or adaptive).

SDC Questionnaire Response Common Elements

Defines common elements for all SDC Questionnaire Responses (regular or adaptive).

Structures: Resource Profiles

These define constraints on FHIR resources for systems conforming to this implementation guide.

Adaptive Questionnaire

Defines the metadata that should be present when embedding a adaptive Questionnaire as part of a QuestionnaireResponse

Adaptive Questionnaire - search

Describes the elements that should be exposed in a response to a search for adaptive questionnaires.

Adaptive Questionnaire Response

Defines how the questionnaire response resource is used to reflect form data within the ONC's Structured Data Capture standard.

Advanced Behavior Questionnaire

Defines additional capabilities for controlling data entry and calculating values within the questionnaire.

Advanced Rendering Questionnaire

Defines additional capabilities for controlling the rendering of the questionnaire.

Extractable Questionnaire - Definition

Defines elements that allow conversion of a QuestionnaireResponse to a FHIR resource or Bundle of FHIR resources using the Definition-based extraction mechanism

Extractable Questionnaire - Observation

Defines elements that allow conversion of a QuestionnaireResponse to an Observation resource or Bundle of Observation resources using the Observation-based extraction mechanism

Extractable Questionnaire - StructureMap

Defines elements that allow conversion of a QuestionnaireResponse to a FHIR resource or Bundle of FHIR resources using the StructureMap-based extraction mechanism

Extractable Questionnaire - Template

Defines elements that allow conversion of a QuestionnaireResponse to a FHIR resource or Bundle of FHIR resources using the Template-based extraction mechanism

Next question operation input parameters

Profile used to validate the parameters that are the input of the 'next question' adaptive questionnaire operation

Next question operation output parameters

Profile used to validate the parameters that are the output of the 'next question' adaptive questionnaire operation

Populatable Questionnaire - Expression

Defines elements that support auto-population and pre-population of questionnaires using the Expression-based population mechanism

Populatable Questionnaire - Observation

Defines elements that support auto-population and pre-population of questionnaires using the Observation-based population mechanism

Populatable Questionnaire - StructureMap

Defines elements that support auto-population and pre-population of questionnaires using the StructureMap-based population mechanism

Populate operation input parameters

Profile used to validate the parameters that are the input of the $populate, $populate-html, and $populate-link questionnaire operations

Populate operation output parameters

Profile used to validate the parameters that are the output of the $populate questionnaire operation

Populate-html operation output parameters

Profile used to validate the parameters that are the output of the $populate-link questionnaire operation

Populate-link operation output parameters

Profile used to validate the parameters that are the output of the $populate-link questionnaire operation

Questionnaire Service Request

Defines how ServiceRequest is used to ask for a Questionnaire to be completed

Questionnaire assemble output Parameters profile

Profile used to validate the parameters that are the output of the 'assemble' questionnaire operation

Questionnaire extract operation input parameters

Profile used to validate the parameters that are the input of the 'extract' questionnaire response operation

Questionnaire process response operation input parameters

Profile used to validate the parameters that are the input of the 'process response' questionnaire operation

SDC Base Questionnaire

Sets minimum expectations for questionnaire support for SDC-conformant systems for 'standard' (non-adaptive) Questionnaires, regardless of which SDC capabilities they're making use of.

SDC Code System

Defines how CodeSystem is used to reflect code lists found in data element defintions and form definitions to be used within the ONC's Structured Data Capture standard.

SDC Library

Defines how a Library is used as a logic computable library within the ONC's Structured Data Capture standard.

SDC Modular Questionnaire

Indicates expectations for questionnaires that draw their item content (not just codes) from other resources

SDC Standard Questionnaire Response

Defines how the questionnaire response resource is used to reflect form data within SDC for 'standard' (i.e. non-adaptive) forms.

SDC Value Set

Defines how ValueSet is used to reflect code lists found in data element defintions and form definitions to be used within the ONC's Structured Data Capture standard.

Search Questionnaire

Describes the elements that should be exposed in a response to a search for questionnaires.

Task Questionnaire

Defines how Task is used to ask for a Questionnaire to be completed

Structures: Data Type Profiles

These define constraints on FHIR data types for systems conforming to this implementation guide.

SDC Usage Context

Constraints on the codes and values of UsageContext to help ensure consistent usage in SDC Questionnaires

Structures: Extension Definitions

These define constraints on FHIR data types for systems conforming to this implementation guide.

Answer Context Expression

A FHIR Query that resolves to one or more resources that can be displayed to the user to help provide context for answering a question

Answer Expression

An expression (FHIRPath, CQL or FHIR Query) that resolves to a list of permitted answers for a question item.

Answer Options Toggle Expression

A complex expression that provides a list of the allowed options that should be enabled or disabled based on the evaluation of a provided expression.

Assemble Context extension

This extension, used on a subQuestionnaire, indicates a FHIRPath variable that must be present in context when the subQuestionnaire is referenced.

Assembled From Questionnaire

This extension will appear on the root of an assembled Questionnaire and identifies the subQuestionnaires (including version) that were used as part of the assembly process.

Assembly Expectations for Questionnaire

If present, indicates that this questionnaire has expectations with respect to assembly. Specifically, indicates whether this form requires assembly (i.e. it can't be used directly without invoking the $assemble operation operation on it) and/or whether it is intended for use only as a 'child' in an assembly process. The assembly processs might mean filling in item metadata based on information looked up from item.definitions and/or retrieving sub-questionnaires pointed to by sub-questionnaire extensions.

Calculated Expression

Calculated value for a question answer as determined by an evaluated expression

Candidate Answers Expression

A FHIRPath or CQL Expression, or FHIR Query that resolves to a list of candidate answers (usually based on other answers in the questionnaire or based on information within the health record) for the question item or that establishes context for a group item

Choice column

Provides guidelines for rendering multi-column choices

Code system for other units

If the questionnaire-unit-open extension indicates that additional units other than the set of options provided for the question are allowed, this indicates the code system those units are expected to be drawn from. This extension SHOULD be present on any question where questionnaire-unit-open allows additional coded values.

Collapsible

Indicates that the child items of an item are displayed in collapsible form (either collapsed or expanded)

Enable when expression

An expression that returns a boolean value for whether to enable the item

Endpoint

The base URL for the server(s) to which questionnaire response associated with this questionnaire should be submitted. If multiple repetitions are present, the completed form should be sent to all listed endpoints.

Entry mode

An indication of how the user should be prompted for answers when completing a QuestionnaireResponse

Extract - Allocate new uuid

Allocate a new uuid in a named variable for use in extraction. This is usually used to set the fullUrl for a resource in the output extraction bundle, and then referenced in other resources within that transaction bundle (via fhirpath expressions).

Extract Definition

Specifies the resource type/profile for the definition based extraction of a resource and optionally the fullUrl and other Bundle.entry.request properties as needed.

Extract Definition - Extract value

Provide either a fixed value, or an expression to evaluate, to be used as the value for the extracted resource's property based on the definition value.

Extract Definition - Resource (legacy)

Specifies a query or other expression that identifies the resource (or set of resources for a repeating item) to be extracted from this item once the QuestionnaireResponse is complete. This extension is deprecated in favor of the DefinitionExtractExtension extension.

Extract Observation

If true, indicates that the observation-based approach should be used to extract either the particular item (if extension is defined on an individual question or group based on the code present) or all items in the questionnaire (if defined at the questionnaire root and if they have a code present)

Extract Observation - Category

Indicates the Observation.category value(s) that should appear on extracted Observations for the entire Questionnaire or for the current item and descendant items.

Extract StructureMap - Target structure map

StructureMaps that have QuestionnaireResponses of this Questionnaire as 'source'- i.e. that can be used to create other artifacts from QuestionnaireResponses that are valid against this Questionnaire.

Extract Template - Bundle

Specifies a reference to a contained transaction bundle resource template to be extracted from this item once the QuestionnaireResponse is complete. The template will be cloned into the output extraction bundle, and any template values will be replaced with the values from the QuestionnaireResponse.

Extract Template - Context

Establishes mapping context for replacing template content based on a fhirpath expression. This will be used by any child properties as the context for any other templateExtractContext or templateExtractValue extensions. If the name property on an expression is included, it will be also available to child extension evaluation. If the expression evaluates to no results, then this element in the templated resource will be removed, and futher processing of it's children is not required.

Extract Template - Extract value

Provides an expression to evaluate any value(s) to replace in the given template extraction context. If no result is evaluated, the element in the templated resource will be removed, and futher processing of it's children is not required.

Extract Template - Resource

Specifies a reference to a contained resource template (or set of resources for a repeating item) to be extracted from this item once the QuestionnaireResponse is complete. The template will be cloned into the output extraction bundle, and any template values will be replaced with the values from the QuestionnaireResponse. Optionally the fullUrl and other Bundle.entry.request properties can be also included.

Initial Expression

Initial value for a question answer as determined by an evaluated expression

Is subject (response)?

If present and true, indicates that the item indicates a different subject for this group

Is subject?

If present and true, indicates that the item establishes a different subject for the group in a response

Item Answer Media

Media to render/make available as an accompaniment to a specific answer option.

Item Media

Media to render/make available accompanying the question being asked or group or display item being rendered.

Item population context

Specifies a query that identifies the resource (or set of resources for a repeating item) that should be used to populate this Questionnaire or Questionnaire.item on initial population.

Keyboard Type Extension

For string or text items, indicates the 'keyboard type' that should be used by the user interface to guide entry. It does not dictate any specific functionality, it is only used as a hint to input devices that may have special keyboard modes available.

Label for 'open' items

The label text to display beside free-text and/or unrestricted type values for an ‘open’ choice element. E.g. ‘Other, please specify’, or ‘Additional condition’, or ‘More reason(s)’, etc.

Launch Contexts

Resources that provide context for form processing logic (pre-population, flow-control, drop-down selection, etc.) when creating/displaying/editing a QuestionnaireResponse

Lookup questionnaire

For items of type reference, the reference can be populated either by picking an existing entity or by creating a new one. In the latter case, this Questionnaire allows specifying the Questionnaire to use in creating the target instance. This can be direct (if the Reference is to a Questionnaire) or indirect via mapping if the Reference is to some other sort of resource.

Max quantity

The inclusive upper bound on the range of allowed values for a 'quantity' type question

Min quantity

The inclusive lower bound on the range of allowed values for a 'quantity' type question

Number of columns for child item layout

For questions with a set of options, indicates the number of columns across which those choices should be organized. E.g., 2 columns, 5 columns, etc.

Obervation link period

Indicates the time-period (from 'now') to search for observations that match the Questionnaire.item.code and Questionnaire.subject when pre-populating the QuestionnaireResponse.

Optional Display?

If set to true, it means that the system displaying the form (or the individual encoding the form for data capture) can choose to omit the item from display to the user.

Performer type

Indicates the types of resources that can record answers to a Questionnaire

Preferred Terminology Server

Indicates the terminology server(s) that are known to be capable of returning and potentially expanding the value set(s) associated with the whole questionnaire or a particular group or question within the questionnaire (depending on where the extension appears).

Questionnaire Adaptive

Indicates if a questionnaire is adaptive - either set to true or set the base URL of the server that can perform the nextQuestion operation of the questionnaire

Rendering Critical Extension

Indicates an extension that must be supported by the system presenting the instance for data capture or end-user consumption. If a system does not recognize the extension or cannot implement the functionality defined by the extension, it should display an error message or warning and refrain from presenting the instance to the user or using it when capturing data.

ServiceRequest Questionnaire

Identifies a Questionnaire that is being asked to be completed

Short Text

Provides a short text for an item. This element is useful for items that require a shorter text when rendered (e.g. when item is displayed on a mobile phone).

Source queries for population mapping

A Batch Bundle containing a set of queries that should be executed to provide source data for a StructureMap to create a populated QuestionnaireResponse

Source structure map

StructureMaps that produce QuestionnaireResponses for this Questionnaire as 'target' - i.e. that can be used to create QuestionnaireResponses that are valid against this Questionnaire.

Sub-questionnaire

Indicates that the display item on which this extension appears should be replaced with the referenced Questionnaire

Units open?

Indicates whether the list of supported units (conveyed in other extensions) are the exhaustive list from which the user must choose or whether they're able to select alternate codes or specify a string.

Width of column

When used with an item control that causes the question to appear as a column in a table, indicates the width to give to the column for this question.

Terminology: Value Sets

These define sets of codes used by systems conforming to this implementation guide.

Australian States - example value set

An example value set (using fake codes) used by a modular Questionnaire

DEX mapping language mime types

The list of mime types that identify mapping languages supported by DEX.

Observation Extract Relationship Value Set

Defines the set of codes used to specify the relationship type for extracted Observations.

Questionnaire Assemble Expectation

Defines codes describing how a Questionnaire relates to the 'assemble' process

Questionnaire Context Species

Species for defining the context of Questionnaires

Questionnaire Entry Mode

Defines mechanisms of capturing data in a QuestionnaireResponse

Questionnaire Item Collapsible

Defines mechanisms of displaying child items in collapsible form

Questionnaire Item Keyboard Type

For string or text items, indicates the 'keyboard type' that should be used by the user interface to guide entry.

Questionnaire Launch Context

The standard context for Questionnaire at launch time

Questionnaire Performer Type

List of resource types that can record answers to a Questionnaire.

Questionnaire answer constraints value set

Codes that describe the types of constraints possible on a question item that has a list of permitted answers [Note: This is a clone of QuestionnaireAnswerConstraint valueset from R5 (adopting R5 capability)]

SDC Task Code

The codes allowed for an SDC Task seeking completion of a Questionnaire

SDC-ValueSet AHRQ_Medication_Q1

The answer list for question 1 on the AHRQ 'Medication or Other Substance' form

Terminology: Code Systems

These define new code systems used by systems conforming to this implementation guide.

Assemble Expectation Codes

A set of codes that reflect the relevance of the Questionnaire to the $assemble operation - specifically, whether the form needs to be assembled, whether the form can be referenced as a subQuestionnaire and whether the form can be used as the 'root' of a QuestionnaireResponse.

CHF Codes

Codes used in the congestive heart failure pathway. Ideally these shouldn't exist, but where I couldn't find an appropriate code in a standard terminology, I defined codes here.

Collapsible Codes

Defines mechanisms of displaying child items in collapsible form

Entry Mode

Defines mechanisms of capturing data in a QuestionnaireResponse

Keyboard Type Codes

For string or text items, indicates the 'keyboard type' that should be used by the user interface to guide entry.

Launch Context

The standard context for Questionnaire at launch time

Observation Extract Relationship Codes

Defines the codes used to specify the relationship type in the ObservationExtractExtension.

Questionnaire answer constraint codes

Codes that describe the types of constraints possible on a question item that has a list of permitted answers [Note: This is a clone of QuestionnaireAnswerConstraint codesystem from R5 (adopting R5 capability)]

SDC-CodeSystem PHQ9

The answer list for questions 1 through 9 on the Patient Health Questionnaire (9 item) form

Temporary SDC Codes

Defines codes defined within the SDC implementation guide that are expected to migrate elsewhere in future releases

Terminology: Structure Maps

These define transformations to convert between data structures used by systems conforming to this implementation guide.

ExtractComplexSmap

An example of a StructureMap used to support extraction from a QuestionnaireResponse

QuestionnairePopulationTransform

An example of a StructureMap used to support population of a QuestionnaireResponse from a search bundle

SDOHCCHungerVitalSignMap

A StructureMap instance that represents the resource that transforms a specific question and answer from the LOINC Hunger Vital Sign [HVS] questionnaire (LOINC code 88121-9) into a corresponding Observation (SDOHCC Observation response Hunger Vital Sign Q3 Example) and derived Condition (SDOHCC Condition Food Insecurity Example).

Example: Example Instances

These are example instances that show what data produced and consumed by systems conforming with this implementation guide might look like.

Congestive Heart Failure Logic

Logic for an example congestive heart failure pathway

Example $assemble operation response

Shows the result of performing a $assemble operation on the modular-root questionnaire

Example $populate operation request

Shows the request payload when invoking a populate operation

Example $populate operation response

Shows the response payload when invoking a populate operation

Example $populate-html operation response

Shows the response payload when invoking a populate-html operation

Example $populate-link operation response

Shows the response payload when invoking a populate-link operation

Example modular Questionnaire

Example modular questionnaire - root of a questionnaire that references other questionnaires and element definitions

Example multi-subject Questionnaire

A sample Questionnaire that shows the use of the isSubject extension to flag a subject change within a Questionnaire.

Example sub-module Questionnaire for contact

Example questionnaire module - represents a patient's contacts and is itself a modular questionnaire that references other questionnaires and element definitions

Example sub-module Questionnaire for name

Example questionnaire module - Used to represent a patient or other human name as an example of a Questionnaire that can be referenced by other Questionnaires. It is itself modular in that it relies on external element definitions

Multi-subject QuestionnaireResponse example

Example of a QuestionnaireResponse for a multi-subject Questionnaire

Patient Health Questionnaire - adaptive search

This is a Questionnaire example of how to expose an adaptive form in a registry.

Questionnaire - ANC Quick Check

A sample questionnaire using itemMedia and itemAnswerMedia extensions.

Questionnaire - Demographics Example

A sample questionnaire using context-based population and extraction

Request-based solicitation example - ServiceRequest

Shows a ServiceRequest soliciting completion of a questionnaire

Request-based solicitation example - Task

Shows how completion of a questionnaire can be solicited with Task pointing to a ServiceRequest

SDC Derivation Child

Example of a child questionnaire based on a parent

SDC Derivation Parent

Example of a parent questionnaire that sets derivation expectations

SDC Map population StructureMap example output

An example showing the result of a StructureMap-based population operation

SDC Map population source bundle example

An example of a Batch response containing search results used as an input to a map-based population process

SDC Test Form - All Data Types

A test form that has one of each data type included, useful in checking compatibility against.

SDC Test Form - Candidate Expression

A test form with a FHIRPath based prepopulation example that includes a candidate expression.

SDC Test Form - Enable When

A test form that has a variety of enable when scenarios for testing.

SDC Test Form - Initial Expression

A test form with a FHIRPath based prepopulation simple example.

SDC Test Form - Initial Value

A test form with that uses initial values.

SDC Test Form - Multiple Initial Value

A test form with a question that has multiple initial values.

SDC Test Form - Repeats

A test form with repeatable nested groups.

SDC Test Form - Required

A test form with required fields.

SDC Test Form - Source Query

A test form with a FhirPath based prepopulation and StructureMap population that leverages a source query to extract data outside the launch context.

SDC-Advanced Form Behavior

Demo questionnaire showing most of the advanced form behavior capabilities of SDC. Each example here is itemized in the Examples page.

SDC-Advanced Rendering

Demo questionnaire showing most of the advanced rendering capabilities of SDC. Each example here is itemized in the Examples page.

SDC-Combination

Set of several examples - medication, AHRQ and NCI forms

SDC-Example using contextExpression

Example to indicate the resources to make available for display to the user to aid in answering the question.

SDC-Example using itemWeight and constraint

Example on how to use item weight and contraints in a Questionnaire.

SDC-Example with Image Options

Example questionnaire that shows how to display answer options as images using the rendering-xhtml extension.

SDC-Hard Coronary Heart Disease

A made-up form for calculating the 10-year-risk of Hard Coronary Heart Disease. It shows how variables and calculatedExpression can be used to compute for the risk probability.

SDC-Hunger Vital Sign

A hunger vital signs form (showing calculatedExpression selecting a value from a list).

SDC-LOINC AHRQ

LOINC perspective on the AHRQ form found in the SDC - Combination set of questionnaires

SDC-LOINC USSG Family History

LOINC US Surgeon General family history including data elements and value sets.

SDC-PHQ9

Patient Health Questionnaire (9 Item) including contained value sets and calculatedExpression

SDC-PHQ9 using an SDC Library

Patient Health Questionnaire using a cqf-expression defined in an SDC Library

SDC-Pathology

Cancer pathology questionnaire with flow-control extensions

SDC-Response to Adaptive PHQ9

Example response to the Adaptive SDC-PHQ9 questionnaire

SDC-Response to Diagnosis NCI Standard Template

Example responses to the questionnaire found in the SDC - Combination list of questionnaires

SDC-Response to LOINC AHRQ

Example response to te LOINC AHRQ questionnaire.

SDC-Response to LOINC USSG Family History

Example response to the SDC-LOINC USSG Family History questionnaire

SDC-Response to PHQ9

Example response to the SDC-PHQ9 questionnaire

SDC-Weight and Height Tracking Panel

A weight and height panel (from LOINC) with a FHIRPath rule for calculating the BMI.

SDOHCC Questionnaire Hunger Vital Sign

Example Questionnaire that shows both definition-based population and StructureMap-based extraction

Task-based solicitation example

Shows how completion of a questionnaire can be solicited with Task alone