{
  "resourceType": "StructureDefinition",
  "url": "https://noma.no/fhir/StructureDefinition/SubstanceSpecification_NOMA_v3_1",
  "version": "3.1",
  "name": "SubstanceSpecification_NOMA_v3_1",
  "title": "SubstanceSpecification_NOMA_v3_1",
  "status": "draft",
  "description": "Representing the Substances in the Norwegian Substance database",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "SubstanceSpecification",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/SubstanceSpecification",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "SubstanceSpecification",
        "path": "SubstanceSpecification",
        "comment": "Based on ISO 11238",
        "alias": [
          "SubstanceDefinition (FHIR R5)"
        ]
      },
      {
        "id": "SubstanceSpecification.extension",
        "path": "SubstanceSpecification.extension",
        "min": 1
      },
      {
        "id": "SubstanceSpecification.extension:SMSID",
        "path": "SubstanceSpecification.extension",
        "sliceName": "SMSID",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://mpd.noma.no/identifier/sms-id"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "SubstanceSpecification.extension:UniiCode",
        "path": "SubstanceSpecification.extension",
        "sliceName": "UniiCode",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://mpd.noma.no/identifier/unii-code"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "SubstanceSpecification.extension:FestId",
        "path": "SubstanceSpecification.extension",
        "sliceName": "FestId",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://mpd.noma.no/identifier/fest-substans-id"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "SubstanceSpecification.extension:classification",
        "path": "SubstanceSpecification.extension",
        "sliceName": "classification",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://noma.no/fhir/StructureDefinition/SubstanceSpecification_ClassificationExtension_NOMA_GUPRI"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "SubstanceSpecification.extension:classification.url",
        "path": "SubstanceSpecification.extension.url",
        "fixedUri": "http://noma.no/fhir/StructureDefinition/SubstanceSpecification_ClassificationExtension_NOMA_GUPRI"
      },
      {
        "id": "SubstanceSpecification.modifierExtension",
        "path": "SubstanceSpecification.modifierExtension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.identifier",
        "path": "SubstanceSpecification.identifier",
        "short": "Indentifier for the substance.",
        "definition": "Identifier by which this substance is known, specific to NoMA's FHIR API\r\nUrl (preliminary): http://legemiddelverket.no/fhir/SAFEST/SafestSubstanceDefinitionID  \r\nAlternative (business) identifiers - SMS ID, UniiCode and FEST ID - are provided in the extension. since the identifier attribute can provide at most one identifier.",
        "alias": [
          "nomaSubstanceDefinitionID"
        ],
        "min": 1
      },
      {
        "id": "SubstanceSpecification.identifier.extension",
        "path": "SubstanceSpecification.identifier.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.identifier.use",
        "path": "SubstanceSpecification.identifier.use",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.identifier.type",
        "path": "SubstanceSpecification.identifier.type",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.identifier.system",
        "path": "SubstanceSpecification.identifier.system",
        "fixedUri": "https://mpd.noma.no/identifier/substance-definition-id"
      },
      {
        "id": "SubstanceSpecification.identifier.period",
        "path": "SubstanceSpecification.identifier.period",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.identifier.assigner",
        "path": "SubstanceSpecification.identifier.assigner",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.type",
        "path": "SubstanceSpecification.type",
        "short": "High level categorization, e.g. chemical, polymer or nucleic acid",
        "definition": "High level categorization, e.g. chemical, polymer or nucleic acid  \r\n\r\nSystem URL: [https://mpd.noma.no/codesystem/substance-type](https://mpd.noma.no/codesystem/substance-type)",
        "alias": [
          "category"
        ],
        "binding": {
          "strength": "example",
          "description": "SPOR RMS Substance Types",
          "valueSet": "https://spor.ema.europa.eu/rmswi/#/lists/100000075826/terms"
        }
      },
      {
        "id": "SubstanceSpecification.type.extension",
        "path": "SubstanceSpecification.type.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.type.coding.extension",
        "path": "SubstanceSpecification.type.coding.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.type.coding.system",
        "path": "SubstanceSpecification.type.coding.system",
        "definition": "The identification of the code system that defines the meaning of the symbol in the code.\r\nThe system URL is preliminary and will be replaced with a stable \"GUPRI\"",
        "fixedUri": "https://mpd.noma.no/codesystem/substance-type"
      },
      {
        "id": "SubstanceSpecification.type.coding.version",
        "path": "SubstanceSpecification.type.coding.version",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.type.coding.userSelected",
        "path": "SubstanceSpecification.type.coding.userSelected",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.type.text",
        "path": "SubstanceSpecification.type.text",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.status",
        "path": "SubstanceSpecification.status",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.domain",
        "path": "SubstanceSpecification.domain",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.description",
        "path": "SubstanceSpecification.description",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.source",
        "path": "SubstanceSpecification.source",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.comment",
        "path": "SubstanceSpecification.comment",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.moiety",
        "path": "SubstanceSpecification.moiety",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.property",
        "path": "SubstanceSpecification.property",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.referenceInformation",
        "path": "SubstanceSpecification.referenceInformation",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.structure",
        "path": "SubstanceSpecification.structure",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.code",
        "path": "SubstanceSpecification.code",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name",
        "path": "SubstanceSpecification.name",
        "definition": "Names applicable to this substance.. Provided in Norwegian, English and (if exists) Latin"
      },
      {
        "id": "SubstanceSpecification.name.extension",
        "path": "SubstanceSpecification.name.extension",
        "alias": [
          "alias"
        ]
      },
      {
        "id": "SubstanceSpecification.name.extension:alias",
        "path": "SubstanceSpecification.name.extension",
        "sliceName": "alias",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://mpd.noma.no/structuredefinition/alias-name"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "SubstanceSpecification.name.modifierExtension",
        "path": "SubstanceSpecification.name.modifierExtension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.type",
        "path": "SubstanceSpecification.name.type",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.status",
        "path": "SubstanceSpecification.name.status",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.preferred",
        "path": "SubstanceSpecification.name.preferred",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.language",
        "path": "SubstanceSpecification.name.language",
        "definition": "Language of the name. Norwegian, English or (if exists) Latin"
      },
      {
        "id": "SubstanceSpecification.name.language.extension",
        "path": "SubstanceSpecification.name.language.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.language.coding.extension",
        "path": "SubstanceSpecification.name.language.coding.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.language.coding.system",
        "path": "SubstanceSpecification.name.language.coding.system",
        "fixedUri": "https://mpd.noma.no/codesystem/language-codes"
      },
      {
        "id": "SubstanceSpecification.name.language.coding.version",
        "path": "SubstanceSpecification.name.language.coding.version",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.language.coding.userSelected",
        "path": "SubstanceSpecification.name.language.coding.userSelected",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.language.text",
        "path": "SubstanceSpecification.name.language.text",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.domain",
        "path": "SubstanceSpecification.name.domain",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.jurisdiction",
        "path": "SubstanceSpecification.name.jurisdiction",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.synonym",
        "path": "SubstanceSpecification.name.synonym",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.translation",
        "path": "SubstanceSpecification.name.translation",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.official",
        "path": "SubstanceSpecification.name.official",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.name.source",
        "path": "SubstanceSpecification.name.source",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.molecularWeight",
        "path": "SubstanceSpecification.molecularWeight",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.extension",
        "path": "SubstanceSpecification.relationship.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.modifierExtension",
        "path": "SubstanceSpecification.relationship.modifierExtension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.substance[x]",
        "path": "SubstanceSpecification.relationship.substance[x]",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "https://noma.no/fhir/StructureDefinition/SubstanceSpecification_NOMA_v3_1"
            ]
          },
          {
            "code": "CodeableConcept"
          }
        ]
      },
      {
        "id": "SubstanceSpecification.relationship.relationship",
        "path": "SubstanceSpecification.relationship.relationship",
        "alias": [
          "type"
        ]
      },
      {
        "id": "SubstanceSpecification.relationship.relationship.extension",
        "path": "SubstanceSpecification.relationship.relationship.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.relationship.coding.extension",
        "path": "SubstanceSpecification.relationship.relationship.coding.extension",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.relationship.coding.system",
        "path": "SubstanceSpecification.relationship.relationship.coding.system",
        "fixedUri": "https://mpd.noma.no/codesystem/substance-relationship-role"
      },
      {
        "id": "SubstanceSpecification.relationship.relationship.coding.version",
        "path": "SubstanceSpecification.relationship.relationship.coding.version",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.relationship.coding.userSelected",
        "path": "SubstanceSpecification.relationship.relationship.coding.userSelected",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.isDefining",
        "path": "SubstanceSpecification.relationship.isDefining",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.amount[x]",
        "path": "SubstanceSpecification.relationship.amount[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "rules": "open"
        },
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.amount[x]:amountQuantity",
        "path": "SubstanceSpecification.relationship.amount[x]",
        "sliceName": "amountQuantity",
        "max": "0",
        "type": [
          {
            "code": "Quantity"
          }
        ]
      },
      {
        "id": "SubstanceSpecification.relationship.amount[x]:amountRange",
        "path": "SubstanceSpecification.relationship.amount[x]",
        "sliceName": "amountRange",
        "max": "0",
        "type": [
          {
            "code": "Range"
          }
        ]
      },
      {
        "id": "SubstanceSpecification.relationship.amount[x]:amountRatio",
        "path": "SubstanceSpecification.relationship.amount[x]",
        "sliceName": "amountRatio",
        "max": "0",
        "type": [
          {
            "code": "Ratio"
          }
        ]
      },
      {
        "id": "SubstanceSpecification.relationship.amount[x]:amountString",
        "path": "SubstanceSpecification.relationship.amount[x]",
        "sliceName": "amountString",
        "max": "0",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "SubstanceSpecification.relationship.amountRatioLowLimit",
        "path": "SubstanceSpecification.relationship.amountRatioLowLimit",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.amountType",
        "path": "SubstanceSpecification.relationship.amountType",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.relationship.source",
        "path": "SubstanceSpecification.relationship.source",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.nucleicAcid",
        "path": "SubstanceSpecification.nucleicAcid",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.polymer",
        "path": "SubstanceSpecification.polymer",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.protein",
        "path": "SubstanceSpecification.protein",
        "max": "0"
      },
      {
        "id": "SubstanceSpecification.sourceMaterial",
        "path": "SubstanceSpecification.sourceMaterial",
        "max": "0"
      }
    ]
  }
}