{
  "resourceType": "StructureDefinition",
  "url": "https://pub.regionstockholm.se/fhir/StructureDefinition/StockholmPatient",
  "version": "2.0.0",
  "name": "StockholmPatient",
  "status": "draft",
  "experimental": false,
  "date": "2026-03-17",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Patient",
  "baseDefinition": "http://hl7.se/fhir/ig/base/StructureDefinition/SEBasePatient",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Patient.identifier",
        "path": "Patient.identifier",
        "slicing": {
          "rules": "closed"
        }
      },
      {
        "id": "Patient.identifier:personnummer",
        "path": "Patient.identifier",
        "sliceName": "personnummer"
      },
      {
        "id": "Patient.identifier:personnummer.value",
        "path": "Patient.identifier.value",
        "min": 1,
        "constraint": [
          {
            "key": "personnummer-invariant",
            "severity": "error",
            "human": "All identifiers that identifies as personnummer SHALL comply with the specified regex:  ^(18|19|[2-9]\\d)\\d{2}(0[1-9]|1[012])([0-2]\\d|3[0-1])\\d{4}\"",
            "expression": "$this.toString().matches('^(18|19|[2-9]\\\\d)\\\\d{2}(0[1-9]|1[012])([0-2]\\\\d|3[0-1])\\\\d{4}')"
          }
        ]
      },
      {
        "id": "Patient.identifier:samordningsnummer",
        "path": "Patient.identifier",
        "sliceName": "samordningsnummer"
      },
      {
        "id": "Patient.identifier:samordningsnummer.value",
        "path": "Patient.identifier.value",
        "min": 1,
        "constraint": [
          {
            "key": "samordningsnummer-invariant",
            "severity": "error",
            "human": "All identifiers that identifies as samordningsnummer SHALL comply with the specified regex: ^(18|19|[2-9]\\d)\\d{2}(0[1-9]|1[012])([0-8]\\d|9[0-1])\\d{4}\"",
            "expression": "$this.toString().matches('^(18|19|[2-9]\\\\d)\\\\d{2}(0[1-9]|1[012])([0-8]\\\\d|9[0-1])\\\\d{4}')"
          }
        ]
      },
      {
        "id": "Patient.identifier:nationelltReservnummer",
        "path": "Patient.identifier",
        "sliceName": "nationelltReservnummer"
      },
      {
        "id": "Patient.identifier:nationelltReservnummer.value",
        "path": "Patient.identifier.value",
        "min": 1,
        "constraint": [
          {
            "key": "nationelltReservnummer-invariant",
            "severity": "error",
            "human": "All identifiers that identifies as nationellt reservnummer SHALL comply with the specified regex: ^([0-9]{8})-?([A-Z&&[^IOQVW]]{2}[0-9]{2}|[A-Z&&[^IOQVW]]{3}[0-9]{1})$",
            "expression": "$this.toString().matches('^([0-9]{8})-?([A-Z&&[^IOQVW]]{2}[0-9]{2}|[A-Z&&[^IOQVW]]{3}[0-9]{1})$')"
          }
        ]
      },
      {
        "id": "Patient.identifier:ehrid",
        "path": "Patient.identifier",
        "sliceName": "ehrid",
        "definition": "An identifier for this patient in an EHR system."
      },
      {
        "id": "Patient.identifier:ehrid.system",
        "path": "Patient.identifier.system",
        "min": 1,
        "patternUri": "https://uid.regionstockholm.se/*",
        "example": [
          {
            "label": "Ehrid for patient in specific (logical) EHR system",
            "valueUri": "https://uid.regionstockholm.se/openehr/ehrid"
          }
        ]
      },
      {
        "id": "Patient.identifier:ehrid.value",
        "path": "Patient.identifier.value",
        "min": 1
      },
      {
        "id": "Patient.identifier:regionStockholmReservnummer",
        "path": "Patient.identifier",
        "sliceName": "regionStockholmReservnummer"
      },
      {
        "id": "Patient.identifier:regionStockholmReservnummer.system",
        "path": "Patient.identifier.system",
        "min": 1,
        "patternUri": "https://uid.regionstockholm.se/reservnummer"
      },
      {
        "id": "Patient.identifier:regionStockholmReservnummer.value",
        "path": "Patient.identifier.value",
        "min": 1
      }
    ]
  }
}