FHIR IG analytics| Package | hl7.fhir.uv.cds-hooks |
| Resource Type | StructureDefinition |
| Id | StructureDefinition-CDSHooksServices.json |
| FHIR Version | R4 |
| Source | https://build.fhir.org/ig/HL7/cds-hooks/StructureDefinition-CDSHooksServices.html |
| URL | http://cds-hooks.hl7.org/StructureDefinition/CDSHooksServices |
| Version | 3.0.0-ballot |
| Status | draft |
| Date | 2026-06-24T14:14:29+00:00 |
| Name | CDSHooksServices |
| Title | CDSHooks Discovery Response (Logical Definition) |
| Realm | uv |
| Authority | hl7 |
| Description | This structure is defined to allow the FHIR Validator to validate a CDSHooks Discovery response body. |
| Type | http://cds-hooks.hl7.org/StructureDefinition/CDSHooksServices |
| Kind | logical |
No resources found
| StructureDefinition | ||
| hl7.fhir.uv.cds-hooks#current | CDSHooksElement | CDSHooks Services Base Extensible Element |
| hl7.fhir.uv.tools#current | CDSHooksElement | CDSHooks Services Base Extensible Element |
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureDefinition CDSHooksServices
| Name | Flags | Card. | Type | Description & Constraints |
|---|---|---|---|---|
![]() | 0..* | CDSHooksElement | The response to the discovery endpoint Elements defined in Ancestors:extension | |
![]() ![]() | 0..* | CDSHooksElement | An array of CDS Services JSON: The type of this element is inferred from the JSON type in the instance | |
![]() ![]() ![]() | 1..1 | string | The hook this service should be invoked on | |
![]() ![]() ![]() | 0..1 | string | The human-friendly name of this service | |
![]() ![]() ![]() | 1..1 | string | The description of this service | |
![]() ![]() ![]() | 1..1 | string | The {id} portion of the URL to this service | |
![]() ![]() ![]() | 0..* | Base | Key/value pairs of FHIR queries to provide when calling JSON: Represented as a single JSON Object with named properties using the value of the key child as the key | |
![]() ![]() ![]() ![]() | 1..1 | code | Key of FHIR query | |
![]() ![]() ![]() ![]() | 1..1 | string | FHIR query template | |
![]() ![]() ![]() | 0..1 | string | Human-friendly preconditions for the use of this CDS Service | |
![]() ![]() ![]() | 0..1 | string | CDS Hooks specification version implemented | |
{
"resourceType": "StructureDefinition",
"id": "CDSHooksServices",
"text": {
"status": "extensions",
"div": "<!-- snip (see above) -->"
},
"extension": [
{
"url": "http://hl7.org/fhir/tools/StructureDefinition/json-suppress-resourcetype",
"valueBoolean": true
},
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
"valueCode": "cds"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
"valueCode": "informative",
"_valueCode": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom",
"valueCanonical": "http://cds-hooks.hl7.org/ImplementationGuide/hl7.fhir.uv.cds-hooks"
}
]
}
}
],
"url": "http://cds-hooks.hl7.org/StructureDefinition/CDSHooksServices",
"version": "3.0.0-ballot",
"name": "CDSHooksServices",
"title": "CDSHooks Discovery Response (Logical Definition)",
"status": "draft",
"experimental": true,
"date": "2026-06-24T14:14:29+00:00",
"publisher": "Clinical Decision Support WG",
"contact": [
{
"name": "Clinical Decision Support WG",
"telecom": [
{
"system": "url",
"value": "http://www.hl7.org/Special/committees/dss/index.cfm"
},
{
"system": "email",
"value": "cds@lists.HL7.org"
}
]
}
],
"description": "This structure is defined to allow the FHIR Validator to validate a CDSHooks Discovery response body.",
"jurisdiction": [
{
"coding": [
{
"system": "http://unstats.un.org/unsd/methods/m49/m49.htm",
"code": "001",
"display": "World"
}
]
}
],
"fhirVersion": "4.0.1",
"kind": "logical",
"abstract": false,
"type": "http://cds-hooks.hl7.org/StructureDefinition/CDSHooksServices",
"baseDefinition": "http://cds-hooks.hl7.org/StructureDefinition/CDSHooksElement",
"derivation": "specialization",
"snapshot": {
"extension": [
{
"url": "http://hl7.org/fhir/tools/StructureDefinition/snapshot-base-version",
"valueString": "3.0.0-ballot"
}
],
"element": [
{
"id": "CDSHooksServices",
"path": "CDSHooksServices",
"short": "The response to the discovery endpoint",
"definition": "The response to the discovery endpoint SHALL be an object containing a list of CDS Services",
"min": 0,
"max": "*",
"base": {
"path": "Base",
"min": 0,
"max": "*"
},
"isModifier": false
},
{
"id": "CDSHooksServices.extension",
"path": "CDSHooksServices.extension",
"short": "Object that has Named Extension Properties",
"definition": "A JSON object that has properties where the names are defined by the extension definitions",
"comment": "Extension structures SHOULD use a strategy for naming that ensures global uniqueness, such as reverse-domain-name notation, e.g. com.cds-hooks.sandbox.myextension-practitionerspecialty. How to handle complex extensions (objects) is not defined",
"min": 0,
"max": "1",
"base": {
"path": "CDSHooksElement.extension",
"min": 0,
"max": "1"
},
"type": [
{
"code": "http://hl7.org/fhir/tools/StructureDefinition/CDSHooksExtensions"
}
]
},
{
"id": "CDSHooksServices.services",
"extension": [
{
"url": "http://hl7.org/fhir/tools/StructureDefinition/json-empty-behavior",
"valueCode": "present"
}
],
"path": "CDSHooksServices.services",
"short": "An array of CDS Services",
"definition": "An array of CDS Services",
"comment": "If the CDS server hosts no CDS Services, the discovery endpoint should return a 200 HTTP response with an empty array of services. Note that a CDS server can host multiple entries of CDS service with the same id for different hooks. This allows a service to update its advice based on changes in workflow.",
"min": 0,
"max": "*",
"base": {
"path": "CDSHooksServices.services",
"min": 0,
"max": "*"
},
"type": [
{
"code": "http://hl7.org/fhir/tools/StructureDefinition/CDSHooksElement"
}
]
},
{
"id": "CDSHooksServices.services.extension",
"path": "CDSHooksServices.services.extension",
"short": "Object that has Named Extension Properties",
"definition": "A JSON object that has properties where the names are defined by the extension definitions",
"comment": "Extension structures SHOULD use a strategy for naming that ensures global uniqueness, such as reverse-domain-name notation, e.g. com.cds-hooks.sandbox.myextension-practitionerspecialty. How to handle complex extensions (objects) is not defined",
"min": 0,
"max": "1",
"base": {
"path": "CDSHooksElement.extension",
"min": 0,
"max": "1"
},
"type": [
{
"code": "http://hl7.org/fhir/tools/StructureDefinition/CDSHooksExtensions"
}
]
},
{
"id": "CDSHooksServices.services.hook",
"path": "CDSHooksServices.services.hook",
"short": "The hook this service should be invoked on",
"definition": "The hook this service should be invoked on",
"min": 1,
"max": "1",
"base": {
"path": "CDSHooksServices.services.hook",
"min": 1,
"max": "1"
},
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.title",
"path": "CDSHooksServices.services.title",
"short": "The human-friendly name of this service",
"definition": "The human-friendly name of this service",
"min": 0,
"max": "1",
"base": {
"path": "CDSHooksServices.services.title",
"min": 0,
"max": "1"
},
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.description",
"path": "CDSHooksServices.services.description",
"short": "The description of this service",
"definition": "The description of this service",
"min": 1,
"max": "1",
"base": {
"path": "CDSHooksServices.services.description",
"min": 1,
"max": "1"
},
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.id",
"path": "CDSHooksServices.services.id",
"short": "The {id} portion of the URL to this service",
"definition": "The {id} portion of the URL to this service which is available at {baseUrl}/cds-services/{id}",
"min": 1,
"max": "1",
"base": {
"path": "CDSHooksServices.services.id",
"min": 1,
"max": "1"
},
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.prefetch",
"extension": [
{
"url": "http://hl7.org/fhir/tools/StructureDefinition/json-property-key",
"valueCode": "key"
}
],
"path": "CDSHooksServices.services.prefetch",
"short": "Key/value pairs of FHIR queries to provide when calling",
"definition": "An object containing key/value pairs of FHIR queries that this service is requesting the CDS Client to perform and provide on each service call. The key is a string that describes the type of data being requested and the value is a string representing the FHIR query",
"min": 0,
"max": "*",
"base": {
"path": "CDSHooksServices.services.prefetch",
"min": 0,
"max": "*"
},
"type": [
{
"code": "Base"
}
]
},
{
"id": "CDSHooksServices.services.prefetch.key",
"path": "CDSHooksServices.services.prefetch.key",
"short": "Key of FHIR query",
"definition": "Key of FHIR query - name for client to use when sending prefetched data to the service",
"min": 1,
"max": "1",
"base": {
"path": "CDSHooksServices.services.prefetch.key",
"min": 1,
"max": "1"
},
"type": [
{
"code": "code"
}
]
},
{
"id": "CDSHooksServices.services.prefetch.value",
"path": "CDSHooksServices.services.prefetch.value",
"short": "FHIR query template",
"definition": "A FHIR query for the CDS Client to perform, which may include prefetch tokens",
"min": 1,
"max": "1",
"base": {
"path": "CDSHooksServices.services.prefetch.value",
"min": 1,
"max": "1"
},
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.usageRequirements",
"path": "CDSHooksServices.services.usageRequirements",
"short": "Human-friendly preconditions for the use of this CDS Service",
"definition": "Human-friendly description of any preconditions for the use of this CDS Service",
"min": 0,
"max": "1",
"base": {
"path": "CDSHooksServices.services.usageRequirements",
"min": 0,
"max": "1"
},
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.version",
"path": "CDSHooksServices.services.version",
"short": "CDS Hooks specification version implemented",
"definition": "The version of the CDS Hooks specification implemented (STU1 | STU2 | STU3)",
"min": 0,
"max": "1",
"base": {
"path": "CDSHooksServices.services.version",
"min": 0,
"max": "1"
},
"type": [
{
"code": "string"
}
]
}
]
},
"differential": {
"element": [
{
"id": "CDSHooksServices",
"path": "CDSHooksServices",
"short": "The response to the discovery endpoint",
"definition": "The response to the discovery endpoint SHALL be an object containing a list of CDS Services"
},
{
"id": "CDSHooksServices.services",
"extension": [
{
"url": "http://hl7.org/fhir/tools/StructureDefinition/json-empty-behavior",
"valueCode": "present"
}
],
"path": "CDSHooksServices.services",
"short": "An array of CDS Services",
"definition": "An array of CDS Services",
"comment": "If the CDS server hosts no CDS Services, the discovery endpoint should return a 200 HTTP response with an empty array of services. Note that a CDS server can host multiple entries of CDS service with the same id for different hooks. This allows a service to update its advice based on changes in workflow.",
"min": 0,
"max": "*",
"type": [
{
"code": "http://hl7.org/fhir/tools/StructureDefinition/CDSHooksElement"
}
]
},
{
"id": "CDSHooksServices.services.hook",
"path": "CDSHooksServices.services.hook",
"short": "The hook this service should be invoked on",
"definition": "The hook this service should be invoked on",
"min": 1,
"max": "1",
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.title",
"path": "CDSHooksServices.services.title",
"short": "The human-friendly name of this service",
"definition": "The human-friendly name of this service",
"min": 0,
"max": "1",
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.description",
"path": "CDSHooksServices.services.description",
"short": "The description of this service",
"definition": "The description of this service",
"min": 1,
"max": "1",
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.id",
"path": "CDSHooksServices.services.id",
"short": "The {id} portion of the URL to this service",
"definition": "The {id} portion of the URL to this service which is available at {baseUrl}/cds-services/{id}",
"min": 1,
"max": "1",
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.prefetch",
"extension": [
{
"url": "http://hl7.org/fhir/tools/StructureDefinition/json-property-key",
"valueCode": "key"
}
],
"path": "CDSHooksServices.services.prefetch",
"short": "Key/value pairs of FHIR queries to provide when calling",
"definition": "An object containing key/value pairs of FHIR queries that this service is requesting the CDS Client to perform and provide on each service call. The key is a string that describes the type of data being requested and the value is a string representing the FHIR query",
"min": 0,
"max": "*",
"type": [
{
"code": "Base"
}
]
},
{
"id": "CDSHooksServices.services.prefetch.key",
"path": "CDSHooksServices.services.prefetch.key",
"short": "Key of FHIR query",
"definition": "Key of FHIR query - name for client to use when sending prefetched data to the service",
"min": 1,
"max": "1",
"type": [
{
"code": "code"
}
]
},
{
"id": "CDSHooksServices.services.prefetch.value",
"path": "CDSHooksServices.services.prefetch.value",
"short": "FHIR query template",
"definition": "A FHIR query for the CDS Client to perform, which may include prefetch tokens",
"min": 1,
"max": "1",
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.usageRequirements",
"path": "CDSHooksServices.services.usageRequirements",
"short": "Human-friendly preconditions for the use of this CDS Service",
"definition": "Human-friendly description of any preconditions for the use of this CDS Service",
"min": 0,
"max": "1",
"type": [
{
"code": "string"
}
]
},
{
"id": "CDSHooksServices.services.version",
"path": "CDSHooksServices.services.version",
"short": "CDS Hooks specification version implemented",
"definition": "The version of the CDS Hooks specification implemented (STU1 | STU2 | STU3)",
"min": 0,
"max": "1",
"type": [
{
"code": "string"
}
]
}
]
}
}