{
  "resourceType": "StructureDefinition",
  "url": "https://kvp.kanta.fi/fhir/StructureDefinition/KVPPatient",
  "version": "0.1",
  "name": "KVPPatient",
  "title": "KVPPatient",
  "status": "draft",
  "publisher": "Kela / Kanta",
  "description": "Kysely- ja välityspalvelussa käytettävä Patient-profiili.\r\nHenkilö, jota välitettävä asiakirja koskee.",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Patient",
  "baseDefinition": "https://gen.kanta.fi/fhir/StructureDefinition/KantaPatient",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Patient",
        "path": "Patient",
        "short": "Välitettävään asiakirjaan liittyvän asiakkaan tiedot.",
        "definition": "Profiililla ilmoitetaan:\r\n\r\nAsiakkaan tiedot, jonka asiakirjaan tehdään välityspyyntö.",
        "constraint": [
          {
            "key": "KVP-PAT-1",
            "severity": "error",
            "human": "Syntymäaika pakollinen, kun potilaan tunnuksena tilapäinen tunnus.",
            "expression": "Patient.identifier.where(use='temp').exists() implies Patient.birthDate.exists()"
          },
          {
            "key": "KVP-PAT-2",
            "severity": "error",
            "human": "Potilaan tunnuksena annetaan joko virallinen tai tilapäinen tunnus.",
            "expression": "Patient.identifier.where(use='official').exists() implies Patient.identifier.where(use='temp').empty()"
          },
          {
            "key": "KVP-PAT-3",
            "severity": "error",
            "human": "Potilaan tunnuksena annetaan joko virallinen tai tilapäinen tunnus.",
            "expression": "Patient.identifier.where(use='official').empty() implies Patient.identifier.where(use='temp').exists()"
          },
          {
            "key": "KVP-PAT-4",
            "severity": "error",
            "human": "Syntymäpäivä annettava muodossa yyyy-mm-dd",
            "expression": "Patient.birthDate.exists() implies Patient.birthDate.toString().length()=10"
          },
          {
            "key": "KVP-PAT-5",
            "severity": "error",
            "human": "Asiakkaan tilapäinen yksilöintitunnus (Patient.identifier) ylittää sallitun maksimipituuden.",
            "expression": "Patient.identifier.where(use='temp').exists() implies Patient.identifier.where(use='temp').system.length()+Patient.identifier.where(use='temp').value.length() < 125"
          }
        ]
      },
      {
        "id": "Patient.meta",
        "path": "Patient.meta"
      },
      {
        "id": "Patient.meta.profile",
        "path": "Patient.meta.profile",
        "min": 1,
        "max": "1",
        "fixedCanonical": "https://kvp.kanta.fi/fhir/StructureDefinition/KVPPatient"
      },
      {
        "id": "Patient.implicitRules",
        "path": "Patient.implicitRules",
        "max": "0"
      },
      {
        "id": "Patient.language",
        "path": "Patient.language",
        "max": "0"
      },
      {
        "id": "Patient.text",
        "path": "Patient.text",
        "max": "0"
      },
      {
        "id": "Patient.identifier",
        "path": "Patient.identifier",
        "short": "Asiakkaan yksilöivä tunnus",
        "definition": "Asiakkaan yksilöivänä tunnuksena ilmoitetaan henkilötunnus tai tilapäinen yksilöintitunnus.",
        "min": 1
      },
      {
        "id": "Patient.identifier:PIC",
        "path": "Patient.identifier",
        "sliceName": "PIC",
        "short": "Henkilötunnus",
        "definition": "Henkilötunnus, jolla asiakas on yksilöity."
      },
      {
        "id": "Patient.identifier:PIC.id",
        "path": "Patient.identifier.id",
        "max": "0"
      },
      {
        "id": "Patient.identifier:PIC.type",
        "path": "Patient.identifier.type",
        "max": "0"
      },
      {
        "id": "Patient.identifier:PIC.system",
        "path": "Patient.identifier.system",
        "short": "Henkilötunnuksen nimiavaruus",
        "definition": "Henkilötunnuksen nimiavaruutena käytetään urn:oid:1.2.246.21."
      },
      {
        "id": "Patient.identifier:PIC.value",
        "path": "Patient.identifier.value",
        "short": "Henkilötunnus",
        "definition": "Asiakkaan henkilötunnus ilman nimiavaruutta."
      },
      {
        "id": "Patient.identifier:PIC.period",
        "path": "Patient.identifier.period",
        "max": "0"
      },
      {
        "id": "Patient.identifier:PIC.assigner",
        "path": "Patient.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Patient.identifier:temp",
        "path": "Patient.identifier",
        "sliceName": "temp",
        "short": "Tilapäinen yksilöintitunnus",
        "definition": "Asiakkaan tilapäinen yksilöintitunnus",
        "max": "1"
      },
      {
        "id": "Patient.identifier:temp.id",
        "path": "Patient.identifier.id",
        "max": "0"
      },
      {
        "id": "Patient.identifier:temp.type",
        "path": "Patient.identifier.type",
        "max": "0"
      },
      {
        "id": "Patient.identifier:temp.system",
        "path": "Patient.identifier.system",
        "short": "Käytetty nimiavaruus",
        "definition": "Nimiavaruus, jota organisaatio käyttää terveydenhuollon asiakkaiden tilapäisten yksilöivien tunnusten muodostamisessa.\r\n\r\nOIDit terveydenhuollon yksiköiden vastuulla. Ks. tarkempi kuvaus FI Base Patient - Finnish Base Profiles v1.0.0"
      },
      {
        "id": "Patient.identifier:temp.value",
        "path": "Patient.identifier.value",
        "short": "Tilapäinen yksilöintitunnus",
        "definition": "Asiakkaan tilapäinen yksilöintitunnus ilman käytettävää nimiavaruutta."
      },
      {
        "id": "Patient.identifier:temp.period",
        "path": "Patient.identifier.period",
        "max": "0"
      },
      {
        "id": "Patient.identifier:temp.assigner",
        "path": "Patient.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Patient.identifier:old",
        "path": "Patient.identifier",
        "sliceName": "old",
        "short": "Asiakkaan aiempi yksilöivä tunnus",
        "definition": "Henkilötunnus tai tilapäinen yksilöinitunnus, jolla asiakas on yksilöity aiemmin.",
        "max": "0"
      },
      {
        "id": "Patient.identifier:old.id",
        "path": "Patient.identifier.id",
        "max": "0"
      },
      {
        "id": "Patient.identifier:old.use",
        "path": "Patient.identifier.use",
        "definition": "Asiakkaan aiemmat henkilötunnukset tai tilapäset yksilöintitunnukset."
      },
      {
        "id": "Patient.identifier:old.type",
        "path": "Patient.identifier.type",
        "max": "0"
      },
      {
        "id": "Patient.identifier:old.system",
        "path": "Patient.identifier.system",
        "short": "Nimiavaruus",
        "definition": "Henkilötunnuksen nimiavaruutena käytetään urn:oid:1.2.246.21.\r\nTilapäisellä yksilöintitunnuksella nimiavaruus, jota organisaatio käyttää asiakkaiden yksilöivien tunnusten muodostamisessa.\r\n\r\nOIDit terveydenhuollon yksiköiden vastuulla. Ks. tarkempi kuvaus FI Base Patient - Finnish Base Profiles v1.0.0"
      },
      {
        "id": "Patient.identifier:old.value",
        "path": "Patient.identifier.value",
        "short": "Aiempi yksilöivä tunnus",
        "definition": "Asiakkaan aiempi yksilöivä tunnus (henkilötunnus tai tilapäinen yksilöintitunnus) ilman nimiavaruutta.\r\n\r\nOIDit terveydenhuollon yksiköiden vastuulla. Ks. tarkempi kuvaus FI Base Patient - Finnish Base Profiles v1.0.0"
      },
      {
        "id": "Patient.identifier:old.period",
        "path": "Patient.identifier.period",
        "max": "0"
      },
      {
        "id": "Patient.identifier:old.assigner",
        "path": "Patient.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Patient.active",
        "path": "Patient.active",
        "max": "0"
      },
      {
        "id": "Patient.name",
        "path": "Patient.name",
        "short": "Asiakkaan nimitiedot",
        "definition": "Asiakkaan virallinen nimi.",
        "max": "1"
      },
      {
        "id": "Patient.name.id",
        "path": "Patient.name.id",
        "max": "0"
      },
      {
        "id": "Patient.name.use",
        "path": "Patient.name.use",
        "definition": "Käytetään arvoa official eli asiakkaan virallista nimeä.",
        "fixedCode": "official"
      },
      {
        "id": "Patient.name.text",
        "path": "Patient.name.text",
        "max": "0"
      },
      {
        "id": "Patient.name.family",
        "path": "Patient.name.family",
        "short": "Asiakkaan sukunimi",
        "definition": "Asiakkaan sukunimi",
        "min": 1
      },
      {
        "id": "Patient.name.given",
        "path": "Patient.name.given",
        "short": "Asiakkaan etunimet",
        "definition": "Asiakkaan etunimet virallisessa järjestyksessä",
        "min": 1,
        "max": "4"
      },
      {
        "id": "Patient.name.prefix",
        "path": "Patient.name.prefix",
        "max": "0"
      },
      {
        "id": "Patient.name.suffix",
        "path": "Patient.name.suffix",
        "max": "0"
      },
      {
        "id": "Patient.name.period",
        "path": "Patient.name.period",
        "max": "0"
      },
      {
        "id": "Patient.telecom",
        "path": "Patient.telecom",
        "max": "0"
      },
      {
        "id": "Patient.gender",
        "path": "Patient.gender",
        "max": "0"
      },
      {
        "id": "Patient.birthDate",
        "path": "Patient.birthDate",
        "short": "Asiakkaan syntymäaika",
        "definition": "Asiakkaan syntymäaika.\r\nPakollinen, jos asiakkaan tunnisteena käytetty tilapäistä yksilöintitunnusta."
      },
      {
        "id": "Patient.deceased[x]",
        "path": "Patient.deceased[x]",
        "max": "0"
      },
      {
        "id": "Patient.address",
        "path": "Patient.address",
        "max": "0"
      },
      {
        "id": "Patient.maritalStatus",
        "path": "Patient.maritalStatus",
        "max": "0"
      },
      {
        "id": "Patient.multipleBirth[x]",
        "path": "Patient.multipleBirth[x]",
        "max": "0"
      },
      {
        "id": "Patient.photo",
        "path": "Patient.photo",
        "max": "0"
      },
      {
        "id": "Patient.contact",
        "path": "Patient.contact",
        "short": "Yhteyshenkilön yhteystiedot",
        "definition": "Ajanvaraukseen liittyvän yhteyshenkilön tiedot.",
        "max": "0"
      },
      {
        "id": "Patient.contact.id",
        "path": "Patient.contact.id",
        "max": "0"
      },
      {
        "id": "Patient.contact.relationship",
        "path": "Patient.contact.relationship",
        "short": "Yhteyshenkilön tyyppi",
        "definition": "Yhteyshenkilön tyyppi ilmoitetaan Ajanvaraus - Yhteyshenkilön tyyppi luokituksen avulla (1.2.246.537.6.882.201501). Yhteyshenkilö voi olla asiakkaan huoltaja, edunvalvoja, puolesta-asioija tai valtuutettu.",
        "max": "0"
      },
      {
        "id": "Patient.contact.relationship.id",
        "path": "Patient.contact.relationship.id",
        "max": "0"
      },
      {
        "id": "Patient.contact.relationship.coding",
        "path": "Patient.contact.relationship.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Patient.contact.relationship.coding.id",
        "path": "Patient.contact.relationship.coding.id",
        "max": "0"
      },
      {
        "id": "Patient.contact.relationship.coding.system",
        "path": "Patient.contact.relationship.coding.system",
        "min": 1
      },
      {
        "id": "Patient.contact.relationship.coding.version",
        "path": "Patient.contact.relationship.coding.version",
        "max": "0"
      },
      {
        "id": "Patient.contact.relationship.coding.code",
        "path": "Patient.contact.relationship.coding.code",
        "short": "Yhteyshenkilön tyypin koodiarvo",
        "definition": "Valuesetin fipta-vs-contactrelationship mukainen koodiarvo.",
        "min": 1
      },
      {
        "id": "Patient.contact.relationship.coding.display",
        "path": "Patient.contact.relationship.coding.display",
        "short": "Yhteyshenkilön tyypin nimi",
        "definition": "Valuesetin fipta-vs-contactrelationship mukainen arvo. Arvon nimen on vastattava annettua koodiarvoa.",
        "min": 1
      },
      {
        "id": "Patient.contact.relationship.coding.userSelected",
        "path": "Patient.contact.relationship.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Patient.contact.relationship.text",
        "path": "Patient.contact.relationship.text",
        "max": "0"
      },
      {
        "id": "Patient.contact.name",
        "path": "Patient.contact.name",
        "short": "Yhteyshenkilön nimitiedot",
        "definition": "Yhteyshenkilön sukunimi ja etunimet virallisessa järjestyksessä.",
        "max": "0"
      },
      {
        "id": "Patient.contact.name.id",
        "path": "Patient.contact.name.id",
        "max": "0"
      },
      {
        "id": "Patient.contact.name.use",
        "path": "Patient.contact.name.use",
        "min": 1,
        "fixedCode": "official"
      },
      {
        "id": "Patient.contact.name.text",
        "path": "Patient.contact.name.text",
        "max": "0"
      },
      {
        "id": "Patient.contact.name.family",
        "path": "Patient.contact.name.family",
        "short": "Yhteyshenkilön sukunimi",
        "min": 1
      },
      {
        "id": "Patient.contact.name.given",
        "path": "Patient.contact.name.given",
        "short": "Yhteyshenkilön etunimet",
        "definition": "Yhteyshenkilön etunimet virallisessa järjestyksessä.",
        "min": 1,
        "max": "4"
      },
      {
        "id": "Patient.contact.name.prefix",
        "path": "Patient.contact.name.prefix",
        "max": "0"
      },
      {
        "id": "Patient.contact.name.suffix",
        "path": "Patient.contact.name.suffix",
        "max": "0"
      },
      {
        "id": "Patient.contact.name.period",
        "path": "Patient.contact.name.period",
        "max": "0"
      },
      {
        "id": "Patient.contact.telecom",
        "path": "Patient.contact.telecom",
        "max": "0"
      },
      {
        "id": "Patient.contact.address",
        "path": "Patient.contact.address",
        "max": "0"
      },
      {
        "id": "Patient.contact.gender",
        "path": "Patient.contact.gender",
        "max": "0"
      },
      {
        "id": "Patient.contact.organization",
        "path": "Patient.contact.organization",
        "max": "0"
      },
      {
        "id": "Patient.contact.period",
        "path": "Patient.contact.period",
        "max": "0"
      },
      {
        "id": "Patient.communication",
        "path": "Patient.communication",
        "short": "Asiakkaan äidinkieli",
        "definition": "Kenttään tuotetaan kielikoodiston avulla tieto asiakkaan äidinkielestä.\r\n\r\nPreferred arvoksi annetaan true.",
        "max": "0"
      },
      {
        "id": "Patient.communication.id",
        "path": "Patient.communication.id",
        "max": "0"
      },
      {
        "id": "Patient.communication.language",
        "path": "Patient.communication.language",
        "short": "Asiakkaan äidinkieli",
        "definition": "Asiakkaan äidinkieli ilmoitetaan koodistojen SFS - Kielikoodisto (1.2.246.537.5.40175.2008) tai THL - Kolmimerkkinen kielikoodisto (1.2.246.537.5.40275.202301) arvoja vastaavalla ISO 639 kansainvälisen standardin mukaisella kaksi- tai kolmimerkkisellä tunnuksella BCP 47 -standardin mukaisesti.."
      },
      {
        "id": "Patient.communication.language.id",
        "path": "Patient.communication.language.id",
        "max": "0"
      },
      {
        "id": "Patient.communication.language.coding",
        "path": "Patient.communication.language.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Patient.communication.language.coding.id",
        "path": "Patient.communication.language.coding.id",
        "max": "0"
      },
      {
        "id": "Patient.communication.language.coding.system",
        "path": "Patient.communication.language.coding.system",
        "min": 1
      },
      {
        "id": "Patient.communication.language.coding.version",
        "path": "Patient.communication.language.coding.version",
        "max": "0"
      },
      {
        "id": "Patient.communication.language.coding.code",
        "path": "Patient.communication.language.coding.code",
        "min": 1
      },
      {
        "id": "Patient.communication.language.coding.display",
        "path": "Patient.communication.language.coding.display",
        "min": 1
      },
      {
        "id": "Patient.communication.language.coding.userSelected",
        "path": "Patient.communication.language.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Patient.communication.language.text",
        "path": "Patient.communication.language.text",
        "max": "0"
      },
      {
        "id": "Patient.communication.preferred",
        "path": "Patient.communication.preferred",
        "definition": "Preferred arvoksi annetaan true.",
        "min": 1,
        "fixedBoolean": true
      },
      {
        "id": "Patient.generalPractitioner",
        "path": "Patient.generalPractitioner",
        "max": "0"
      },
      {
        "id": "Patient.managingOrganization",
        "path": "Patient.managingOrganization",
        "max": "0"
      },
      {
        "id": "Patient.link",
        "path": "Patient.link",
        "max": "0"
      }
    ]
  }
}