<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="digidot-Coding-SCTpost-no" />
  <url value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Coding-SCTpost-no" />
  <version value="0.4.0" />
  <name value="DigidotCodingSctExtendedNo" />
  <title value="DigiDOT Coding - SNOMED CT Extended code" />
  <status value="draft" />
  <date value="2026-09-29T12:57:07Z" />
  <publisher value="Novari AS - DigiDOT" />
  <description value="Readiness: [In development](https://simplifier.net/guide/Visual-overview/Home/Review-status-and-releases.page.md?version=current#readiness-coding-sctpost).&#xA;&#xA;Reusable constraints for a SNOMED CT extended coding. The code may be a single precoordinated concept identifier or a postcoordinated SNOMED CT expression when additional clinical precision is needed. Postcoordination is optional, not a condition of using this profile. The published canonical URL is retained for continuity." />
  <purpose value="Requires the SNOMED CT system, a published edition release URI and a concept identifier or expression. In the DigiDOT Condition, Observation, Procedure and ServiceRequest clinical coding slices, SCTextended is 1..1 and SCTpre is 0..1, conditional on the containing code element being present. Clinical hierarchy, meaning and anatomy are constrained by the consuming profile and terminology contract. This is a Coding datatype profile, not a FHIR Extension or a separate code system." />
  <fhirVersion value="4.0.1" />
  <kind value="complex-type" />
  <abstract value="false" />
  <type value="Coding" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Coding" />
  <derivation value="constraint" />
  <differential>
    <element id="Coding">
      <path value="Coding" />
      <short value="SNOMED CT extended code: concept or expression" />
    </element>
    <element id="Coding.extension">
      <path value="Coding.extension" />
      <short value="Extensions are not used" />
      <definition value="Clinical meaning is represented in Coding.code as a SNOMED CT concept or expression. Coding extensions are not used in the agreed DigiDOT scope." />
      <max value="0" />
    </element>
    <element id="Coding.system">
      <path value="Coding.system" />
      <short value="SNOMED CT code system" />
      <definition value="Fixed to the canonical SNOMED CT code system URI." />
      <min value="1" />
      <fixedUri value="http://snomed.info/sct" />
    </element>
    <element id="Coding.version">
      <path value="Coding.version" />
      <short value="Published SNOMED CT edition release URI" />
      <definition value="Identify the published SNOMED CT edition and release used to interpret the concept or expression, for example the Norwegian edition release URI." />
      <min value="1" />
      <constraint>
        <key value="sct-extended-version-sct" />
        <severity value="error" />
        <human value="Version must be an SCT version in the form .../sct/edition/version/yyyymmdd." />
        <expression value="matches('^http://snomed[.]info/sct/.*/version/[0-9]{8}$')" />
      </constraint>
    </element>
    <element id="Coding.code">
      <path value="Coding.code" />
      <short value="SNOMED CT concept identifier or postcoordinated expression" />
      <definition value="A single numeric SNOMED CT concept identifier is sufficient when it represents the intended meaning. A postcoordinated expression may add necessary precision. No separate SCTpre companion is required by this datatype. Local codes are not allowed. The invariant is only a basic syntax guard, not a full compositional grammar, concept-existence, MRCM or semantic validation." />
      <min value="1" />
      <constraint>
        <key value="sct-extended-concept-or-expression" />
        <severity value="error" />
        <human value="Use a numeric SNOMED CT concept identifier or SNOMED CT expression syntax; validate full syntax and meaning with terminology tooling." />
        <expression value="matches('^[0-9]{6,18}$') or matches('[:=+|{}&lt;]')" />
      </constraint>
    </element>
    <element id="Coding.display">
      <path value="Coding.display" />
      <short value="Human-readable concept or expression display" />
      <definition value="Include a readable term or expression rendering when available, consistent with code and edition release." />
    </element>
    <element id="Coding.userSelected">
      <path value="Coding.userSelected" />
      <short value="User-selection marker is not used" />
      <definition value="User selection is a source-system interaction detail and does not define the clinical meaning." />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>