<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://gen.kanta.fi/fhir/StructureDefinition/KantaPractitionerV2" />
  <version value="3.0.0" />
  <name value="KantaPractitionerV2" />
  <title value="Kanta Practitioner version 2 Profile" />
  <status value="draft" />
  <date value="2026-03-19" />
  <publisher value="Kela" />
  <description value="Kanta-palveluissa käytettävä Practitioner-profiilin versio 2. Profiililla ilmoitetaan ammattihenkilön tiedot." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Practitioner" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
  <derivation value="constraint" />
  <differential>
    <element id="Practitioner">
      <path value="Practitioner" />
      <short value="Ammattihenkilön tiedot" />
      <definition value="Kanta-palveluissa käytettävä Practitioner-profiili, versio 2. Profiililla ilmoitetaan ammattihenkilön tiedot." />
      <constraint>
        <key value="GEN-PRAC-1" />
        <severity value="error" />
        <human value="Jos ammattihenkilön rekisteröintinumero (Terhikki/Suosikki) on annettu, sen pituuden tulee olla 11 merkkiä." />
        <expression value="identifier.where(system = 'urn:oid:1.2.246.537.26').all(value.length() = 11)" />
      </constraint>
      <constraint>
        <key value="GEN-PRAC-2" />
        <severity value="error" />
        <human value="Jos ammattihenkilön henkilötunnus on annettu, sen pituuden tulee olla 11 merkkiä." />
        <expression value="identifier.where(system = 'urn:oid:1.2.246.21').all(value.length() = 11)" />
      </constraint>
      <constraint>
        <key value="GEN-PRAC-3" />
        <severity value="error" />
        <human value="Jos ammattihenkilön SV-numero on annettu, se voi olla korkeintaan 8 merkkiä." />
        <expression value="identifier.where(system = 'urn:oid:1.2.246.537.25').all(value.length() &lt; 9)" />
      </constraint>
      <constraint>
        <key value="GEN-PRAC-4" />
        <severity value="error" />
        <human value="Jotain sallituista ammattihenkilön tunnistautumisen koodistoista on käytettävä." />
        <expression value="identifier.exists(system = 'urn:oid:1.2.246.537.26' or system = 'urn:oid:1.2.246.21' or system = 'urn:oid:1.2.246.537.25' or system = 'urn:oid:1.2.246.537.29')" />
      </constraint>
    </element>
    <element id="Practitioner.meta">
      <path value="Practitioner.meta" />
    </element>
    <element id="Practitioner.meta.profile">
      <path value="Practitioner.meta.profile" />
      <min value="1" />
      <max value="1" />
      <fixedCanonical value="https://gen.kanta.fi/fhir/StructureDefinition/KantaPractitionerV2" />
    </element>
    <element id="Practitioner.extension:practitionerTitle">
      <path value="Practitioner.extension" />
      <sliceName value="practitionerTitle" />
      <type>
        <code value="Extension" />
        <profile value="https://gen.kanta.fi/fhir/StructureDefinition/extension/PractitionerTitle" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="Practitioner.identifier">
      <path value="Practitioner.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Practitioner.identifier:Rekisterointinumero">
      <path value="Practitioner.identifier" />
      <sliceName value="Rekisterointinumero" />
      <short value="Ammattihenkilön Suosikki- tai Terhikki-tunnus" />
      <definition value="Suosikki-tunnus tai Terhikki-tunnus, jolla ammattihenkilö on yksilöity." />
      <max value="1" />
    </element>
    <element id="Practitioner.identifier:Rekisterointinumero.id">
      <path value="Practitioner.identifier.id" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:Rekisterointinumero.use">
      <path value="Practitioner.identifier.use" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:Rekisterointinumero.type">
      <path value="Practitioner.identifier.type" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:Rekisterointinumero.system">
      <path value="Practitioner.identifier.system" />
      <short value="Tunnuksen nimiavaruus" />
      <definition value="Suosikki- ja Terhikki-tunnuksen nimiavaruutena käytetään urn:oid:1.2.246.537.26" />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.537.26" />
    </element>
    <element id="Practitioner.identifier:Rekisterointinumero.value">
      <path value="Practitioner.identifier.value" />
      <short value="Ammattihenkilön tunnus" />
      <definition value="Ammattihenkilön Suosikki-tai Terhikki-tunnus ilman käytettävää nimiavaruutta." />
      <min value="1" />
    </element>
    <element id="Practitioner.identifier:SV-number">
      <path value="Practitioner.identifier" />
      <sliceName value="SV-number" />
      <max value="1" />
    </element>
    <element id="Practitioner.identifier:SV-number.id">
      <path value="Practitioner.identifier.id" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:SV-number.use">
      <path value="Practitioner.identifier.use" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:SV-number.type">
      <path value="Practitioner.identifier.type" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:SV-number.system">
      <path value="Practitioner.identifier.system" />
      <short value="SV-numeron nimiavaruus" />
      <definition value="Nimiavaruutena käytetään urn:oid:1.2.246.537.25" />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.537.25" />
    </element>
    <element id="Practitioner.identifier:SV-number.value">
      <path value="Practitioner.identifier.value" />
      <short value="SV-numero" />
      <definition value="Ammattihenkilön SV-numero ilman käytettävään nimiavaruutta." />
      <min value="1" />
    </element>
    <element id="Practitioner.identifier:SV-number.period">
      <path value="Practitioner.identifier.period" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:SV-number.assigner">
      <path value="Practitioner.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:PIC">
      <path value="Practitioner.identifier" />
      <sliceName value="PIC" />
      <short value="Ammattihenkilön henkilötunnus" />
      <definition value="Henkilötunnus, jolla ammattihenkilö on yksilöity." />
      <max value="1" />
    </element>
    <element id="Practitioner.identifier:PIC.id">
      <path value="Practitioner.identifier.id" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:PIC.use">
      <path value="Practitioner.identifier.use" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:PIC.type">
      <path value="Practitioner.identifier.type" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:PIC.system">
      <path value="Practitioner.identifier.system" />
      <short value="Ammattihenkilön henkilötunnus" />
      <definition value="Henkilötunnuksen nimiavaruutena käytetään urn:oid:1.2.246.21." />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.21" />
    </element>
    <element id="Practitioner.identifier:PIC.value">
      <path value="Practitioner.identifier.value" />
      <short value="Henkilötunnus" />
      <definition value="Ammattihenkilön henkilötunnus ilman käytettävää nimiavaruutta." />
      <min value="1" />
    </element>
    <element id="Practitioner.identifier:PIC.period">
      <path value="Practitioner.identifier.period" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:PIC.assigner">
      <path value="Practitioner.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus">
      <path value="Practitioner.identifier" />
      <sliceName value="VRK-tunnus" />
      <short value="Digi- ja väestötietoviraston yksilöivä tunnus" />
      <definition value="Digi- ja väestötietoviraston myöntämä yksilöivä tunnus, jolla ammattihenkilö on yksilöity." />
      <max value="1" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.id">
      <path value="Practitioner.identifier.id" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.use">
      <path value="Practitioner.identifier.use" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.type">
      <path value="Practitioner.identifier.type" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.system">
      <path value="Practitioner.identifier.system" />
      <short value="DVV:n yksilöivän tunnuksen nimiavaruus" />
      <definition value="Digi- ja väestötietoviraston (DVV) myöntämän yksilöivän tunnuksen nimiavaruutena käytetään urn:oid:1.2.246.537.29." />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.537.29" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.value">
      <path value="Practitioner.identifier.value" />
      <short value="Yksilöivä tunnus" />
      <definition value="Digi- ja väestötietoviraston myöntämän yksilöivä tunnus ilman käytettävää nimiavaruutta." />
      <min value="1" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.period">
      <path value="Practitioner.identifier.period" />
      <max value="0" />
    </element>
    <element id="Practitioner.identifier:VRK-tunnus.assigner">
      <path value="Practitioner.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="Practitioner.active">
      <path value="Practitioner.active" />
      <max value="0" />
    </element>
    <element id="Practitioner.name">
      <path value="Practitioner.name" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Practitioner.name.family">
      <path value="Practitioner.name.family" />
      <min value="1" />
    </element>
    <element id="Practitioner.name.given">
      <path value="Practitioner.name.given" />
      <min value="1" />
    </element>
    <element id="Practitioner.name.prefix">
      <path value="Practitioner.name.prefix" />
      <max value="1" />
    </element>
    <element id="Practitioner.name.suffix">
      <path value="Practitioner.name.suffix" />
      <max value="1" />
    </element>
    <element id="Practitioner.telecom">
      <path value="Practitioner.telecom" />
      <max value="0" />
    </element>
    <element id="Practitioner.address">
      <path value="Practitioner.address" />
      <max value="0" />
    </element>
    <element id="Practitioner.gender">
      <path value="Practitioner.gender" />
      <max value="0" />
    </element>
    <element id="Practitioner.birthDate">
      <path value="Practitioner.birthDate" />
      <max value="0" />
    </element>
    <element id="Practitioner.photo">
      <path value="Practitioner.photo" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification">
      <path value="Practitioner.qualification" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="code.coding.system" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Practitioner.qualification.identifier">
      <path value="Practitioner.qualification.identifier" />
      <max value="1" />
    </element>
    <element id="Practitioner.qualification.code.id">
      <path value="Practitioner.qualification.code.id" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification.code.coding.version">
      <path value="Practitioner.qualification.code.coding.version" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification.code.coding.display">
      <path value="Practitioner.qualification.code.coding.display" />
      <definition value="Ammattioikeuden kuvauksen on vastattava annettua koodiarvoa" />
    </element>
    <element id="Practitioner.qualification.code.coding.userSelected">
      <path value="Practitioner.qualification.code.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus">
      <path value="Practitioner.qualification" />
      <sliceName value="Ammattioikeus" />
      <short value="Ammattihenkilön ammattioikeus" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus.identifier">
      <path value="Practitioner.qualification.identifier" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus.code.coding.system">
      <path value="Practitioner.qualification.code.coding.system" />
      <short value="Käytettävä luokitus" />
      <definition value="Luokituksen Valvira - Ammattioikeudet  id (1.2.246.537.6.140)" />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.537.6.140.2008" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus.code.coding.version">
      <path value="Practitioner.qualification.code.coding.version" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus.code.coding.code">
      <path value="Practitioner.qualification.code.coding.code" />
      <short value="Ammattioikeus koodiarvona" />
      <definition value="Ammattioikeus ilmoitetaan Valvira - Ammattioikeudet luokituksen arvona" />
      <min value="1" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus.code.coding.display">
      <path value="Practitioner.qualification.code.coding.display" />
      <short value="Ammattioikeus tekstimuodossa" />
      <definition value="Tiedon tulee vastata annettua koodiarvoa" />
      <min value="1" />
    </element>
    <element id="Practitioner.qualification:Ammattioikeus.code.coding.userSelected">
      <path value="Practitioner.qualification.code.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Erikoisala">
      <path value="Practitioner.qualification" />
      <sliceName value="Erikoisala" />
      <short value="ammattihenkilön erikoisala" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.identifier">
      <path value="Practitioner.qualification.identifier" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.code.coding.system">
      <path value="Practitioner.qualification.code.coding.system" />
      <short value="Käytettävä luokitus" />
      <definition value="Luokituksen Valvira - Koulutusluokitus id (1.2.246.537.6.148) id" />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.537.6.148.2008" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.code.coding.code">
      <path value="Practitioner.qualification.code.coding.code" />
      <short value="Erityisala koodiarvona" />
      <definition value="Erityisala ilmoitetaan luokituksen Valvira - Koulutusluokitus id (1.2.246.537.6.148) arvona" />
      <min value="1" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.code.coding.display">
      <path value="Practitioner.qualification.code.coding.display" />
      <short value="Erityisala tekstimuodossa" />
      <definition value="Kuvauksen tulee vastata annettua koodiarvoa" />
      <min value="1" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.code.coding.userSelected">
      <path value="Practitioner.qualification.code.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.period">
      <path value="Practitioner.qualification.period" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Erikoisala.issuer">
      <path value="Practitioner.qualification.issuer" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammatti">
      <path value="Practitioner.qualification" />
      <sliceName value="Ammatti" />
      <short value="sosiaali- tai terveydenhuollon ammattihenkilön ammatti" />
    </element>
    <element id="Practitioner.qualification:Ammatti.identifier">
      <path value="Practitioner.qualification.identifier" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammatti.code.coding.system">
      <path value="Practitioner.qualification.code.coding.system" />
      <short value="Käytettävä luokitus" />
      <definition value="Luokituksen TK - Ammattiluokitus (1.2.246.537.6.74.2001) id" />
      <min value="1" />
      <fixedUri value="urn:oid:1.2.246.537.6.74.2001" />
    </element>
    <element id="Practitioner.qualification:Ammatti.code.coding.version">
      <path value="Practitioner.qualification.code.coding.version" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammatti.code.coding.code">
      <path value="Practitioner.qualification.code.coding.code" />
      <short value="Ammatti koodiarvona" />
      <definition value="Ammatti ilmoitetaan luokituksen TK - Ammattiluokitus (1.2.246.537.6.74.2001)  arvona" />
      <min value="1" />
    </element>
    <element id="Practitioner.qualification:Ammatti.code.coding.display">
      <path value="Practitioner.qualification.code.coding.display" />
      <short value="Ammatti tekstimuodossa" />
      <definition value="Kuvauksen tulee vastata annettua koodiarvoa" />
      <min value="1" />
    </element>
    <element id="Practitioner.qualification:Ammatti.code.coding.userSelected">
      <path value="Practitioner.qualification.code.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammatti.period">
      <path value="Practitioner.qualification.period" />
      <max value="0" />
    </element>
    <element id="Practitioner.qualification:Ammatti.issuer">
      <path value="Practitioner.qualification.issuer" />
      <max value="0" />
    </element>
    <element id="Practitioner.communication">
      <path value="Practitioner.communication" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>