R6 Ballot (2nd Draft)

Publish-box (todo)

Nutritionorder.shex

Orders and Observations Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Encounter, Patient, Practitioner

Raw ShEx

ShEx statement for nutritionorder

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 <Group.shex>
IMPORT <Ratio.shex>
IMPORT <Timing.shex>
IMPORT <string.shex>
IMPORT <Patient.shex>
IMPORT <boolean.shex>
IMPORT <dateTime.shex>
IMPORT <Quantity.shex>
IMPORT <markdown.shex>
IMPORT <CarePlan.shex>
IMPORT <Resource.shex>
IMPORT <canonical.shex>
IMPORT <Reference.shex>
IMPORT <Encounter.shex>
IMPORT <Identifier.shex>
IMPORT <Annotation.shex>
IMPORT <Practitioner.shex>
IMPORT <DomainResource.shex>
IMPORT <SimpleQuantity.shex>
IMPORT <ServiceRequest.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>
IMPORT <PractitionerRole.shex>
IMPORT <CodeableReference.shex>
IMPORT <AllergyIntolerance.shex>
IMPORT <RequestOrchestration.shex>


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

# Diet, formula or nutritional supplement request
<NutritionOrder> EXTENDS @<DomainResource> CLOSED {   

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

    fhir:identifier @<OneOrMore_Identifier>?;  # Identifiers assigned to this order
    fhir:instantiatesCanonical @<OneOrMore_canonical>?;  # Instantiates FHIR protocol or 
                                            # definition 
    fhir:instantiatesUri @<OneOrMore_uri>?;  # Instantiates external protocol or 
                                            # definition 
    fhir:instantiates @<OneOrMore_uri>?;    # Instantiates protocol or definition
    fhir:basedOn @<OneOrMore_Reference_CarePlan_OR_NutritionOrder_OR_RequestOrchestration_OR_ServiceRequest>?;  # What this order fulfills
    fhir:groupIdentifier @<Identifier>?;    # Composite Request ID
    fhir:status @<code> AND
    	{fhir:v @fhirvs:request-status};  # draft | active | on-hold | revoked 
                                            # | completed | entered-in-error | 
                                            # unknown 
    fhir:intent @<code> AND
    	{fhir:v @fhirvs:request-intent};  # proposal | plan | directive | 
                                            # order | original-order | 
                                            # reflex-order | filler-order | 
                                            # instance-order | option 
    fhir:priority @<code> AND
    	{fhir:v @fhirvs:request-priority}?;  # routine | urgent | asap | stat
    fhir:subject @<Reference> AND {fhir:link 
    			@<Group> OR 
    			@<Patient> ? };  # Who requires the diet, formula or 
                                            # nutritional supplement 
    fhir:encounter @<Reference> AND {fhir:link 
    			@<Encounter> ? }?;  # The encounter associated with this 
                                            # nutrition order 
    fhir:supportingInformation @<OneOrMore_Reference_Resource>?;  # Information to support fulfilling 
                                            # of the nutrition order 
    fhir:dateTime @<dateTime>;              # Date and time the nutrition order 
                                            # was requested 
    fhir:orderer @<Reference> AND {fhir:link 
    			@<Practitioner> OR 
    			@<PractitionerRole> ? }?;  # Who ordered the diet, formula or 
                                            # nutritional supplement 
    fhir:performer @<OneOrMore_CodeableReference>?;  # Who is intended to perform the 
                                            # administration of the nutrition 
                                            # order 
    fhir:allergyIntolerance @<OneOrMore_Reference_AllergyIntolerance>?;  # List of the patient's food and 
                                            # nutrition-related allergies and 
                                            # intolerances 
    fhir:foodPreferenceModifier @<OneOrMore_CodeableConcept>?;  # Order-specific modifier about the 
                                            # type of food that should be given 
    fhir:excludeFoodModifier @<OneOrMore_CodeableConcept>?;  # Food that should not be given
    fhir:outsideFoodAllowed @<boolean>?;    # Capture if patient is permitted to 
                                            # consume food from outside of 
                                            # current setting brought by the 
                                            # patient, family, and/or caregiver 
    fhir:oralDiet @<NutritionOrder.oralDiet>?;  # Oral diet components
    fhir:supplement @<OneOrMore_NutritionOrder.supplement>?;  # Supplement components
    fhir:enteralFormula @<NutritionOrder.enteralFormula>?;  # Enteral formula product
    fhir:additive @<OneOrMore_NutritionOrder.additive>?;  # Modular additive to add to the 
                                            # oral diet, supplement, and/or 
                                            # enteral feeding 
    fhir:note @<OneOrMore_Annotation>?;     # Comments
}  

