ITB - Online appointment booking service
1.0.0 - Initial Release

ITB - Online appointment booking service, published by Service Well AB. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/servicewell/servicewell.fhir.wof-portal/ and changes regularly. See the Directory of published versions

Resource Profile: ServiceProviderPortal

Official URL: https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/service-provider-portal Version: 1.0.0
Active as of 2026-04-20 Computable Name: ServiceProviderPortal

ServiceProvider represents the top-level owning organization within the platform.

It answers the question: “Which organization owns the configuration, endpoints, and service structure for a customer?”

A ServiceProvider:

  • Represents the highest-level customer context (tenant) in the platform
  • Owns all HealthcareService resources within its scope
  • Owns all technical endpoints exposed for the customer
  • Owns all PractitionerRole resources associated with its services
  • Owns top-level configuration and settings for the customer

A ServiceProvider is modeled as an Organization but is intentionally separated from clinical and financial roles such as HealthcareService and BillingOrganization.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... meta Σ 0..1 Meta Metadata about the resource
.... versionId SOΣ 0..1 id Server-managed resource version
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... profile SOΣ 1..* canonical(StructureDefinition) Profile declaration for this portal resource
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
... active ?!Σ 0..1 boolean Whether the organization's record is still in active use

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
dom-2 error Organization If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Organization If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Organization If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Organization If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Organization A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
org-1 error Organization The organization SHALL at least have a name or an identifier, and possibly more than one (identifier.count() + name.count()) > 0

This structure is derived from Organization

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization 0..* Organization A grouping of people or organizations with a common purpose
... meta
.... versionId SO 0..1 id Server-managed resource version
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... profile SO 1..* canonical(StructureDefinition) Profile declaration for this portal resource
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
... implicitRules 0..0 A set of rules under which this content was created
... modifierExtension 0..0 Extension
... alias 0..0 A list of alternate names that the organization is known as, or was known as in the past
... address 0..0 An address for the organization
... partOf 0..0 The organization of which this organization forms a part
... contact 0..0 Contact for the organization for a certain purpose
... endpoint 0..0 Technical endpoints providing access to services operated for the organization

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... versionId SOΣ 0..1 id Server-managed resource version
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... lastUpdated Σ 0..1 instant When the resource version last changed
.... source Σ 0..1 uri Identifies where the resource comes from
.... profile SOΣ 1..* canonical(StructureDefinition) Profile declaration for this portal resource
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... security Σ 0..* Coding Security Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
.... tag Σ 0..* Coding Tags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... identifier ΣC 0..* Identifier Identifies this organization across multiple systems
... active ?!Σ 0..1 boolean Whether the organization's record is still in active use
... name ΣC 0..1 string Name used for the organization
... telecom C 0..* ContactPoint A contact detail for the organization
Constraints: org-3

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Organization.meta.security Base extensible SecurityLabels 📍4.0.1 FHIR Std.
Organization.meta.tag Base example Common Tags 📍4.0.1 FHIR Std.
Organization.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Organization.contact.​purpose Base extensible Contact entity type 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Organization If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Organization If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Organization If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Organization If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Organization A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
org-1 error Organization The organization SHALL at least have a name or an identifier, and possibly more than one (identifier.count() + name.count()) > 0
org-3 error Organization.telecom The telecom of an organization can never be of use 'home' where(use = 'home').empty()

This structure is derived from Organization

Summary

Mandatory: 0 element(1 nested mandatory element)
Must-Support: 2 elements
Prohibited: 8 elements

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... meta Σ 0..1 Meta Metadata about the resource
.... versionId SOΣ 0..1 id Server-managed resource version
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... profile SOΣ 1..* canonical(StructureDefinition) Profile declaration for this portal resource
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
... active ?!Σ 0..1 boolean Whether the organization's record is still in active use

doco Documentation for this format

Constraints

Id Grade Path(s) Description Expression
dom-2 error Organization If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Organization If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Organization If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Organization If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Organization A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
org-1 error Organization The organization SHALL at least have a name or an identifier, and possibly more than one (identifier.count() + name.count()) > 0

Differential View

This structure is derived from Organization

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization 0..* Organization A grouping of people or organizations with a common purpose
... meta
.... versionId SO 0..1 id Server-managed resource version
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... profile SO 1..* canonical(StructureDefinition) Profile declaration for this portal resource
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
... implicitRules 0..0 A set of rules under which this content was created
... modifierExtension 0..0 Extension
... alias 0..0 A list of alternate names that the organization is known as, or was known as in the past
... address 0..0 An address for the organization
... partOf 0..0 The organization of which this organization forms a part
... contact 0..0 Contact for the organization for a certain purpose
... endpoint 0..0 Technical endpoints providing access to services operated for the organization

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Organization C 0..* Organization A grouping of people or organizations with a common purpose
Constraints: org-1
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... versionId SOΣ 0..1 id Server-managed resource version
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... lastUpdated Σ 0..1 instant When the resource version last changed
.... source Σ 0..1 uri Identifies where the resource comes from
.... profile SOΣ 1..* canonical(StructureDefinition) Profile declaration for this portal resource
ObligationsActor
SHALL:populate https://canonical.fhir.link/servicewell/wof-portal/ActorDefinition/wof-portal-server
.... security Σ 0..* Coding Security Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
.... tag Σ 0..* Coding Tags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... identifier ΣC 0..* Identifier Identifies this organization across multiple systems
... active ?!Σ 0..1 boolean Whether the organization's record is still in active use
... name ΣC 0..1 string Name used for the organization
... telecom C 0..* ContactPoint A contact detail for the organization
Constraints: org-3

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Organization.meta.security Base extensible SecurityLabels 📍4.0.1 FHIR Std.
Organization.meta.tag Base example Common Tags 📍4.0.1 FHIR Std.
Organization.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Organization.contact.​purpose Base extensible Contact entity type 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Organization If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Organization If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Organization If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Organization If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Organization A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
org-1 error Organization The organization SHALL at least have a name or an identifier, and possibly more than one (identifier.count() + name.count()) > 0
org-3 error Organization.telecom The telecom of an organization can never be of use 'home' where(use = 'home').empty()

This structure is derived from Organization

Summary

Mandatory: 0 element(1 nested mandatory element)
Must-Support: 2 elements
Prohibited: 8 elements

 

Other representations of profile: CSV, Excel, Schematron