<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://fhir.nhs.wales/StructureDefinition/CDR-Patient-Bronze" />
  <name value="CDRPatientBronze" />
  <status value="draft" />
  <description value="Constrains the Data Standards Wales Patient profile for application-managed Patient records held within the Care Data Repository (CDR). These records are created and maintained by source applications where an appropriate WDS-managed or PAS-managed Patient record is not available." />
  <purpose value="Defines the requirements for application-managed Patient records within the CDR, including the use of a CDR application patient identifier and identification of the source application responsible for managing the record. This supports applications that need to create and maintain a Patient record independently of WDS or PAS, such as the Choose Pharmacy application" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Patient" />
  <baseDefinition value="https://fhir.nhs.wales/StructureDefinition/DataStandardsWales-Patient" />
  <derivation value="constraint" />
  <differential>
    <element id="Patient.identifier">
      <path value="Patient.identifier" />
      <slicing>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:nhsNumber">
      <path value="Patient.identifier" />
      <sliceName value="nhsNumber" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:abuhbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="abuhbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:bcuhbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="bcuhbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:cavuhbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="cavuhbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:ctmuhbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="ctmuhbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:hduhbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="hduhbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:pthbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="pthbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:sbuhbPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="sbuhbPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:vunhstCaniscIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="vunhstCaniscIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:vunhstPasIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="vunhstPasIdentifier" />
      <max value="0" />
    </element>
    <element id="Patient.identifier:applicationManagedPatientIdentifier">
      <path value="Patient.identifier" />
      <sliceName value="applicationManagedPatientIdentifier" />
      <definition value="An identifier for this patient. The applicationManagedPatientIdentifier SHALL use a UUID as its value to ensure that the combination of identifier system and value is globally unique." />
      <comment value="The applicationManagedPatientIdentifier SHALL use a UUID as its value to ensure that the combination of identifier system and value is globally unique." />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Patient.identifier:applicationManagedPatientIdentifier.system">
      <path value="Patient.identifier.system" />
      <fixedUri value="https://fhir.nhs.wales/Id/cdr-application-patient-identifier" />
    </element>
    <element id="Patient.identifier:applicationManagedPatientIdentifier.value">
      <path value="Patient.identifier.value" />
      <constraint>
        <key value="cdr-patient-2" />
        <requirements value="The application-managed patient identifier SHALL be a UUID." />
        <severity value="error" />
        <human value="cdr-patient-2" />
        <expression value="matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$')" />
      </constraint>
    </element>
    <element id="Patient.name">
      <path value="Patient.name" />
      <comment value="A patient may have multiple names with different uses or applicable periods. For animals, the name is a &quot;HumanName&quot; in the sense that is assigned and used by humans and has the same patterns. This field is mandatory for CDR." />
      <min value="1" />
    </element>
    <element id="Patient.gender">
      <path value="Patient.gender" />
      <definition value="Administrative Gender - the gender that the patient is considered to have for administration and record keeping purposes. This field is mandatory for CDR." />
      <min value="1" />
    </element>
    <element id="Patient.birthDate">
      <path value="Patient.birthDate" />
      <comment value="At least an estimated year should be provided as a guess if the real DOB is unknown  There is a standard extension &quot;patient-birthTime&quot; available that should be used where Time is required (such as in maternity/infant care systems). This field is mandatory for CDR." />
      <min value="1" />
    </element>
    <element id="Patient.address">
      <path value="Patient.address" />
      <min value="1" />
    </element>
    <element id="Patient.generalPractitioner">
      <path value="Patient.generalPractitioner" />
      <max value="1" />
    </element>
    <element id="Patient.managingOrganization">
      <path value="Patient.managingOrganization" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>