This page is part of the FHIR Specification (v0.4.0: DSTU 2 Draft). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions
This resource maintained by the FHIR Management Group Work Group
A conformance statement is a set of requirements for a desired implementation or a description of how a target application fulfills those requirements in a particular implementation.
Conformance statements are used in one of three ways:
In this scenario, the conformance statement describes the capabilities of a deployed and configured solution available at a particular access point or set of access points. The statement describes exactly how to interface with that deployed solution and thus provides for a degree of self-configuration of software solutions.
This is the type of profile that FHIR restful solutions are expected to make available on invocation of the conformance operation. It is also the type of statement that forms a basis for the testing, certification or commissioning of specific software installations.
A conformance statement is identified as being an implementation statement through the presence of the implementation element.
In this scenario, the conformance statement describes generic capabilities of a software application or component solution. The solution might be available for purchase or other acquisition and might be deployed and configured at any number of independent sites. Because it is not dependent on any particular implementation, the profile cannot provide specific details such as endpoint addresses. It may also need to document various configurations in which the application can be set up or describe the degree of customizability associated with the solution.
This type of statement may be used as a marketing tool by software and system developers to formally describe their capabilities. It can also be used as the basis for conformance testing of software solutions independent of a particular installation.
A conformance statement is identified as being a software solution statement through the presence of the software element.
In this scenario, the conformance statement describes the capabilities of a desired system. It might be used as part of an architectural design process to document needed system capabilities, or might be used as part of an RFP process to formally document the requirements of a requested solution and to document the criteria by which proposals will be evaluated.
A conformance statement is identified as being a requirements statement through the presence of the proposal element.
These three types of profiles can be used together. A requirements statement can be compared against the solution statements proffered by respondents to an RFP. A solution statement for a software package forms the starting point for the implementation statement associated with a particular installation of that software package.
Conformance Statements provide for a degree of automatic configuration and adaptation. However, capturing absolutely every variation that could impact the interoperability of two systems, let alone keeping that detailed information up-to-date as systems evolve through maintenance and upgrades is rarely practical. Therefore, conformance statements should be seen as an interim step. They provide a degree of automation. However, they also provide a great deal of human-readable content that can minimize the need for direct communication between the operators of the systems being configured to interoperate.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Conformance | I | DomainResource | A conformance statement A Conformance statement SHALL have at least one of rest, messaging or document A Conformance statement SHALL have at least one of description, software, or implementation If there is more than one messaging element, endpoint must be specified for each one The set of end points listed for messaging must be unique The set of documents must be unique by the combination of profile & mode There can only be one REST declaration per mode | |
url | Σ | 0..1 | uri | Logical uri to reference this statement |
version | Σ | 0..1 | string | Logical id for this version of the statement |
name | Σ | 0..1 | string | Informal name for this conformance statement |
publisher | Σ | 0..1 | string | Name of the publisher (Organization or individual) |
contact | Σ | 0..* | Element | Contact details of the publisher |
name | Σ | 0..1 | string | Name of a individual to contact |
telecom | Σ | 0..* | ContactPoint | Contact details for individual or publisher |
description | Σ I | 0..1 | string | Human description of the conformance statement |
requirements | 0..1 | string | Why is this needed? | |
copyright | 0..1 | string | Use and/or Publishing restrictions | |
status | M Σ | 0..1 | code | draft | active | retired ConformanceStatementStatus (Required) |
experimental | Σ | 0..1 | boolean | If for testing purposes, not real usage |
date | Σ | 1..1 | dateTime | Publication Date(/time) |
software | Σ I | 0..1 | Element | Software that is covered by this conformance statement |
name | Σ | 1..1 | string | A name the software is known by |
version | Σ | 0..1 | string | Version covered by this statement |
releaseDate | Σ | 0..1 | dateTime | Date this version released |
implementation | Σ I | 0..1 | Element | If this describes a specific instance |
description | Σ | 1..1 | string | Describes this specific instance |
url | Σ | 0..1 | uri | Base URL for the installation |
fhirVersion | Σ | 1..1 | id | FHIR Version |
acceptUnknown | Σ | 1..1 | boolean | True if application accepts unknown elements |
format | 1..* | code | formats supported (xml | json | mime type) MimeType (Required) | |
profile | 0..* | Profile | Profiles supported by the system | |
rest | I | 0..* | Element | If the endpoint is a RESTful one A given query can only be described once per RESTful mode A given resource can only be described once per RESTful mode |
mode | 1..1 | code | client | server RestfulConformanceMode (Required) | |
documentation | 0..1 | string | General description of implementation | |
security | 0..1 | Element | Information about security of implementation | |
cors | 0..1 | boolean | Adds CORS Headers (http://enable-cors.org/) | |
service | 0..* | CodeableConcept | OAuth | OAuth2 | NTLM | Basic | Kerberos RestfulSecurityService (Incomplete) | |
description | 0..1 | string | General description of how security works | |
certificate | 0..* | Element | Certificates associated with security profiles | |
type | 0..1 | code | Mime type for certificate MimeType (Required) | |
blob | 0..1 | base64Binary | Actual certificate | |
resource | I | 1..* | Element | Resource served on the REST interface Search parameter names must be unique in the context of a resource Operation codes must be unique in the context of a resource |
type | 1..1 | code | A resource type that is supported ResourceType (Required) | |
profile | 0..1 | Profile | What structural features are supported | |
interaction | 1..* | Element | What operations are supported? | |
code | 1..1 | code | read | vread | update | delete | history-instance | validate | history-type | create | search-type TypeRestfulInteraction (Required) | |
documentation | 0..1 | string | Anything special about operation behavior | |
versioning | 0..1 | code | no-version | versioned | versioned-update ResourceVersionPolicy (Required) | |
readHistory | 0..1 | boolean | Whether vRead can return past versions | |
updateCreate | 0..1 | boolean | If allows/uses update to a new location | |
conditionalCreate | 0..1 | boolean | If allows/uses conditional create | |
conditionalUpdate | 0..1 | boolean | If allows/uses conditional update | |
conditionalDelete | 0..1 | boolean | If allows/uses conditional delete | |
searchInclude | 0..* | string | _include values supported by the server | |
searchParam | 0..* | Element | Search params supported by implementation | |
name | 1..1 | string | Name of search parameter | |
definition | 0..1 | uri | Source of definition for parameter | |
type | 1..1 | code | number | date | string | token | reference | composite | quantity SearchParamType (Required) | |
documentation | 0..1 | string | Server-specific usage | |
target | 0..* | code | Types of resource (if a resource reference) ResourceType (Required) | |
chain | 0..* | string | Chained names supported | |
interaction | 0..* | Element | What operations are supported? | |
code | 1..1 | code | transaction | search-system | history-system SystemRestfulInteraction (Required) | |
documentation | 0..1 | string | Anything special about operation behavior | |
operation | 0..* | Element | Definition of an operation or a custom query | |
name | 1..1 | string | Name by which the operation/query is invoked | |
definition | 1..1 | OperationDefinition | The defined operation/query | |
documentMailbox | 0..* | uri | How documents are accepted in /Mailbox | |
messaging | I | 0..* | Element | If messaging is supported Messaging end point is required (and is only permitted) when statement is for an implementation The set of events per messaging endpoint must be unique by the combination of code & mode |
endpoint | I | 0..1 | uri | Actual endpoint being described |
reliableCache | 0..1 | integer | Reliable Message Cache Length (min) | |
documentation | 0..1 | string | Messaging interface behavior details | |
event | 1..* | Element | Declare support for this event | |
code | 1..1 | Coding | Event type MessageEvent (Incomplete) | |
category | 0..1 | code | Consequence | Currency | Notification MessageSignificanceCategory (Required) | |
mode | 1..1 | code | sender | receiver ConformanceEventMode (Required) | |
protocol | 0..* | Coding | http | ftp | mllp + MessageTransport (Incomplete) | |
focus | 1..1 | code | Resource that's focus of message ResourceType (Required) | |
request | 1..1 | Profile | Profile that describes the request | |
response | 1..1 | Profile | Profile that describes the response | |
documentation | 0..1 | string | Endpoint-specific event documentation | |
document | I | 0..* | Element | Document definition |
mode | 1..1 | code | producer | consumer DocumentMode (Required) | |
documentation | 0..1 | string | Description of document support | |
profile | 1..1 | Profile | Constraint on a resource used in the document |
UML Diagram
XML Template
<Conformance xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Logical uri to reference this statement --> <version value="[string]"/><!-- 0..1 Logical id for this version of the statement --> <name value="[string]"/><!-- 0..1 Informal name for this conformance statement --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) --> <contact> <!-- 0..* Contact details of the publisher --> <name value="[string]"/><!-- 0..1 Name of a individual to contact --> <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom> </contact> <description value="[string]"/><!-- 0..1 Human description of the conformance statement --> <requirements value="[string]"/><!-- 0..1 Why is this needed? --> <copyright value="[string]"/><!-- 0..1 Use and/or Publishing restrictions --> <status value="[code]"/><!-- 0..1 draft | active | retired --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <date value="[dateTime]"/><!-- 1..1 Publication Date(/time) --> <software> <!-- 0..1 Software that is covered by this conformance statement --> <name value="[string]"/><!-- 1..1 A name the software is known by --> <version value="[string]"/><!-- 0..1 Version covered by this statement --> <releaseDate value="[dateTime]"/><!-- 0..1 Date this version released --> </software> <implementation> <!-- 0..1 If this describes a specific instance --> <description value="[string]"/><!-- 1..1 Describes this specific instance --> <url value="[uri]"/><!-- 0..1 Base URL for the installation --> </implementation> <fhirVersion value="[id]"/><!-- 1..1 FHIR Version --> <acceptUnknown value="[boolean]"/><!-- 1..1 True if application accepts unknown elements --> <format value="[code]"/><!-- 1..* formats supported (xml | json | mime type) --> <profile><!-- 0..* Reference(Profile) Profiles supported by the system --></profile> <rest> <!-- 0..* If the endpoint is a RESTful one --> <mode value="[code]"/><!-- 1..1 client | server --> <documentation value="[string]"/><!-- 0..1 General description of implementation --> <security> <!-- 0..1 Information about security of implementation --> <cors value="[boolean]"/><!-- 0..1 Adds CORS Headers (http://enable-cors.org/) --> <service><!-- 0..* CodeableConcept OAuth | OAuth2 | NTLM | Basic | Kerberos --></service> <description value="[string]"/><!-- 0..1 General description of how security works --> <certificate> <!-- 0..* Certificates associated with security profiles --> <type value="[code]"/><!-- 0..1 Mime type for certificate --> <blob value="[base64Binary]"/><!-- 0..1 Actual certificate --> </certificate> </security> <resource> <!-- 1..* Resource served on the REST interface --> <type value="[code]"/><!-- 1..1 A resource type that is supported --> <profile><!-- 0..1 Reference(Profile) What structural features are supported --></profile> <interaction> <!-- 1..* What operations are supported? --> <code value="[code]"/><!-- 1..1 read | vread | update | delete | history-instance | validate | history-type | create | search-type --> <documentation value="[string]"/><!-- 0..1 Anything special about operation behavior --> </interaction> <versioning value="[code]"/><!-- 0..1 no-version | versioned | versioned-update --> <readHistory value="[boolean]"/><!-- 0..1 Whether vRead can return past versions --> <updateCreate value="[boolean]"/><!-- 0..1 If allows/uses update to a new location --> <conditionalCreate value="[boolean]"/><!-- 0..1 If allows/uses conditional create --> <conditionalUpdate value="[boolean]"/><!-- 0..1 If allows/uses conditional update --> <conditionalDelete value="[boolean]"/><!-- 0..1 If allows/uses conditional delete --> <searchInclude value="[string]"/><!-- 0..* _include values supported by the server --> <searchParam> <!-- 0..* Search params supported by implementation --> <name value="[string]"/><!-- 1..1 Name of search parameter --> <definition value="[uri]"/><!-- 0..1 Source of definition for parameter --> <type value="[code]"/><!-- 1..1 number | date | string | token | reference | composite | quantity --> <documentation value="[string]"/><!-- 0..1 Server-specific usage --> <target value="[code]"/><!-- 0..* Types of resource (if a resource reference) --> <chain value="[string]"/><!-- 0..* Chained names supported --> </searchParam> </resource> <interaction> <!-- 0..* What operations are supported? --> <code value="[code]"/><!-- 1..1 transaction | search-system | history-system --> <documentation value="[string]"/><!-- 0..1 Anything special about operation behavior --> </interaction> <operation> <!-- 0..* Definition of an operation or a custom query --> <name value="[string]"/><!-- 1..1 Name by which the operation/query is invoked --> <definition><!-- 1..1 Reference(OperationDefinition) The defined operation/query --></definition> </operation> <documentMailbox value="[uri]"/><!-- 0..* How documents are accepted in /Mailbox --> </rest> <messaging> <!-- 0..* If messaging is supported --> <endpoint value="[uri]"/><!-- 0..1 Actual endpoint being described --> <reliableCache value="[integer]"/><!-- 0..1 Reliable Message Cache Length (min) --> <documentation value="[string]"/><!-- 0..1 Messaging interface behavior details --> <event> <!-- 1..* Declare support for this event --> <code><!-- 1..1 Coding Event type --></code> <category value="[code]"/><!-- 0..1 Consequence | Currency | Notification --> <mode value="[code]"/><!-- 1..1 sender | receiver --> <protocol><!-- 0..* Coding http | ftp | mllp + --></protocol> <focus value="[code]"/><!-- 1..1 Resource that's focus of message --> <request><!-- 1..1 Reference(Profile) Profile that describes the request --></request> <response><!-- 1..1 Reference(Profile) Profile that describes the response --></response> <documentation value="[string]"/><!-- 0..1 Endpoint-specific event documentation --> </event> </messaging> <document> <!-- 0..* Document definition --> <mode value="[code]"/><!-- 1..1 producer | consumer --> <documentation value="[string]"/><!-- 0..1 Description of document support --> <profile><!-- 1..1 Reference(Profile) Constraint on a resource used in the document --></profile> </document> </Conformance>
JSON Template
{ "resourceType" : "Conformance", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Logical uri to reference this statement "version" : "<string>", // Logical id for this version of the statement "name" : "<string>", // Informal name for this conformance statement "publisher" : "<string>", // Name of the publisher (Organization or individual) "contact" : [{ // Contact details of the publisher "name" : "<string>", // Name of a individual to contact "telecom" : [{ ContactPoint }] // Contact details for individual or publisher }], "description" : "<string>", // C? Human description of the conformance statement "requirements" : "<string>", // Why is this needed? "copyright" : "<string>", // Use and/or Publishing restrictions "status" : "<code>", // draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "date" : "<dateTime>", // R! Publication Date(/time) "software" : { // C? Software that is covered by this conformance statement "name" : "<string>", // R! A name the software is known by "version" : "<string>", // Version covered by this statement "releaseDate" : "<dateTime>" // Date this version released }, "implementation" : { // C? If this describes a specific instance "description" : "<string>", // R! Describes this specific instance "url" : "<uri>" // Base URL for the installation }, "fhirVersion" : "<id>", // R! FHIR Version "acceptUnknown" : <boolean>, // R! True if application accepts unknown elements "format" : ["<code>"], // R! formats supported (xml | json | mime type) "profile" : [{ Reference(Profile) }], // Profiles supported by the system "rest" : [{ // C? If the endpoint is a RESTful one "mode" : "<code>", // R! client | server "documentation" : "<string>", // General description of implementation "security" : { // Information about security of implementation "cors" : <boolean>, // Adds CORS Headers (http://enable-cors.org/) "service" : [{ CodeableConcept }], // OAuth | OAuth2 | NTLM | Basic | Kerberos "description" : "<string>", // General description of how security works "certificate" : [{ // Certificates associated with security profiles "type" : "<code>", // Mime type for certificate "blob" : "<base64Binary>" // Actual certificate }] }, "resource" : [{ // R! Resource served on the REST interface "type" : "<code>", // R! A resource type that is supported "profile" : { Reference(Profile) }, // What structural features are supported "interaction" : [{ // R! What operations are supported? "code" : "<code>", // R! read | vread | update | delete | history-instance | validate | history-type | create | search-type "documentation" : "<string>" // Anything special about operation behavior }], "versioning" : "<code>", // no-version | versioned | versioned-update "readHistory" : <boolean>, // Whether vRead can return past versions "updateCreate" : <boolean>, // If allows/uses update to a new location "conditionalCreate" : <boolean>, // If allows/uses conditional create "conditionalUpdate" : <boolean>, // If allows/uses conditional update "conditionalDelete" : <boolean>, // If allows/uses conditional delete "searchInclude" : ["<string>"], // _include values supported by the server "searchParam" : [{ // Search params supported by implementation "name" : "<string>", // R! Name of search parameter "definition" : "<uri>", // Source of definition for parameter "type" : "<code>", // R! number | date | string | token | reference | composite | quantity "documentation" : "<string>", // Server-specific usage "target" : ["<code>"], // Types of resource (if a resource reference) "chain" : ["<string>"] // Chained names supported }] }], "interaction" : [{ // What operations are supported? "code" : "<code>", // R! transaction | search-system | history-system "documentation" : "<string>" // Anything special about operation behavior }], "operation" : [{ // Definition of an operation or a custom query "name" : "<string>", // R! Name by which the operation/query is invoked "definition" : { Reference(OperationDefinition) } // R! The defined operation/query }], "documentMailbox" : ["<uri>"] // How documents are accepted in /Mailbox }], "messaging" : [{ // C? If messaging is supported "endpoint" : "<uri>", // C? Actual endpoint being described "reliableCache" : <integer>, // Reliable Message Cache Length (min) "documentation" : "<string>", // Messaging interface behavior details "event" : [{ // R! Declare support for this event "code" : { Coding }, // R! Event type "category" : "<code>", // Consequence | Currency | Notification "mode" : "<code>", // R! sender | receiver "protocol" : [{ Coding }], // http | ftp | mllp + "focus" : "<code>", // R! Resource that's focus of message "request" : { Reference(Profile) }, // R! Profile that describes the request "response" : { Reference(Profile) }, // R! Profile that describes the response "documentation" : "<string>" // Endpoint-specific event documentation }] }], "document" : [{ // C? Document definition "mode" : "<code>", // R! producer | consumer "documentation" : "<string>", // Description of document support "profile" : { Reference(Profile) } // R! Constraint on a resource used in the document }] }
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Conformance | I | DomainResource | A conformance statement A Conformance statement SHALL have at least one of rest, messaging or document A Conformance statement SHALL have at least one of description, software, or implementation If there is more than one messaging element, endpoint must be specified for each one The set of end points listed for messaging must be unique The set of documents must be unique by the combination of profile & mode There can only be one REST declaration per mode | |
url | Σ | 0..1 | uri | Logical uri to reference this statement |
version | Σ | 0..1 | string | Logical id for this version of the statement |
name | Σ | 0..1 | string | Informal name for this conformance statement |
publisher | Σ | 0..1 | string | Name of the publisher (Organization or individual) |
contact | Σ | 0..* | Element | Contact details of the publisher |
name | Σ | 0..1 | string | Name of a individual to contact |
telecom | Σ | 0..* | ContactPoint | Contact details for individual or publisher |
description | Σ I | 0..1 | string | Human description of the conformance statement |
requirements | 0..1 | string | Why is this needed? | |
copyright | 0..1 | string | Use and/or Publishing restrictions | |
status | M Σ | 0..1 | code | draft | active | retired ConformanceStatementStatus (Required) |
experimental | Σ | 0..1 | boolean | If for testing purposes, not real usage |
date | Σ | 1..1 | dateTime | Publication Date(/time) |
software | Σ I | 0..1 | Element | Software that is covered by this conformance statement |
name | Σ | 1..1 | string | A name the software is known by |
version | Σ | 0..1 | string | Version covered by this statement |
releaseDate | Σ | 0..1 | dateTime | Date this version released |
implementation | Σ I | 0..1 | Element | If this describes a specific instance |
description | Σ | 1..1 | string | Describes this specific instance |
url | Σ | 0..1 | uri | Base URL for the installation |
fhirVersion | Σ | 1..1 | id | FHIR Version |
acceptUnknown | Σ | 1..1 | boolean | True if application accepts unknown elements |
format | 1..* | code | formats supported (xml | json | mime type) MimeType (Required) | |
profile | 0..* | Profile | Profiles supported by the system | |
rest | I | 0..* | Element | If the endpoint is a RESTful one A given query can only be described once per RESTful mode A given resource can only be described once per RESTful mode |
mode | 1..1 | code | client | server RestfulConformanceMode (Required) | |
documentation | 0..1 | string | General description of implementation | |
security | 0..1 | Element | Information about security of implementation | |
cors | 0..1 | boolean | Adds CORS Headers (http://enable-cors.org/) | |
service | 0..* | CodeableConcept | OAuth | OAuth2 | NTLM | Basic | Kerberos RestfulSecurityService (Incomplete) | |
description | 0..1 | string | General description of how security works | |
certificate | 0..* | Element | Certificates associated with security profiles | |
type | 0..1 | code | Mime type for certificate MimeType (Required) | |
blob | 0..1 | base64Binary | Actual certificate | |
resource | I | 1..* | Element | Resource served on the REST interface Search parameter names must be unique in the context of a resource Operation codes must be unique in the context of a resource |
type | 1..1 | code | A resource type that is supported ResourceType (Required) | |
profile | 0..1 | Profile | What structural features are supported | |
interaction | 1..* | Element | What operations are supported? | |
code | 1..1 | code | read | vread | update | delete | history-instance | validate | history-type | create | search-type TypeRestfulInteraction (Required) | |
documentation | 0..1 | string | Anything special about operation behavior | |
versioning | 0..1 | code | no-version | versioned | versioned-update ResourceVersionPolicy (Required) | |
readHistory | 0..1 | boolean | Whether vRead can return past versions | |
updateCreate | 0..1 | boolean | If allows/uses update to a new location | |
conditionalCreate | 0..1 | boolean | If allows/uses conditional create | |
conditionalUpdate | 0..1 | boolean | If allows/uses conditional update | |
conditionalDelete | 0..1 | boolean | If allows/uses conditional delete | |
searchInclude | 0..* | string | _include values supported by the server | |
searchParam | 0..* | Element | Search params supported by implementation | |
name | 1..1 | string | Name of search parameter | |
definition | 0..1 | uri | Source of definition for parameter | |
type | 1..1 | code | number | date | string | token | reference | composite | quantity SearchParamType (Required) | |
documentation | 0..1 | string | Server-specific usage | |
target | 0..* | code | Types of resource (if a resource reference) ResourceType (Required) | |
chain | 0..* | string | Chained names supported | |
interaction | 0..* | Element | What operations are supported? | |
code | 1..1 | code | transaction | search-system | history-system SystemRestfulInteraction (Required) | |
documentation | 0..1 | string | Anything special about operation behavior | |
operation | 0..* | Element | Definition of an operation or a custom query | |
name | 1..1 | string | Name by which the operation/query is invoked | |
definition | 1..1 | OperationDefinition | The defined operation/query | |
documentMailbox | 0..* | uri | How documents are accepted in /Mailbox | |
messaging | I | 0..* | Element | If messaging is supported Messaging end point is required (and is only permitted) when statement is for an implementation The set of events per messaging endpoint must be unique by the combination of code & mode |
endpoint | I | 0..1 | uri | Actual endpoint being described |
reliableCache | 0..1 | integer | Reliable Message Cache Length (min) | |
documentation | 0..1 | string | Messaging interface behavior details | |
event | 1..* | Element | Declare support for this event | |
code | 1..1 | Coding | Event type MessageEvent (Incomplete) | |
category | 0..1 | code | Consequence | Currency | Notification MessageSignificanceCategory (Required) | |
mode | 1..1 | code | sender | receiver ConformanceEventMode (Required) | |
protocol | 0..* | Coding | http | ftp | mllp + MessageTransport (Incomplete) | |
focus | 1..1 | code | Resource that's focus of message ResourceType (Required) | |
request | 1..1 | Profile | Profile that describes the request | |
response | 1..1 | Profile | Profile that describes the response | |
documentation | 0..1 | string | Endpoint-specific event documentation | |
document | I | 0..* | Element | Document definition |
mode | 1..1 | code | producer | consumer DocumentMode (Required) | |
documentation | 0..1 | string | Description of document support | |
profile | 1..1 | Profile | Constraint on a resource used in the document |
XML Template
<Conformance xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Logical uri to reference this statement --> <version value="[string]"/><!-- 0..1 Logical id for this version of the statement --> <name value="[string]"/><!-- 0..1 Informal name for this conformance statement --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) --> <contact> <!-- 0..* Contact details of the publisher --> <name value="[string]"/><!-- 0..1 Name of a individual to contact --> <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom> </contact> <description value="[string]"/><!-- 0..1 Human description of the conformance statement --> <requirements value="[string]"/><!-- 0..1 Why is this needed? --> <copyright value="[string]"/><!-- 0..1 Use and/or Publishing restrictions --> <status value="[code]"/><!-- 0..1 draft | active | retired --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <date value="[dateTime]"/><!-- 1..1 Publication Date(/time) --> <software> <!-- 0..1 Software that is covered by this conformance statement --> <name value="[string]"/><!-- 1..1 A name the software is known by --> <version value="[string]"/><!-- 0..1 Version covered by this statement --> <releaseDate value="[dateTime]"/><!-- 0..1 Date this version released --> </software> <implementation> <!-- 0..1 If this describes a specific instance --> <description value="[string]"/><!-- 1..1 Describes this specific instance --> <url value="[uri]"/><!-- 0..1 Base URL for the installation --> </implementation> <fhirVersion value="[id]"/><!-- 1..1 FHIR Version --> <acceptUnknown value="[boolean]"/><!-- 1..1 True if application accepts unknown elements --> <format value="[code]"/><!-- 1..* formats supported (xml | json | mime type) --> <profile><!-- 0..* Reference(Profile) Profiles supported by the system --></profile> <rest> <!-- 0..* If the endpoint is a RESTful one --> <mode value="[code]"/><!-- 1..1 client | server --> <documentation value="[string]"/><!-- 0..1 General description of implementation --> <security> <!-- 0..1 Information about security of implementation --> <cors value="[boolean]"/><!-- 0..1 Adds CORS Headers (http://enable-cors.org/) --> <service><!-- 0..* CodeableConcept OAuth | OAuth2 | NTLM | Basic | Kerberos --></service> <description value="[string]"/><!-- 0..1 General description of how security works --> <certificate> <!-- 0..* Certificates associated with security profiles --> <type value="[code]"/><!-- 0..1 Mime type for certificate --> <blob value="[base64Binary]"/><!-- 0..1 Actual certificate --> </certificate> </security> <resource> <!-- 1..* Resource served on the REST interface --> <type value="[code]"/><!-- 1..1 A resource type that is supported --> <profile><!-- 0..1 Reference(Profile) What structural features are supported --></profile> <interaction> <!-- 1..* What operations are supported? --> <code value="[code]"/><!-- 1..1 read | vread | update | delete | history-instance | validate | history-type | create | search-type --> <documentation value="[string]"/><!-- 0..1 Anything special about operation behavior --> </interaction> <versioning value="[code]"/><!-- 0..1 no-version | versioned | versioned-update --> <readHistory value="[boolean]"/><!-- 0..1 Whether vRead can return past versions --> <updateCreate value="[boolean]"/><!-- 0..1 If allows/uses update to a new location --> <conditionalCreate value="[boolean]"/><!-- 0..1 If allows/uses conditional create --> <conditionalUpdate value="[boolean]"/><!-- 0..1 If allows/uses conditional update --> <conditionalDelete value="[boolean]"/><!-- 0..1 If allows/uses conditional delete --> <searchInclude value="[string]"/><!-- 0..* _include values supported by the server --> <searchParam> <!-- 0..* Search params supported by implementation --> <name value="[string]"/><!-- 1..1 Name of search parameter --> <definition value="[uri]"/><!-- 0..1 Source of definition for parameter --> <type value="[code]"/><!-- 1..1 number | date | string | token | reference | composite | quantity --> <documentation value="[string]"/><!-- 0..1 Server-specific usage --> <target value="[code]"/><!-- 0..* Types of resource (if a resource reference) --> <chain value="[string]"/><!-- 0..* Chained names supported --> </searchParam> </resource> <interaction> <!-- 0..* What operations are supported? --> <code value="[code]"/><!-- 1..1 transaction | search-system | history-system --> <documentation value="[string]"/><!-- 0..1 Anything special about operation behavior --> </interaction> <operation> <!-- 0..* Definition of an operation or a custom query --> <name value="[string]"/><!-- 1..1 Name by which the operation/query is invoked --> <definition><!-- 1..1 Reference(OperationDefinition) The defined operation/query --></definition> </operation> <documentMailbox value="[uri]"/><!-- 0..* How documents are accepted in /Mailbox --> </rest> <messaging> <!-- 0..* If messaging is supported --> <endpoint value="[uri]"/><!-- 0..1 Actual endpoint being described --> <reliableCache value="[integer]"/><!-- 0..1 Reliable Message Cache Length (min) --> <documentation value="[string]"/><!-- 0..1 Messaging interface behavior details --> <event> <!-- 1..* Declare support for this event --> <code><!-- 1..1 Coding Event type --></code> <category value="[code]"/><!-- 0..1 Consequence | Currency | Notification --> <mode value="[code]"/><!-- 1..1 sender | receiver --> <protocol><!-- 0..* Coding http | ftp | mllp + --></protocol> <focus value="[code]"/><!-- 1..1 Resource that's focus of message --> <request><!-- 1..1 Reference(Profile) Profile that describes the request --></request> <response><!-- 1..1 Reference(Profile) Profile that describes the response --></response> <documentation value="[string]"/><!-- 0..1 Endpoint-specific event documentation --> </event> </messaging> <document> <!-- 0..* Document definition --> <mode value="[code]"/><!-- 1..1 producer | consumer --> <documentation value="[string]"/><!-- 0..1 Description of document support --> <profile><!-- 1..1 Reference(Profile) Constraint on a resource used in the document --></profile> </document> </Conformance>
JSON Template
{ "resourceType" : "Conformance", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Logical uri to reference this statement "version" : "<string>", // Logical id for this version of the statement "name" : "<string>", // Informal name for this conformance statement "publisher" : "<string>", // Name of the publisher (Organization or individual) "contact" : [{ // Contact details of the publisher "name" : "<string>", // Name of a individual to contact "telecom" : [{ ContactPoint }] // Contact details for individual or publisher }], "description" : "<string>", // C? Human description of the conformance statement "requirements" : "<string>", // Why is this needed? "copyright" : "<string>", // Use and/or Publishing restrictions "status" : "<code>", // draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "date" : "<dateTime>", // R! Publication Date(/time) "software" : { // C? Software that is covered by this conformance statement "name" : "<string>", // R! A name the software is known by "version" : "<string>", // Version covered by this statement "releaseDate" : "<dateTime>" // Date this version released }, "implementation" : { // C? If this describes a specific instance "description" : "<string>", // R! Describes this specific instance "url" : "<uri>" // Base URL for the installation }, "fhirVersion" : "<id>", // R! FHIR Version "acceptUnknown" : <boolean>, // R! True if application accepts unknown elements "format" : ["<code>"], // R! formats supported (xml | json | mime type) "profile" : [{ Reference(Profile) }], // Profiles supported by the system "rest" : [{ // C? If the endpoint is a RESTful one "mode" : "<code>", // R! client | server "documentation" : "<string>", // General description of implementation "security" : { // Information about security of implementation "cors" : <boolean>, // Adds CORS Headers (http://enable-cors.org/) "service" : [{ CodeableConcept }], // OAuth | OAuth2 | NTLM | Basic | Kerberos "description" : "<string>", // General description of how security works "certificate" : [{ // Certificates associated with security profiles "type" : "<code>", // Mime type for certificate "blob" : "<base64Binary>" // Actual certificate }] }, "resource" : [{ // R! Resource served on the REST interface "type" : "<code>", // R! A resource type that is supported "profile" : { Reference(Profile) }, // What structural features are supported "interaction" : [{ // R! What operations are supported? "code" : "<code>", // R! read | vread | update | delete | history-instance | validate | history-type | create | search-type "documentation" : "<string>" // Anything special about operation behavior }], "versioning" : "<code>", // no-version | versioned | versioned-update "readHistory" : <boolean>, // Whether vRead can return past versions "updateCreate" : <boolean>, // If allows/uses update to a new location "conditionalCreate" : <boolean>, // If allows/uses conditional create "conditionalUpdate" : <boolean>, // If allows/uses conditional update "conditionalDelete" : <boolean>, // If allows/uses conditional delete "searchInclude" : ["<string>"], // _include values supported by the server "searchParam" : [{ // Search params supported by implementation "name" : "<string>", // R! Name of search parameter "definition" : "<uri>", // Source of definition for parameter "type" : "<code>", // R! number | date | string | token | reference | composite | quantity "documentation" : "<string>", // Server-specific usage "target" : ["<code>"], // Types of resource (if a resource reference) "chain" : ["<string>"] // Chained names supported }] }], "interaction" : [{ // What operations are supported? "code" : "<code>", // R! transaction | search-system | history-system "documentation" : "<string>" // Anything special about operation behavior }], "operation" : [{ // Definition of an operation or a custom query "name" : "<string>", // R! Name by which the operation/query is invoked "definition" : { Reference(OperationDefinition) } // R! The defined operation/query }], "documentMailbox" : ["<uri>"] // How documents are accepted in /Mailbox }], "messaging" : [{ // C? If messaging is supported "endpoint" : "<uri>", // C? Actual endpoint being described "reliableCache" : <integer>, // Reliable Message Cache Length (min) "documentation" : "<string>", // Messaging interface behavior details "event" : [{ // R! Declare support for this event "code" : { Coding }, // R! Event type "category" : "<code>", // Consequence | Currency | Notification "mode" : "<code>", // R! sender | receiver "protocol" : [{ Coding }], // http | ftp | mllp + "focus" : "<code>", // R! Resource that's focus of message "request" : { Reference(Profile) }, // R! Profile that describes the request "response" : { Reference(Profile) }, // R! Profile that describes the response "documentation" : "<string>" // Endpoint-specific event documentation }] }], "document" : [{ // C? Document definition "mode" : "<code>", // R! producer | consumer "documentation" : "<string>", // Description of document support "profile" : { Reference(Profile) } // R! Constraint on a resource used in the document }] }
Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire
Path | Definition | Type | Reference |
---|---|---|---|
Conformance.status | The status of this conformance statement | Fixed | http://hl7.org/fhir/conformance-statement-status |
Conformance.format Conformance.rest.security.certificate.type | The mime type of an attachment | Fixed | BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049) |
Conformance.rest.mode | The mode of a RESTful conformance statement | Fixed | http://hl7.org/fhir/restful-conformance-mode |
Conformance.rest.security.service | Types of security services used with FHIR | Fixed | http://hl7.org/fhir/restful-security-service |
Conformance.rest.resource.type Conformance.rest.resource.searchParam.target Conformance.messaging.event.focus | One of the resource types defined as part of FHIR | Fixed | http://hl7.org/fhir/valueset/resource-types |
Conformance.rest.resource.interaction.code | Operations supported by REST at the type or instance level | Fixed | http://hl7.org/fhir/type-restful-interaction |
Conformance.rest.resource.versioning | How the system supports versioning for a resource | Fixed | http://hl7.org/fhir/versioning-policy |
Conformance.rest.resource.searchParam.type | Data types allowed to be used for search parameters | Fixed | http://hl7.org/fhir/search-param-type |
Conformance.rest.interaction.code | Operations supported by REST at the system level | Fixed | http://hl7.org/fhir/system-restful-interaction |
Conformance.messaging.event.code | One of the message events defined as part of FHIR | Incomplete | http://hl7.org/fhir/valueset/message-events |
Conformance.messaging.event.category | The impact of the content of a message | Fixed | http://hl7.org/fhir/message-significance-category |
Conformance.messaging.event.mode | The mode of a message conformance statement | Fixed | http://hl7.org/fhir/message-conformance-event-mode |
Conformance.messaging.event.protocol | The protocol used for message transport | Fixed | http://hl7.org/fhir/message-transport |
Conformance.document.mode | Whether the application produces or consumes documents | Fixed | http://hl7.org/fhir/document-mode |
A conformance profile declares two different kinds of profiles for the functionality it describes. The Resource Profiles are specified using Conformance.rest.resource.profile element and the System Profiles are specified using Conformance.profile element.
These profiles describe the general features that are supported by the system for each kind of resource. Typically, this is the superset of all the different use-cases implemented by the system. This is a resource-level perspective of the system functionality.
These profiles describe the information handled/produced by the system on a per use case basis. Some examples of the uses for system profiles:
Typically, these profiles are a series of variations on the same set of resources - different use cases leading to handling the resources that represent them differently. These use-cases described above all pertain to system that produce and publish data, but the same concept applies to systems that consume data. For instance:
For producer and a consumer systems to exchange data successfully based on one of these system supported profiles, it's not enough to know that the systems happen to have system profiles that overlap for the use case of interest; the consumer must be able to filter the total set of resources made available by the producer system and deal only with the ones relevant to the use case.
As an example consider a laboratory system generating 1000s of reports a day. 1% of those reports are a particular endocrine report that a decision support system knows how to process. Both systems declare that they support the particular endocrine profile, but how does the expert system actually find the endocrine reports that it knows how to process?
One possible option is for the expert system to receive every single report coming from the lab system, check whether it conforms to the profile or not, and then decide whether to process it. Checking whether a resource conforms to a particular profile or not is a straight forward operation (on option is to use the provided tools for this), but this is very inefficient way - the expert system has to receive and process 100 times many resources as it uses. To help a consumer find the correct set of reports for a use-case, the producer of the resources also SHALL:
Beyond these requirements, a producer of resources SHOULD ensure that any data that would reasonably be expected to conform to the declared profiles SHOULD be published in this form.
DSTU note: there are many uninvestigated issues associated with system profiles. HL7 is actively seeking feedback from users who experiment with system profiles, and users should be prepared for changes to features and obligations in this area in the future.
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 | Paths |
date | date | The conformance statement publication date | Conformance.date |
description | string | Text search in the description of the conformance statement | Conformance.description |
event | token | Event code in a conformance statement | Conformance.messaging.event.code |
fhirversion | token | The version of FHIR | Conformance.version |
format | token | formats supported (xml | json | mime type) | Conformance.format |
mode | token | Mode - restful (server/client) or messaging (sender/receiver) | Conformance.rest.mode |
name | string | Name of the conformance statement | Conformance.name |
profile | reference | A profile id invoked in a conformance statement | Conformance.rest.resource.profile (Profile) |
publisher | string | Name of the publisher of the conformance statement | Conformance.publisher |
resource | token | Name of a resource mentioned in a conformance statement | Conformance.rest.resource.type |
security | token | Information about security of implementation | Conformance.rest.security |
software | string | Part of a the name of a software application | Conformance.software.name |
status | token | The current status of the conformance statement | Conformance.status |
supported-profile | reference | Profiles supported by the system | Conformance.profile (Profile) |
url | token | The uri that identifies the conformance statement | Conformance.url |
version | token | The version identifier of the conformance statement | Conformance.version |