FHIR Implementation Guide for the Norwegian Municipal Sector
0.3.0 -
FHIR Implementation Guide for the Norwegian Municipal Sector - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
This page describes API principles and documentation requirements for this IG.
The API page controls:
CapabilityStatementAppointment where they are shared before completion. Completed contacts should still use Encounter.Kommunesektorens organisasjon, KS) and the Norwegian Health Network (Norsk helsenett, NHN), where municipal interoperability services and modernized Welfare Technology Hub (Velferdsteknologisk knutepunkt, VKP) are moving towards API-based information services.PatientEncounterEpisodeOfCareCarePlanDocumentReferenceServiceRequestThese resources should use the municipal profiles where such profiles are defined: no-kommune-ServiceRequest, no-kommune-Encounter, no-kommune-EpisodeOfCare and no-kommune-CarePlan.
Recommended supporting resource when planned contacts are exposed:
AppointmentPlanned contacts should use no-basis-Appointment where the national base profile is applicable. This does not make a separate no-kommune-Appointment profile part of the v0.3.0 minimum.
Next wave, not normative minimum in v0.3.0:
MedicationStatementAllergyIntoleranceConditionObservationObservation is especially relevant as a next step because National Early Warning Score 2 (NEWS2) measurements, Patient's measurement data (Pasientens måledata, PMD) and modernized VKP all point towards structured sharing of measurements and assessments.
The list concerns future API support. The KPR example already uses the standard Observation and Goal resources as supporting resources.
Observation resources as supporting data, but SHOULD document whether measurements are retrieved from a local journal, VKP, PMD or another source.CapabilityStatement or service documentation SHOULD describe which resources come from which service.This IG describes FHIR resources, profiles and search patterns. It does not by itself decide whether a user or system is allowed to access a patient's information.
Implementations SHOULD document the surrounding trust and security model, including authentication, authorization, legal basis for access, organization trust, logging and follow-up/audit. In a Norwegian cross-organizational setting, this will often be related to HelseID, OAuth/OpenID Connect and the national trust framework. Such requirements belong in the API/security documentation and CapabilityStatement, not as separate municipal data profiles.
FHIR references between resources SHALL NOT be interpreted as proof that the requesting party has access rights to all referenced resources. Access control is evaluated by the service and its trust framework.
See also Use cases for full context and more examples.
| Prioritized use case | Resources | Search example |
|---|---|---|
| Discharge and follow-up | EpisodeOfCare, CarePlan |
GET [base]/EpisodeOfCare?patient=Patient/[id]&status=active and GET [base]/CarePlan?subject=Patient/[id]&status=active |
| Planned follow-up | ServiceRequest, Appointment, Encounter |
GET [base]/ServiceRequest?subject=Patient/[id]&status=active, GET [base]/Appointment?patient=Patient/[id]&date=ge[YYYY-MM-DD]&status=booked and GET [base]/Encounter?patient=Patient/[id]&date=ge[YYYY-MM-DD] |
| Service need and decision | DocumentReference, ServiceRequest |
GET [base]/DocumentReference?subject=Patient/[id]&type=[code] and GET [base]/ServiceRequest?subject=Patient/[id]&status=active |
The search examples are intentionally standard FHIR searches. Implementations SHOULD document if they require _profile, custom search parameters or additional filters.
Open Aidn is a concrete example of a vendor API for municipal integrations. The documentation was reviewed on 2 October 2026. It describes the endpoints, searches and OAuth 2.0 scopes supported by Open Aidn. It also states that the service currently uses selected fields from the FHIR R4 base resources and that formal Aidn profiles may be published later.
| Open Aidn | Relationship to the municipal IG |
|---|---|
Patient |
Open Aidn refers to no-basis-Patient where applicable. This supports using no-basis as the Norwegian foundation, while actual field support still needs to be checked against the service. |
EpisodeOfCare and Encounter |
These resources overlap directly with the municipal profiles. Open Aidn currently describes service type in EpisodeOfCare.type and Encounter.type. The municipal IG uses Encounter.type for contact type and Encounter.serviceType for service context, and does not assume that a service code is appropriate as an episode type. This difference needs to be resolved in an implementation mapping. |
Observation |
Can make assessments and measurements available as supporting data. The municipal IG uses standard Observation in its examples but does not define a dedicated profile in v0.3.0. |
Task |
Open Aidn uses Task for planned work. This fits the option for CarePlan.activity.reference to reference a Task, but does not replace ServiceRequest when the shared information is a request or order. |
| Search and access | Open Aidn documents POST .../_search, municipality-specific activation, and its own scopes and search parameters. These are part of the Open Aidn service contract, not general requirements in the municipal IG. |
The Open Aidn documentation should therefore be used for integrations with Aidn, while this IG describes shared semantics across vendors. The documentation reviewed does not list endpoints for ServiceRequest or CarePlan; direct support for all four municipal profiles therefore cannot be assumed. Custom search parameters and actual resource support should be listed in the service's CapabilityStatement and any SearchParameter resources.
When a request or plan references a functional assessment, the recipient needs an agreed way to retrieve it with appropriate access. Follow reasonReference and supportingInfo references to obtain the specific assessment basis, for example GET [base]/Observation/example-kpr-function. A later assessment does not replace this basis.
If the service supports assessment searches, standard Observation search can be used. Example for personal hygiene in August (URI-encoded separator between system and code):
GET [base]/Observation?patient=Patient/[id]&code=urn:oid:2.16.578.1.12.4.1.1.9111%7C7&date=ge2026-08-01&date=lt2026-09-01
Document supported searches, sorting and pagination. Determine the latest assessment per functional domain and clinical time, accounting for status and absent results. A single latest result across all domains is not a complete assessment. Do not infer the patient's function from an empty search result.
The IG's CapabilityStatement template does not cover Observation. A service sharing functional assessments needs to document supported reads, searches and access in its own documentation and CapabilityStatement. Journal data is not automatically routed through PMD/VKP.
Bundle.200 with Bundle.type=searchset and no entries in entry.4xx with OperationOutcome.CapabilityStatement where relevant.MAJOR.MINOR.PATCH).SearchParameter and listed in CapabilityStatement.OperationDefinition and listed in CapabilityStatement.CapabilityStatement.POST [base]/<Resource>/_search to reduce the risk of sensitive information being logged in URLs.POST for such searches, this SHALL be stated in CapabilityStatement.Patient, Person, RelatedPerson).