R6 Ballot (2nd Draft)

Publish-box (todo)

Device.shex

Orders and Observations Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for device

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

IMPORT <uri.shex>
IMPORT <code.shex>
IMPORT <Count.shex>
IMPORT <Range.shex>
IMPORT <string.shex>
IMPORT <boolean.shex>
IMPORT <integer.shex>
IMPORT <dateTime.shex>
IMPORT <Duration.shex>
IMPORT <Location.shex>
IMPORT <Quantity.shex>
IMPORT <Endpoint.shex>
IMPORT <Reference.shex>
IMPORT <Identifier.shex>
IMPORT <Annotation.shex>
IMPORT <Attachment.shex>
IMPORT <Organization.shex>
IMPORT <ContactPoint.shex>
IMPORT <base64Binary.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <CodeableReference.shex>


start=@<Device> AND {fhir:nodeRole [fhir:treeRoot]}

# Item used in healthcare
<Device> EXTENDS @<DomainResource> CLOSED {   

    a [fhir:Device]?;
    fhir:nodeRole [fhir:treeRoot]?;

    fhir:identifier @<OneOrMore_Identifier>?;  # Instance identifier
    fhir:definition @<CodeableReference>?;  # The reference to the definition 
                                            # for the device 
    fhir:udiCarrier @<OneOrMore_Device.udiCarrier>?;  # Unique Device Identifier (UDI) 
                                            # Barcode string 
    fhir:status @<code> AND
    	{fhir:v @fhirvs:device-status}?;  # active | inactive | 
                                            # entered-in-error 
    fhir:availabilityStatus @<CodeableConcept>?;  # lost | damaged | destroyed | 
                                            # available 
    fhir:biologicalSourceEvent @<Identifier>?;  # An identifier that supports 
                                            # traceability to the event during 
                                            # which material in this product 
                                            # from one or more biological 
                                            # entities was obtained or pooled 
    fhir:manufacturer @<string>?;           # Name of device manufacturer
    fhir:manufactureDate @<dateTime>?;      # Date when the device was made
    fhir:expirationDate @<dateTime>?;       # Date and time of expiry of this 
                                            # device (if applicable) 
    fhir:lotNumber @<string>?;              # Lot number of manufacture
    fhir:serialNumber @<string>?;           # Serial number assigned by the 
                                            # manufacturer 
    fhir:name @<OneOrMore_Device.name>?;    # The name or names of the device as 
                                            # known to the manufacturer and/or 
                                            # patient 
    fhir:modelNumber @<string>?;            # The manufacturer's model number 
                                            # for the device 
    fhir:partNumber @<string>?;             # The part number or catalog number 
                                            # of the device 
    fhir:category @<OneOrMore_CodeableConcept>?;  # Indicates a high-level grouping of 
                                            # the device 
    fhir:type @<OneOrMore_CodeableConcept>?;  # The kind or type of device
    fhir:deviceVersion @<OneOrMore_Device.deviceVersion>?;  # The actual design of the device or 
                                            # software version running on the 
                                            # device 
    fhir:conformsTo @<OneOrMore_Device.conformsTo>?;  # Identifies the standards, 
                                            # specifications, or formal 
                                            # guidances for the capabilities 
                                            # supported by the device 
    fhir:property @<OneOrMore_Device.property>?;  # Inherent, essentially fixed, 
                                            # characteristics of the device.  
                                            # e.g., time properties, size, 
                                            # material, etc. 
    fhir:mode @<CodeableConcept>?;          # The designated condition for 
                                            # performing a task 
    fhir:cycle @<Count>?;                   # The series of occurrences that 
                                            # repeats during the operation of 
                                            # the device 
    fhir:duration @<Duration>?;             # A measurement of time during the 
                                            # device's operation (e.g., days, 
                                            # hours, mins, etc.) 
    fhir:owner @<Reference> AND {fhir:link 
    			@<Organization> ? }?;  # Organization responsible for device
    fhir:contact @<OneOrMore_ContactPoint>?;  # Details for human/organization for 
                                            # support 
    fhir:location @<Reference> AND {fhir:link 
    			@<Location> ? }?;  # Where the device is found
    fhir:url @<uri>?;                       # Network address to contact device
    fhir:endpoint @<OneOrMore_Reference_Endpoint>?;  # Technical endpoints providing 
                                            # access to electronic services 
                                            # provided by the device 
    fhir:gateway @<OneOrMore_CodeableReference>?;  # Linked device acting as a 
                                            # communication/data collector, 
                                            # translator or controller 
    fhir:note @<OneOrMore_Annotation>?;     # Device notes and comments
    fhir:safety @<OneOrMore_CodeableConcept>?;  # Safety Characteristics of Device
    fhir:parent @<Reference> AND {fhir:link 
    			@<Device> ? }?;  # The higher level or encompassing 
                                            # device that this device is a 
                                            # logical part of 
}  

