FHIR IG analytics| Package | servicewell.fhir.wof-portal |
| Resource Type | CapabilityStatement |
| Id | CapabilityStatement-WOFPortalCapabilityStatement.json |
| FHIR Version | R4 |
| Source | file:///azp/_work/1/s/output/CapabilityStatement-WOFPortalCapabilityStatement.html |
| URL | https://canonical.fhir.link/servicewell/wof-portal/CapabilityStatement/WOFPortalCapabilityStatement |
| Version | 1.0.0 |
| Status | active |
| Date | 2026-02-02T12:00:00+00:00 |
| Name | WOFPortalCapabilityStatement |
| Title | WOF Portal Capability Statement |
| Description | This CapabilityStatement defines the canonical domain model and API principles of the **WOF Portal** owned and operated by Service Well AB. |
| Purpose | **IHE Scheduling:** This server instantiates *IHE.Scheduling.server* (v1.0.0). ## Layering principle - **WOF Connect** defines vendor-facing interoperability contracts. - **WOF Portal** builds on WOF Connect to provide a single, enriched, canonical API. ## Domain separation principles - **ActivityDefinition** represents a shared service concept and SHALL be identified by code, not by resource id. - **HealthcareService** represents where care is performed. - **BillingOrganization** represents financial responsibility and is independent of service location. - **PractitionerRole** represents a practitioner acting in a specific operational and financial context. ## Many-to-many relationships are intentional - A HealthcareService MAY be associated with multiple BillingOrganizations. - A BillingOrganization MAY provide services at multiple HealthcareServices. - A Practitioner MAY have multiple PractitionerRoles across services and billing contexts. ## Offer and availability principles - **Offer** represents a computed, context-specific view combining ActivityDefinition, HealthcareService, and PractitionerRole. - Offer is intended for presentation and selection, not for scheduling. - Actual bookability requires downstream slot or availability checks. ## Integration principle - External systems integrate with the platform by implementing **WOF Connect**. - WOF Portal APIs MAY return enriched and aggregated views not available in WOF Connect. This CapabilityStatement documents the canonical behavior of the WOF Portal API. ## Client interaction overview The following diagram illustrates outbound API calls from a patient-facing client to the WOF Portal Proxy. It represents actual usage patterns and supported interactions. Theres currently two domains for our dev-api: ``` - **api.wellonfhir.se/{{tenant}}/1.0/R4** - Swedish developmnent environment - **api-no.wellonfhir.se/{{tenant}}/1.0/R4** - Norwegian development environment ``` <small> tenant is a stable identifier for the organization</small> Both Requires [authentication](./get-started.html#authentication-and-security) Client → WOF-PORTAL: <style> .mermaid { min-height: 640px; width: 100%; max-width: 1600px; margin: 0 auto; } .mermaid svg { width: 100%; height: auto; } </style> ```mermaid %%{init: {'theme':'neutral','securityLevel':'loose','fontFamily':'Inter, Arial, sans-serif','sequence': {'diagramMarginX': 30, 'diagramMarginY': 20, 'actorMargin': 220, 'width': 180, 'messageMargin': 32, 'mirrorActors': false, 'wrap': true}}}%%sequenceDiagram participant Client as Scheduling Client participant Auth as Auth Endpoint participant Portal as WOF Portal API Note over Client,Portal: base = {{baseUrl}}/{{tenant}}/{{apiVersion}}/R4 %% System token (from DemoOris.rest) Client ->> Auth: POST {{base}}/auth/system-token Note over Client,Auth: Header: X-ApiKey {{apiKey}} Auth -->> Client: access_token (system) %% HealthcareService Client ->> Portal: GET {{base}}/fhir/HealthcareService Client ->> Portal: GET {{base}}/fhir/HealthcareService/{{healthcareServiceId}} Client ->> Portal: GET {{base}}/fhir/HealthcareService/{{healthcareServiceId}}/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}} %% Root operation Client ->> Portal: GET {{base}}/fhir/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includeHealthcareServicePortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}} %% ActivityDefinition Client ->> Portal: GET {{base}}/fhir/ActivityDefinition Client ->> Portal: GET {{base}}/fhir/ActivityDefinition/{{activityDefinitionId}} Client ->> Portal: GET {{base}}/fhir/ActivityDefinition/{{activityDefinitionId}}/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includeHealthcareServicePortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}} Client ->> Portal: GET {{base}}/fhir/ActivityDefinition/{{activityDefinitionId}}/$get-offers-context %% PractitionerRole Client ->> Portal: GET {{base}}/fhir/PractitionerRole Client ->> Portal: GET {{base}}/fhir/PractitionerRole/{{practitionerRoleId}} Client ->> Portal: GET {{base}}/fhir/PractitionerRole/{{practitionerRoleId}}/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includeHealthcareServicePortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}} %% Catalog resources Client ->> Portal: GET {{base}}/fhir/Location Client ->> Portal: GET {{base}}/fhir/Organization %% IHE Scheduling find Client ->> Portal: GET {{base}}/fhir/Appointment/$find<br/>?start={{find_start}}&end={{find_end}}<br/>&visit-type={{visitTypeSystem}}|{{visitTypeCode}}<br/>&healthcareService=HealthcareService/{{healthcareServiceId}}<br/>&practitionerRole=PractitionerRole/{{practitionerRoleId}} ``` This diagram is informational and documents expected client usage. It does not expand or modify the formal FHIR conformance rules. |
| Kind | capability |
No resources found
| CapabilityStatement | ||
| ihe.iti.scheduling#current | IHE.Scheduling.server | IHE Scheduling Server |
| OperationDefinition | ||
| servicewell.fhir.wof-portal#1.0.0 | BookAppointment | Book / Modify / Cancel Appointment |
| servicewell.fhir.wof-portal#1.0.0 | FindAppointments | Find Appointments (Available Slots) |
| servicewell.fhir.wof-portal#1.0.0 | get-offers-context | $getOffersContext — Booking Content Context |
| StructureDefinition | ||
| hl7se.fhir.base#current | SEBasePatient | SE base profil for patient |
| servicewell.fhir.wof-portal#1.0.0 | activity-definition-portal | ActivityDefinitionPortal |
| servicewell.fhir.wof-portal#1.0.0 | healthcare-service-portal | HealthcareServicePortal |
| servicewell.fhir.wof-portal#1.0.0 | portal-appointment | Appointment Portal |
| servicewell.fhir.wof-portal#1.0.0 | portal-available-appointment | Available Appointment Portal |
| servicewell.fhir.wof-portal#1.0.0 | portal-patient | Portal Patient |
| servicewell.fhir.wof-portal#1.0.0 | practitioner-role-portal | PractitionerRolePortal |
| servicewell.fhir.wof-portal#1.0.0 | service-provider-portal | ServiceProviderPortal |
Note: links and images are rebased to the (stated) source
Generated Narrative: CapabilityStatement WOFPortalCapabilityStatement
json, xmlNote to Implementers: FHIR Capabilities
Any FHIR capability may be 'allowed' by the system unless explicitly marked as 'SHALL NOT'. A few items are marked as MAY in the Implementation Guide to highlight their potential relevance to the use case.
This CapabilityStatement instantiates the CapabilityStatement IHE Scheduling Serverversion: 1.0.0)
server| Conformance | Operation | Documentation |
|---|---|---|
| SHALL | $getOffersContext | Returns enriched offer context for presentation and selection. Invoked as [base]/$get-offers-context |
The summary table lists the resources that are part of this configuration, and for each resource it lists:
_include_revinclude| Resource Type | Profile | R | S | U | C | Searches | _include | _revinclude | Operations |
|---|---|---|---|---|---|---|---|---|---|
| ActivityDefinition | Supported Profiles ActivityDefinitionPortal | y | y | $get-offers-context | |||||
| HealthcareService | Supported Profiles HealthcareServicePortal | y | y | $get-offers-context | |||||
| PractitionerRole | Supported Profiles PractitionerRolePortal | y | y | service | $get-offers-context | ||||
| Patient | Supported Profiles Portal Patient http://hl7.se/fhir/ig/base/StructureDefinition/SEBasePatient | y | y | identifier | |||||
| Organization | Supported Profiles ServiceProviderPortal | y | y | _id, identifier | |||||
| Appointment | Supported Profiles Appointment Portal Available Appointment Portal | y | y | actor | $find, $book | ||||
| Location | y | physical-type |
Represents shared service concepts identified by code.
| Conformance | Operation | Documentation |
|---|---|---|
| SHALL | $get-offers-context | Returns enriched offer context for presentation and selection. |
Represents where healthcare services are performed.
| Conformance | Operation | Documentation |
|---|---|---|
| SHALL | $get-offers-context | Returns enriched offer context for presentation and selection. |
Represents practitioners acting in specific operational and financial contexts.
| Conformance | Parameter | Type | Documentation |
|---|---|---|---|
| SHALL | service | reference | Filter by PractitionerRole.service (Reference to HealthcareService). |
| Conformance | Operation | Documentation |
|---|---|---|
| SHALL | $get-offers-context | Returns enriched offer context for presentation and selection. |
Portal Patienthttp://hl7.se/fhir/ig/base/StructureDefinition/SEBasePatient
Represents patients within the WOF Portal, conforming to the PortalPatient profile.
| Conformance | Parameter | Type | Documentation |
|---|---|---|---|
| SHALL | identifier | token | Search by personal number using system|value. |
Organizations in WOF Portal MAY conform to multiple profiles, representing different organizational roles.
ServiceProvider represents the top-level owning organization (tenant) within the platform. BillingOrganization represents financial responsibility and ownership of invoicing and reporting.
Organizations are not exposed as searchable catalogs. They are resolved using stable identifiers only:
- resource id
- organization number (identifier)
Clients MAY filter by profile when needed (e.g. using _profile), but profile-based filtering is not required for lookup by id or identifier.
| Conformance | Parameter | Type | Documentation |
|---|---|---|---|
| SHALL | _id | token | Search by Organization resource id. |
| SHALL | identifier | token | Search by organization number using system|value. |
Appointment access in WOF Portal.
PortalAppointment— represents a booked appointment in a patient context.PortalAvailableAppointment— represents an available appointment returned by$find.Supports filtering by actor (e.g., HealthcareService/{id}) and IHE Scheduling operations.
| Conformance | Parameter | Type | Documentation |
|---|---|---|---|
| SHALL | actor | reference | Filter appointments by participant actor (e.g., HealthcareService/{id}). |
Portal-scoped locations used as areas. Supported interaction: search.
| Conformance | Parameter | Type | Documentation |
|---|---|---|---|
| SHALL | physical-type | token | Filter by Location.physicalType (e.g., Area). |
{
"resourceType": "CapabilityStatement",
"id": "WOFPortalCapabilityStatement",
"text": {
"status": "extensions",
"div": "<!-- snip (see above) -->"
},
"url": "https://canonical.fhir.link/servicewell/wof-portal/CapabilityStatement/WOFPortalCapabilityStatement",
"version": "1.0.0",
"name": "WOFPortalCapabilityStatement",
"title": "WOF Portal Capability Statement",
"status": "active",
"experimental": false,
"date": "2026-02-02T12:00:00+00:00",
"publisher": "Service Well AB",
"contact": [
{
"name": "Service Well AB",
"telecom": [
{
"system": "url",
"value": "https://servicewell.se"
},
{
"system": "email",
"value": "info@servicewell.se"
}
]
},
{
"name": "Service well",
"telecom": [
{
"system": "email",
"value": "info@servicewell.se",
"use": "work"
}
]
}
],
"description": "This CapabilityStatement defines the canonical domain model and API principles of the **WOF Portal** owned and operated by Service Well AB.",
"purpose": "\n**IHE Scheduling:** This server instantiates *IHE.Scheduling.server* (v1.0.0).\n\n## Layering principle\n- **WOF Connect** defines vendor-facing interoperability contracts.\n- **WOF Portal** builds on WOF Connect to provide a single, enriched, canonical API.\n\n## Domain separation principles\n- **ActivityDefinition** represents a shared service concept and SHALL be identified by code, not by resource id.\n- **HealthcareService** represents where care is performed.\n- **BillingOrganization** represents financial responsibility and is independent of service location.\n- **PractitionerRole** represents a practitioner acting in a specific operational and financial context.\n\n## Many-to-many relationships are intentional\n- A HealthcareService MAY be associated with multiple BillingOrganizations.\n- A BillingOrganization MAY provide services at multiple HealthcareServices.\n- A Practitioner MAY have multiple PractitionerRoles across services and billing contexts.\n\n## Offer and availability principles\n- **Offer** represents a computed, context-specific view combining ActivityDefinition,\n HealthcareService, and PractitionerRole.\n- Offer is intended for presentation and selection, not for scheduling.\n- Actual bookability requires downstream slot or availability checks.\n\n## Integration principle\n- External systems integrate with the platform by implementing **WOF Connect**.\n- WOF Portal APIs MAY return enriched and aggregated views not available in WOF Connect.\n\nThis CapabilityStatement documents the canonical behavior of the WOF Portal API.\n\n## Client interaction overview\nThe following diagram illustrates outbound API calls from a patient-facing client\nto the WOF Portal Proxy. It represents actual usage patterns and supported interactions.\n\nTheres currently two domains for our dev-api: \n```\n- **api.wellonfhir.se/{{tenant}}/1.0/R4** - Swedish developmnent environment\n- **api-no.wellonfhir.se/{{tenant}}/1.0/R4** - Norwegian development environment\n```\n\n<small> tenant is a stable identifier for the organization</small>\n\nBoth Requires [authentication](./get-started.html#authentication-and-security)\n\n\nClient → WOF-PORTAL:\n\n<style>\n .mermaid {\n min-height: 640px;\n width: 100%;\n max-width: 1600px;\n margin: 0 auto;\n }\n\n .mermaid svg {\n width: 100%;\n height: auto;\n }\n</style>\n\n```mermaid\n%%{init: {'theme':'neutral','securityLevel':'loose','fontFamily':'Inter, Arial, sans-serif','sequence': {'diagramMarginX': 30, 'diagramMarginY': 20, 'actorMargin': 220, 'width': 180, 'messageMargin': 32, 'mirrorActors': false, 'wrap': true}}}%%sequenceDiagram\n participant Client as Scheduling Client\n participant Auth as Auth Endpoint\n participant Portal as WOF Portal API\n\n Note over Client,Portal: base = {{baseUrl}}/{{tenant}}/{{apiVersion}}/R4\n\n %% System token (from DemoOris.rest)\n Client ->> Auth: POST {{base}}/auth/system-token\n Note over Client,Auth: Header: X-ApiKey {{apiKey}}\n Auth -->> Client: access_token (system)\n\n %% HealthcareService\n Client ->> Portal: GET {{base}}/fhir/HealthcareService\n Client ->> Portal: GET {{base}}/fhir/HealthcareService/{{healthcareServiceId}}\n Client ->> Portal: GET {{base}}/fhir/HealthcareService/{{healthcareServiceId}}/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}}\n\n %% Root operation\n Client ->> Portal: GET {{base}}/fhir/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includeHealthcareServicePortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}}\n\n %% ActivityDefinition\n Client ->> Portal: GET {{base}}/fhir/ActivityDefinition\n Client ->> Portal: GET {{base}}/fhir/ActivityDefinition/{{activityDefinitionId}}\n Client ->> Portal: GET {{base}}/fhir/ActivityDefinition/{{activityDefinitionId}}/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includeHealthcareServicePortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}}\n Client ->> Portal: GET {{base}}/fhir/ActivityDefinition/{{activityDefinitionId}}/$get-offers-context\n\n %% PractitionerRole\n Client ->> Portal: GET {{base}}/fhir/PractitionerRole\n Client ->> Portal: GET {{base}}/fhir/PractitionerRole/{{practitionerRoleId}}\n Client ->> Portal: GET {{base}}/fhir/PractitionerRole/{{practitionerRoleId}}/$get-offers-context<br/>?includeActivityDefinitionPortal={{boolean}}<br/>&includeHealthcareServicePortal={{boolean}}<br/>&includePractitionerRolePortal={{boolean}}\n\n %% Catalog resources\n Client ->> Portal: GET {{base}}/fhir/Location\n Client ->> Portal: GET {{base}}/fhir/Organization\n\n %% IHE Scheduling find \n Client ->> Portal: GET {{base}}/fhir/Appointment/$find<br/>?start={{find_start}}&end={{find_end}}<br/>&visit-type={{visitTypeSystem}}|{{visitTypeCode}}<br/>&healthcareService=HealthcareService/{{healthcareServiceId}}<br/>&practitionerRole=PractitionerRole/{{practitionerRoleId}}\n```\n\nThis diagram is informational and documents expected client usage.\nIt does not expand or modify the formal FHIR conformance rules.",
"kind": "capability",
"instantiates": [
"https://profiles.ihe.net/ITI/Scheduling/CapabilityStatement/IHE.Scheduling.server|1.0.0"
],
"software": {
"name": "WOF Portal"
},
"fhirVersion": "4.0.1",
"format": [
"json",
"xml"
],
"rest": [
{
"mode": "server",
"resource": [
{
"type": "ActivityDefinition",
"supportedProfile": [
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/activity-definition-portal"
],
"documentation": "Represents shared service concepts identified by code.",
"interaction": [
{
"code": "read"
},
{
"code": "search-type"
}
],
"operation": [
{
"name": "get-offers-context",
"definition": "https://canonical.fhir.link/servicewell/wof-portal/OperationDefinition/get-offers-context",
"documentation": "Returns enriched offer context for presentation and selection. \n Invoked as [base]/ActivityDefinition/[id]/$get-offers-context"
}
]
},
{
"type": "HealthcareService",
"supportedProfile": [
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/healthcare-service-portal"
],
"documentation": "Represents where healthcare services are performed.",
"interaction": [
{
"code": "read"
},
{
"code": "search-type"
}
],
"operation": [
{
"name": "get-offers-context",
"definition": "https://canonical.fhir.link/servicewell/wof-portal/OperationDefinition/get-offers-context",
"documentation": "Returns enriched offer context for presentation and selection. \nInvoked as [base]/HealthcareService/[id]/$get-offers-context"
}
]
},
{
"type": "PractitionerRole",
"supportedProfile": [
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/practitioner-role-portal"
],
"documentation": "Represents practitioners acting in specific operational and financial contexts.",
"interaction": [
{
"code": "read"
},
{
"code": "search-type"
}
],
"searchParam": [
{
"name": "service",
"type": "reference",
"documentation": "Filter by PractitionerRole.service (Reference to HealthcareService)."
}
],
"operation": [
{
"name": "get-offers-context",
"definition": "https://canonical.fhir.link/servicewell/wof-portal/OperationDefinition/get-offers-context",
"documentation": "Returns enriched offer context for presentation and selection. \nInvoked as [base]/PractitionerRole/[id]/$get-offers-context"
}
]
},
{
"type": "Patient",
"supportedProfile": [
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/portal-patient",
"http://hl7.se/fhir/ig/base/StructureDefinition/SEBasePatient"
],
"documentation": "Represents patients within the WOF Portal, conforming to the PortalPatient profile.",
"interaction": [
{
"code": "read"
},
{
"code": "search-type"
}
],
"searchParam": [
{
"name": "identifier",
"type": "token",
"documentation": "Search by personal number using system|value."
}
]
},
{
"type": "Organization",
"supportedProfile": [
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/service-provider-portal"
],
"documentation": "Organizations in WOF Portal MAY conform to multiple profiles, representing different organizational roles.\n\nServiceProvider represents the top-level owning organization (tenant) within the platform.\nBillingOrganization represents financial responsibility and ownership of invoicing and reporting.\n\nOrganizations are not exposed as searchable catalogs.\nThey are resolved using stable identifiers only:\n- resource id\n- organization number (identifier)\n\nClients MAY filter by profile when needed (e.g. using _profile),\nbut profile-based filtering is not required for lookup by id or identifier.",
"interaction": [
{
"code": "read"
},
{
"code": "search-type"
}
],
"searchParam": [
{
"name": "_id",
"type": "token",
"documentation": "Search by Organization resource id."
},
{
"name": "identifier",
"type": "token",
"documentation": "Search by organization number using system|value."
}
]
},
{
"type": "Appointment",
"supportedProfile": [
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/portal-appointment",
"https://canonical.fhir.link/servicewell/wof-portal/StructureDefinition/portal-available-appointment"
],
"documentation": "Appointment access in WOF Portal.\n\n- `PortalAppointment` — represents a booked appointment in a patient context.\n- `PortalAvailableAppointment` — represents an available appointment returned by `$find`.\n\nSupports filtering by actor (e.g., HealthcareService/{id}) and IHE Scheduling operations.",
"interaction": [
{
"code": "read"
},
{
"code": "search-type"
}
],
"searchParam": [
{
"name": "actor",
"type": "reference",
"documentation": "Filter appointments by participant actor (e.g., HealthcareService/{id})."
}
],
"operation": [
{
"name": "find",
"definition": "https://canonical.fhir.link/servicewell/wof-portal/OperationDefinition/FindAppointments",
"documentation": "Search for available appointment opportunities using $find (IHE ITI Scheduling)."
},
{
"name": "book",
"definition": "https://canonical.fhir.link/servicewell/wof-portal/OperationDefinition/BookAppointment",
"documentation": "Create, modify, or cancel an appointment using $book (IHE ITI Scheduling)."
}
]
},
{
"type": "Location",
"documentation": "Portal-scoped locations used as areas. Supported interaction: search.",
"interaction": [
{
"code": "search-type"
}
],
"searchParam": [
{
"name": "physical-type",
"type": "token",
"documentation": "Filter by Location.physicalType (e.g., Area)."
}
]
}
],
"operation": [
{
"name": "getOffersContext",
"definition": "https://canonical.fhir.link/servicewell/wof-portal/OperationDefinition/get-offers-context",
"documentation": "Returns enriched offer context for presentation and selection. Invoked as [base]/$get-offers-context"
}
]
}
]
}