<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="saudi-patient" />
  <url value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient" />
  <version value="1.0.0" />
  <name value="SaudiPatient" />
  <title value="Saudi Patient Profile" />
  <status value="active" />
  <date value="2025-07-07" />
  <publisher value="Saudi Health Council" />
  <contact>
    <name value="Saudi Health Council" />
    <telecom>
      <system value="url" />
      <value value="https://www.shc.gov.sa" />
    </telecom>
  </contact>
  <description value="Saudi Patient Profile extends the NPHIES Patient profile with comprehensive demographic, social, and cultural information required for Saudi healthcare delivery. This profile includes Saudi-specific extensions for tribal affiliation, regional origin, education level, occupation, translation needs, and dietary restrictions." />
  <jurisdiction>
    <coding>
      <system value="urn:iso:std:iso:3166" />
      <code value="SA" />
      <display value="Saudi Arabia" />
    </coding>
  </jurisdiction>
  <purpose value="To provide a comprehensive patient profile that supports culturally appropriate healthcare delivery in Saudi Arabia while maintaining compatibility with existing NPHIES financial workflows." />
  <copyright value="Copyright © 2025 Saudi Health Council" />
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="shdd" />
    <uri value="http://shc.gov.sa/shdd" />
    <name value="Saudi Health Data Dictionary v2" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="Patient" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient" />
  <derivation value="constraint" />
  <differential>
    <element id="Patient.extension">
      <path value="Patient.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.extension:tribalAffiliation">
      <path value="Patient.extension" />
      <sliceName value="tribalAffiliation" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-tribal-affiliation" />
      </type>
    </element>
    <element id="Patient.extension:regionalOrigin">
      <path value="Patient.extension" />
      <sliceName value="regionalOrigin" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-regional-origin" />
      </type>
    </element>
    <element id="Patient.extension:educationLevel">
      <path value="Patient.extension" />
      <sliceName value="educationLevel" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-education-level" />
      </type>
    </element>
    <element id="Patient.extension:occupation">
      <path value="Patient.extension" />
      <sliceName value="occupation" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-occupation" />
      </type>
    </element>
    <element id="Patient.extension:translationNeeds">
      <path value="Patient.extension" />
      <sliceName value="translationNeeds" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-translation-needs" />
      </type>
    </element>
    <element id="Patient.extension:dietaryRestrictions">
      <path value="Patient.extension" />
      <sliceName value="dietaryRestrictions" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-dietary-restrictions" />
      </type>
    </element>
    <element id="Patient.extension:emergencyContact">
      <path value="Patient.extension" />
      <sliceName value="emergencyContact" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-emergency-contact" />
      </type>
    </element>
    <element id="Patient.extension:guardianship">
      <path value="Patient.extension" />
      <sliceName value="guardianship" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-guardianship" />
      </type>
    </element>
    <element id="Patient.extension:religiousPreferences">
      <path value="Patient.extension" />
      <sliceName value="religiousPreferences" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://nphies.sa/fhir/ksa/nphies-fs/StructureDefinition/saudi-patient-religious-preferences" />
      </type>
    </element>
    <element id="Patient.identifier">
      <path value="Patient.identifier" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type.coding.code" />
        </discriminator>
        <description value="Slice based on identifier type" />
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Patient.identifier:nationalId">
      <path value="Patient.identifier" />
      <sliceName value="nationalId" />
      <short value="Saudi National ID" />
      <definition value="Saudi National ID for Saudi citizens" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:nationalId.type">
      <path value="Patient.identifier.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
          <code value="NI" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Patient.identifier:nationalId.system">
      <path value="Patient.identifier.system" />
      <patternUri value="http://nphies.sa/identifier/nationalid" />
    </element>
    <element id="Patient.identifier:nationalId.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA001 - Patient National ID" />
      </mapping>
    </element>
    <element id="Patient.identifier:iqamaId">
      <path value="Patient.identifier" />
      <sliceName value="iqamaId" />
      <short value="Iqama ID" />
      <definition value="Iqama ID for residents" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:iqamaId.type.coding.system">
      <path value="Patient.identifier.type.coding.system" />
      <patternUri value="http://nphies.sa/terminology/CodeSystem/identifier-type" />
    </element>
    <element id="Patient.identifier:iqamaId.type.coding.code">
      <path value="Patient.identifier.type.coding.code" />
      <min value="1" />
      <patternCode value="iqama" />
    </element>
    <element id="Patient.identifier:iqamaId.system">
      <path value="Patient.identifier.system" />
      <patternUri value="http://nphies.sa/identifier/iqama" />
    </element>
    <element id="Patient.identifier:iqamaId.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA002 - Patient Iqama ID" />
      </mapping>
    </element>
    <element id="Patient.identifier:passportId">
      <path value="Patient.identifier" />
      <sliceName value="passportId" />
      <short value="Passport ID" />
      <definition value="Passport ID for visitors and pilgrims" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:passportId.type">
      <path value="Patient.identifier.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
          <code value="PPN" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Patient.identifier:passportId.system">
      <path value="Patient.identifier.system" />
      <patternUri value="http://nphies.sa/identifier/passport" />
    </element>
    <element id="Patient.identifier:passportId.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
    </element>
    <element id="Patient.identifier:hajjId">
      <path value="Patient.identifier" />
      <sliceName value="hajjId" />
      <short value="Hajj ID" />
      <definition value="Special identification for Hajj pilgrims" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:hajjId.type.coding.system">
      <path value="Patient.identifier.type.coding.system" />
      <patternUri value="http://nphies.sa/terminology/CodeSystem/identifier-type" />
    </element>
    <element id="Patient.identifier:hajjId.type.coding.code">
      <path value="Patient.identifier.type.coding.code" />
      <min value="1" />
      <patternCode value="hajj" />
    </element>
    <element id="Patient.identifier:hajjId.system">
      <path value="Patient.identifier.system" />
      <patternUri value="http://nphies.sa/identifier/hajj" />
    </element>
    <element id="Patient.identifier:hajjId.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
    </element>
    <element id="Patient.identifier:medicalRecordNumber">
      <path value="Patient.identifier" />
      <sliceName value="medicalRecordNumber" />
      <short value="Medical Record Number" />
      <definition value="Medical record number assigned by healthcare facility" />
      <min value="1" />
      <max value="*" />
    </element>
    <element id="Patient.identifier:medicalRecordNumber.type">
      <path value="Patient.identifier.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
          <code value="MR" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Patient.identifier:medicalRecordNumber.system">
      <path value="Patient.identifier.system" />
      <min value="1" />
    </element>
    <element id="Patient.identifier:medicalRecordNumber.value">
      <path value="Patient.identifier.value" />
      <min value="1" />
    </element>
    <element id="Patient.name">
      <path value="Patient.name" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="use" />
        </discriminator>
        <description value="Slice based on name use" />
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Patient.name:official">
      <path value="Patient.name" />
      <sliceName value="official" />
      <short value="Official name" />
      <definition value="Official name as recorded in government documents" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Patient.name:official.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <patternCode value="official" />
    </element>
    <element id="Patient.name:official.family">
      <path value="Patient.name.family" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA010 - Patient Family Name" />
      </mapping>
    </element>
    <element id="Patient.name:official.given">
      <path value="Patient.name.given" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA011 - Patient Given Name" />
      </mapping>
    </element>
    <element id="Patient.name:usual">
      <path value="Patient.name" />
      <sliceName value="usual" />
      <short value="Usual name" />
      <definition value="Name commonly used by the patient" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.name:usual.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <patternCode value="usual" />
    </element>
    <element id="Patient.name:nickname">
      <path value="Patient.name" />
      <sliceName value="nickname" />
      <short value="Nickname" />
      <definition value="Nickname or preferred name" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.name:nickname.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <patternCode value="nickname" />
    </element>
    <element id="Patient.telecom">
      <path value="Patient.telecom" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <description value="Slice based on telecom system" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.telecom:mobile">
      <path value="Patient.telecom" />
      <sliceName value="mobile" />
      <short value="Mobile phone number" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.telecom:mobile.system">
      <path value="Patient.telecom.system" />
      <min value="1" />
      <patternCode value="phone" />
    </element>
    <element id="Patient.telecom:mobile.value">
      <path value="Patient.telecom.value" />
      <min value="1" />
    </element>
    <element id="Patient.telecom:mobile.use">
      <path value="Patient.telecom.use" />
      <patternCode value="mobile" />
    </element>
    <element id="Patient.telecom:phone">
      <path value="Patient.telecom" />
      <sliceName value="phone" />
      <short value="Phone number" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.telecom:phone.system">
      <path value="Patient.telecom.system" />
      <min value="1" />
      <patternCode value="phone" />
    </element>
    <element id="Patient.telecom:phone.value">
      <path value="Patient.telecom.value" />
      <min value="1" />
    </element>
    <element id="Patient.telecom:phone.use">
      <path value="Patient.telecom.use" />
      <patternCode value="home" />
    </element>
    <element id="Patient.telecom:email">
      <path value="Patient.telecom" />
      <sliceName value="email" />
      <short value="Email address" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.telecom:email.system">
      <path value="Patient.telecom.system" />
      <min value="1" />
      <patternCode value="email" />
    </element>
    <element id="Patient.telecom:email.value">
      <path value="Patient.telecom.value" />
      <min value="1" />
    </element>
    <element id="Patient.gender">
      <path value="Patient.gender" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA020 - Patient Gender" />
      </mapping>
    </element>
    <element id="Patient.birthDate">
      <path value="Patient.birthDate" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA021 - Patient Birth Date" />
      </mapping>
    </element>
    <element id="Patient.address">
      <path value="Patient.address" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="use" />
        </discriminator>
        <description value="Slice based on address use" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.address:home">
      <path value="Patient.address" />
      <sliceName value="home" />
      <short value="Home address" />
      <definition value="Patient's home address" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.address:home.use">
      <path value="Patient.address.use" />
      <min value="1" />
      <patternCode value="home" />
    </element>
    <element id="Patient.address:home.type">
      <path value="Patient.address.type" />
      <patternCode value="physical" />
    </element>
    <element id="Patient.address:home.line">
      <path value="Patient.address.line" />
      <min value="1" />
    </element>
    <element id="Patient.address:home.city">
      <path value="Patient.address.city" />
      <min value="1" />
    </element>
    <element id="Patient.address:home.state">
      <path value="Patient.address.state" />
      <min value="1" />
    </element>
    <element id="Patient.address:home.country">
      <path value="Patient.address.country" />
      <min value="1" />
      <patternString value="SA" />
    </element>
    <element id="Patient.address:work">
      <path value="Patient.address" />
      <sliceName value="work" />
      <short value="Work address" />
      <definition value="Patient's work address" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.address:work.use">
      <path value="Patient.address.use" />
      <min value="1" />
      <patternCode value="work" />
    </element>
    <element id="Patient.address:work.type">
      <path value="Patient.address.type" />
      <patternCode value="physical" />
    </element>
    <element id="Patient.address:temp">
      <path value="Patient.address" />
      <sliceName value="temp" />
      <short value="Temporary address" />
      <definition value="Patient's temporary address (e.g., during Hajj)" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.address:temp.use">
      <path value="Patient.address.use" />
      <min value="1" />
      <patternCode value="temp" />
    </element>
    <element id="Patient.address:temp.type">
      <path value="Patient.address.type" />
      <patternCode value="physical" />
    </element>
    <element id="Patient.maritalStatus">
      <path value="Patient.maritalStatus" />
      <mapping>
        <identity value="shdd" />
        <map value="AA030 - Patient Marital Status" />
      </mapping>
    </element>
    <element id="Patient.contact">
      <path value="Patient.contact" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="relationship.coding.code" />
        </discriminator>
        <description value="Slice based on contact relationship" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.contact:emergencyContact">
      <path value="Patient.contact" />
      <sliceName value="emergencyContact" />
      <short value="Emergency contact" />
      <definition value="Person to contact in case of emergency" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.contact:emergencyContact.relationship.coding.system">
      <path value="Patient.contact.relationship.coding.system" />
      <patternUri value="http://terminology.hl7.org/CodeSystem/v2-0131" />
    </element>
    <element id="Patient.contact:emergencyContact.relationship.coding.code">
      <path value="Patient.contact.relationship.coding.code" />
      <min value="1" />
      <patternCode value="C" />
    </element>
    <element id="Patient.contact:emergencyContact.name">
      <path value="Patient.contact.name" />
      <min value="1" />
    </element>
    <element id="Patient.contact:emergencyContact.telecom">
      <path value="Patient.contact.telecom" />
      <min value="1" />
    </element>
    <element id="Patient.contact:guardian">
      <path value="Patient.contact" />
      <sliceName value="guardian" />
      <short value="Guardian" />
      <definition value="Legal guardian for minors or incapacitated patients" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.contact:guardian.relationship.coding.system">
      <path value="Patient.contact.relationship.coding.system" />
      <patternUri value="http://terminology.hl7.org/CodeSystem/v2-0131" />
    </element>
    <element id="Patient.contact:guardian.relationship.coding.code">
      <path value="Patient.contact.relationship.coding.code" />
      <min value="1" />
      <patternCode value="G" />
    </element>
    <element id="Patient.contact:guardian.name">
      <path value="Patient.contact.name" />
      <min value="1" />
    </element>
    <element id="Patient.contact:guardian.telecom">
      <path value="Patient.contact.telecom" />
      <min value="1" />
    </element>
    <element id="Patient.contact:nextOfKin">
      <path value="Patient.contact" />
      <sliceName value="nextOfKin" />
      <short value="Next of kin" />
      <definition value="Next of kin for family involvement in care decisions" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.contact:nextOfKin.relationship.coding.system">
      <path value="Patient.contact.relationship.coding.system" />
      <patternUri value="http://terminology.hl7.org/CodeSystem/v2-0131" />
    </element>
    <element id="Patient.contact:nextOfKin.relationship.coding.code">
      <path value="Patient.contact.relationship.coding.code" />
      <min value="1" />
      <patternCode value="N" />
    </element>
    <element id="Patient.contact:nextOfKin.name">
      <path value="Patient.contact.name" />
      <min value="1" />
    </element>
    <element id="Patient.contact:nextOfKin.telecom">
      <path value="Patient.contact.telecom" />
      <min value="1" />
    </element>
    <element id="Patient.communication">
      <path value="Patient.communication" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="language.coding.code" />
        </discriminator>
        <description value="Slice based on language" />
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.communication:arabic">
      <path value="Patient.communication" />
      <sliceName value="arabic" />
      <short value="Arabic language communication" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.communication:arabic.language.coding.system">
      <path value="Patient.communication.language.coding.system" />
      <patternUri value="urn:ietf:bcp:47" />
    </element>
    <element id="Patient.communication:arabic.language.coding.code">
      <path value="Patient.communication.language.coding.code" />
      <min value="1" />
      <patternCode value="ar" />
    </element>
    <element id="Patient.communication:english">
      <path value="Patient.communication" />
      <sliceName value="english" />
      <short value="English language communication" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Patient.communication:english.language.coding.system">
      <path value="Patient.communication.language.coding.system" />
      <patternUri value="urn:ietf:bcp:47" />
    </element>
    <element id="Patient.communication:english.language.coding.code">
      <path value="Patient.communication.language.coding.code" />
      <min value="1" />
      <patternCode value="en" />
    </element>
    <element id="Patient.communication:other">
      <path value="Patient.communication" />
      <sliceName value="other" />
      <short value="Other language communication" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Patient.communication:other.language.coding.system">
      <path value="Patient.communication.language.coding.system" />
      <patternUri value="urn:ietf:bcp:47" />
    </element>
    <element id="Patient.generalPractitioner">
      <path value="Patient.generalPractitioner" />
      <mapping>
        <identity value="shdd" />
        <map value="AA040 - Primary Care Provider" />
      </mapping>
    </element>
    <element id="Patient.managingOrganization">
      <path value="Patient.managingOrganization" />
      <min value="1" />
      <mapping>
        <identity value="shdd" />
        <map value="AA041 - Managing Healthcare Organization" />
      </mapping>
    </element>
    <element id="Patient.link">
      <path value="Patient.link" />
      <mapping>
        <identity value="shdd" />
        <map value="AA050 - Linked Patient Records" />
      </mapping>
    </element>
  </differential>
</StructureDefinition>