Endpoint
Introduction
Scope and Usage
An endpoint describes the technical details of a location that can be connected to for the delivery/retrieval of information. Sufficient information is required to ensure that a connection can be made securely, and appropriate data transmitted as defined by the endpoint owner. This is not a description of details of the current system, as found in CapabilityStatement, but of another (potentially external) system.
These may be locally hosted services, regional services, or national service.
These resources are typically used to identify where to locate endpoint details for:
- Questionnaires: Where to send information (currently an SDC extension with just the address)
- ValueSet: Where related Terminology Services can be found (where not local)
- Subscription: The destination to send the subscribed data (or to pull)
- Messaging: (currently defined in the Message Header, but only as the address)
- Referrals: Where to send referral requests
(linked to the services directory resources - Organization/Location/Practitioner/HealthcareService) - Referrals - Templates: Where to locate referral templates (Questionnaires)
(linked to the services directory resources - Organization/Location/Practitioner/HealthcareService) - CarePlans: Where a shared CarePlan can be found
- Scheduling: Where to lookup to discover schedules/availability information
(linked to the services directory resources - Organization/Location/Practitioner/HealthcareService) - Scheduling: Where to lookup to send appointment requests
(linked to the services directory resources - Organization/Location/Practitioner/HealthcareService) - Patient/Person: Location of Master Patient/Person Indexes
- Service Provider Directories: Location of related directories (parent/child/federated)
- DICOM/imaging: Location of where to query, retrieve or store imaging content and metadata (QIDO-RS, WADO-RS, WADO-URI, STOW-RS)
Boundaries and Relationships
CapabilityStatement
The endpoint is distinct from a capability statement in that the CapabilityStatement statement describes the entire capability of a system (and in the metadata case, just this system)
Where the endpoint resource describes the technical details for how to connect, and for what purposes (which could be a small sub-set of the system's capabilities, and might not be a FHIR endpoint).
ContactPoint
Endpoints are used to facilitate system to system communication, providing the details of the addressing of the system, purpose of use, protocols required/provided, and any other details required to communicate between the systems. (such as configuration parameters, require headers ...) The address value in the endpoint can only be used in the context of the provided details.
E.g. If the endpoint has a URL for an XDS service, using that in a browser by a user is meaningless.
E.g.2 If the endpoint has a US Direct address, using this to send a normal email message will not work, as they are not true email addresses (even though they appear to be)
A ContactPoint contains contact information, such as a phone number, web address that a user can directly interact with, no additional information would be required to use the value. The value is generally used to communicate with an entity directly, not a system.
Background and Context
Expected Implementations
- Any solution where there are distributed FHIR servers deployed and need discovery/configuration
- Systems advertising connectivity information in a DICOM environment
- (Refer to the scope and usage section for common uses)
Notes
Notes
- The IHE connection types that were defined in R4 have been moved to IHE defined profiles and vocabulary at https://profiles.ihe.net/ITI/mCSD
- Endpoint.period is meant to represent the general planned period of time when the Endpoint may be used, for example when an endpoint is being commissioned or decommissioned. It is not meant to account for temporary downtimes or other short terms changes of availability.
For example, if an Endpoint is only available during business hours (9-5), the lack of availability during the night would not be reflected in Endpoint.period.
Payload Advertising
The Endpoint.payload.type is intended to be a description of the semantic content, for example, does this endpoint support exchanging care plans, discharge summaries, referrals, appointment bookings, etc. The "how" that content is exchanged is described elsewhere, via the mimeType (what format) and connectionType (what exchange method).
The Endpoint.profileCanonical/profileUri describes the detailed type of content that is handles/available at the endpoint. (Such as canonicals of FHIR resource profiles, or other non-fhir based profile references)
StructureDefinition
Elements (Simplified)
- Endpoint [0..*]: - The technical details of an endpoint that can be used for electronic services
- Endpoint.identifier [0..*]: Identifier Identifies this endpoint across multiple systems
- Endpoint.status [1..1]: code required:endpoint-status active | limited | suspended | error | off | entered-in-error
- Endpoint.connectionType [1..*]: CodeableConcept example:endpoint-connection-type Protocol/Profile/Standard to be used with this endpoint connection
- Endpoint.name [0..1]: string A name that this endpoint can be identified by
- Endpoint.description [0..1]: string Additional details about the endpoint that could be displayed as further information to identify the description beyond its name
- Endpoint.environmentType [0..*]: CodeableConcept extensible:endpoint-environment The type of environment(s) exposed at this endpoint
- Endpoint.managingOrganization [0..1]: Reference(Organization) Organization that manages this endpoint (might not be the organization that exposes the endpoint)
- Endpoint.contact [0..*]: ContactPoint Contact details for source (e.g. troubleshooting)
- Endpoint.period [0..1]: Period Interval the endpoint is expected to be operational
- Endpoint.availability [0..1]: Availability Times the endpoint is expected to be available (including exceptions)
- Endpoint.payload [0..*]: BackboneElement Set of payloads that are provided by this endpoint
- Endpoint.payload.type [0..*]: CodeableConcept example:endpoint-payload-type The type of content that may be used at this endpoint (e.g. XDS Discharge summaries)
- Endpoint.payload.mimeType [0..*]: code required:mimetypes Mimetype to send. If not specified, the content could be anything (including no payload, if the connectionType defined this)
- Endpoint.payload.profileCanonical [0..*]: canonical The profile that is expected at this endpoint
- Endpoint.payload.profileUri [0..*]: uri The non-fhir based profile that is expected at this endpoint
- Endpoint.address [1..1]: url The technical base address for connecting to this endpoint
- Endpoint.header [0..*]: string Usage depends on the channel type
Mappings
- Endpoint Mappings — 21 mapping entries
Resource Packs
list-Endpoint-packs.xml
<?xml version="1.0" encoding="UTF-8"?>
<List xmlns="http://hl7.org/fhir">
<id value="Endpoint-packs"/>
<status value="current"/>
<mode value="working"/>
</List>
Search Parameters
- connection-type — token — Protocol/Profile/Standard to be used with this endpoint connection —
Endpoint.connectionType - identifier — token — Identifies this endpoint across multiple systems —
Endpoint.identifier - name — string — A name that this endpoint can be identified by —
Endpoint.name - organization — reference — The organization that is managing the endpoint —
Endpoint.managingOrganization - payload-type — token — The type of content that may be used at this endpoint (e.g. XDS Discharge summaries) —
Endpoint.payload.type - payload-profile — reference — The profiles (FHIR or non-FHIR) that might be used at this endpoint —
Endpoint.payload.profileCanonical | Endpoint.payload.profileUri - status — token — The current status of the Endpoint (usually expected to be active) —
Endpoint.status
Examples
- b5711af0a-d678-46d1-86e9-66e454cf1522 — endpoint-examples-general-template — Collection of endpoint examples
- direct-endpoint — endpoint-example-direct — Example of a DIRECT endpoint
- endpoint-example — endpoint-example
- endpoint-example-auhl7v2 — endpoint-example-auhl7v2
- endpoint-example-ccdaxca — endpoint-example-ccdaxca
- endpoint-example-direct — endpoint-example-direct
- endpoint-example-iid — endpoint-example-iid
- endpoint-example-uscorefhir — endpoint-example-uscorefhir
- endpoint-example-wadors — endpoint-example-wadors
- endpoint-examples-general-template — endpoint-examples-general-template
- endpoint-examples-header — endpoint-examples-header
- example — endpoint-example — Example Endpoint
- example-au-hl7v2 — endpoint-example-auhl7v2 — Example of an AU HL7v2 Referral Exchange endpoint
- example-ccda-xca — endpoint-example-ccdaxca — Example of an XCA CCDA Referral Exchange endpoint
- example-usCore-fhir — endpoint-example-uscorefhir — Example of an US Core FHIR REST endpoint
- example-wadors — endpoint-example-wadors — Example of DICOM WADO-RS endpoint
Mapping Exceptions
endpoint-fivews-mapping-exceptions.xml
Unmapped Elements
- FiveWs.recorded — Unknown
- FiveWs.author — Unknown
- FiveWs.actor — Unknown
- FiveWs.cause — Unknown
- FiveWs.version — Unknown
- FiveWs.witness — Unknown
- FiveWs.where — Unknown
- FiveWs.context — Unknown
- FiveWs.init — Unknown
- FiveWs.why — Unknown
- FiveWs.source — Unknown
- FiveWs.who — Unknown
- FiveWs.grade — Unknown
- FiveWs.planned — Unknown
- FiveWs.subject — Unknown