{
  "resourceType": "StructureDefinition",
  "id": "hdir-ContactPoint-bankAccount",
  "meta": {
    "lastUpdated": "2022-11-02T08:27:55.8939368+00:00"
  },
  "url": "http://helsedirektoratet.no/fhir/StructureDefinition/hdir-ContactPoint-bankAccount",
  "name": "HdirBankAccount",
  "status": "draft",
  "date": "2022-11-02T08:31:16.1874197+00:00",
  "description": "Datatype for bank-konto slik at den brukes i flere profiler.",
  "fhirVersion": "4.0.1",
  "mapping": [
    {
      "identity": "v2",
      "uri": "http://hl7.org/v2",
      "name": "HL7 v2 Mapping"
    },
    {
      "identity": "rim",
      "uri": "http://hl7.org/v3",
      "name": "RIM Mapping"
    },
    {
      "identity": "servd",
      "uri": "http://www.omg.org/spec/ServD/1.0/",
      "name": "ServD"
    }
  ],
  "kind": "complex-type",
  "abstract": false,
  "type": "ContactPoint",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/ContactPoint",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "ContactPoint",
        "path": "ContactPoint",
        "constraint": [
          {
            "key": "single-account-type",
            "severity": "error",
            "human": "Må være en type konto",
            "expression": "(extension('http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Norwegian-Account') | extension('http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Foreign-Address-Account') | extension('http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Iban-Account')).count() = 1",
            "source": "ContactPoint"
          },
          {
            "key": "validIban",
            "severity": "error",
            "human": "@value må være gyldig Iban",
            "expression": "extension('http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Iban-Account').count() = 1 implies value.matches('^([A-Z]{2}[ -]?[0-9]{2})(?=(?:[ -]?[A-Z0-9]){9,30}$)((?:[ -]?[A-Z0-9]{3,5}){2,7})([ -]?[A-Z0-9]{1,3})?$')",
            "source": "ContactPoint"
          },
          {
            "key": "validNorwegianAccount",
            "severity": "error",
            "human": "@value må være gyldig norsk kontonummer",
            "expression": "extension('http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Norwegian-Account').count() = 1 implies value.matches('^[0-9]{11}$')",
            "source": "ContactPoint"
          }
        ]
      },
      {
        "id": "ContactPoint.extension",
        "path": "ContactPoint.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        },
        "min": 1
      },
      {
        "id": "ContactPoint.extension:norwegianAccount",
        "path": "ContactPoint.extension",
        "sliceName": "norwegianAccount",
        "min": 0,
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Norwegian-Account"
            ]
          }
        ]
      },
      {
        "id": "ContactPoint.extension:norwegianAccount.extension",
        "path": "ContactPoint.extension.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        },
        "min": 0
      },
      {
        "id": "ContactPoint.extension:norwegianAccount.extension:kidNumber",
        "path": "ContactPoint.extension.extension",
        "sliceName": "kidNumber",
        "min": 0
      },
      {
        "id": "ContactPoint.extension:norwegianAccount.extension:kidNumber.value[x]",
        "path": "ContactPoint.extension.extension.value[x]",
        "constraint": [
          {
            "key": "validKid",
            "severity": "error",
            "human": "@value må være gyldig Kid nummer.",
            "expression": "$this.matches('^[0-9]{2,25}$')"
          }
        ]
      },
      {
        "id": "ContactPoint.extension:foreignAddressAccount",
        "path": "ContactPoint.extension",
        "sliceName": "foreignAddressAccount",
        "min": 0,
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Foreign-Address-Account"
            ]
          }
        ]
      },
      {
        "id": "ContactPoint.extension:ibanAccount",
        "path": "ContactPoint.extension",
        "sliceName": "ibanAccount",
        "min": 0,
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Iban-Account"
            ]
          }
        ]
      },
      {
        "id": "ContactPoint.extension:owner",
        "path": "ContactPoint.extension",
        "sliceName": "owner",
        "min": 0,
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://helsedirektoratet.no/fhir/StructureDefinition/hdir-OwnerName"
            ]
          }
        ]
      },
      {
        "id": "ContactPoint.extension:ubwFirma",
        "path": "ContactPoint.extension",
        "sliceName": "ubwFirma",
        "min": 1,
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://helsedirektoratet.no/fhir/StructureDefinition/hdir-Ubw-Firma"
            ]
          }
        ]
      },
      {
        "id": "ContactPoint.extension:saksnummer",
        "path": "ContactPoint.extension",
        "sliceName": "saksnummer",
        "min": 0,
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://helsedirektoratet.no/fhir/StructureDefinition/saksnummer"
            ]
          }
        ]
      },
      {
        "id": "ContactPoint.system",
        "path": "ContactPoint.system",
        "min": 1,
        "fixedCode": "other",
        "binding": {
          "extension": [
            {
              "url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
              "valueString": "ContactPointSystem"
            }
          ],
          "strength": "required",
          "valueSet": "http://hl7.org/fhir/ValueSet/contact-point-system"
        }
      },
      {
        "id": "ContactPoint.value",
        "path": "ContactPoint.value",
        "short": "Kontonummer",
        "min": 1,
        "condition": [
          "validIban",
          "validNorwegianAccount"
        ]
      },
      {
        "id": "ContactPoint.use",
        "path": "ContactPoint.use",
        "binding": {
          "extension": [
            {
              "url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
              "valueString": "ContactPointUse"
            }
          ],
          "strength": "required",
          "valueSet": "http://hl7.org/fhir/ValueSet/contact-point-use"
        }
      }
    ]
  }
}