R6 Ballot (2nd Draft)

Publish-box (todo)

Devicealert.shex

Health Care Devices Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Device, Patient

Raw ShEx

ShEx statement for devicealert

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 <code.shex>
IMPORT <Range.shex>
IMPORT <Device.shex>
IMPORT <string.shex>
IMPORT <Period.shex>
IMPORT <Patient.shex>
IMPORT <boolean.shex>
IMPORT <Reference.shex>
IMPORT <Identifier.shex>
IMPORT <Observation.shex>
IMPORT <DeviceMetric.shex>
IMPORT <DomainResource.shex>
IMPORT <BackboneElement.shex>
IMPORT <CodeableConcept.shex>
IMPORT <CodeableReference.shex>


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

# Describes a noteworthy condition or occurrence determined to exist by a medical device
<DeviceAlert> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:identifier @<OneOrMore_Identifier>?;  # Instance identifier
    fhir:status @<code> AND
    	{fhir:v @fhirvs:devicealert-status};  # in-progress | completed | 
                                            # entered-in-error 
    fhir:condition @<DeviceAlert.condition>;  # The condition, event, or state 
                                            # being reported 
    fhir:priority @<code> AND
    	{fhir:v @fhirvs:devicealert-priority}?;  # high | medium | low | info
    fhir:type @<code> AND
    	{fhir:v @fhirvs:devicealert-type}?;  # physiological | technical
    fhir:subject @<Reference> AND {fhir:link 
    			@<Device> OR 
    			@<Patient> ? };  # The who or what the alert is about
    fhir:source @<Reference> AND {fhir:link 
    			@<Device> OR 
    			@<DeviceMetric> ? }?;  # The device (or DeviceMetric) that 
                                            # detected the alert condition 
    fhir:derivedFrom @<OneOrMore_Reference_Observation>?;  # The value causing the alert 
                                            # condition 
    fhir:label @<string>?;                  # Text to be displayed for the alert 
                                            # condition 
    fhir:signal @<OneOrMore_DeviceAlert.signal>?;  # Annunciation or notification of 
                                            # the alert condition 
}  

# The condition, event, or state being reported
<DeviceAlert.condition> EXTENDS @<BackboneElement> CLOSED {   
    fhir:code @<CodeableConcept>;           # The meaning of the alert
    fhir:presence @<boolean>;               # The alert condition is currently 
                                            # occuring 
    fhir:timing @<Period>?;                 # The period during which the 
                                            # condition was active 
    fhir:limit @<Range>?;                   # The boundaries outside of which a 
                                            # value was detected to cause the 
                                            # alert condition 
}  

# Annunciation or notification of the alert condition
<DeviceAlert.signal> EXTENDS @<BackboneElement> CLOSED {   
    fhir:activationState @<code> AND
    	{fhir:v @fhirvs:devicealert-activationState};  # on | off | paused
    fhir:presence @<code> AND
    	{fhir:v @fhirvs:devicealert-presence}?;  # on | latched | off | ack
    fhir:annunciator @<CodeableReference>?;  # Where the signal is being 
                                            # annunciated 
    fhir:manifestation @<OneOrMore_CodeableConcept>?;  # How the signal is being annunciated
    fhir:type @<OneOrMore_CodeableConcept>?;  # Characteristics of the signal 
                                            # manifestation 
    fhir:indication @<Period>?;             # When the signal was being 
                                            # annuciated 
}  

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

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

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

<OneOrMore_DeviceAlert.signal> CLOSED {
    rdf:first @<DeviceAlert.signal>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_DeviceAlert.signal> 
}

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

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

# DeviceAlert Activation State Codes
fhirvs:devicealert-activationState ["on" "off" "paused"]

# DeviceAlert Presence Codes
fhirvs:devicealert-presence ["on" "latched" "off" "ack"]

# DeviceAlert Priority Codes
fhirvs:devicealert-priority ["high" "medium" "low" "info"]

# DeviceAlert Status Codes
fhirvs:devicealert-status ["in-progress" "completed" "entered-in-error"]

# DeviceAlert Type Codes
fhirvs:devicealert-type ["physiological" "technical"]


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.