{
  "resourceType": "StructureDefinition",
  "id": "MyCabPerson",
  "url": "https://www.esante.lu/fhir-spec/StructureDefinition/MyCabPerson",
  "version": "0.0.1",
  "name": "MyCabPerson",
  "status": "draft",
  "fhirVersion": "5.0.0",
  "kind": "resource",
  "abstract": false,
  "type": "Practitioner",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Practitioner",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Practitioner.id",
        "path": "Practitioner.id",
        "short": "The logical ID of the resource. Only present on retrieve"
      },
      {
        "id": "Practitioner.meta",
        "path": "Practitioner.meta",
        "min": 1
      },
      {
        "id": "Practitioner.meta.versionId",
        "path": "Practitioner.meta.versionId",
        "max": "0"
      },
      {
        "id": "Practitioner.meta.lastUpdated",
        "path": "Practitioner.meta.lastUpdated",
        "max": "0"
      },
      {
        "id": "Practitioner.meta.source",
        "path": "Practitioner.meta.source",
        "max": "0"
      },
      {
        "id": "Practitioner.meta.profile",
        "path": "Practitioner.meta.profile",
        "min": 1,
        "max": "1",
        "fixedCanonical": "https://www.esante.lu/fhir-spec/StructureDefinition/MyCabPerson"
      },
      {
        "id": "Practitioner.meta.security",
        "path": "Practitioner.meta.security",
        "max": "0"
      },
      {
        "id": "Practitioner.meta.tag",
        "path": "Practitioner.meta.tag",
        "max": "0"
      },
      {
        "id": "Practitioner.implicitRules",
        "path": "Practitioner.implicitRules",
        "max": "0"
      },
      {
        "id": "Practitioner.language",
        "path": "Practitioner.language",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier",
        "path": "Practitioner.identifier",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "rules": "closed"
        },
        "short": "Matricule, LuxTrust number, and/or eHealthID of the person",
        "min": 1,
        "max": "3"
      },
      {
        "id": "Practitioner.identifier:matricule",
        "path": "Practitioner.identifier",
        "sliceName": "matricule",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Practitioner.identifier:matricule.id",
        "path": "Practitioner.identifier.id",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:matricule.use",
        "path": "Practitioner.identifier.use",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:matricule.type",
        "path": "Practitioner.identifier.type",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:matricule.system",
        "path": "Practitioner.identifier.system",
        "min": 1,
        "fixedUri": "urn:oid:1.3.182.4.4"
      },
      {
        "id": "Practitioner.identifier:matricule.value",
        "path": "Practitioner.identifier.value",
        "short": "The matricule of a person",
        "min": 1,
        "example": [
          {
            "label": "Example",
            "valueString": "1901020112432"
          }
        ],
        "condition": [
          "val-matricule"
        ],
        "constraint": [
          {
            "key": "val-matricule",
            "severity": "error",
            "human": "The matricule is 13 chars",
            "expression": "length()=13",
            "source": "https://www.esante.lu/fhir-spec/StructureDefinition/MyCabPerson"
          }
        ]
      },
      {
        "id": "Practitioner.identifier:matricule.period",
        "path": "Practitioner.identifier.period",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:matricule.assigner",
        "path": "Practitioner.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:luxtrust",
        "path": "Practitioner.identifier",
        "sliceName": "luxtrust",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Practitioner.identifier:luxtrust.id",
        "path": "Practitioner.identifier.id",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:luxtrust.use",
        "path": "Practitioner.identifier.use",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:luxtrust.type",
        "path": "Practitioner.identifier.type",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:luxtrust.system",
        "path": "Practitioner.identifier.system",
        "min": 1,
        "fixedUri": "urn:oid:1.3.182.4.23"
      },
      {
        "id": "Practitioner.identifier:luxtrust.value",
        "path": "Practitioner.identifier.value",
        "short": "The LuxTrust number",
        "min": 1,
        "example": [
          {
            "label": "Example",
            "valueString": "123456789012"
          }
        ],
        "condition": [
          "val-luxtrust"
        ],
        "constraint": [
          {
            "key": "val-luxtrust",
            "severity": "error",
            "human": "The LuxTrust number is 12 chars",
            "expression": "length()=12",
            "source": "https://www.esante.lu/fhir-spec/StructureDefinition/MyCabPerson"
          }
        ]
      },
      {
        "id": "Practitioner.identifier:luxtrust.period",
        "path": "Practitioner.identifier.period",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:luxtrust.assigner",
        "path": "Practitioner.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:eHealthID",
        "path": "Practitioner.identifier",
        "sliceName": "eHealthID",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Practitioner.identifier:eHealthID.id",
        "path": "Practitioner.identifier.id",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:eHealthID.use",
        "path": "Practitioner.identifier.use",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:eHealthID.type",
        "path": "Practitioner.identifier.type",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:eHealthID.system",
        "path": "Practitioner.identifier.system",
        "min": 1,
        "fixedUri": "urn:oid:1.3.182.4.1"
      },
      {
        "id": "Practitioner.identifier:eHealthID.value",
        "path": "Practitioner.identifier.value",
        "short": "The eHealthID",
        "min": 1,
        "example": [
          {
            "label": "Example",
            "valueString": "3215897071"
          }
        ],
        "condition": [
          "val-eHealthIDPers"
        ],
        "constraint": [
          {
            "key": "val-eHealthIDPers",
            "severity": "error",
            "human": "eHealthID shall have the right format",
            "expression": "length()=10 and (startsWith('2') or startsWith('3'))",
            "source": "https://www.esante.lu/fhir-spec/StructureDefinition/MyCabPerson"
          }
        ]
      },
      {
        "id": "Practitioner.identifier:eHealthID.period",
        "path": "Practitioner.identifier.period",
        "max": "0"
      },
      {
        "id": "Practitioner.identifier:eHealthID.assigner",
        "path": "Practitioner.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Practitioner.active",
        "path": "Practitioner.active",
        "max": "0"
      },
      {
        "id": "Practitioner.name",
        "path": "Practitioner.name",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "use"
            }
          ],
          "rules": "closed"
        },
        "short": "Official (birth) family and given is mandatory. A second temp family name can be given as spouse name. A third display (usual) given and family is mandatory",
        "min": 1,
        "max": "3"
      },
      {
        "id": "Practitioner.name:official",
        "path": "Practitioner.name",
        "sliceName": "official",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Practitioner.name:official.use",
        "path": "Practitioner.name.use",
        "min": 1,
        "patternCode": "official"
      },
      {
        "id": "Practitioner.name:official.text",
        "path": "Practitioner.name.text",
        "max": "0"
      },
      {
        "id": "Practitioner.name:official.family",
        "path": "Practitioner.name.family",
        "min": 1
      },
      {
        "id": "Practitioner.name:official.given",
        "path": "Practitioner.name.given",
        "min": 1
      },
      {
        "id": "Practitioner.name:official.prefix",
        "path": "Practitioner.name.prefix",
        "max": "0"
      },
      {
        "id": "Practitioner.name:official.suffix",
        "path": "Practitioner.name.suffix",
        "max": "0"
      },
      {
        "id": "Practitioner.name:official.period",
        "path": "Practitioner.name.period",
        "max": "0"
      },
      {
        "id": "Practitioner.name:temp",
        "path": "Practitioner.name",
        "sliceName": "temp",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Practitioner.name:temp.use",
        "path": "Practitioner.name.use",
        "min": 1,
        "patternCode": "temp"
      },
      {
        "id": "Practitioner.name:temp.text",
        "path": "Practitioner.name.text",
        "max": "0"
      },
      {
        "id": "Practitioner.name:temp.family",
        "path": "Practitioner.name.family",
        "min": 1
      },
      {
        "id": "Practitioner.name:temp.given",
        "path": "Practitioner.name.given",
        "max": "0"
      },
      {
        "id": "Practitioner.name:temp.prefix",
        "path": "Practitioner.name.prefix",
        "max": "0"
      },
      {
        "id": "Practitioner.name:temp.suffix",
        "path": "Practitioner.name.suffix",
        "max": "0"
      },
      {
        "id": "Practitioner.name:temp.period",
        "path": "Practitioner.name.period",
        "max": "0"
      },
      {
        "id": "Practitioner.name:usual",
        "path": "Practitioner.name",
        "sliceName": "usual",
        "short": "If possible, separate family and given, otherwise use text",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Practitioner.name:usual.use",
        "path": "Practitioner.name.use",
        "min": 1,
        "patternCode": "usual"
      },
      {
        "id": "Practitioner.name:usual.given",
        "path": "Practitioner.name.given",
        "max": "1"
      },
      {
        "id": "Practitioner.name:usual.prefix",
        "path": "Practitioner.name.prefix",
        "max": "0"
      },
      {
        "id": "Practitioner.name:usual.suffix",
        "path": "Practitioner.name.suffix",
        "max": "0"
      },
      {
        "id": "Practitioner.name:usual.period",
        "path": "Practitioner.name.period",
        "max": "0"
      },
      {
        "id": "Practitioner.telecom",
        "path": "Practitioner.telecom",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Practitioner.telecom.system",
        "path": "Practitioner.telecom.system",
        "min": 1,
        "patternCode": "email"
      },
      {
        "id": "Practitioner.telecom.value",
        "path": "Practitioner.telecom.value",
        "min": 1,
        "example": [
          {
            "label": "Example",
            "valueString": "secretaire@doctor.lu"
          }
        ]
      },
      {
        "id": "Practitioner.telecom.use",
        "path": "Practitioner.telecom.use",
        "max": "0"
      },
      {
        "id": "Practitioner.telecom.rank",
        "path": "Practitioner.telecom.rank",
        "max": "0"
      },
      {
        "id": "Practitioner.telecom.period",
        "path": "Practitioner.telecom.period",
        "max": "0"
      },
      {
        "id": "Practitioner.gender",
        "path": "Practitioner.gender",
        "max": "0"
      },
      {
        "id": "Practitioner.birthDate",
        "path": "Practitioner.birthDate",
        "min": 1,
        "example": [
          {
            "label": "Example",
            "valueString": "1901-12-29"
          }
        ]
      },
      {
        "id": "Practitioner.deceased[x]",
        "path": "Practitioner.deceased[x]",
        "max": "0"
      },
      {
        "id": "Practitioner.address",
        "path": "Practitioner.address",
        "max": "0"
      },
      {
        "id": "Practitioner.photo",
        "path": "Practitioner.photo",
        "max": "0"
      },
      {
        "id": "Practitioner.qualification",
        "path": "Practitioner.qualification",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Practitioner.qualification.identifier",
        "path": "Practitioner.qualification.identifier",
        "max": "0"
      },
      {
        "id": "Practitioner.qualification.code.coding",
        "path": "Practitioner.qualification.code.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Practitioner.qualification.code.coding.system",
        "path": "Practitioner.qualification.code.coding.system",
        "min": 1,
        "fixedUri": "https://www.esante.lu/fhir-spec/CodeSystem/eSanteSpecialties"
      },
      {
        "id": "Practitioner.qualification.code.coding.version",
        "path": "Practitioner.qualification.code.coding.version",
        "max": "0"
      },
      {
        "id": "Practitioner.qualification.code.coding.code",
        "path": "Practitioner.qualification.code.coding.code",
        "min": 1,
        "binding": {
          "strength": "required",
          "valueSet": "https://www.esante.lu/fhir-spec/ValueSet/ESanteSpecialties"
        }
      },
      {
        "id": "Practitioner.qualification.code.coding.display",
        "path": "Practitioner.qualification.code.coding.display",
        "max": "0"
      },
      {
        "id": "Practitioner.qualification.code.coding.userSelected",
        "path": "Practitioner.qualification.code.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Practitioner.qualification.code.text",
        "path": "Practitioner.qualification.code.text",
        "short": "Textual representation",
        "min": 1
      },
      {
        "id": "Practitioner.qualification.period",
        "path": "Practitioner.qualification.period",
        "max": "0"
      },
      {
        "id": "Practitioner.qualification.issuer",
        "path": "Practitioner.qualification.issuer",
        "max": "0"
      },
      {
        "id": "Practitioner.communication",
        "path": "Practitioner.communication",
        "max": "0"
      }
    ]
  }
}