<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="NHSHC-Composition" />
  <url value="https://fhir.nhs.uk/StructureDefinition/NHSHC-Composition" />
  <version value="0.1.0" />
  <name value="NHSHCComposition" />
  <title value="NHSHC Composition" />
  <status value="draft" />
  <date value="2026-06-23" />
  <publisher value="NHS England" />
  <description value="Derived profile from UKCore-Composition for NHS Health Check Online. Supports both completed (status=final) and stopped (status=preliminary) scenarios." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Composition" />
  <baseDefinition value="https://fhir.hl7.org.uk/StructureDefinition/UKCore-Composition" />
  <derivation value="constraint" />
  <differential>
    <element id="Composition">
      <path value="Composition" />
      <constraint>
        <key value="nhshc-comp-status-type" />
        <severity value="error" />
        <human value="Status must be 'final' when type is 'completed' (2242631000000104) and 'preliminary' when type is 'stopped' (2242641000000108)" />
        <expression value="(type.coding.where(code='2242631000000104').exists() implies status='final') and (type.coding.where(code='2242641000000108').exists() implies status='preliminary')" />
      </constraint>
    </element>
    <element id="Composition.status">
      <path value="Composition.status" />
      <short value="Status: 'final' for completed, 'preliminary' for stopped health checks" />
      <min value="1" />
    </element>
    <element id="Composition.type">
      <path value="Composition.type" />
      <min value="1" />
    </element>
    <element id="Composition.subject">
      <path value="Composition.subject" />
      <min value="1" />
    </element>
    <element id="Composition.encounter">
      <path value="Composition.encounter" />
      <min value="1" />
    </element>
    <element id="Composition.date">
      <path value="Composition.date" />
      <min value="1" />
    </element>
    <element id="Composition.title">
      <path value="Composition.title" />
      <min value="1" />
    </element>
    <element id="Composition.section">
      <path value="Composition.section" />
      <min value="1" />
    </element>
  </differential>
</StructureDefinition>