# The nutrient that is modified and the quantity in the diet
<NutritionOrder.oralDiet.nutrient> EXTENDS @<BackboneElement> CLOSED {   
    fhir:modifier @<CodeableConcept>?;      # Nutrient modified in the oral diet 
                                            # type 
    fhir:amount @<Quantity>?;               # Quantity of the specified nutrient
}  

# Scheduling information for oral diets
<NutritionOrder.oralDiet.schedule> EXTENDS @<BackboneElement> CLOSED {   
    fhir:timing @<OneOrMore_Timing>?;       # Scheduled frequency of diet
    fhir:asNeeded @<boolean>?;              # Take 'as needed'
    fhir:asNeededFor @<CodeableConcept>?;   # Take 'as needed' for x
}  

# Modular additive to add to the oral diet, supplement, and/or enteral feeding
<NutritionOrder.additive> EXTENDS @<BackboneElement> CLOSED {   
    fhir:modularType @<CodeableReference>?;  # Type of modular component to add 
                                            # to the oral diet, supplement, 
                                            # and/or enteral feeding 
    fhir:productName @<string>?;            # Product or brand name of the 
                                            # modular additive 
    fhir:quantity @<Quantity>?;             # Amount of additive to be given or 
                                            # mixed in with the oral diet, 
                                            # supplement, and/or enteral feeding 
}  

# Supplement components
<NutritionOrder.supplement> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableReference>?;        # Type of supplement product 
                                            # requested 
    fhir:productName @<string>?;            # Product or brand name of the 
                                            # nutritional supplement 
    fhir:schedule @<NutritionOrder.supplement.schedule>?;  # Scheduling information for 
                                            # supplements 
    fhir:quantity @<Quantity>?;             # Amount of the nutritional 
                                            # supplement 
    fhir:instruction @<string>?;            # Instructions or additional 
                                            # information about the oral 
                                            # supplement 
    fhir:caloricDensity @<Quantity>?;       # Amount of energy per specified 
                                            # volume of supplement that is 
                                            # required 
}  

# Scheduling information for enteral feeding products
<NutritionOrder.enteralFormula.administration.schedule> EXTENDS @<BackboneElement> CLOSED {   
    fhir:timing @<OneOrMore_Timing>?;       # Scheduled frequency of enteral 
                                            # feeding 
    fhir:asNeeded @<boolean>?;              # Take 'as needed'
    fhir:asNeededFor @<CodeableConcept>?;   # Take 'as needed' for x
}  

# Enteral formula product
<NutritionOrder.enteralFormula> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<CodeableReference>?;        # Type of patient enteral feeding
    fhir:productName @<string>?;            # Product or brand name of the 
                                            # enteral feeding 
    fhir:deliveryDevice @<OneOrMore_CodeableReference>?;  # Intended type of device for the 
                                            # enteral feeding administration 
    fhir:caloricDensity @<Quantity>?;       # Amount of energy per specified 
                                            # volume of feeding that is required 
    fhir:routeOfAdministration @<OneOrMore_CodeableConcept>?;  # How the enteral feeding should 
                                            # enter the patient's 
                                            # gastrointestinal tract 
    fhir:administration @<OneOrMore_NutritionOrder.enteralFormula.administration>?;  # Formula feeding instruction as 
                                            # structured data 
    fhir:maxVolumeToAdminister @<Quantity>?;  # Upper limit on formula feeding 
                                            # volume per unit of time 
    fhir:administrationInstruction @<markdown>?;  # Formula feeding instructions 
                                            # expressed as text 
}  

# Texture modifications in addition to the oral diet type
<NutritionOrder.oralDiet.texture> EXTENDS @<BackboneElement> CLOSED {   
    fhir:modifier @<CodeableConcept>?;      # Food (i.e. solid and/or liquid) 
                                            # texture modifications in addition 
                                            # to those in the oral diet type 
    fhir:type @<CodeableConcept>?;          # Food (i.e. solid and/or liquid) 
                                            # types that undergo texture 
                                            # alteration 
}  

