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