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 Reason for Care (encounter-diagnosis and reason for visit)

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

This is the Finnish base profile for the encounter-diagnosis and (nurse asserted) reason for visit Conditions.

This Finnish base profile for the Reason for Care Condition resource is still very early in development, and implementer feedback is appreciated in many aspects. There are many TODO parts intentionally left in this draft version. See also the foreseen further development needs below.

Scope and Usage

This profile describes Diagnosis based conditions and Finnish kayntisyy. These are Condition resources that are asserted by a healthcare professional and directly related to encounters. This profile does not describe how to communicate problem-list-item level conditions.

THL has a data model for Finnish diagnosis (including käyntisyy) in code server: THL/Tietosisältö - Diagnoosit ("THL specification").

For high level documentation, see Tiedonhallintapalvelun periaatteet ja toiminnallinen määrittely 2021, versio 1.2.

This profile SHOULD NOT be used to describe reason given by patient for requesting/acquiring healthcare service. Finnish tulosyy.

Separating between Diagnosis based conditions and Finnish käyntisyy

Reason for care may be a diagnosis asserted by a clinician / medical doctor or some other reason for visit that is asserted by an nurse or some other healthcare professional.

A reason for care condition needs to be categorized to make the distinction between clinician asserted diagnosis and other käyntisyy conditions. When reason for care is a clinician asserted diagnosis it MUST contain another category code encounter-diagnosis. When condition is not asserted by a clincian it MUST NOT contain encounter-diagnosis category code.

Categories match to THL specification in following way:

  • when additionally encounter-diagnosis is present –> This is a diagnosis and is not a käyntisyy
    • In THL specification, codeId 23: Käyntisyy has value False
  • when encounter-diagnosis is not present –> This is a käyntisyy
    • In THL specification, codeId 23: Käyntisyy has value True
Diagnosis Code Systems

When using Finnish ICD-10 it's usage has special rules. These are described below. For reference and detailed specifications, see Potilastiedon arkiston Kertomus ja lomakkeet version 5.11 or later.

Diagnosis code (reason)

code SHALL only contain the reason code.

