--- type: "sdc-page" title: "SDC: Conformance Expectations" source: "sdc/input/pagecontent/conformance.xml" --- # SDC: Conformance Expectations .xml { font-size: 10px; line-height: normal; } .tabs { position: relative; min-height: 600px; /\* TODO: better way of doing this \*/ clear: both; margin: 35px 0 25px; background: white; } .tab { float: left; } .tab label { background: #eee; padding: 10px; border: 1px solid #ccc; margin-left: -1px; position: relative; left: 1px; top: -29px; -webkit-transition: background-color .17s linear; } .tab input\[id^="tab-"\]{ display: none; } .content-in-tab { position: absolute; top: 12px; left: 0; background: white; right: 0; bottom: 0; padding: 20px; border: 1px solid #ccc; -webkit-transition: opacity .6s linear; opacity: 0; } \[type=radio\]:checked ~ label { background: white; border-bottom: 1px solid white; z-index: 2; } \[type=radio\]:checked ~ label ~ .content-in-tab { z-index: 1; opacity: 1; } pre.json,pre.xml{ height: 100%; width: 100%; -webkit-box-sizing: border-box; /\* Safari/Chrome, other WebKit \*/ -moz-box-sizing: border-box; /\* Firefox, other Gecko \*/ box-sizing: border-box; /\* Opera/IE 8+ \*/ resize: none; } ### Conformance expectations This page defines the conformance expectations for systems implementing the SDC (Structured Data Capture) Implementation Guide. SDC defines a wide range of features for authoring, rendering, pre-populating, dynamically controlling, and extracting data from FHIR Questionnaires. Obviously SDC IG represents a **lot** of capabilities and not all systems will necessarily need to take on all of these features. In fact, it is unlikely that any one system will support _all_ of the features defined in this guide. Instead, each downstream implementation guide or implementer will choose the specific subset of SDC features of interest and build those only. This guide defines a [set of CapabilityStatements](/sdc-workflow#capabilitystatement) setting required and suggested RESTful interface capabilities for different types of systems that work with Questionnaires and QuestionnaireResponses. Most implementers of this guide SHOULD conform to at least one of these. The guide also defines profiles. These profiles fall into two categories: - **Strict adherence profiles** such as the population, extraction, adaptive forms, and modular forms profiles SHALL be complied with by systems that wish to implement the associated functionality and claim SDC compliance. - **Advisory profiles** MAY be used directly or derived from, but may also be used as the inspiration for other profiles that include the specific combinations of features that are needed. The elements marked as 'mustSupport' in those profiles are strongly encouraged to be supported, but a system that develops its own profiles that excludes some or all of the mustSupport elements can still be considered conformant with SDC. In many cases, when complying with SDC, a system may wish to comply with multiple profiles at once. For example, an implementer may need advanced rendering, advanced behavior, population, and extraction all in a single Questionnaire. When creating a profile, it is not possible to inherit from multiple profiles at once. However, it _is_ possible to use extensions in your profile, either to assert an [expectation for compliance with additional profiles]({{site.data.fhir.ver.ext}}/StructureDefinition-structuredefinition-imposeProfile) or to manually re-assert the same set of constraints and then assert that the elements in the profile [meet the requirements of a reference profile]({{site.data.fhir.ver.ext}}/StructureDefinition-structuredefinition-compliesWithProfile). This IG can also be used as a tool-box of extensions and approaches that an implementation or downstream IG could use as 'inspiration' to their own set of profiles and CapabilityStatements that don't declare conformance with SDC at all. (Though referencing SDC as a source of additional information and to provide credit is still encouraged.) If you have used SDC in the definition of Questionnaires that are publicly available, we encourage you to provide links to them on our [SDC Usage Confluence page](https://confluence.hl7.org/display/FHIRI/Questionnaire+Examples+page). If you don't have edit access to HL7's Confluence site, you can submit a request to add a link with a post to the [Questionnaire stream](https://chat.fhir.org/#narrow/stream/179255-questionnaire) on http://chat.fhir.org. Future versions of this IG may explore additional mechanisms to support implementers who wish to conform with specific common and useful subsets of SDC and combine them in arbitrary ways, likely using the [obligation]({{site.data.fhir.ver.ext}}/StructureDefinition-obligation) extension. #### Feature declaration This IG pre-adopts the use of the [FHIR Application Feature Framework]({{site.data.fhir.ver.feature}}) to allow SDC conformant systems to declare what [expression languages](/sdc-expressions#language) they support. This is done by including a 'feature' extension on the `CapabilityStatement.rest.resource` element for Questionnaire, and potentially for Library. There are three codes defined: [behaviorExpressionLanguage](http://build.fhir.org/ig/HL7/sdc/CodeSystem-temp.html#temp-behaviorExpressionLanguage) [populationExpressionLanguage](http://build.fhir.org/ig/HL7/sdc/CodeSystem-temp.html#temp-populationExpressionLanguage), and [extractionExpressionLanguage](http://build.fhir.org/ig/HL7/sdc/CodeSystem-temp.html#temp-extractionExpressionLanguage). Additional information about their use can be found [here](/sdc-expressions#exp-extensions). As an example, the following asserts support for CQL for behavioral extensions. The extension can repeat multiple times, either to convey multiple supported languages or to convey languages for different contexts (behavior, population, and/or extraction). JSON ```json "resource" : [{ "extension" : [{ "url" : "http://hl7.org/fhir/uv/application-feature/StructureDefinition/feature", "extension" : [{ "url" : "code", "valueCodeableConcept" : { "coding" : [{ "system" : "http://hl7.org/fhir/uv/sdc/CodeSystem/temp", "code" : "behaviorExpressionLanguage" }] } }, { "url" : "value", "valueCodeableConcept" : { "coding" : [{ "system" : "urn:ietf:bcp:13", "code" : "text/cql-expression" }] } }] }], "type" : "Questionnaire", ... }, ... ] ``` XML ```xml ... ```