# Formula feeding instruction as structured data
<NutritionOrder.enteralFormula.administration> EXTENDS @<BackboneElement> CLOSED {   
    fhir:schedule @<NutritionOrder.enteralFormula.administration.schedule>?;  # Scheduling information for enteral 
                                            # feeding products 
    fhir:quantity @<Quantity>?;             # The volume of formula feeding to 
                                            # provide 
    fhir:rate @<SimpleQuantity>  OR 
    			@<Ratio>  ?;  # Speed with which the formula 
                                            # feeding is provided per period of 
                                            # time 
}  

# Scheduling information for supplements
<NutritionOrder.supplement.schedule> EXTENDS @<BackboneElement> CLOSED {   
    fhir:timing @<OneOrMore_Timing>?;       # Scheduled frequency of supplement
    fhir:asNeeded @<boolean>?;              # Take 'as needed'
    fhir:asNeededFor @<CodeableConcept>?;   # Take 'as needed' for x
}  

# Oral diet components
<NutritionOrder.oralDiet> EXTENDS @<BackboneElement> CLOSED {   
    fhir:type @<OneOrMore_CodeableConcept>?;  # Type of oral diet or diet 
                                            # restrictions that can be consumed 
                                            # orally 
    fhir:schedule @<NutritionOrder.oralDiet.schedule>?;  # Scheduling information for oral 
                                            # diets 
    fhir:nutrient @<OneOrMore_NutritionOrder.oralDiet.nutrient>?;  # The nutrient that is modified and 
                                            # the quantity in the diet 
    fhir:texture @<OneOrMore_NutritionOrder.oralDiet.texture>?;  # Texture modifications in addition 
                                            # to the oral diet type 
    fhir:instruction @<string>?;            # Instructions or additional 
                                            # information about the oral diet 
    fhir:caloricDensity @<Quantity>?;       # Amount of energy per specified 
                                            # volume of oral diet 
}  

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

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

<OneOrMore_canonical> CLOSED {
    rdf:first @<canonical>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_canonical> 
}

<OneOrMore_uri> CLOSED {
    rdf:first @<uri>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_uri> 
}

<OneOrMore_Reference_CarePlan_OR_NutritionOrder_OR_RequestOrchestration_OR_ServiceRequest> CLOSED {
    rdf:first @<Reference> AND {fhir:link 
			@<CarePlan> OR 
			@<NutritionOrder> OR 
			@<RequestOrchestration> OR 
			@<ServiceRequest> } ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Reference_CarePlan_OR_NutritionOrder_OR_RequestOrchestration_OR_ServiceRequest> 
}

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

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

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

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

<OneOrMore_NutritionOrder.supplement> CLOSED {
    rdf:first @<NutritionOrder.supplement>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_NutritionOrder.supplement> 
}

<OneOrMore_NutritionOrder.additive> CLOSED {
    rdf:first @<NutritionOrder.additive>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_NutritionOrder.additive> 
}

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

<OneOrMore_Timing> CLOSED {
    rdf:first @<Timing>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Timing> 
}

<OneOrMore_NutritionOrder.enteralFormula.administration> CLOSED {
    rdf:first @<NutritionOrder.enteralFormula.administration>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_NutritionOrder.enteralFormula.administration> 
}

<OneOrMore_NutritionOrder.oralDiet.nutrient> CLOSED {
    rdf:first @<NutritionOrder.oralDiet.nutrient>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_NutritionOrder.oralDiet.nutrient> 
}

<OneOrMore_NutritionOrder.oralDiet.texture> CLOSED {
    rdf:first @<NutritionOrder.oralDiet.texture>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_NutritionOrder.oralDiet.texture> 
}

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

# Codes indicating the degree of authority/intentionality associated with a request.
fhirvs:request-intent ["proposal" "plan" "directive" "order" "original-order" "reflex-order" "filler-order" "instance-order" "option"]

# Identifies the level of importance to be assigned to actioning the request.
fhirvs:request-priority ["routine" "urgent" "asap" "stat"]

# Codes identifying the lifecycle stage of a request.
fhirvs:request-status ["draft" "active" "on-hold" "revoked" "completed" "entered-in-error" "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.