Device Profile¶
| Canonical | ../StructureDefinition/nexus-emr-core-emrdevice |
|---|---|
| Status | draft · 1.26.0 |
| Base | Device (constraint) |
| Source | FSH · JSON |
Represents an EMR software application/product, capturing key details like manufacturer, product name/model, type, version, and the owning organization using standard Nexus EMR references. Uses a non-instance-specific identifier for the Device itself.
FSH
The authored source of truth: resources/StructureDefinition-nexus-emr-core-emrdevice.fsh (edit on GitHub). One FSH file may define several related artifacts.
// NexusEmrCoreEmrDevice.fsh - V1.1 - 2025-04-09
// Defines the Nexus EMR Device profile based on the FHIR Device resource.
// Captures manufacturer, product name (as model), type, version, and owner.
// Enforces Nexus EMR identifier syntax for the owner reference.
// Uses a non-instance-specific identifier for the Device itself.
// Includes embedded dependencies.
// --- Embedded Aliases ---
Alias: $NexusEmrCoreEmrDevice = ../StructureDefinition/nexus-emr-core-emrdevice
// emrdevice self identifier rule
// emrdevice: a source/raw identifier SHOULD have a system matching the Nexus EMR identifier pattern (recommended, not enforced)
// --- Profile Definition ---
Profile: NexusEmrCoreEmrDevice
Parent: Device
Id: nexus-emr-core-emrdevice
Title: "Device Profile"
Description: "Represents an EMR software application/product, capturing key details like manufacturer, product name/model, type, version, and the owning organization using standard Nexus EMR references. Uses a non-instance-specific identifier for the Device itself."
// THE effective date for this profile (see the EffectiveDate / NoEffectiveDate
// RuleSets): one date concept per resource, declared here rather than guessed.
* insert NoEffectiveDate
// SMART on FHIR exposure -- READ-ONLY. Exposure is per resource TYPE and Device also carries
// appdevice, the application registration; see that profile for why the type is not writable.
* insert SmartExposedReadOnly(device)
* ^url = $NexusEmrCoreEmrDevice
* ^status = #draft
* insert NoResourceNoteExtension
* ^publisher = "WELLSTAR Technologies Corp."
// --- Element Constraints ---
* . ^short = "Nexus EMR Device Core"
* . ^definition = """
Represents an EMR software application/product, capturing key details
like manufacturer, product name/model, type, version, and the owning
organization using standard Nexus EMR references. Uses a non‑instance‑
specific identifier for the Device itself.
"""
* meta.source 0..1 MS
* meta.source ^short = "Identifies EMR instance & pipeline version the resource came from"
* meta.source ^definition = "A URI that identifies the EMR pipeline and version from which this resource originated. This tells you which EMR instance (recommend using the instance identifier), and the version of the pipeline code/transformations."
* text 0..1 MS // Narrative element with human-readable summary
* text ^short = "Narrative"
* text ^definition = "A human-readable narrative summary of the NexusEmrCoreEmrDevice resource for human interpretation."
* id 0..1 MS
// Identifier: A business identifier is recommended but not required (any system).
// NOT Must Support, and the reason is that nothing mints one. `identifier` here is
// RECOMMENDED but not required, under no mandated system -- and since the instance-scoped
// scheme was retired (FHIR-71) no producer writes a business identifier onto this type at
// all. Must Support asserts that an implementer can be expected to populate an element;
// claiming it for one the specification neither mandates nor produces states a guarantee
// that is not being made. The element stays available and documented -- a writer with a
// source-system identifier should still carry it.
* identifier 0..*
* identifier.system 1..1
* identifier.value 1..1
* identifier ^short = "Business identifier(s) for emrdevice"
* identifier ^definition = """
Unique identifiers for the emrdevice.
A business identifier is recommended but not required (identifier is 0..*). Where available, carry the source-system identifier using the most appropriate system URI. No specific canonical system is mandated.
A source system's own identifier SHOULD be carried alongside this one, flagged `use = secondary`. See [Carrying the raw code](../guide/patterns/raw-codes.md).
"""
// Manufacturer: Name of the vendor. Mandatory. MS.
* manufacturer 1..1 MS
* manufacturer ^short = "EMR vendor name"
* manufacturer ^definition = "The name of the company or organization that produces the EMR software."
* manufacturer ^comment = "Examples include Epic, Cerner, Allscripts, or custom vendor names."
// Device Name: Slice to ensure model name is captured. Mandatory. MS.
* deviceName 1..1 MS
* deviceName ^short = "EMR product name"
* deviceName ^definition = "The name of the EMR software product or application."
* deviceName ^comment = "Should contain the commercial product name or model name of the EMR."
* deviceName.name 1..1 MS
* deviceName.name ^short = "The actual product name"
* deviceName.name ^definition = "The specific name of the EMR product."
* deviceName.type 1..1 MS // user-friendly-name, registered-name, patient-reported-name, model-name
* deviceName.type ^short = "Type of device name"
* deviceName.type ^definition = "The type of name being provided (typically 'model-name' for EMR products)."
// Type: Fixed to indicate software. Mandatory. MS.
* type 1..1 MS
* type ^short = "Device type - always 'software'"
* type ^definition = "Categorizes this device as software rather than hardware."
* type ^comment = "Fixed value to distinguish EMR software from physical medical devices."
* type.text = "software" (exactly)
// Version: Capture the software version string. Mandatory. MS.
* version 1..1 MS
* version ^short = "EMR software version information"
* version ^definition = "Version number or identifier of the EMR software."
* version ^comment = "May include major.minor.patch version numbers or build identifiers."
* version.value 1..1 MS
* version.value ^short = "Version string"
* version.value ^definition = "The actual version identifier of the EMR software."
// Owner (Organization): Reference via Identifier. Mandatory. MS.
* owner 1..1 MS
* owner ^short = "Organization that owns/operates the EMR"
* owner ^definition = "The organization that owns or operates this EMR instance. Must reference using Nexus EMR organization identifier."
* owner ^comment = "Typically the healthcare organization or clinic using the EMR."
* owner only Reference($NexusEmrCoreOrganization)