Finnish Base Profiles
2.0.0-ci - ci-build Finland flag

Finnish Base Profiles, published by HL7 Finland. This guide is not an authorized publication; it is the continuous build for version 2.0.0-ci built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/fhir-fi/finnish-base-profiles/ and changes regularly. See the Directory of published versions

Resource Profile: FI Base Encounter

Official URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/fi-base-encounter Version: 2.0.0-ci
Draft as of 2025-03-27 Computable Name: FiBaseEncounter

This is the Finnish base profile for the Encounter resource.

Scope and Usage

The Finnish Core Encounter profile is intended to encapsulate the most common and basic data model of encounters in Finnish healthcare systems. The profile also defines encounter's relation to the Kanta registry. As such the profile should be usable in most Finnish contexts.

Relation to Finnish palvelutapahtuma

Kanta is the Finnish national central registry of health and social welfare information. It has a specification for Palvelutapahtuma, this is typically translated as service-event or encompassing encounter.

The scope of palvelutapahtuma is described in Kanta documentation (in Finnish). It's scope is not always the same as the encounter's. Encounter and palvelutapahtuma will overlap as concepts (depending on implementation). Some encounters clearly align with palvelutapahtuma while others don't. Palvelutapahtuma may contain multiple encounters. For example a series of treatments is considered to be a singular palvelutapahtuma, but systems most likely want to express each visit as a separate encounter (see kanta doc for the description of hoitosarja, there are other examples too).

For deeper techical details, see (in Finnish):

Why does an encounter need this information?

Kanta HL7 V3 Medical Records specification requires that both queries and archivals transmit palvelutapahtuma's OID identifier on each request. A client application that is integrated to a patient administration system (one that masters the data of encounters) often needs to create and query Kanta Medical records. Encounter is the best "vessel" we have to transmit this information.

For example a laboratory information system may have it's own Kanta Medical Records capabilities and will archive lab results directly to Kanta. It receives encounter id in SMART App Launch context. Laboratory system can resolve palvelutapahtuma's OID identifier by fetching the encounter resource.

How to communicate the palvelutapahtuma via the Encounter resource

This method is applicable for resources that have a direct link to Encounter.

An Encounter that is a palvelutapahtuma SHALL have an identifier with use=official and the value of that identifier SHALL be the OID of a palvelutapahtuma.

Other levels of encounter that are not a palvelutapahtuma, MUST NOT contain an identifier with use=official.

The resource referring to the Encounter, may link to the palvelutapahtuma Encounter directly, or to a lower level Encounter (some systems call these prosessitapahtuma). In this case, the lower level Encounters SHALL have a chain of .partOf links eventually leading to the palvelutapahtuma Encounter.

How to communicate the palvelutapahtuma without an Encounter resource

When the resource does not have a direct link to Encounter or if the chaining of Encounter resources is considered too complex, the ServiceEvent extension can be used instead.

Organizational responsibility

The unit responsible for the encounter SHOULD be communicated using the serviceProvider property.

For instance, there's a detailed example with explanations for how to fetch patients in a ward.

Usage:

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraintsdoco
.. Encounter 0..* Encounter An interaction during which services are provided to the patient
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: 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
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
ele-1: All FHIR elements must have a @value or children
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... status ?!Σ 1..1 code planned | arrived | triaged | in-progress | onleave | finished | cancelled +
Binding: EncounterStatus (required): Current state of the encounter.


ele-1: All FHIR elements must have a @value or children
... subject Σ 0..1 Reference(FI Base Patient | Group) The patient or group present at the encounter
ele-1: All FHIR elements must have a @value or children
... episodeOfCare Σ 0..* Reference(FI Base EpisodeOfCare) Episode(s) of care that this encounter should be recorded against
ele-1: All FHIR elements must have a @value or children
... appointment Σ 0..* Reference(FI Base Appointment) The appointment that scheduled this encounter
ele-1: All FHIR elements must have a @value or children
... reasonReference Σ 0..* Reference(FI Base Condition | Fi Base Procedure | FI Base Observation | ImmunizationRecommendation) Reason the encounter takes place (reference)
ele-1: All FHIR elements must have a @value or children
... serviceProvider 0..1 Reference(FI Base Organization) The organization (facility) responsible for this encounter
ele-1: All FHIR elements must have a @value or children
... partOf 0..1 Reference(FI Base Encounter) Another Encounter this encounter is part of
ele-1: All FHIR elements must have a @value or children

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Encounter.statusrequiredEncounterStatus
http://hl7.org/fhir/ValueSet/encounter-status|4.0.1
from the FHIR Standard
Encounter.classextensibleActEncounterCode
http://terminology.hl7.org/ValueSet/v3-ActEncounterCode

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorEncounterIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorEncounterIf 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-4errorEncounterIf 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-5errorEncounterIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceEncounterA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

 

Other representations of profile: CSV, Excel, Schematron