# Inherent, essentially fixed, characteristics of the device.  e.g., time properties, size, material, etc.
<Device.property> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableConcept>;           # Code that specifies the property 
                                            # being represented 
    fhir:value @<Quantity>  OR 
    			@<CodeableConcept>  OR 
    			@<string>  OR 
    			@<boolean>  OR 
    			@<integer>  OR 
    			@<Range>  OR 
    			@<Attachment>  ;  # Value of the property
}  

# Unique Device Identifier (UDI) Barcode string
<Device.udiCarrier> EXTENDS @<BackboneElement> CLOSED {   
    fhir:deviceIdentifier @<string>;        # Mandatory fixed portion of UDI
    fhir:deviceIdentifierSystem @<uri>?;    # The namespace for the device 
                                            # identifier value 
    fhir:issuer @<uri>;                     # UDI Issuing Organization
    fhir:jurisdiction @<uri>?;              # Regional UDI authority
    fhir:carrierAIDC @<base64Binary>?;      # UDI Machine Readable Barcode String
    fhir:carrierHRF @<string>?;             # UDI Human Readable Barcode String
    fhir:entryType @<code> AND
    	{fhir:v @fhirvs:udi-entry-type}?;  # barcode | rfid | manual | card | 
                                            # self-reported | 
                                            # electronic-transmission | unknown 
}  

# The name or names of the device as known to the manufacturer and/or patient
<Device.name> EXTENDS @<BackboneElement> CLOSED {   
    fhir:value @<string>;                   # The term that names the device
    fhir:type @<CodeableConcept>;           # registered-name | 
                                            # user-friendly-name | 
                                            # patient-reported-name 
    fhir:display @<boolean>?;               # The preferred device name
}  

# The actual design of the device or software version running on the device
<Device.deviceVersion> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableConcept>?;          # The type of the device version, 
                                            # e.g. manufacturer, approved, 
                                            # internal 
    fhir:component @<Identifier>?;          # The hardware or software module of 
                                            # the device to which the version 
                                            # applies 
    fhir:installDate @<dateTime>?;          # The date the version was installed 
                                            # on the device 
    fhir:value @<string>;                   # The version text
}  

# Identifies the standards, specifications, or formal guidances for the capabilities supported by the device
<Device.conformsTo> EXTENDS @<BackboneElement> CLOSED {   
    fhir:category @<CodeableConcept>?;      # Describes the common type of the 
                                            # standard, specification, or formal 
                                            # guidance.  communication | 
                                            # performance | measurement 
    fhir:specification @<CodeableConcept>;  # Identifies the standard, 
                                            # specification, or formal guidance 
                                            # that the device adheres to 
    fhir:version @<string>?;                # Specific form or variant of the 
                                            # standard 
}  

#---------------------- Cardinality Types (OneOrMore) -------------------

<OneOrMore_Identifier> CLOSED {
    rdf:first @<Identifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> 
}

<OneOrMore_Device.udiCarrier> CLOSED {
    rdf:first @<Device.udiCarrier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Device.udiCarrier> 
}

<OneOrMore_Device.name> CLOSED {
    rdf:first @<Device.name>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Device.name> 
}

<OneOrMore_CodeableConcept> CLOSED {
    rdf:first @<CodeableConcept>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableConcept> 
}

<OneOrMore_Device.deviceVersion> CLOSED {
    rdf:first @<Device.deviceVersion>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Device.deviceVersion> 
}

<OneOrMore_Device.conformsTo> CLOSED {
    rdf:first @<Device.conformsTo>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Device.conformsTo> 
}

<OneOrMore_Device.property> CLOSED {
    rdf:first @<Device.property>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Device.property> 
}

<OneOrMore_ContactPoint> CLOSED {
    rdf:first @<ContactPoint>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ContactPoint> 
}

<OneOrMore_Reference_Endpoint> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<Endpoint> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_Endpoint> 
}

<OneOrMore_CodeableReference> CLOSED {
    rdf:first @<CodeableReference>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableReference> 
}

<OneOrMore_Annotation> CLOSED {
    rdf:first @<Annotation>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Annotation> 
}

#---------------------- Value Sets ------------------------

# The status of the Device record.
fhirvs:device-status ["active" "inactive" "entered-in-error"]

# Codes to identify how UDI data was entered.
fhirvs:udi-entry-type ["barcode" "rfid" "manual" "card" "self-reported" "electronic-transmission" "unknown"]


Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.