<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="digidot-Device-no" />
  <url value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
  <version value="0.6.0" />
  <name value="DigidotDeviceNo" />
  <title value="DigiDOT Device (NO)" />
  <status value="draft" />
  <date value="2026-11-02" />
  <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-device).&#xA;&#xA;Profile base: FHIR R4 Device (http://hl7.org/fhir/StructureDefinition/Device).&#xA;&#xA;Draft 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 value="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 value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Device" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Device" />
  <derivation value="constraint" />
  <differential>
    <element id="Device">
      <path value="Device" />
      <constraint>
        <key value="device-context-required" />
        <severity value="error" />
        <human value="A Device must reference at least one patient, responsible organization or location." />
        <expression value="patient.exists() or owner.exists() or location.exists()" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
      <constraint>
        <key value="digidot-status-known" />
        <severity value="error" />
        <human value="Do not use unknown as a default or an unmapped lifecycle status." />
        <expression value="status != 'unknown'" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
    </element>
    <element id="Device.implicitRules">
      <path value="Device.implicitRules" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="Interpret the resource using this profile and the agreed exchange contract; do not introduce additional implicit processing rules." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.contained">
      <path value="Device.contained" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="Store referenced patients, organizations, locations and devices as separately identifiable resources. Contained resources are not exchanged." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.extension">
      <path value="Device.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No root extensions are defined for the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.modifierExtension">
      <path value="Device.modifierExtension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No root modifier extensions are defined for the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.identifier">
      <path value="Device.identifier" />
      <short value="Stable source device identifiers when available" />
      <definition value="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." />
      <comment value="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." />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Device.identifier.extension">
      <path value="Device.identifier.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.identifier.system">
      <path value="Device.identifier.system" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.identifier.value">
      <path value="Device.identifier.value" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.definition">
      <path value="Device.definition" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="DeviceDefinition catalogue resources are outside the current exchange scope. Preserve relevant product information in the supported fields on this concrete Device." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.udiCarrier">
      <path value="Device.udiCarrier" />
      <short value="Unique Device Identifier carrier when available." />
      <definition value="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." />
      <min value="0" />
      <max value="*" />
      <constraint>
        <key value="device-udi-content" />
        <severity value="error" />
        <human value="A UDI entry must contain a device identifier or a carrier representation." />
        <expression value="deviceIdentifier.hasValue() or carrierHRF.hasValue() or carrierAIDC.hasValue()" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
    </element>
    <element id="Device.udiCarrier.extension">
      <path value="Device.udiCarrier.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.udiCarrier.modifierExtension">
      <path value="Device.udiCarrier.modifierExtension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No modifier extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.status">
      <path value="Device.status" />
      <short value="FHIR device availability status." />
      <definition value="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 value="Record placement, adjustment, replacement and removal as clinical actions in Procedure. Do not infer an implantation date or anatomical site from Device.status." />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Device.statusReason">
      <path value="Device.statusReason" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="Operational availability reasons, such as paused or standby states, are outside the current clinical device-record scope. Relevant clinical actions are recorded in Procedure." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.distinctIdentifier">
      <path value="Device.distinctIdentifier" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="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." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.manufacturer">
      <path value="Device.manufacturer" />
      <short value="Manufacturer." />
    </element>
    <element id="Device.manufactureDate">
      <path value="Device.manufactureDate" />
      <short value="Manufacturing date when known" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Device.expirationDate">
      <path value="Device.expirationDate" />
      <short value="Expiry date when applicable" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Device.lotNumber">
      <path value="Device.lotNumber" />
      <short value="Lot or batch number." />
    </element>
    <element id="Device.serialNumber">
      <path value="Device.serialNumber" />
      <short value="Serial number." />
    </element>
    <element id="Device.deviceName">
      <path value="Device.deviceName" />
      <short value="Name used for the device." />
      <definition value="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." />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Device.deviceName.extension">
      <path value="Device.deviceName.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.deviceName.modifierExtension">
      <path value="Device.deviceName.modifierExtension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No modifier extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.modelNumber">
      <path value="Device.modelNumber" />
      <short value="Manufacturer model number" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Device.partNumber">
      <path value="Device.partNumber" />
      <short value="Manufacturer part number" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Device.type">
      <path value="Device.type" />
      <short value="Dental device type." />
      <definition value="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 value="1" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="extensible" />
        <description value="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 value="http://hl7.org/fhir/ValueSet/device-type" />
      </binding>
    </element>
    <element id="Device.type.extension">
      <path value="Device.type.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.type.coding">
      <path value="Device.type.coding" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <definition value="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." />
      <min value="1" />
      <max value="*" />
    </element>
    <element id="Device.type.coding.extension">
      <path value="Device.type.coding.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.type.coding.system">
      <path value="Device.type.coding.system" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.type.coding.code">
      <path value="Device.type.coding.code" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.type.coding:SCTpre">
      <path value="Device.type.coding" />
      <sliceName value="SCTpre" />
      <short value="Precoordinated SNOMED CT coding" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Coding" />
        <profile value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Coding-SCTpre-no" />
      </type>
    </element>
    <element id="Device.type.coding:SCTpre.system">
      <path value="Device.type.coding.system" />
      <min value="1" />
      <fixedUri value="http://snomed.info/sct" />
    </element>
    <element id="Device.specialization">
      <path value="Device.specialization" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="Device communication standards and interface capabilities are outside the current clinical device-record scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.version">
      <path value="Device.version" />
      <short value="Device or software version relevant to traceability" />
      <definition value="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." />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Device.version.extension">
      <path value="Device.version.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.version.modifierExtension">
      <path value="Device.version.modifierExtension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No modifier extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.version.component.system">
      <path value="Device.version.component.system" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.version.component.value">
      <path value="Device.version.component.value" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.property">
      <path value="Device.property" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="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." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.patient">
      <path value="Device.patient" />
      <short value="Patient associated with the device." />
      <definition value="Use Device.patient for patient-associated dental devices, such as an implant, prosthesis or orthodontic appliance that belongs to one patient." />
      <comment value="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." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-Patient" />
      </type>
      <constraint>
        <key value="device-patient-literal" />
        <severity value="error" />
        <human value="A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted." />
        <expression value="($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Device.patient.extension">
      <path value="Device.patient.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.patient.reference">
      <path value="Device.patient.reference" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.patient.identifier">
      <path value="Device.patient.identifier" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.owner">
      <path value="Device.owner" />
      <short value="Organization responsible for the device" />
      <definition value="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." />
      <comment value="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." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-Organization" />
      </type>
      <constraint>
        <key value="device-owner-literal" />
        <severity value="error" />
        <human value="A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted." />
        <expression value="($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Device.owner.extension">
      <path value="Device.owner.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.owner.reference">
      <path value="Device.owner.reference" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.owner.identifier">
      <path value="Device.owner.identifier" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.contact">
      <path value="Device.contact" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="Maintain organizational contact information on the referenced Organization. Separate technical support contacts are outside the current exchange scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.location">
      <path value="Device.location" />
      <short value="Device location." />
      <definition value="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." />
      <comment value="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." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-Location" />
      </type>
      <constraint>
        <key value="device-location-literal" />
        <severity value="error" />
        <human value="A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted." />
        <expression value="($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Device.location.extension">
      <path value="Device.location.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.location.reference">
      <path value="Device.location.reference" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.location.identifier">
      <path value="Device.location.identifier" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.url">
      <path value="Device.url" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="Network addresses for directly communicating with equipment are outside the current clinical device-record scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.note">
      <path value="Device.note" />
      <short value="Clinical or administrative note." />
      <definition value="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." />
    </element>
    <element id="Device.note.extension">
      <path value="Device.note.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.note.author[x]">
      <path value="Device.note.author[x]" />
      <definition value="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 value="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." />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-Practitioner" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-Patient" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-RelatedPerson" />
        <targetProfile value="http://hl7.no/fhir/StructureDefinition/no-basis-Organization" />
      </type>
      <type>
        <code value="string" />
      </type>
      <constraint>
        <key value="device-note-author-x-literal" />
        <severity value="error" />
        <human value="A shared-resource reference must contain a literal reference value; identifiers and contained references are not permitted." />
        <expression value="($this is Reference) implies (reference.hasValue() and identifier.empty() and reference.startsWith('#').not())" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
    </element>
    <element id="Device.safety">
      <path value="Device.safety" />
      <short value="Relevant device safety characteristics" />
      <definition value="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 value="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." />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Device.safety.extension">
      <path value="Device.safety.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.safety.coding.system">
      <path value="Device.safety.coding.system" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.safety.coding.code">
      <path value="Device.safety.coding.code" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.parent">
      <path value="Device.parent" />
      <short value="Parent device." />
      <definition value="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." />
      <comment value="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." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </type>
      <constraint>
        <key value="device-parent-literal" />
        <severity value="error" />
        <human value="A parent device reference must contain a literal reference; identifiers and contained references are not permitted." />
        <expression value="reference.hasValue() and identifier.empty() and reference.startsWith('#').not()" />
        <source value="https://novari.no/fhir/digidot/StructureDefinition/digidot-Device-no" />
      </constraint>
    </element>
    <element id="Device.parent.extension">
      <path value="Device.parent.extension" />
      <short value="Not exchanged in the current DigiDOT Device profile" />
      <definition value="No extensions are defined at this element in the current DigiDOT Device scope." />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Device.parent.reference">
      <path value="Device.parent.reference" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Device.parent.identifier">
      <path value="Device.parent.identifier" />
      <min value="0" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>