{
  "resourceType": "StructureDefinition",
  "id": "digidot-Coding-SCTpre-no",
  "url": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Coding-SCTpre-no",
  "version": "0.4.0",
  "name": "DigidotCodingSctPreNo",
  "title": "DigiDOT Coding - SNOMED CT Precoordinated",
  "status": "draft",
  "date": "2026-09-29T12:57:07Z",
  "publisher": "Novari AS - DigiDOT",
  "description": "Readiness: [In development](https://simplifier.net/guide/Visual-overview/Home/Review-status-and-releases.page.md?version=current#readiness-coding-sctpre).\n\nReusable constraints for a single precoordinated SNOMED CT Coding. In clinical code.coding slicing, SCTpre is an optional companion to the required extended coding. Other uses, including directly coded anatomy, retain their own cardinalities.",
  "purpose": "Used by the active DigiDOT Condition, Observation, Procedure and ServiceRequest profiles. It requires the SNOMED CT system, a version URI for a published SNOMED CT edition release, and a numeric SNOMED CT concept identifier. It is not used to carry compositional grammar expressions or codings from other code systems.",
  "fhirVersion": "4.0.1",
  "kind": "complex-type",
  "abstract": false,
  "type": "Coding",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Coding",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Coding",
        "path": "Coding",
        "short": "Precoordinated SNOMED CT concept"
      },
      {
        "id": "Coding.extension",
        "path": "Coding.extension",
        "short": "Extensions are not used",
        "definition": "This helper profile represents one direct SNOMED CT concept. No named Coding extension is agreed for the current DigiDOT scope, so extensions are prohibited to avoid a parallel representation of code meaning or terminology context.",
        "max": "0"
      },
      {
        "id": "Coding.system",
        "path": "Coding.system",
        "short": "SNOMED CT code system",
        "definition": "Fixed to the canonical SNOMED CT code system URI.",
        "min": 1,
        "fixedUri": "http://snomed.info/sct"
      },
      {
        "id": "Coding.version",
        "path": "Coding.version",
        "short": "Published SNOMED CT edition release URI",
        "definition": "Identify the SNOMED CT edition and release used to select the precoordinated concept, for example the Norwegian edition version URI.",
        "min": 1,
        "constraint": [
          {
            "key": "sct-pre-version-sct",
            "severity": "error",
            "human": "Version must be an SCT version in the form .../sct/edition/version/yyyymmdd.",
            "expression": "matches('^http://snomed[.]info/sct/.*/version/[0-9]{8}$')"
          }
        ]
      },
      {
        "id": "Coding.code",
        "path": "Coding.code",
        "short": "Numeric SNOMED CT concept identifier",
        "definition": "A directly usable numeric SNOMED CT concept identifier. Use the SNOMED CT Extended code profile when a coding must also support postcoordinated expressions.",
        "min": 1,
        "constraint": [
          {
            "key": "sct-pre-numeric",
            "severity": "error",
            "human": "SNOMED conceptId (6-18 digits).",
            "expression": "matches('^[0-9]{6,18}$')"
          }
        ]
      },
      {
        "id": "Coding.display",
        "path": "Coding.display",
        "short": "Human-readable SNOMED CT term",
        "definition": "Include the display term when it is available from the terminology service. It is informative and must remain consistent with the code and version."
      },
      {
        "id": "Coding.userSelected",
        "path": "Coding.userSelected",
        "short": "User-selection marker is not used",
        "definition": "Whether a code was selected directly by a user is a source-system interaction detail, not stable clinical or terminology meaning. It is not retained in the current DigiDOT coding model.",
        "max": "0"
      }
    ]
  }
}