When using Finnish ICD-10, the code MUST NOT contain special characters (+,&,# after the code indicate reason). Pre-built pairs (like E85.9+I68.0) SHALL be broken down to constituent parts and the code part indicating reason (in case of E85.9+I68.0, Koodi1 field) used here.

In THL specification, this data is codeId 1: Diagnoosi.

In THL specification, there is another codeId 6: "ICD-10 -vastaavuuskoodi ICPC-koodille". This MAY be in code (it's the same code, but coded in another code system, so repetition of code is ok). Other codes, like symptom and accident type SHOULD NOT be repetitions of code.

More than one code may be used in code (in code's repetitions of coding). code itself cannot be repeated. Currently ICD-10, ICPC2 are supported by THL, in near future ICD-11, SNOMED and ORPHA will become supported too. Additional codes may be expressed by repeating coding. Other codes like a symptom SHOULD NOT be communicated via code, repetitions should represent the same concept (see CodeableConcept datatype specification).

Here's a valid example of repeating code.coding (code is not repeating, but coding has repetitions expressing the same information in two code systems):

  "code" : {
    "coding" : [
      {
        "system" : "urn:oid:1.2.246.537.6.1",
        "version" : "1999",
        "code" : "H36.03",
        "display" : "Proliferatiivinen diabeettinen retinopatia"
      },
      {
        "system" : "urn:oid:1.2.246.537.6.31",
        "version" : "2007",
        "code" : "F83",
        "display" : "Retinopatia, verkkokalvon rappeuma"
      }
    ],
    "text" : "..."
  }
Symptom code

In THL specification, this data is codeId 26: Diagnoosin tai käyntisyyn oirekoodi.

Symptom code SHOULD be communicated via evidence.

When using the Finnish ICD-10 version, the code MUST NOT contain special characters (+ after the code and * before code indicating the symptom). Pre-built pairs (like E85.9+I68.0) SHALL be broken down to constituent parts and the code part indicating symptom (in case of E85.9+I68.0, Koodi2 field).

For example:

"evidence" : [
    {
      "code" : [
        {
          "coding" : [
            {
              "system" : "urn:oid:1.2.246.537.6.1",
              "version" : "1999",
              "code" : "E11.3",
              "display" : "Aikuistyypin diabetes diabeteksen silmäkomplikaatiot"
            }
          ]
        }
      ]
    }
  ]
Name of diagnosis

In THL specification, this data is codeId 21: Diagnoosin tai käyntisyyn nimi.

A practitioner may make some adjustments to the name of the diagnosis. code.coding.display SHALL still be the original name from the codesystem and code.text MAY contain an adjusted name for the diagnosis.

Primary diagnosis (käyntisyy)

In THL specification, this data is codeId 2: Diagnoosin tai käyntisyyn ensisijaisuus.

Extension primaryCondition is used to express whether this diagnosis is the primary condition for why the encounter takes place.

The extension SHALL have a code from "AR/YDIN - Diagnoosin /toimenpiteen ensisijaisuus" (oid 1.2.246.537.5.40005).

Permanence (pysyvyys)

In THL specification, this data is codeId 8: Diagnoosin pysyvyys.

Extension permanence is used to express whether the condition is permanent or not.

The extension SHALL have a code from "AR/YDIN - Pysyvyys" (oid 1.2.246.537.5.40003).

This information has some relation to clinicalStatus, but "AR/YDIN - Pysyvyys" cannot be mapped to clinicalStatus codes (doing so would redefine clinicalStatus).

Onset

In THL specification, this data is codeId 12: Diagnoosin tai käyntisyyn toteamispäivä.

Standard onset SHOULD be used.

Abatement

In THL specification, this data is codeId 16: Diagnoosin päättymispäivä.

Standard abatement MAY be used.

Asserter

Standard asserter MAY be used.

When asserter references a Practitioner, it can provide information for codeId 11: Toteajan nimi in THL specification. When asserter references a PractitionerRole, it can provide information for both codeId 11: Toteajan nimi and codeId 19: Toteajan palveluyksikkö.

Type of physical exercise during which injury occurred

In THL specification, this data is codeId 24: Tapaturman liikuntalaji.

Extension physicalExcercise is used.

Endocrinological disorder

In THL specification, this data is codeId 27: Endokrinologisen häiriön koodi.

Extension endocrinologicalDisorder is used.

Medication that caused this condition

In THL specification, this data is codeId 28: Aiheuttajan ATC-koodi.

Extension conditionCausedByMedication is used.

External cause for diagnosis

In THL specification, this data is codeId 3: Diagnoosin ulkoinen syy.

Extension conditionExternalCause is used.

Categorization of the type of accident

In THL specification, this data is codeId 4: Diagnoosin tapaturmatyyppi.

Extension conditionCategorizationOfAccident is used.

Cause of an adverse effect

In THL specification, this data is codeId 5: Haittavaikutuksen aiheuttaja.

Extension causeOfAdverseEffect is used.

Further development needs

Finnish diagnosis has some data that is not yet modeled in this profile. There is more modeling and mapping work to be done. Following list contains most relevant parts that need work:

  • Use of `problem-list-item` for long term diagnosis (Pitkäaikaisdiagnoosi or Pysyvä diagnoosi)? The conceptual mapping is not staightforward.
  • THL Tietosisältö 10 Tiedon lähde. Should this be an extension?
  • THL Tietosisältö 15 Diagnoosin päättymisen toteajan nimi.
  • THL Tietosisältö 17 Diagnoosin päättymisen syy.
  • THL Tietosisältö 18 Diagnoosin päättymisen syyn tarkenne.
  • THL Tietosisältö 20 Diagnoosin päättymisen toteajan palveluyksikkö.
  • THL Tietosisältö 22 Episodin nimi.
  • THL Tietosisältö 7 Diagnoosin tai käyntisyyn varmuusaste. This could perhaps be mapped to verificationStatus codes.
  • THL Tietosisältö 9 Diagnoosin tai käyntisyyn episoditunnus.

Feedback on all of the above is most welcome for further development of this profile. </div> #### Links * [*Suomalainen tautien kirjaamisen ohjekirja*](https://thl.fi/documents/10531/124365/Opas%202012%2017.pdf), the national guide for the use of ICD-10.

Usage:

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraintsdoco
.. Condition C 0..* FiBaseCondition Detailed information about conditions, problems or diagnoses
con-3: Condition.clinicalStatus SHALL be present if verificationStatus is not entered-in-error and category is problem-list-item
con-4: If condition is abated, then clinicalStatus must be either inactive, resolved, or remission
con-5: Condition.clinicalStatus SHALL NOT be present if verification Status is entered-in-error
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
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:primaryCondition 0..1 Coding Primary condition for encounter
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-primary
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:permanence 0..1 Coding Permanence of condition
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-permanence
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:physicalExcercise 0..1 Coding Type of physical exercise during which injury occurred.
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-physical-excercise
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:endocrinologicalDisorder 0..1 Coding Endocrinological disorder
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-endocrinological-disorder
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:conditionCausedByMedication 0..1 Coding Medication that caused this condition
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-caused-by-medication
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:conditionExternalCause 0..1 Coding External cause for diagnosis
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-external-cause
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:conditionCategorizationOfAccident 0..1 Coding Categorization of the type of accident
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-categorization-of-accident
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... extension:causeOfAdverseEffect 0..1 Coding Cause of an adverse effect
URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/condition-cause-of-adverse-effect
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... 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
... verificationStatus ?!ΣC 0..1 CodeableConcept unconfirmed | provisional | differential | confirmed | refuted | entered-in-error
Binding: ConditionVerificationStatus (required): The verification status to support or decline the clinical status of the condition or diagnosis.


ele-1: All FHIR elements must have a @value or children
... subject Σ 1..1 Reference(FI Base Patient) Who has the condition?
ele-1: All FHIR elements must have a @value or children

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Condition.clinicalStatusrequiredConditionClinicalStatusCodes
http://hl7.org/fhir/ValueSet/condition-clinical|4.0.1
from the FHIR Standard
Condition.verificationStatusrequiredConditionVerificationStatus
http://hl7.org/fhir/ValueSet/condition-ver-status|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
con-3best practiceConditionCondition.clinicalStatus SHALL be present if verificationStatus is not entered-in-error and category is problem-list-item
: clinicalStatus.exists() or verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code = 'entered-in-error').exists() or category.select($this='problem-list-item').empty()
con-4errorConditionIf condition is abated, then clinicalStatus must be either inactive, resolved, or remission
: abatement.empty() or clinicalStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-clinical' and (code='resolved' or code='remission' or code='inactive')).exists()
con-5errorConditionCondition.clinicalStatus SHALL NOT be present if verification Status is entered-in-error
: verificationStatus.coding.where(system='http://terminology.hl7.org/CodeSystem/condition-ver-status' and code='entered-in-error').empty() or clinicalStatus.empty()
dom-2errorConditionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorConditionIf 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-4errorConditionIf 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-5errorConditionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceConditionA 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