{
  "resourceType": "StructureDefinition",
  "id": "digidot-Device-no",
  "url": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no",
  "version": "0.6.0",
  "name": "DigidotDeviceNo",
  "title": "DigiDOT Device (NO)",
  "status": "draft",
  "date": "2026-11-02",
  "publisher": "Novari AS - DigiDOT",
  "description": "Readiness: [In development](https://simplifier.net/guide/Visual-overview/Home/Review-status-and-releases.page.md?version=current#readiness-device).\n\nProfile base: FHIR R4 Device (http://hl7.org/fhir/StructureDefinition/Device).\n\nDraft DigiDOT profile for an optional, identifiable dental device that must be retained and referenced as its own FHIR resource. It supports patient-associated devices such as implants, prostheses and orthodontic appliances, and clinically or traceability-relevant dental equipment when the source records a concrete device instance.",
  "purpose": "Use this profile only when a concrete device needs its own identity and relationship in the shared record. A patient-associated device references the patient. Equipment used by a clinic may instead reference its owner and/or location. Do not create a Device merely to repeat a generic device type that is already represented in procedure coding.",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Device",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Device",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Device",
        "path": "Device",
        "constraint": [
          {
            "key": "device-context-required",
            "severity": "error",
            "human": "A Device must reference at least one patient, responsible organization or location.",
            "expression": "patient.exists() or owner.exists() or location.exists()",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          },
          {
            "key": "digidot-status-known",
            "severity": "error",
            "human": "Do not use unknown as a default or an unmapped lifecycle status.",
            "expression": "status != 'unknown'",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ]
      },
      {
        "id": "Device.implicitRules",
        "path": "Device.implicitRules",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Interpret the resource using this profile and the agreed exchange contract; do not introduce additional implicit processing rules."
      },
      {
        "id": "Device.contained",
        "path": "Device.contained",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Store referenced patients, organizations, locations and devices as separately identifiable resources. Contained resources are not exchanged."
      },
      {
        "id": "Device.extension",
        "path": "Device.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No root extensions are defined for the current DigiDOT Device scope."
      },
      {
        "id": "Device.modifierExtension",
        "path": "Device.modifierExtension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No root modifier extensions are defined for the current DigiDOT Device scope."
      },
      {
        "id": "Device.identifier",
        "path": "Device.identifier",
        "short": "Stable source device identifiers when available",
        "definition": "Stable business identifiers for the concrete device instance. Include and preserve available source identifiers with their assigning system and value. Do not invent an identifier when none is available, copy the FHIR resource id merely to populate this element, or use a generic product category as an instance identifier.",
        "mustSupport": true,
        "min": 0,
        "max": "*",
        "comment": "MustSupport requires producers to convey available stable source identifiers and receivers to preserve them. Identifier assignment, matching and duplicate prevention require an agreed exchange process; profile validation does not perform matching."
      },
      {
        "id": "Device.identifier.extension",
        "path": "Device.identifier.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.identifier.system",
        "path": "Device.identifier.system",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.identifier.value",
        "path": "Device.identifier.value",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.definition",
        "path": "Device.definition",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "DeviceDefinition catalogue resources are outside the current exchange scope. Preserve relevant product information in the supported fields on this concrete Device."
      },
      {
        "id": "Device.udiCarrier",
        "path": "Device.udiCarrier",
        "short": "Unique Device Identifier carrier when available.",
        "min": 0,
        "max": "*",
        "definition": "Preserve available UDI label or package data. The deviceIdentifier identifies the labeler and model/version; it does not necessarily identify the individual device. Keep available production identifiers in lotNumber, serialNumber and the manufacture/expiration dates.",
        "constraint": [
          {
            "key": "device-udi-content",
            "severity": "error",
            "human": "A UDI entry must contain a device identifier or a carrier representation.",
            "expression": "deviceIdentifier.hasValue() or carrierHRF.hasValue() or carrierAIDC.hasValue()",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ]
      },
      {
        "id": "Device.udiCarrier.extension",
        "path": "Device.udiCarrier.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.udiCarrier.modifierExtension",
        "path": "Device.udiCarrier.modifierExtension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No modifier extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.status",
        "path": "Device.status",
        "short": "FHIR device availability status.",
        "min": 1,
        "max": "1",
        "mustSupport": true,
        "definition": "Availability status of the represented device. Use the FHIR device status appropriate to the source; unknown is not permitted. This is not the status of the clinical placement or removal procedure.",
        "comment": "Record placement, adjustment, replacement and removal as clinical actions in Procedure. Do not infer an implantation date or anatomical site from Device.status."
      },
      {
        "id": "Device.statusReason",
        "path": "Device.statusReason",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Operational availability reasons, such as paused or standby states, are outside the current clinical device-record scope. Relevant clinical actions are recorded in Procedure."
      },
      {
        "id": "Device.distinctIdentifier",
        "path": "Device.distinctIdentifier",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "The R4 distinctIdentifier is intended for regulated human cell and tissue products, which are outside this dental device scope. Use identifier for source instance identifiers."
      },
      {
        "id": "Device.manufacturer",
        "path": "Device.manufacturer",
        "short": "Manufacturer."
      },
      {
        "id": "Device.manufactureDate",
        "path": "Device.manufactureDate",
        "min": 0,
        "max": "1",
        "short": "Manufacturing date when known"
      },
      {
        "id": "Device.expirationDate",
        "path": "Device.expirationDate",
        "min": 0,
        "max": "1",
        "short": "Expiry date when applicable"
      },
      {
        "id": "Device.lotNumber",
        "path": "Device.lotNumber",
        "short": "Lot or batch number."
      },
      {
        "id": "Device.serialNumber",
        "path": "Device.serialNumber",
        "short": "Serial number."
      },
      {
        "id": "Device.deviceName",
        "path": "Device.deviceName",
        "short": "Name used for the device.",
        "min": 0,
        "max": "*",
        "definition": "Preserve the product or locally used device name and its FHIR name type. A name does not replace the coded device type or a stable instance identifier."
      },
      {
        "id": "Device.deviceName.extension",
        "path": "Device.deviceName.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.deviceName.modifierExtension",
        "path": "Device.deviceName.modifierExtension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No modifier extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.modelNumber",
        "path": "Device.modelNumber",
        "min": 0,
        "max": "1",
        "short": "Manufacturer model number"
      },
      {
        "id": "Device.partNumber",
        "path": "Device.partNumber",
        "min": 0,
        "max": "1",
        "short": "Manufacturer part number"
      },
      {
        "id": "Device.type",
        "path": "Device.type",
        "short": "Dental device type.",
        "definition": "The kind of device represented by this concrete instance. Reuse an appropriate SNOMED CT device concept from the standard FHIR Device Type ValueSet. Preserve the original code system and code; the local DigiDOT comparison categories are retired. Additional standard coding may be recorded when useful.",
        "min": 1,
        "max": "1",
        "binding": {
          "strength": "extensible",
          "description": "Use a suitable SNOMED CT device concept from the standard FHIR Device Type ValueSet. The extensible binding permits another agreed classification when this set has no suitable concept for the intended meaning.",
          "valueSet": "http://hl7.org/fhir/ValueSet/device-type"
        },
        "mustSupport": true
      },
      {
        "id": "Device.type.extension",
        "path": "Device.type.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.type.coding",
        "path": "Device.type.coding",
        "min": 1,
        "max": "*",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "system"
            }
          ],
          "ordered": false,
          "rules": "open"
        },
        "definition": "SNOMED CT codings use the shared SCTpre profile. The slice is selected by system; no Coding.id marker is required. Other code systems remain subject to the existing field binding."
      },
      {
        "id": "Device.type.coding.extension",
        "path": "Device.type.coding.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.type.coding.system",
        "path": "Device.type.coding.system",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.type.coding.code",
        "path": "Device.type.coding.code",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.type.coding:SCTpre",
        "path": "Device.type.coding",
        "sliceName": "SCTpre",
        "short": "Precoordinated SNOMED CT coding",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Coding",
            "profile": [
              "https://novari.no/fhir/digidot/StructureDefinition/digidot-Coding-SCTpre-no"
            ]
          }
        ]
      },
      {
        "id": "Device.type.coding:SCTpre.system",
        "path": "Device.type.coding.system",
        "min": 1,
        "fixedUri": "http://snomed.info/sct"
      },
      {
        "id": "Device.specialization",
        "path": "Device.specialization",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Device communication standards and interface capabilities are outside the current clinical device-record scope."
      },
      {
        "id": "Device.version",
        "path": "Device.version",
        "min": 0,
        "max": "*",
        "short": "Device or software version relevant to traceability",
        "definition": "Preserve a known design or software version when relevant to the identity or traceability of the concrete device. This is not the FHIR resource version in meta.versionId."
      },
      {
        "id": "Device.version.extension",
        "path": "Device.version.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.version.modifierExtension",
        "path": "Device.version.modifierExtension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No modifier extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.version.component.system",
        "path": "Device.version.component.system",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.version.component.value",
        "path": "Device.version.component.value",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.property",
        "path": "Device.property",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Runtime configuration and generic property collections have no agreed DigiDOT representation in the current scope. Do not use this element as an alternative anatomy or clinical observation model. Structured dimensions or other product characteristics require an agreed model before exchange."
      },
      {
        "id": "Device.patient",
        "path": "Device.patient",
        "short": "Patient associated with the device.",
        "definition": "Use Device.patient for patient-associated dental devices, such as an implant, prosthesis or orthodontic appliance that belongs to one patient.",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.no/fhir/StructureDefinition/no-basis-Patient"
            ]
          }
        ],
        "mustSupport": true,
        "comment": "Use a literal Reference.reference to a separately stored resource conforming to the permitted national target profile. Identifier-only and contained references are not permitted. Official identifiers belong on the target resource. Reuse a confirmed resource in central storage; if no matching resource exists, register it before persisting the clinical reference. The receiving service must check target existence and profile conformance; the profile alone does not perform identity matching or prove that a resource exists in central storage.",
        "constraint": [
          {
            "key": "device-patient-literal",
            "severity": "error",
            "human": "A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted.",
            "expression": "($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ],
        "min": 0,
        "max": "1"
      },
      {
        "id": "Device.patient.extension",
        "path": "Device.patient.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.patient.reference",
        "path": "Device.patient.reference",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.patient.identifier",
        "path": "Device.patient.identifier",
        "min": 0,
        "max": "0"
      },
      {
        "id": "Device.owner",
        "path": "Device.owner",
        "short": "Organization responsible for the device",
        "definition": "Organization responsible for provision and ongoing maintenance of the device. This may coexist with a patient association; ownership/responsibility and patient association express different relationships.",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.no/fhir/StructureDefinition/no-basis-Organization"
            ]
          }
        ],
        "comment": "Use a literal Reference.reference to a separately stored resource conforming to the permitted national target profile. Identifier-only and contained references are not permitted. Official identifiers belong on the target resource. Reuse a confirmed resource in central storage; if no matching resource exists, register it before persisting the clinical reference. The receiving service must check target existence and profile conformance; the profile alone does not perform identity matching or prove that a resource exists in central storage.",
        "constraint": [
          {
            "key": "device-owner-literal",
            "severity": "error",
            "human": "A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted.",
            "expression": "($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ],
        "min": 0,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Device.owner.extension",
        "path": "Device.owner.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.owner.reference",
        "path": "Device.owner.reference",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.owner.identifier",
        "path": "Device.owner.identifier",
        "min": 0,
        "max": "0"
      },
      {
        "id": "Device.contact",
        "path": "Device.contact",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Maintain organizational contact information on the referenced Organization. Separate technical support contacts are outside the current exchange scope."
      },
      {
        "id": "Device.location",
        "path": "Device.location",
        "short": "Device location.",
        "definition": "Current relevant physical location of the device, such as the clinic where shared equipment is kept. This does not describe an anatomical site or prove where an earlier procedure took place.",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.no/fhir/StructureDefinition/no-basis-Location"
            ]
          }
        ],
        "comment": "Use a literal Reference.reference to a separately stored resource conforming to the permitted national target profile. Identifier-only and contained references are not permitted. Official identifiers belong on the target resource. Reuse a confirmed resource in central storage; if no matching resource exists, register it before persisting the clinical reference. The receiving service must check target existence and profile conformance; the profile alone does not perform identity matching or prove that a resource exists in central storage.",
        "constraint": [
          {
            "key": "device-location-literal",
            "severity": "error",
            "human": "A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted.",
            "expression": "($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ],
        "min": 0,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Device.location.extension",
        "path": "Device.location.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.location.reference",
        "path": "Device.location.reference",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.location.identifier",
        "path": "Device.location.identifier",
        "min": 0,
        "max": "0"
      },
      {
        "id": "Device.url",
        "path": "Device.url",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "Network addresses for directly communicating with equipment are outside the current clinical device-record scope."
      },
      {
        "id": "Device.note",
        "path": "Device.note",
        "short": "Clinical or administrative note.",
        "definition": "Additional clinically relevant device or traceability information that cannot be represented in the supported structured fields. Procedure records the clinical action and anatomy; note does not replace those relationships."
      },
      {
        "id": "Device.note.extension",
        "path": "Device.note.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.note.author[x]",
        "path": "Device.note.author[x]",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.no/fhir/StructureDefinition/no-basis-Practitioner",
              "http://hl7.no/fhir/StructureDefinition/no-basis-Patient",
              "http://hl7.no/fhir/StructureDefinition/no-basis-RelatedPerson",
              "http://hl7.no/fhir/StructureDefinition/no-basis-Organization"
            ]
          },
          {
            "code": "string"
          }
        ],
        "definition": "Person or organization responsible for the annotation. Organization authorship does not replace individual clinical responsibility for an associated procedure. A source authorString may be preserved when no resource reference is supplied.",
        "comment": "Use a literal Reference.reference to a separately stored resource conforming to the permitted national target profile. Identifier-only and contained references are not permitted. Official identifiers belong on the target resource. Reuse a confirmed resource in central storage; if no matching resource exists, register it before persisting the clinical reference. The receiving service must check target existence and profile conformance; the profile alone does not perform identity matching or prove that a resource exists in central storage. An authorString may be retained where this Annotation choice permits it; if authorReference is used, the literal-reference rule applies.",
        "constraint": [
          {
            "key": "device-note-author-x-literal",
            "severity": "error",
            "human": "A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted.",
            "expression": "($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ]
      },
      {
        "id": "Device.safety",
        "path": "Device.safety",
        "min": 0,
        "max": "*",
        "short": "Relevant device safety characteristics",
        "definition": "Preserve known clinically relevant device safety characteristics, such as latex content. Use an agreed coding when available, otherwise faithful source text. Absence of this element does not establish that the device is safe for a particular procedure.",
        "comment": "No new local safety CodeSystem is introduced. Governed structured terminology and any automated decision support require a separate agreement; profile validation does not certify device safety."
      },
      {
        "id": "Device.safety.extension",
        "path": "Device.safety.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.safety.coding.system",
        "path": "Device.safety.coding.system",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.safety.coding.code",
        "path": "Device.safety.coding.code",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.parent",
        "path": "Device.parent",
        "short": "Parent device.",
        "definition": "Reference to the separately stored DigiDOT Device of which this device is a physical component. This is not a replacement, ownership or clinical-action relationship.",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
            ]
          }
        ],
        "min": 0,
        "max": "1",
        "comment": "Use a literal Reference.reference to a separately stored resource conforming to the DigiDOT Device profile. Identifier-only and contained references are not permitted. Official identifiers belong on the target resource. Reuse a confirmed resource in central storage; if no matching resource exists, register it before persisting the clinical reference. The receiving service must check target existence and profile conformance; the profile alone does not perform identity matching or prove that a resource exists in central storage.",
        "constraint": [
          {
            "key": "device-parent-literal",
            "severity": "error",
            "human": "A parent device reference must contain a literal reference; identifiers and contained references are not permitted.",
            "expression": "reference.hasValue() and identifier.empty() and reference.startsWith('#').not()",
            "source": "https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no"
          }
        ]
      },
      {
        "id": "Device.parent.extension",
        "path": "Device.parent.extension",
        "min": 0,
        "max": "0",
        "short": "Not exchanged in the current DigiDOT Device profile",
        "definition": "No extensions are defined at this element in the current DigiDOT Device scope."
      },
      {
        "id": "Device.parent.reference",
        "path": "Device.parent.reference",
        "min": 1,
        "max": "1"
      },
      {
        "id": "Device.parent.identifier",
        "path": "Device.parent.identifier",
        "min": 0,
        "max": "0"
      }
    ]
  }
}