<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="representative-profile" />
  <url value="http://fhir.xt.dev/StructureDefinition/Representative" />
  <version value="1.1.1" />
  <name value="Representative" />
  <status value="active" />
  <experimental value="false" />
  <date value="2024-10-04T10:09:48.7183187+00:00" />
  <publisher value="x-tention Informationstechnologie GmbH" />
  <contact>
    <telecom>
      <system value="email" />
      <value value="fhir.profiling@x-tention.com" />
      <use value="work" />
    </telecom>
  </contact>
  <description value="The resource describes the representative only in relation to the patient. An actual user may have multiple Representative resources that each symbolize an relationship to exactly one patient. The demographic and contact data is the data recorded and verified when the relationship was established. The user may be a professional or a non-professional." />
  <copyright value="x-tention Informationstechnologie GmbH" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="RelatedPerson" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/RelatedPerson" />
  <derivation value="constraint" />
  <differential>
    <element id="RelatedPerson.language">
      <path value="RelatedPerson.language" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.extension:ConsentDocumentId">
      <path value="RelatedPerson.extension" />
      <sliceName value="ConsentDocumentId" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/ConsentDocument" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.identifier">
      <path value="RelatedPerson.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type.coding.system" />
        </discriminator>
        <discriminator>
          <type value="value" />
          <path value="type.coding.code" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:userId">
      <path value="RelatedPerson.identifier" />
      <sliceName value="userId" />
      <short value="Internal userId" />
      <definition value="UserId issued by Orchestra eHealth Suite Onboarding components. Not used for external userIds from other IdPs." />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:userId.use">
      <path value="RelatedPerson.identifier.use" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:userId.type">
      <path value="RelatedPerson.identifier.type" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:userId.type.coding">
      <path value="RelatedPerson.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:userId.type.coding.system">
      <path value="RelatedPerson.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://fhir.xt.dev/CodeSystem/IdentifierType" />
    </element>
    <element id="RelatedPerson.identifier:userId.type.coding.version">
      <path value="RelatedPerson.identifier.type.coding.version" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:userId.type.coding.code">
      <path value="RelatedPerson.identifier.type.coding.code" />
      <short value="Onboarding UserId" />
      <min value="1" />
      <fixedCode value="USID" />
    </element>
    <element id="RelatedPerson.identifier:userId.type.coding.userSelected">
      <path value="RelatedPerson.identifier.type.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:userId.type.text">
      <path value="RelatedPerson.identifier.type.text" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:userId.system">
      <path value="RelatedPerson.identifier.system" />
      <min value="1" />
      <fixedUri value="urn:ietf:rfc:3986" />
    </element>
    <element id="RelatedPerson.identifier:userId.value">
      <path value="RelatedPerson.identifier.value" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:userId.period">
      <path value="RelatedPerson.identifier.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:userId.assigner">
      <path value="RelatedPerson.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId">
      <path value="RelatedPerson.identifier" />
      <sliceName value="otherUserId" />
      <short value="Other UserIds" />
      <definition value="UserId issued by an external IdP, i.e. not issued by the Orchestra eHealth Suite Onboarding component." />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.use">
      <path value="RelatedPerson.identifier.use" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type">
      <path value="RelatedPerson.identifier.type" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type.coding">
      <path value="RelatedPerson.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type.coding.system">
      <path value="RelatedPerson.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://fhir.xt.dev/CodeSystem/IdentifierType" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type.coding.version">
      <path value="RelatedPerson.identifier.type.coding.version" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type.coding.code">
      <path value="RelatedPerson.identifier.type.coding.code" />
      <short value="Other UserIds" />
      <min value="1" />
      <fixedCode value="OUID" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type.coding.userSelected">
      <path value="RelatedPerson.identifier.type.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.type.text">
      <path value="RelatedPerson.identifier.type.text" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.system">
      <path value="RelatedPerson.identifier.system" />
      <short value="Issuer of the userId" />
      <definition value="The issuer of this userId, as communicated in the &quot;iss&quot; token attribute." />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.value">
      <path value="RelatedPerson.identifier.value" />
      <short value="userId Subject" />
      <definition value="The &quot;sub&quot; token attribute of this userId." />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.period">
      <path value="RelatedPerson.identifier.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:otherUserId.assigner">
      <path value="RelatedPerson.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:verificationId">
      <path value="RelatedPerson.identifier" />
      <sliceName value="verificationId" />
      <short value="Verification ID" />
      <definition value="Unique identifier of the verification process." />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.use">
      <path value="RelatedPerson.identifier.use" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type">
      <path value="RelatedPerson.identifier.type" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type.coding">
      <path value="RelatedPerson.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type.coding.system">
      <path value="RelatedPerson.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://fhir.xt.dev/CodeSystem/IdentifierType" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type.coding.version">
      <path value="RelatedPerson.identifier.type.coding.version" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type.coding.code">
      <path value="RelatedPerson.identifier.type.coding.code" />
      <short value="Verification ID" />
      <min value="1" />
      <fixedCode value="VPID" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type.coding.userSelected">
      <path value="RelatedPerson.identifier.type.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.type.text">
      <path value="RelatedPerson.identifier.type.text" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.system">
      <path value="RelatedPerson.identifier.system" />
      <min value="1" />
      <fixedUri value="urn:ietf:rfc:3986" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.value">
      <path value="RelatedPerson.identifier.value" />
      <short value="Verification ID" />
      <definition value="Unique identifier of the verification process. Communicated in the representativeVerified Event as &quot;verifiedRepresentationData.verificationId&quot;." />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.period">
      <path value="RelatedPerson.identifier.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:verificationId.assigner">
      <path value="RelatedPerson.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId">
      <path value="RelatedPerson.identifier" />
      <sliceName value="representativeAccountPatientId" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.use">
      <path value="RelatedPerson.identifier.use" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type">
      <path value="RelatedPerson.identifier.type" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type.coding">
      <path value="RelatedPerson.identifier.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type.coding.system">
      <path value="RelatedPerson.identifier.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://fhir.xt.dev/CodeSystem/IdentifierType" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type.coding.version">
      <path value="RelatedPerson.identifier.type.coding.version" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type.coding.code">
      <path value="RelatedPerson.identifier.type.coding.code" />
      <short value="Representative Account Patient" />
      <definition value="This represents a patient identifier for the verified patient in the representative context" />
      <min value="1" />
      <fixedCode value="RPN" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type.coding.userSelected">
      <path value="RelatedPerson.identifier.type.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.type.text">
      <path value="RelatedPerson.identifier.type.text" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.system">
      <path value="RelatedPerson.identifier.system" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.value">
      <path value="RelatedPerson.identifier.value" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.period">
      <path value="RelatedPerson.identifier.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.identifier:representativeAccountPatientId.assigner">
      <path value="RelatedPerson.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.active">
      <path value="RelatedPerson.active" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.patient">
      <path value="RelatedPerson.patient" />
      <definition value="The patient this person is related to. Must have an identifier or reference set." />
    </element>
    <element id="RelatedPerson.patient.reference">
      <path value="RelatedPerson.patient.reference" />
      <short value="Literal reference" />
      <definition value="A reference to a location at which the other resource is found. The reference MUST be a relative reference to the service base URL." />
    </element>
    <element id="RelatedPerson.patient.type">
      <path value="RelatedPerson.patient.type" />
      <min value="1" />
      <fixedUri value="Patient" />
    </element>
    <element id="RelatedPerson.patient.identifier">
      <path value="RelatedPerson.patient.identifier" />
      <short value="Facility patient identifier" />
      <definition value="This represents a patient identifier for the verified patient in the representative context. Other systems SHALL use this identifier to reference the (local/ facility) patient." />
    </element>
    <element id="RelatedPerson.patient.identifier.use">
      <path value="RelatedPerson.patient.identifier.use" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.patient.identifier.system">
      <path value="RelatedPerson.patient.identifier.system" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.patient.identifier.value">
      <path value="RelatedPerson.patient.identifier.value" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.patient.identifier.period">
      <path value="RelatedPerson.patient.identifier.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.patient.identifier.assigner">
      <path value="RelatedPerson.patient.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.relationship">
      <path value="RelatedPerson.relationship" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="RelatedPerson.relationship.coding">
      <path value="RelatedPerson.relationship.coding" />
      <min value="1" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <description value="Accepted Guardian Types" />
        <valueSet value="http://fhir.xt.dev/ValueSet/GuardianTypes" />
      </binding>
    </element>
    <element id="RelatedPerson.relationship.coding.system">
      <path value="RelatedPerson.relationship.coding.system" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.relationship.coding.version">
      <path value="RelatedPerson.relationship.coding.version" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.relationship.coding.code">
      <path value="RelatedPerson.relationship.coding.code" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.relationship.coding.userSelected">
      <path value="RelatedPerson.relationship.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.relationship.text">
      <path value="RelatedPerson.relationship.text" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.name.extension">
      <path value="RelatedPerson.name.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.name.extension:assuranceLevel">
      <path value="RelatedPerson.name.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.telecom">
      <path value="RelatedPerson.telecom" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <discriminator>
          <type value="value" />
          <path value="use" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="RelatedPerson.telecom:mobile">
      <path value="RelatedPerson.telecom" />
      <sliceName value="mobile" />
    </element>
    <element id="RelatedPerson.telecom:mobile.extension">
      <path value="RelatedPerson.telecom.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.telecom:mobile.extension:assuranceLevel">
      <path value="RelatedPerson.telecom.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.telecom:mobile.system">
      <path value="RelatedPerson.telecom.system" />
      <min value="1" />
      <fixedCode value="phone" />
    </element>
    <element id="RelatedPerson.telecom:mobile.value">
      <path value="RelatedPerson.telecom.value" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.telecom:mobile.use">
      <path value="RelatedPerson.telecom.use" />
      <min value="1" />
      <fixedCode value="mobile" />
    </element>
    <element id="RelatedPerson.telecom:mobile.period">
      <path value="RelatedPerson.telecom.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.telecom:landline">
      <path value="RelatedPerson.telecom" />
      <sliceName value="landline" />
    </element>
    <element id="RelatedPerson.telecom:landline.extension">
      <path value="RelatedPerson.telecom.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.telecom:landline.extension:assuranceLevel">
      <path value="RelatedPerson.telecom.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.telecom:landline.system">
      <path value="RelatedPerson.telecom.system" />
      <min value="1" />
      <fixedCode value="phone" />
    </element>
    <element id="RelatedPerson.telecom:landline.value">
      <path value="RelatedPerson.telecom.value" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.telecom:landline.use">
      <path value="RelatedPerson.telecom.use" />
      <min value="1" />
      <fixedCode value="home" />
    </element>
    <element id="RelatedPerson.telecom:landline.period">
      <path value="RelatedPerson.telecom.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.telecom:email">
      <path value="RelatedPerson.telecom" />
      <sliceName value="email" />
    </element>
    <element id="RelatedPerson.telecom:email.extension">
      <path value="RelatedPerson.telecom.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.telecom:email.extension:assuranceLevel">
      <path value="RelatedPerson.telecom.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.telecom:email.system">
      <path value="RelatedPerson.telecom.system" />
      <min value="1" />
      <fixedCode value="email" />
    </element>
    <element id="RelatedPerson.telecom:email.value">
      <path value="RelatedPerson.telecom.value" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.telecom:email.period">
      <path value="RelatedPerson.telecom.period" />
      <max value="0" />
    </element>
    <element id="RelatedPerson.gender.extension">
      <path value="RelatedPerson.gender.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.gender.extension:assuranceLevel">
      <path value="RelatedPerson.gender.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.birthDate.extension">
      <path value="RelatedPerson.birthDate.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.birthDate.extension:assuranceLevel">
      <path value="RelatedPerson.birthDate.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.address.extension">
      <path value="RelatedPerson.address.extension" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.address.extension:assuranceLevel">
      <path value="RelatedPerson.address.extension" />
      <sliceName value="assuranceLevel" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/AssuranceLevel" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="RelatedPerson.period">
      <path value="RelatedPerson.period" />
      <min value="1" />
    </element>
    <element id="RelatedPerson.period.start">
      <path value="RelatedPerson.period.start" />
      <definition value="The start of the representation, must be consistent with the context period of the linked consent document." />
      <min value="1" />
    </element>
    <element id="RelatedPerson.period.end">
      <path value="RelatedPerson.period.end" />
      <definition value="The end of the representation, must be consistent with the context period of the linked consent document." />
    </element>
    <element id="RelatedPerson.communication">
      <path value="RelatedPerson.communication" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>